safe-react/safe-contracts/build/contracts/DailyLimitModule.json

6694 lines
307 KiB
JSON
Raw Normal View History

2018-05-31 13:01:02 +00:00
{
"contractName": "DailyLimitModule",
"abi": [
{
"constant": true,
"inputs": [],
"name": "manager",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_masterCopy",
"type": "address"
}
],
"name": "changeMasterCopy",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "NAME",
"outputs": [
{
"name": "",
"type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "",
"type": "address"
}
],
"name": "dailyLimits",
"outputs": [
{
"name": "dailyLimit",
"type": "uint256"
},
{
"name": "spentToday",
"type": "uint256"
},
{
"name": "lastDay",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "VERSION",
"outputs": [
{
"name": "",
"type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "tokens",
"type": "address[]"
},
{
"name": "_dailyLimits",
"type": "uint256[]"
}
],
"name": "setup",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "token",
"type": "address"
},
{
"name": "dailyLimit",
"type": "uint256"
}
],
"name": "changeDailyLimit",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "token",
"type": "address"
},
{
"name": "to",
"type": "address"
},
{
"name": "amount",
"type": "uint256"
}
],
"name": "executeDailyLimit",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "today",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
}
],
"bytecode": "0x608060405234801561001057600080fd5b5061129b806100206000396000f300608060405260043610610099576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806328814f031461009e578063481c6a751461014757806363bae7c31461019e5780637de7edef1461020b57806381c5e03b1461024e578063a3f4df7e1461029b578063b74e452b1461032b578063d7bffc9214610356578063ffa1ad74146103bb575b600080fd5b3480156100aa57600080fd5b50610145600480360381019080803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929050505061044b565b005b34801561015357600080fd5b5061015c6104ea565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101aa57600080fd5b50610209600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610510565b005b34801561021757600080fd5b5061024c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d00565b005b34801561025a57600080fd5b50610299600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ee3565b005b3480156102a757600080fd5b506102b0611019565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102f05780820151818401526020810190506102d5565b50505050905090810190601f16801561031d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561033757600080fd5b50610340611052565b6040518082815260200191505060405180910390f35b34801561036257600080fd5b50610397600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061106a565b60405180848152602001838152602001828152602001935050505060405180910390f35b3480156103c757600080fd5b506103d0611094565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104105780820151818401526020810190506103f5565b50505050905090810190601f16801561043d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60006104556110cd565b600090505b82518110156104e557818181518110151561047157fe5b9060200190602002015160026000858481518110151561048d57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550808060010191505061045a565b505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156105cf57600080fd5b505af11580156105e3573d6000803e3d6000fd5b505050506040513d60208110156105f957600080fd5b810190808051906020019092919050505015156106a4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f4d6574686f642063616e206f6e6c792062652063616c6c656420627920616e2081526020017f6f776e657200000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff1614151515610733576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f496e76616c696420746f20616464726573732070726f7669646564000000000081525060200191505060405180910390fd5b6000821115156107ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f496e76616c696420616d6f756e742070726f766964656400000000000000000081525060200191505060405180910390fd5b6107b584836111c0565b1515610829576040517f08c379a000000000000000000000000000000000000000
"deployedBytecode": "0x608060405260043610610099576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806328814f031461009e578063481c6a751461014757806363bae7c31461019e5780637de7edef1461020b57806381c5e03b1461024e578063a3f4df7e1461029b578063b74e452b1461032b578063d7bffc9214610356578063ffa1ad74146103bb575b600080fd5b3480156100aa57600080fd5b50610145600480360381019080803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929050505061044b565b005b34801561015357600080fd5b5061015c6104ea565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101aa57600080fd5b50610209600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610510565b005b34801561021757600080fd5b5061024c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d00565b005b34801561025a57600080fd5b50610299600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ee3565b005b3480156102a757600080fd5b506102b0611019565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102f05780820151818401526020810190506102d5565b50505050905090810190601f16801561031d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561033757600080fd5b50610340611052565b6040518082815260200191505060405180910390f35b34801561036257600080fd5b50610397600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061106a565b60405180848152602001838152602001828152602001935050505060405180910390f35b3480156103c757600080fd5b506103d0611094565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104105780820151818401526020810190506103f5565b50505050905090810190601f16801561043d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60006104556110cd565b600090505b82518110156104e557818181518110151561047157fe5b9060200190602002015160026000858481518110151561048d57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550808060010191505061045a565b505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156105cf57600080fd5b505af11580156105e3573d6000803e3d6000fd5b505050506040513d60208110156105f957600080fd5b810190808051906020019092919050505015156106a4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f4d6574686f642063616e206f6e6c792062652063616c6c656420627920616e2081526020017f6f776e657200000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff1614151515610733576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f496e76616c696420746f20616464726573732070726f7669646564000000000081525060200191505060405180910390fd5b6000821115156107ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f496e76616c696420616d6f756e742070726f766964656400000000000000000081525060200191505060405180910390fd5b6107b584836111c0565b1515610829576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152
"sourceMap": "296:3285:17:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;296:3285:17;;;;;;;",
"deployedSourceMap": "296:3285:17:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;918:222;;8:9:-1;5:2;;;30:1;27;20:12;5:2;918:222:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;262:28:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;262:28:7;;;;;;;;;;;;;;;;;;;;;;;;;;;1890:987:17;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1890:987:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;626:248:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:248:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;1368:158:17;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1368:158:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;339:50;;8:9:-1;5:2;;;30:1;27;20:12;5:2;339:50:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;339:50:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3463:116;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3463:116:17;;;;;;;;;;;;;;;;;;;;;;;513:50;;8:9:-1;5:2;;;30:1;27;20:12;5:2;513:50:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;395:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;395:40:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;395:40:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;918:222;1031:9;1004:12;:10;:12::i;:::-;1043:1;1031:13;;1026:107;1050:6;:13;1046:1;:17;1026:107;;;1118:12;1131:1;1118:15;;;;;;;;;;;;;;;;;;1082:11;:22;1094:6;1101:1;1094:9;;;;;;;;;;;;;;;;;;1082:22;;;;;;;;;;;;;;;:33;;:51;;;;1065:3;;;;;;;1026:107;;;918:222;;;:::o;262:28:7:-;;;;;;;;;;;;;:::o;1890:987:17:-;2647:17;2087:7;;;;;;;;;;;2074:29;;;2104:10;2074:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2074:41:17;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2074:41:17;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2074:41:17;;;;;;;;;;;;;;;;2066:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2181:1;2175:2;:7;;;;2167:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2241:1;2232:6;:10;2224:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2352:27;2365:5;2372:6;2352:12;:27::i;:::-;2344:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2455:6;2422:11;:18;2434:5;2422:18;;;;;;;;;;;;;;;:29;;;:39;;;;;;;;;;;2484:1;2475:5;:10;;;2471:400;;;2509:7;;;;;;;;;;;:33;;;2543:2;2547:6;2559:19;2509:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2509:70:17;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2509:70:17;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2509:70:17;;;;;;;;;;;;;;;;2501:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2471:400;;;2720:2;2724:6;2667:64;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;2667:64:17;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;2667:64:17;2647:84;;2753:7;;;;;;;;;;;:33;;;2787:5;2794:1;2797:4;2803:19;2753:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;2753:70:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2753:70:17;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2753:70:17;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2753:70:17;;;;;;;;;;;;;;;;2745:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2471:400;1890:987;;;;:::o;626:248:5:-;359:7:7;;;;;;;;;;;337:30;;:10;:30;;;329:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;791:1:5;776:11;:16;;;;768:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;856:11;843:10;;:24;;;;;;;;;;;;;;;;;;626:248;:::o;1368:158:17:-;359:7:7;;;;;;;;;;;337:30;;:10;:30;;;329:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1509:10:17;1477:11;:18;1489:5;1477:18;;;;;;;;;;;;;;;:29;;:42;;;;1368:158;;:::o;339:50::-;;;;;;;;;;;;;;;;;;;;:::o;3463:116::-;3525:4;3565:6;3559:3;:12;;;;;;;;3552:3;:20;3545:27;;3463:116;:::o;513:50::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;395:40::-;;;;;;;;;;;;;;;;;;;;:::o;434:300:7:-;648:1;636:7;;;;;;;;;;;628:21;;;620:62;;
"source": "pragma solidity 0.4.24;\nimport \"../Module.sol\";\nimport \"../ModuleManager.sol\";\nimport \"../OwnerManager.sol\";\nimport \"../Enum.sol\";\n\n\n/// @title Daily Limit Module - Allows to transfer limited amounts of ERC20 tokens and Ether without confirmations.\n/// @author Stefan George - <stefan@gnosis.pm>\ncontract DailyLimitModule is Module {\n\n string public constant NAME = \"Daily Limit Module\";\n string public constant VERSION = \"0.0.1\";\n\n // dailyLimits mapping maps token address to daily limit settings.\n mapping (address => DailyLimit) public dailyLimits;\n\n struct DailyLimit {\n uint256 dailyLimit;\n uint256 spentToday;\n uint256 lastDay;\n }\n\n /// @dev Setup function sets initial storage of contract.\n /// @param tokens List of token addresses. Ether is represented with address 0x0.\n /// @param _dailyLimits List of daily limits in smalles units (e.g. Wei for Ether).\n function setup(address[] tokens, uint256[] _dailyLimits)\n public\n {\n setManager();\n for (uint256 i = 0; i < tokens.length; i++)\n dailyLimits[tokens[i]].dailyLimit = _dailyLimits[i];\n }\n\n /// @dev Allows to update the daily limit for a specified token. This can only be done via a Safe transaction.\n /// @param token Token contract address.\n /// @param dailyLimit Daily limit in smallest token unit.\n function changeDailyLimit(address token, uint256 dailyLimit)\n public\n authorized\n {\n dailyLimits[token].dailyLimit = dailyLimit;\n }\n\n /// @dev Returns if Safe transaction is a valid daily limit transaction.\n /// @param token Address of the token that should be transfered (0 for Ether)\n /// @param to Address to which the tokens should be transfered\n /// @param amount Amount of tokens (or Ether) that should be transfered\n /// @return Returns if transaction can be executed.\n function executeDailyLimit(address token, address to, uint256 amount)\n public\n {\n // Only Safe owners are allowed to execute daily limit transactions.\n require(OwnerManager(manager).isOwner(msg.sender), \"Method can only be called by an owner\");\n require(to != 0, \"Invalid to address provided\");\n require(amount > 0, \"Invalid amount provided\");\n // Validate that transfer is not exceeding daily limit.\n require(isUnderLimit(token, amount), \"Daily limit has been reached\");\n dailyLimits[token].spentToday += amount;\n if (token == 0) {\n require(manager.execTransactionFromModule(to, amount, \"\", Enum.Operation.Call), \"Could not execute ether transfer\");\n } else {\n bytes memory data = abi.encodeWithSignature(\"transfer(address,uint256)\", to, amount);\n require(manager.execTransactionFromModule(token, 0, data, Enum.Operation.Call), \"Could not execute token transfer\");\n }\n }\n\n function isUnderLimit(address token, uint256 amount)\n internal\n returns (bool)\n {\n DailyLimit storage dailyLimit = dailyLimits[token];\n if (today() > dailyLimit.lastDay) {\n dailyLimit.lastDay = today();\n dailyLimit.spentToday = 0;\n }\n if ( dailyLimit.spentToday + amount <= dailyLimit.dailyLimit\n && dailyLimit.spentToday + amount > dailyLimit.spentToday)\n return true;\n return false;\n }\n\n /// @dev Returns last midnight as Unix timestamp.\n /// @return Unix timestamp.\n function today()\n public\n view\n returns (uint)\n {\n return now - (now % 1 days);\n }\n}\n",
"sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/modules/DailyLimitModule.sol",
"ast": {
"absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/modules/DailyLimitModule.sol",
"exportedSymbols": {
"DailyLimitModule": [
2014
]
},
"id": 2015,
"nodeType": "SourceUnit",
"nodes": [
{
"id": 1777,
"literals": [
"solidity",
"0.4",
".24"
],
"nodeType": "PragmaDirective",
"src": "0:23:17"
},
{
"absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol",
"file": "../Module.sol",
"id": 1778,
"nodeType": "ImportDirective",
"scope": 2015,
"sourceUnit": 763,
"src": "24:23:17",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ModuleManager.sol",
"file": "../ModuleManager.sol",
"id": 1779,
"nodeType": "ImportDirective",
"scope": 2015,
"sourceUnit": 1119,
"src": "48:30:17",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/OwnerManager.sol",
"file": "../OwnerManager.sol",
"id": 1780,
"nodeType": "ImportDirective",
"scope": 2015,
"sourceUnit": 1505,
"src": "79:29:17",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Enum.sol",
"file": "../Enum.sol",
"id": 1781,
"nodeType": "ImportDirective",
"scope": 2015,
"sourceUnit": 31,
"src": "109:21:17",
"symbolAliases": [],
"unitAlias": ""
},
{
"baseContracts": [
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 1782,
"name": "Module",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 762,
"src": "325:6:17",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Module_$762",
"typeString": "contract Module"
}
},
"id": 1783,
"nodeType": "InheritanceSpecifier",
"src": "325:6:17"
}
],
"contractDependencies": [
662,
762,
1654
],
"contractKind": "contract",
"documentation": "@title Daily Limit Module - Allows to transfer limited amounts of ERC20 tokens and Ether without confirmations.\n @author Stefan George - <stefan@gnosis.pm>",
"fullyImplemented": true,
"id": 2014,
"linearizedBaseContracts": [
2014,
762,
662,
1654
],
"name": "DailyLimitModule",
"nodeType": "ContractDefinition",
"nodes": [
{
"constant": true,
"id": 1786,
"name": "NAME",
"nodeType": "VariableDeclaration",
"scope": 2014,
"src": "339:50:17",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_string_memory",
"typeString": "string"
},
"typeName": {
"id": 1784,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "339:6:17",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"value": {
"argumentTypes": null,
"hexValue": "4461696c79204c696d6974204d6f64756c65",
"id": 1785,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "369:20:17",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_821ea27acfbc77b49f7a021dbe2eb92017d46b8bdda0bff9901cbc8ee143ceb3",
"typeString": "literal_string \"Daily Limit Module\""
},
"value": "Daily Limit Module"
},
"visibility": "public"
},
{
"constant": true,
"id": 1789,
"name": "VERSION",
"nodeType": "VariableDeclaration",
"scope": 2014,
"src": "395:40:17",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_string_memory",
"typeString": "string"
},
"typeName": {
"id": 1787,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "395:6:17",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"value": {
"argumentTypes": null,
"hexValue": "302e302e31",
"id": 1788,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "428:7:17",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885",
"typeString": "literal_string \"0.0.1\""
},
"value": "0.0.1"
},
"visibility": "public"
},
{
"constant": false,
"id": 1793,
"name": "dailyLimits",
"nodeType": "VariableDeclaration",
"scope": 2014,
"src": "513:50:17",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1800_storage_$",
"typeString": "mapping(address => struct DailyLimitModule.DailyLimit)"
},
"typeName": {
"id": 1792,
"keyType": {
"id": 1790,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "522:7:17",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Mapping",
"src": "513:31:17",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1800_storage_$",
"typeString": "mapping(address => struct DailyLimitModule.DailyLimit)"
},
"valueType": {
"contractScope": null,
"id": 1791,
"name": "DailyLimit",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 1800,
"src": "533:10:17",
"typeDescriptions": {
"typeIdentifier": "t_struct$_DailyLimit_$1800_storage_ptr",
"typeString": "struct DailyLimitModule.DailyLimit"
}
}
},
"value": null,
"visibility": "public"
},
{
"canonicalName": "DailyLimitModule.DailyLimit",
"id": 1800,
"members": [
{
"constant": false,
"id": 1795,
"name": "dailyLimit",
"nodeType": "VariableDeclaration",
"scope": 1800,
"src": "598:18:17",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1794,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "598:7:17",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1797,
"name": "spentToday",
"nodeType": "VariableDeclaration",
"scope": 1800,
"src": "626:18:17",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1796,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "626:7:17",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1799,
"name": "lastDay",
"nodeType": "VariableDeclaration",
"scope": 1800,
"src": "654:15:17",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1798,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "654:7:17",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"name": "DailyLimit",
"nodeType": "StructDefinition",
"scope": 2014,
"src": "570:106:17",
"visibility": "public"
},
{
"body": {
"id": 1835,
"nodeType": "Block",
"src": "994:146:17",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 1809,
"name": "setManager",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 761,
"src": "1004:10:17",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
"typeString": "function ()"
}
},
"id": 1810,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1004:12:17",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1811,
"nodeType": "ExpressionStatement",
"src": "1004:12:17"
},
{
"body": {
"expression": {
"argumentTypes": null,
"id": 1832,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1823,
"name": "dailyLimits",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1793,
"src": "1082:11:17",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1800_storage_$",
"typeString": "mapping(address => struct DailyLimitModule.DailyLimit storage ref)"
}
},
"id": 1827,
"indexExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1824,
"name": "tokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1803,
"src": "1094:6:17",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"id": 1826,
"indexExpression": {
"argumentTypes": null,
"id": 1825,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1813,
"src": "1101:1:17",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "1094:9:17",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "1082:22:17",
"typeDescriptions": {
"typeIdentifier": "t_struct$_DailyLimit_$1800_storage",
"typeString": "struct DailyLimitModule.DailyLimit storage ref"
}
},
"id": 1828,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"memberName": "dailyLimit",
"nodeType": "MemberAccess",
"referencedDeclaration": 1795,
"src": "1082:33:17",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1829,
"name": "_dailyLimits",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1806,
"src": "1118:12:17",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
"typeString": "uint256[] memory"
}
},
"id": 1831,
"indexExpression": {
"argumentTypes": null,
"id": 1830,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1813,
"src": "1131:1:17",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "1118:15:17",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "1082:51:17",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1833,
"nodeType": "ExpressionStatement",
"src": "1082:51:17"
},
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1819,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1816,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1813,
"src": "1046:1:17",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<",
"rightExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1817,
"name": "tokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1803,
"src": "1050:6:17",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"id": 1818,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "1050:13:17",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "1046:17:17",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 1834,
"initializationExpression": {
"assignments": [
1813
],
"declarations": [
{
"constant": false,
"id": 1813,
"name": "i",
"nodeType": "VariableDeclaration",
"scope": 1836,
"src": "1031:9:17",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1812,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1031:7:17",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 1815,
"initialValue": {
"argumentTypes": null,
"hexValue": "30",
"id": 1814,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1043:1:17",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"nodeType": "VariableDeclarationStatement",
"src": "1031:13:17"
},
"loopExpression": {
"expression": {
"argumentTypes": null,
"id": 1821,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "++",
"prefix": false,
"src": "1065:3:17",
"subExpression": {
"argumentTypes": null,
"id": 1820,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1813,
"src": "1065:1:17",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1822,
"nodeType": "ExpressionStatement",
"src": "1065:3:17"
},
"nodeType": "ForStatement",
"src": "1026:107:17"
}
]
},
"documentation": "@dev Setup function sets initial storage of contract.\n @param tokens List of token addresses. Ether is represented with address 0x0.\n @param _dailyLimits List of daily limits in smalles units (e.g. Wei for Ether).",
"id": 1836,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [],
"name": "setup",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 1807,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1803,
"name": "tokens",
"nodeType": "VariableDeclaration",
"scope": 1836,
"src": "933:16:17",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[]"
},
"typeName": {
"baseType": {
"id": 1801,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "933:7:17",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 1802,
"length": null,
"nodeType": "ArrayTypeName",
"src": "933:9:17",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
"typeString": "address[]"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1806,
"name": "_dailyLimits",
"nodeType": "VariableDeclaration",
"scope": 1836,
"src": "951:22:17",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
"typeString": "uint256[]"
},
"typeName": {
"baseType": {
"id": 1804,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "951:7:17",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1805,
"length": null,
"nodeType": "ArrayTypeName",
"src": "951:9:17",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
"typeString": "uint256[]"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "932:42:17"
},
"payable": false,
"returnParameters": {
"id": 1808,
"nodeType": "ParameterList",
"parameters": [],
"src": "994:0:17"
},
"scope": 2014,
"src": "918:222:17",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 1852,
"nodeType": "Block",
"src": "1467:59:17",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 1850,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1845,
"name": "dailyLimits",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1793,
"src": "1477:11:17",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1800_storage_$",
"typeString": "mapping(address => struct DailyLimitModule.DailyLimit storage ref)"
}
},
"id": 1847,
"indexExpression": {
"argumentTypes": null,
"id": 1846,
"name": "token",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1838,
"src": "1489:5:17",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "1477:18:17",
"typeDescriptions": {
"typeIdentifier": "t_struct$_DailyLimit_$1800_storage",
"typeString": "struct DailyLimitModule.DailyLimit storage ref"
}
},
"id": 1848,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"memberName": "dailyLimit",
"nodeType": "MemberAccess",
"referencedDeclaration": 1795,
"src": "1477:29:17",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 1849,
"name": "dailyLimit",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1840,
"src": "1509:10:17",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "1477:42:17",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1851,
"nodeType": "ExpressionStatement",
"src": "1477:42:17"
}
]
},
"documentation": "@dev Allows to update the daily limit for a specified token. This can only be done via a Safe transaction.\n @param token Token contract address.\n @param dailyLimit Daily limit in smallest token unit.",
"id": 1853,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [
{
"arguments": null,
"id": 1843,
"modifierName": {
"argumentTypes": null,
"id": 1842,
"name": "authorized",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 741,
"src": "1452:10:17",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "1452:10:17"
}
],
"name": "changeDailyLimit",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 1841,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1838,
"name": "token",
"nodeType": "VariableDeclaration",
"scope": 1853,
"src": "1394:13:17",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1837,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1394:7:17",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1840,
"name": "dailyLimit",
"nodeType": "VariableDeclaration",
"scope": 1853,
"src": "1409:18:17",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1839,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1409:7:17",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1393:35:17"
},
"payable": false,
"returnParameters": {
"id": 1844,
"nodeType": "ParameterList",
"parameters": [],
"src": "1467:0:17"
},
"scope": 2014,
"src": "1368:158:17",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 1943,
"nodeType": "Block",
"src": "1979:898:17",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1867,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2654,
"src": "2104:3:17",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 1868,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "2104:10:17",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1864,
"name": "manager",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 727,
"src": "2087:7:17",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ModuleManager_$1118",
"typeString": "contract ModuleManager"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_ModuleManager_$1118",
"typeString": "contract ModuleManager"
}
],
"id": 1863,
"name": "OwnerManager",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1504,
"src": "2074:12:17",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_OwnerManager_$1504_$",
"typeString": "type(contract OwnerManager)"
}
},
"id": 1865,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2074:21:17",
"typeDescriptions": {
"typeIdentifier": "t_contract$_OwnerManager_$1504",
"typeString": "contract OwnerManager"
}
},
"id": 1866,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "isOwner",
"nodeType": "MemberAccess",
"referencedDeclaration": 1454,
"src": "2074:29:17",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$",
"typeString": "function (address) view external returns (bool)"
}
},
"id": 1869,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2074:41:17",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "4d6574686f642063616e206f6e6c792062652063616c6c656420627920616e206f776e6572",
"id": 1870,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2117:39:17",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_4df072353ff501a1071e1cc3e2eb3ee0ebb21a35321efe90c0960bf2f4356640",
"typeString": "literal_string \"Method can only be called by an owner\""
},
"value": "Method can only be called by an owner"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_4df072353ff501a1071e1cc3e2eb3ee0ebb21a35321efe90c0960bf2f4356640",
"typeString": "literal_string \"Method can only be called by an owner\""
}
],
"id": 1862,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
2657,
2658
],
"referencedDeclaration": 2658,
"src": "2066:7:17",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 1871,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2066:91:17",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1872,
"nodeType": "ExpressionStatement",
"src": "2066:91:17"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 1876,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1874,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1857,
"src": "2175:2:17",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 1875,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2181:1:17",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "2175:7:17",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "496e76616c696420746f20616464726573732070726f7669646564",
"id": 1877,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2184:29:17",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_c5adba0692e08f8080ea3ec2bf95727d181df9c72d0fc6db8f77e3703d9523f1",
"typeString": "literal_string \"Invalid to address provided\""
},
"value": "Invalid to address provided"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_c5adba0692e08f8080ea3ec2bf95727d181df9c72d0fc6db8f77e3703d9523f1",
"typeString": "literal_string \"Invalid to address provided\""
}
],
"id": 1873,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
2657,
2658
],
"referencedDeclaration": 2658,
"src": "2167:7:17",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 1878,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2167:47:17",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1879,
"nodeType": "ExpressionStatement",
"src": "2167:47:17"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1883,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1881,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1859,
"src": "2232:6:17",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 1882,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2241:1:17",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "2232:10:17",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "496e76616c696420616d6f756e742070726f7669646564",
"id": 1884,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2244:25:17",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_991bec80688b0edba4751e32429f6879002de57199ff2c6b5bf0742d348ba58f",
"typeString": "literal_string \"Invalid amount provided\""
},
"value": "Invalid amount provided"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_991bec80688b0edba4751e32429f6879002de57199ff2c6b5bf0742d348ba58f",
"typeString": "literal_string \"Invalid amount provided\""
}
],
"id": 1880,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
2657,
2658
],
"referencedDeclaration": 2658,
"src": "2224:7:17",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 1885,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2224:46:17",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1886,
"nodeType": "ExpressionStatement",
"src": "2224:46:17"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1889,
"name": "token",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1855,
"src": "2365:5:17",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 1890,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1859,
"src": "2372:6:17",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 1888,
"name": "isUnderLimit",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2000,
"src": "2352:12:17",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
"typeString": "function (address,uint256) returns (bool)"
}
},
"id": 1891,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2352:27:17",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "4461696c79206c696d697420686173206265656e2072656163686564",
"id": 1892,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2381:30:17",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_8c8c9a9731e3c1970f356c6998c7e6418ab5b55402b68846f03a8bbe49c05905",
"typeString": "literal_string \"Daily limit has been reached\""
},
"value": "Daily limit has been reached"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_8c8c9a9731e3c1970f356c6998c7e6418ab5b55402b68846f03a8bbe49c05905",
"typeString": "literal_string \"Daily limit has been reached\""
}
],
"id": 1887,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
2657,
2658
],
"referencedDeclaration": 2658,
"src": "2344:7:17",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 1893,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2344:68:17",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1894,
"nodeType": "ExpressionStatement",
"src": "2344:68:17"
},
{
"expression": {
"argumentTypes": null,
"id": 1900,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1895,
"name": "dailyLimits",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1793,
"src": "2422:11:17",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1800_storage_$",
"typeString": "mapping(address => struct DailyLimitModule.DailyLimit storage ref)"
}
},
"id": 1897,
"indexExpression": {
"argumentTypes": null,
"id": 1896,
"name": "token",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1855,
"src": "2434:5:17",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "2422:18:17",
"typeDescriptions": {
"typeIdentifier": "t_struct$_DailyLimit_$1800_storage",
"typeString": "struct DailyLimitModule.DailyLimit storage ref"
}
},
"id": 1898,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"memberName": "spentToday",
"nodeType": "MemberAccess",
"referencedDeclaration": 1797,
"src": "2422:29:17",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "+=",
"rightHandSide": {
"argumentTypes": null,
"id": 1899,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1859,
"src": "2455:6:17",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "2422:39:17",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1901,
"nodeType": "ExpressionStatement",
"src": "2422:39:17"
},
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 1904,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1902,
"name": "token",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1855,
"src": "2475:5:17",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 1903,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2484:1:17",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "2475:10:17",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": {
"id": 1941,
"nodeType": "Block",
"src": "2633:238:17",
"statements": [
{
"assignments": [
1920
],
"declarations": [
{
"constant": false,
"id": 1920,
"name": "data",
"nodeType": "VariableDeclaration",
"scope": 1944,
"src": "2647:17:17",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 1919,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "2647:5:17",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 1927,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "7472616e7366657228616464726573732c75696e7432353629",
"id": 1923,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2691:27:17",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_a9059cbb2ab09eb219583f4a59a5d0623ade346d962bcd4e46b11da047c9049b",
"typeString": "literal_string \"transfer(address,uint256)\""
},
"value": "transfer(address,uint256)"
},
{
"argumentTypes": null,
"id": 1924,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1857,
"src": "2720:2:17",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 1925,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1859,
"src": "2724:6:17",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_stringliteral_a9059cbb2ab09eb219583f4a59a5d0623ade346d962bcd4e46b11da047c9049b",
"typeString": "literal_string \"transfer(address,uint256)\""
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"argumentTypes": null,
"id": 1921,
"name": "abi",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2641,
"src": "2667:3:17",
"typeDescriptions": {
"typeIdentifier": "t_magic_abi",
"typeString": "abi"
}
},
"id": 1922,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberName": "encodeWithSignature",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "2667:23:17",
"typeDescriptions": {
"typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
"typeString": "function (string memory) pure returns (bytes memory)"
}
},
"id": 1926,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2667:64:17",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "2647:84:17"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1931,
"name": "token",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1855,
"src": "2787:5:17",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"hexValue": "30",
"id": 1932,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2794:1:17",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
{
"argumentTypes": null,
"id": 1933,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1920,
"src": "2797:4:17",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1934,
"name": "Enum",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30,
"src": "2803:4:17",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_Enum_$30_$",
"typeString": "type(contract Enum)"
}
},
"id": 1935,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "Operation",
"nodeType": "MemberAccess",
"referencedDeclaration": 29,
"src": "2803:14:17",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_enum$_Operation_$29_$",
"typeString": "type(enum Enum.Operation)"
}
},
"id": 1936,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberName": "Call",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "2803:19:17",
"typeDescriptions": {
"typeIdentifier": "t_enum$_Operation_$29",
"typeString": "enum Enum.Operation"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
},
{
"typeIdentifier": "t_enum$_Operation_$29",
"typeString": "enum Enum.Operation"
}
],
"expression": {
"argumentTypes": null,
"id": 1929,
"name": "manager",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 727,
"src": "2753:7:17",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ModuleManager_$1118",
"typeString": "contract ModuleManager"
}
},
"id": 1930,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "execTransactionFromModule",
"nodeType": "MemberAccess",
"referencedDeclaration": 945,
"src": "2753:33:17",
"typeDescriptions": {
"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$returns$_t_bool_$",
"typeString": "function (address,uint256,bytes memory,enum Enum.Operation) external returns (bool)"
}
},
"id": 1937,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2753:70:17",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "436f756c64206e6f74206578656375746520746f6b656e207472616e73666572",
"id": 1938,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2825:34:17",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_00c0b742664159361be6aebbe2af44c4ae7eb95e13260265d1e1cf75d2593709",
"typeString": "literal_string \"Could not execute token transfer\""
},
"value": "Could not execute token transfer"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_00c0b742664159361be6aebbe2af44c4ae7eb95e13260265d1e1cf75d2593709",
"typeString": "literal_string \"Could not execute token transfer\""
}
],
"id": 1928,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
2657,
2658
],
"referencedDeclaration": 2658,
"src": "2745:7:17",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 1939,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2745:115:17",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1940,
"nodeType": "ExpressionStatement",
"src": "2745:115:17"
}
]
},
"id": 1942,
"nodeType": "IfStatement",
"src": "2471:400:17",
"trueBody": {
"id": 1918,
"nodeType": "Block",
"src": "2487:140:17",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1908,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1857,
"src": "2543:2:17",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 1909,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1859,
"src": "2547:6:17",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"argumentTypes": null,
"hexValue": "",
"id": 1910,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2555:2:17",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"typeString": "literal_string \"\""
},
"value": ""
},
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1911,
"name": "Enum",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30,
"src": "2559:4:17",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_Enum_$30_$",
"typeString": "type(contract Enum)"
}
},
"id": 1912,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "Operation",
"nodeType": "MemberAccess",
"referencedDeclaration": 29,
"src": "2559:14:17",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_enum$_Operation_$29_$",
"typeString": "type(enum Enum.Operation)"
}
},
"id": 1913,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberName": "Call",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "2559:19:17",
"typeDescriptions": {
"typeIdentifier": "t_enum$_Operation_$29",
"typeString": "enum Enum.Operation"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"typeString": "literal_string \"\""
},
{
"typeIdentifier": "t_enum$_Operation_$29",
"typeString": "enum Enum.Operation"
}
],
"expression": {
"argumentTypes": null,
"id": 1906,
"name": "manager",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 727,
"src": "2509:7:17",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ModuleManager_$1118",
"typeString": "contract ModuleManager"
}
},
"id": 1907,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "execTransactionFromModule",
"nodeType": "MemberAccess",
"referencedDeclaration": 945,
"src": "2509:33:17",
"typeDescriptions": {
"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$returns$_t_bool_$",
"typeString": "function (address,uint256,bytes memory,enum Enum.Operation) external returns (bool)"
}
},
"id": 1914,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2509:70:17",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "436f756c64206e6f742065786563757465206574686572207472616e73666572",
"id": 1915,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2581:34:17",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_2fae53cac084168982e43888b6e5eff084959ab65d511777b56b4cbb265d2586",
"typeString": "literal_string \"Could not execute ether transfer\""
},
"value": "Could not execute ether transfer"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_2fae53cac084168982e43888b6e5eff084959ab65d511777b56b4cbb265d2586",
"typeString": "literal_string \"Could not execute ether transfer\""
}
],
"id": 1905,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
2657,
2658
],
"referencedDeclaration": 2658,
"src": "2501:7:17",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 1916,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2501:115:17",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1917,
"nodeType": "ExpressionStatement",
"src": "2501:115:17"
}
]
}
}
]
},
"documentation": "@dev Returns if Safe transaction is a valid daily limit transaction.\n @param token Address of the token that should be transfered (0 for Ether)\n @param to Address to which the tokens should be transfered\n @param amount Amount of tokens (or Ether) that should be transfered\n @return Returns if transaction can be executed.",
"id": 1944,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [],
"name": "executeDailyLimit",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 1860,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1855,
"name": "token",
"nodeType": "VariableDeclaration",
"scope": 1944,
"src": "1917:13:17",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1854,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1917:7:17",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1857,
"name": "to",
"nodeType": "VariableDeclaration",
"scope": 1944,
"src": "1932:10:17",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1856,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1932:7:17",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1859,
"name": "amount",
"nodeType": "VariableDeclaration",
"scope": 1944,
"src": "1944:14:17",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1858,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1944:7:17",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1916:43:17"
},
"payable": false,
"returnParameters": {
"id": 1861,
"nodeType": "ParameterList",
"parameters": [],
"src": "1979:0:17"
},
"scope": 2014,
"src": "1890:987:17",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 1999,
"nodeType": "Block",
"src": "2980:391:17",
"statements": [
{
"assignments": [
1954
],
"declarations": [
{
"constant": false,
"id": 1954,
"name": "dailyLimit",
"nodeType": "VariableDeclaration",
"scope": 2000,
"src": "2990:29:17",
"stateVariable": false,
"storageLocation": "storage",
"typeDescriptions": {
"typeIdentifier": "t_struct$_DailyLimit_$1800_storage_ptr",
"typeString": "struct DailyLimitModule.DailyLimit"
},
"typeName": {
"contractScope": null,
"id": 1953,
"name": "DailyLimit",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 1800,
"src": "2990:10:17",
"typeDescriptions": {
"typeIdentifier": "t_struct$_DailyLimit_$1800_storage_ptr",
"typeString": "struct DailyLimitModule.DailyLimit"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 1958,
"initialValue": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1955,
"name": "dailyLimits",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1793,
"src": "3022:11:17",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1800_storage_$",
"typeString": "mapping(address => struct DailyLimitModule.DailyLimit storage ref)"
}
},
"id": 1957,
"indexExpression": {
"argumentTypes": null,
"id": 1956,
"name": "token",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1946,
"src": "3034:5:17",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "3022:18:17",
"typeDescriptions": {
"typeIdentifier": "t_struct$_DailyLimit_$1800_storage",
"typeString": "struct DailyLimitModule.DailyLimit storage ref"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "2990:50:17"
},
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1963,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 1959,
"name": "today",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2013,
"src": "3054:5:17",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
"typeString": "function () view returns (uint256)"
}
},
"id": 1960,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3054:7:17",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1961,
"name": "dailyLimit",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1954,
"src": "3064:10:17",
"typeDescriptions": {
"typeIdentifier": "t_struct$_DailyLimit_$1800_storage_ptr",
"typeString": "struct DailyLimitModule.DailyLimit storage pointer"
}
},
"id": 1962,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "lastDay",
"nodeType": "MemberAccess",
"referencedDeclaration": 1799,
"src": "3064:18:17",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "3054:28:17",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 1978,
"nodeType": "IfStatement",
"src": "3050:126:17",
"trueBody": {
"id": 1977,
"nodeType": "Block",
"src": "3084:92:17",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 1969,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1964,
"name": "dailyLimit",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1954,
"src": "3098:10:17",
"typeDescriptions": {
"typeIdentifier": "t_struct$_DailyLimit_$1800_storage_ptr",
"typeString": "struct DailyLimitModule.DailyLimit storage pointer"
}
},
"id": 1966,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"memberName": "lastDay",
"nodeType": "MemberAccess",
"referencedDeclaration": 1799,
"src": "3098:18:17",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 1967,
"name": "today",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2013,
"src": "3119:5:17",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
"typeString": "function () view returns (uint256)"
}
},
"id": 1968,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3119:7:17",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "3098:28:17",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1970,
"nodeType": "ExpressionStatement",
"src": "3098:28:17"
},
{
"expression": {
"argumentTypes": null,
"id": 1975,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1971,
"name": "dailyLimit",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1954,
"src": "3140:10:17",
"typeDescriptions": {
"typeIdentifier": "t_struct$_DailyLimit_$1800_storage_ptr",
"typeString": "struct DailyLimitModule.DailyLimit storage pointer"
}
},
"id": 1973,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"memberName": "spentToday",
"nodeType": "MemberAccess",
"referencedDeclaration": 1797,
"src": "3140:21:17",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "30",
"id": 1974,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3164:1:17",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "3140:25:17",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1976,
"nodeType": "ExpressionStatement",
"src": "3140:25:17"
}
]
}
},
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"id": 1993,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1985,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1982,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1979,
"name": "dailyLimit",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1954,
"src": "3192:10:17",
"typeDescriptions": {
"typeIdentifier": "t_struct$_DailyLimit_$1800_storage_ptr",
"typeString": "struct DailyLimitModule.DailyLimit storage pointer"
}
},
"id": 1980,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "spentToday",
"nodeType": "MemberAccess",
"referencedDeclaration": 1797,
"src": "3192:21:17",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "+",
"rightExpression": {
"argumentTypes": null,
"id": 1981,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1948,
"src": "3216:6:17",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "3192:30:17",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<=",
"rightExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1983,
"name": "dailyLimit",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1954,
"src": "3226:10:17",
"typeDescriptions": {
"typeIdentifier": "t_struct$_DailyLimit_$1800_storage_ptr",
"typeString": "struct DailyLimitModule.DailyLimit storage pointer"
}
},
"id": 1984,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "dailyLimit",
"nodeType": "MemberAccess",
"referencedDeclaration": 1795,
"src": "3226:21:17",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "3192:55:17",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "BinaryOperation",
"operator": "&&",
"rightExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1992,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1989,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1986,
"name": "dailyLimit",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1954,
"src": "3263:10:17",
"typeDescriptions": {
"typeIdentifier": "t_struct$_DailyLimit_$1800_storage_ptr",
"typeString": "struct DailyLimitModule.DailyLimit storage pointer"
}
},
"id": 1987,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "spentToday",
"nodeType": "MemberAccess",
"referencedDeclaration": 1797,
"src": "3263:21:17",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "+",
"rightExpression": {
"argumentTypes": null,
"id": 1988,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1948,
"src": "3287:6:17",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "3263:30:17",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1990,
"name": "dailyLimit",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1954,
"src": "3296:10:17",
"typeDescriptions": {
"typeIdentifier": "t_struct$_DailyLimit_$1800_storage_ptr",
"typeString": "struct DailyLimitModule.DailyLimit storage pointer"
}
},
"id": 1991,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "spentToday",
"nodeType": "MemberAccess",
"referencedDeclaration": 1797,
"src": "3296:21:17",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "3263:54:17",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"src": "3192:125:17",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 1996,
"nodeType": "IfStatement",
"src": "3185:157:17",
"trueBody": {
"expression": {
"argumentTypes": null,
"hexValue": "74727565",
"id": 1994,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3338:4:17",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "true"
},
"functionReturnParameters": 1952,
"id": 1995,
"nodeType": "Return",
"src": "3331:11:17"
}
},
{
"expression": {
"argumentTypes": null,
"hexValue": "66616c7365",
"id": 1997,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3359:5:17",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "false"
},
"functionReturnParameters": 1952,
"id": 1998,
"nodeType": "Return",
"src": "3352:12:17"
}
]
},
"documentation": null,
"id": 2000,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [],
"name": "isUnderLimit",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 1949,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1946,
"name": "token",
"nodeType": "VariableDeclaration",
"scope": 2000,
"src": "2905:13:17",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1945,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2905:7:17",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1948,
"name": "amount",
"nodeType": "VariableDeclaration",
"scope": 2000,
"src": "2920:14:17",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1947,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "2920:7:17",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "2904:31:17"
},
"payable": false,
"returnParameters": {
"id": 1952,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1951,
"name": "",
"nodeType": "VariableDeclaration",
"scope": 2000,
"src": "2970:4:17",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 1950,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "2970:4:17",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "2969:6:17"
},
"scope": 2014,
"src": "2883:488:17",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "internal"
},
{
"body": {
"id": 2012,
"nodeType": "Block",
"src": "3535:44:17",
"statements": [
{
"expression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 2010,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 2005,
"name": "now",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2656,
"src": "3552:3:17",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "-",
"rightExpression": {
"argumentTypes": null,
"components": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 2008,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 2006,
"name": "now",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2656,
"src": "3559:3:17",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "%",
"rightExpression": {
"argumentTypes": null,
"hexValue": "31",
"id": 2007,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3565:6:17",
"subdenomination": "days",
"typeDescriptions": {
"typeIdentifier": "t_rational_86400_by_1",
"typeString": "int_const 86400"
},
"value": "1"
},
"src": "3559:12:17",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"id": 2009,
"isConstant": false,
"isInlineArray": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "TupleExpression",
"src": "3558:14:17",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "3552:20:17",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"functionReturnParameters": 2004,
"id": 2011,
"nodeType": "Return",
"src": "3545:27:17"
}
]
},
"documentation": "@dev Returns last midnight as Unix timestamp.\n @return Unix timestamp.",
"id": 2013,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": true,
"modifiers": [],
"name": "today",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 2001,
"nodeType": "ParameterList",
"parameters": [],
"src": "3477:2:17"
},
"payable": false,
"returnParameters": {
"id": 2004,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 2003,
"name": "",
"nodeType": "VariableDeclaration",
"scope": 2013,
"src": "3525:4:17",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 2002,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "3525:4:17",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "3524:6:17"
},
"scope": 2014,
"src": "3463:116:17",
"stateMutability": "view",
"superFunction": null,
"visibility": "public"
}
],
"scope": 2015,
"src": "296:3285:17"
}
],
"src": "0:3582:17"
},
"legacyAST": {
"absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/modules/DailyLimitModule.sol",
"exportedSymbols": {
"DailyLimitModule": [
2014
]
},
"id": 2015,
"nodeType": "SourceUnit",
"nodes": [
{
"id": 1777,
"literals": [
"solidity",
"0.4",
".24"
],
"nodeType": "PragmaDirective",
"src": "0:23:17"
},
{
"absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol",
"file": "../Module.sol",
"id": 1778,
"nodeType": "ImportDirective",
"scope": 2015,
"sourceUnit": 763,
"src": "24:23:17",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ModuleManager.sol",
"file": "../ModuleManager.sol",
"id": 1779,
"nodeType": "ImportDirective",
"scope": 2015,
"sourceUnit": 1119,
"src": "48:30:17",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/OwnerManager.sol",
"file": "../OwnerManager.sol",
"id": 1780,
"nodeType": "ImportDirective",
"scope": 2015,
"sourceUnit": 1505,
"src": "79:29:17",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Enum.sol",
"file": "../Enum.sol",
"id": 1781,
"nodeType": "ImportDirective",
"scope": 2015,
"sourceUnit": 31,
"src": "109:21:17",
"symbolAliases": [],
"unitAlias": ""
},
{
"baseContracts": [
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 1782,
"name": "Module",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 762,
"src": "325:6:17",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Module_$762",
"typeString": "contract Module"
}
},
"id": 1783,
"nodeType": "InheritanceSpecifier",
"src": "325:6:17"
}
],
"contractDependencies": [
662,
762,
1654
],
"contractKind": "contract",
"documentation": "@title Daily Limit Module - Allows to transfer limited amounts of ERC20 tokens and Ether without confirmations.\n @author Stefan George - <stefan@gnosis.pm>",
"fullyImplemented": true,
"id": 2014,
"linearizedBaseContracts": [
2014,
762,
662,
1654
],
"name": "DailyLimitModule",
"nodeType": "ContractDefinition",
"nodes": [
{
"constant": true,
"id": 1786,
"name": "NAME",
"nodeType": "VariableDeclaration",
"scope": 2014,
"src": "339:50:17",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_string_memory",
"typeString": "string"
},
"typeName": {
"id": 1784,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "339:6:17",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"value": {
"argumentTypes": null,
"hexValue": "4461696c79204c696d6974204d6f64756c65",
"id": 1785,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "369:20:17",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_821ea27acfbc77b49f7a021dbe2eb92017d46b8bdda0bff9901cbc8ee143ceb3",
"typeString": "literal_string \"Daily Limit Module\""
},
"value": "Daily Limit Module"
},
"visibility": "public"
},
{
"constant": true,
"id": 1789,
"name": "VERSION",
"nodeType": "VariableDeclaration",
"scope": 2014,
"src": "395:40:17",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_string_memory",
"typeString": "string"
},
"typeName": {
"id": 1787,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "395:6:17",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"value": {
"argumentTypes": null,
"hexValue": "302e302e31",
"id": 1788,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "428:7:17",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885",
"typeString": "literal_string \"0.0.1\""
},
"value": "0.0.1"
},
"visibility": "public"
},
{
"constant": false,
"id": 1793,
"name": "dailyLimits",
"nodeType": "VariableDeclaration",
"scope": 2014,
"src": "513:50:17",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1800_storage_$",
"typeString": "mapping(address => struct DailyLimitModule.DailyLimit)"
},
"typeName": {
"id": 1792,
"keyType": {
"id": 1790,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "522:7:17",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Mapping",
"src": "513:31:17",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1800_storage_$",
"typeString": "mapping(address => struct DailyLimitModule.DailyLimit)"
},
"valueType": {
"contractScope": null,
"id": 1791,
"name": "DailyLimit",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 1800,
"src": "533:10:17",
"typeDescriptions": {
"typeIdentifier": "t_struct$_DailyLimit_$1800_storage_ptr",
"typeString": "struct DailyLimitModule.DailyLimit"
}
}
},
"value": null,
"visibility": "public"
},
{
"canonicalName": "DailyLimitModule.DailyLimit",
"id": 1800,
"members": [
{
"constant": false,
"id": 1795,
"name": "dailyLimit",
"nodeType": "VariableDeclaration",
"scope": 1800,
"src": "598:18:17",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1794,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "598:7:17",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1797,
"name": "spentToday",
"nodeType": "VariableDeclaration",
"scope": 1800,
"src": "626:18:17",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1796,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "626:7:17",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1799,
"name": "lastDay",
"nodeType": "VariableDeclaration",
"scope": 1800,
"src": "654:15:17",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1798,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "654:7:17",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"name": "DailyLimit",
"nodeType": "StructDefinition",
"scope": 2014,
"src": "570:106:17",
"visibility": "public"
},
{
"body": {
"id": 1835,
"nodeType": "Block",
"src": "994:146:17",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 1809,
"name": "setManager",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 761,
"src": "1004:10:17",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
"typeString": "function ()"
}
},
"id": 1810,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1004:12:17",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1811,
"nodeType": "ExpressionStatement",
"src": "1004:12:17"
},
{
"body": {
"expression": {
"argumentTypes": null,
"id": 1832,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1823,
"name": "dailyLimits",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1793,
"src": "1082:11:17",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1800_storage_$",
"typeString": "mapping(address => struct DailyLimitModule.DailyLimit storage ref)"
}
},
"id": 1827,
"indexExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1824,
"name": "tokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1803,
"src": "1094:6:17",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"id": 1826,
"indexExpression": {
"argumentTypes": null,
"id": 1825,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1813,
"src": "1101:1:17",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "1094:9:17",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "1082:22:17",
"typeDescriptions": {
"typeIdentifier": "t_struct$_DailyLimit_$1800_storage",
"typeString": "struct DailyLimitModule.DailyLimit storage ref"
}
},
"id": 1828,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"memberName": "dailyLimit",
"nodeType": "MemberAccess",
"referencedDeclaration": 1795,
"src": "1082:33:17",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1829,
"name": "_dailyLimits",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1806,
"src": "1118:12:17",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
"typeString": "uint256[] memory"
}
},
"id": 1831,
"indexExpression": {
"argumentTypes": null,
"id": 1830,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1813,
"src": "1131:1:17",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "1118:15:17",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "1082:51:17",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1833,
"nodeType": "ExpressionStatement",
"src": "1082:51:17"
},
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1819,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1816,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1813,
"src": "1046:1:17",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<",
"rightExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1817,
"name": "tokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1803,
"src": "1050:6:17",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"id": 1818,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "1050:13:17",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "1046:17:17",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 1834,
"initializationExpression": {
"assignments": [
1813
],
"declarations": [
{
"constant": false,
"id": 1813,
"name": "i",
"nodeType": "VariableDeclaration",
"scope": 1836,
"src": "1031:9:17",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1812,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1031:7:17",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 1815,
"initialValue": {
"argumentTypes": null,
"hexValue": "30",
"id": 1814,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1043:1:17",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"nodeType": "VariableDeclarationStatement",
"src": "1031:13:17"
},
"loopExpression": {
"expression": {
"argumentTypes": null,
"id": 1821,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "++",
"prefix": false,
"src": "1065:3:17",
"subExpression": {
"argumentTypes": null,
"id": 1820,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1813,
"src": "1065:1:17",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1822,
"nodeType": "ExpressionStatement",
"src": "1065:3:17"
},
"nodeType": "ForStatement",
"src": "1026:107:17"
}
]
},
"documentation": "@dev Setup function sets initial storage of contract.\n @param tokens List of token addresses. Ether is represented with address 0x0.\n @param _dailyLimits List of daily limits in smalles units (e.g. Wei for Ether).",
"id": 1836,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [],
"name": "setup",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 1807,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1803,
"name": "tokens",
"nodeType": "VariableDeclaration",
"scope": 1836,
"src": "933:16:17",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[]"
},
"typeName": {
"baseType": {
"id": 1801,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "933:7:17",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 1802,
"length": null,
"nodeType": "ArrayTypeName",
"src": "933:9:17",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
"typeString": "address[]"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1806,
"name": "_dailyLimits",
"nodeType": "VariableDeclaration",
"scope": 1836,
"src": "951:22:17",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
"typeString": "uint256[]"
},
"typeName": {
"baseType": {
"id": 1804,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "951:7:17",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1805,
"length": null,
"nodeType": "ArrayTypeName",
"src": "951:9:17",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
"typeString": "uint256[]"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "932:42:17"
},
"payable": false,
"returnParameters": {
"id": 1808,
"nodeType": "ParameterList",
"parameters": [],
"src": "994:0:17"
},
"scope": 2014,
"src": "918:222:17",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 1852,
"nodeType": "Block",
"src": "1467:59:17",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 1850,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1845,
"name": "dailyLimits",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1793,
"src": "1477:11:17",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1800_storage_$",
"typeString": "mapping(address => struct DailyLimitModule.DailyLimit storage ref)"
}
},
"id": 1847,
"indexExpression": {
"argumentTypes": null,
"id": 1846,
"name": "token",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1838,
"src": "1489:5:17",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "1477:18:17",
"typeDescriptions": {
"typeIdentifier": "t_struct$_DailyLimit_$1800_storage",
"typeString": "struct DailyLimitModule.DailyLimit storage ref"
}
},
"id": 1848,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"memberName": "dailyLimit",
"nodeType": "MemberAccess",
"referencedDeclaration": 1795,
"src": "1477:29:17",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 1849,
"name": "dailyLimit",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1840,
"src": "1509:10:17",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "1477:42:17",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1851,
"nodeType": "ExpressionStatement",
"src": "1477:42:17"
}
]
},
"documentation": "@dev Allows to update the daily limit for a specified token. This can only be done via a Safe transaction.\n @param token Token contract address.\n @param dailyLimit Daily limit in smallest token unit.",
"id": 1853,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [
{
"arguments": null,
"id": 1843,
"modifierName": {
"argumentTypes": null,
"id": 1842,
"name": "authorized",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 741,
"src": "1452:10:17",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "1452:10:17"
}
],
"name": "changeDailyLimit",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 1841,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1838,
"name": "token",
"nodeType": "VariableDeclaration",
"scope": 1853,
"src": "1394:13:17",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1837,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1394:7:17",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1840,
"name": "dailyLimit",
"nodeType": "VariableDeclaration",
"scope": 1853,
"src": "1409:18:17",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1839,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1409:7:17",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1393:35:17"
},
"payable": false,
"returnParameters": {
"id": 1844,
"nodeType": "ParameterList",
"parameters": [],
"src": "1467:0:17"
},
"scope": 2014,
"src": "1368:158:17",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 1943,
"nodeType": "Block",
"src": "1979:898:17",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1867,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2654,
"src": "2104:3:17",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 1868,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "2104:10:17",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1864,
"name": "manager",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 727,
"src": "2087:7:17",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ModuleManager_$1118",
"typeString": "contract ModuleManager"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_ModuleManager_$1118",
"typeString": "contract ModuleManager"
}
],
"id": 1863,
"name": "OwnerManager",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1504,
"src": "2074:12:17",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_OwnerManager_$1504_$",
"typeString": "type(contract OwnerManager)"
}
},
"id": 1865,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2074:21:17",
"typeDescriptions": {
"typeIdentifier": "t_contract$_OwnerManager_$1504",
"typeString": "contract OwnerManager"
}
},
"id": 1866,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "isOwner",
"nodeType": "MemberAccess",
"referencedDeclaration": 1454,
"src": "2074:29:17",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$",
"typeString": "function (address) view external returns (bool)"
}
},
"id": 1869,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2074:41:17",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "4d6574686f642063616e206f6e6c792062652063616c6c656420627920616e206f776e6572",
"id": 1870,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2117:39:17",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_4df072353ff501a1071e1cc3e2eb3ee0ebb21a35321efe90c0960bf2f4356640",
"typeString": "literal_string \"Method can only be called by an owner\""
},
"value": "Method can only be called by an owner"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_4df072353ff501a1071e1cc3e2eb3ee0ebb21a35321efe90c0960bf2f4356640",
"typeString": "literal_string \"Method can only be called by an owner\""
}
],
"id": 1862,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
2657,
2658
],
"referencedDeclaration": 2658,
"src": "2066:7:17",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 1871,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2066:91:17",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1872,
"nodeType": "ExpressionStatement",
"src": "2066:91:17"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 1876,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1874,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1857,
"src": "2175:2:17",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 1875,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2181:1:17",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "2175:7:17",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "496e76616c696420746f20616464726573732070726f7669646564",
"id": 1877,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2184:29:17",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_c5adba0692e08f8080ea3ec2bf95727d181df9c72d0fc6db8f77e3703d9523f1",
"typeString": "literal_string \"Invalid to address provided\""
},
"value": "Invalid to address provided"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_c5adba0692e08f8080ea3ec2bf95727d181df9c72d0fc6db8f77e3703d9523f1",
"typeString": "literal_string \"Invalid to address provided\""
}
],
"id": 1873,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
2657,
2658
],
"referencedDeclaration": 2658,
"src": "2167:7:17",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 1878,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2167:47:17",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1879,
"nodeType": "ExpressionStatement",
"src": "2167:47:17"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1883,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1881,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1859,
"src": "2232:6:17",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 1882,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2241:1:17",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "2232:10:17",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "496e76616c696420616d6f756e742070726f7669646564",
"id": 1884,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2244:25:17",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_991bec80688b0edba4751e32429f6879002de57199ff2c6b5bf0742d348ba58f",
"typeString": "literal_string \"Invalid amount provided\""
},
"value": "Invalid amount provided"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_991bec80688b0edba4751e32429f6879002de57199ff2c6b5bf0742d348ba58f",
"typeString": "literal_string \"Invalid amount provided\""
}
],
"id": 1880,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
2657,
2658
],
"referencedDeclaration": 2658,
"src": "2224:7:17",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 1885,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2224:46:17",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1886,
"nodeType": "ExpressionStatement",
"src": "2224:46:17"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1889,
"name": "token",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1855,
"src": "2365:5:17",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 1890,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1859,
"src": "2372:6:17",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 1888,
"name": "isUnderLimit",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2000,
"src": "2352:12:17",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
"typeString": "function (address,uint256) returns (bool)"
}
},
"id": 1891,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2352:27:17",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "4461696c79206c696d697420686173206265656e2072656163686564",
"id": 1892,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2381:30:17",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_8c8c9a9731e3c1970f356c6998c7e6418ab5b55402b68846f03a8bbe49c05905",
"typeString": "literal_string \"Daily limit has been reached\""
},
"value": "Daily limit has been reached"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_8c8c9a9731e3c1970f356c6998c7e6418ab5b55402b68846f03a8bbe49c05905",
"typeString": "literal_string \"Daily limit has been reached\""
}
],
"id": 1887,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
2657,
2658
],
"referencedDeclaration": 2658,
"src": "2344:7:17",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 1893,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2344:68:17",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1894,
"nodeType": "ExpressionStatement",
"src": "2344:68:17"
},
{
"expression": {
"argumentTypes": null,
"id": 1900,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1895,
"name": "dailyLimits",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1793,
"src": "2422:11:17",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1800_storage_$",
"typeString": "mapping(address => struct DailyLimitModule.DailyLimit storage ref)"
}
},
"id": 1897,
"indexExpression": {
"argumentTypes": null,
"id": 1896,
"name": "token",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1855,
"src": "2434:5:17",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "2422:18:17",
"typeDescriptions": {
"typeIdentifier": "t_struct$_DailyLimit_$1800_storage",
"typeString": "struct DailyLimitModule.DailyLimit storage ref"
}
},
"id": 1898,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"memberName": "spentToday",
"nodeType": "MemberAccess",
"referencedDeclaration": 1797,
"src": "2422:29:17",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "+=",
"rightHandSide": {
"argumentTypes": null,
"id": 1899,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1859,
"src": "2455:6:17",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "2422:39:17",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1901,
"nodeType": "ExpressionStatement",
"src": "2422:39:17"
},
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 1904,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1902,
"name": "token",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1855,
"src": "2475:5:17",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 1903,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2484:1:17",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "2475:10:17",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": {
"id": 1941,
"nodeType": "Block",
"src": "2633:238:17",
"statements": [
{
"assignments": [
1920
],
"declarations": [
{
"constant": false,
"id": 1920,
"name": "data",
"nodeType": "VariableDeclaration",
"scope": 1944,
"src": "2647:17:17",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 1919,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "2647:5:17",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 1927,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "7472616e7366657228616464726573732c75696e7432353629",
"id": 1923,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2691:27:17",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_a9059cbb2ab09eb219583f4a59a5d0623ade346d962bcd4e46b11da047c9049b",
"typeString": "literal_string \"transfer(address,uint256)\""
},
"value": "transfer(address,uint256)"
},
{
"argumentTypes": null,
"id": 1924,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1857,
"src": "2720:2:17",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 1925,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1859,
"src": "2724:6:17",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_stringliteral_a9059cbb2ab09eb219583f4a59a5d0623ade346d962bcd4e46b11da047c9049b",
"typeString": "literal_string \"transfer(address,uint256)\""
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"argumentTypes": null,
"id": 1921,
"name": "abi",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2641,
"src": "2667:3:17",
"typeDescriptions": {
"typeIdentifier": "t_magic_abi",
"typeString": "abi"
}
},
"id": 1922,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberName": "encodeWithSignature",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "2667:23:17",
"typeDescriptions": {
"typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
"typeString": "function (string memory) pure returns (bytes memory)"
}
},
"id": 1926,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2667:64:17",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "2647:84:17"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1931,
"name": "token",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1855,
"src": "2787:5:17",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"hexValue": "30",
"id": 1932,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2794:1:17",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
{
"argumentTypes": null,
"id": 1933,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1920,
"src": "2797:4:17",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1934,
"name": "Enum",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30,
"src": "2803:4:17",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_Enum_$30_$",
"typeString": "type(contract Enum)"
}
},
"id": 1935,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "Operation",
"nodeType": "MemberAccess",
"referencedDeclaration": 29,
"src": "2803:14:17",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_enum$_Operation_$29_$",
"typeString": "type(enum Enum.Operation)"
}
},
"id": 1936,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberName": "Call",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "2803:19:17",
"typeDescriptions": {
"typeIdentifier": "t_enum$_Operation_$29",
"typeString": "enum Enum.Operation"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
},
{
"typeIdentifier": "t_enum$_Operation_$29",
"typeString": "enum Enum.Operation"
}
],
"expression": {
"argumentTypes": null,
"id": 1929,
"name": "manager",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 727,
"src": "2753:7:17",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ModuleManager_$1118",
"typeString": "contract ModuleManager"
}
},
"id": 1930,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "execTransactionFromModule",
"nodeType": "MemberAccess",
"referencedDeclaration": 945,
"src": "2753:33:17",
"typeDescriptions": {
"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$returns$_t_bool_$",
"typeString": "function (address,uint256,bytes memory,enum Enum.Operation) external returns (bool)"
}
},
"id": 1937,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2753:70:17",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "436f756c64206e6f74206578656375746520746f6b656e207472616e73666572",
"id": 1938,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2825:34:17",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_00c0b742664159361be6aebbe2af44c4ae7eb95e13260265d1e1cf75d2593709",
"typeString": "literal_string \"Could not execute token transfer\""
},
"value": "Could not execute token transfer"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_00c0b742664159361be6aebbe2af44c4ae7eb95e13260265d1e1cf75d2593709",
"typeString": "literal_string \"Could not execute token transfer\""
}
],
"id": 1928,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
2657,
2658
],
"referencedDeclaration": 2658,
"src": "2745:7:17",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 1939,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2745:115:17",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1940,
"nodeType": "ExpressionStatement",
"src": "2745:115:17"
}
]
},
"id": 1942,
"nodeType": "IfStatement",
"src": "2471:400:17",
"trueBody": {
"id": 1918,
"nodeType": "Block",
"src": "2487:140:17",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1908,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1857,
"src": "2543:2:17",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 1909,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1859,
"src": "2547:6:17",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"argumentTypes": null,
"hexValue": "",
"id": 1910,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2555:2:17",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"typeString": "literal_string \"\""
},
"value": ""
},
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1911,
"name": "Enum",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30,
"src": "2559:4:17",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_Enum_$30_$",
"typeString": "type(contract Enum)"
}
},
"id": 1912,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "Operation",
"nodeType": "MemberAccess",
"referencedDeclaration": 29,
"src": "2559:14:17",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_enum$_Operation_$29_$",
"typeString": "type(enum Enum.Operation)"
}
},
"id": 1913,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberName": "Call",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "2559:19:17",
"typeDescriptions": {
"typeIdentifier": "t_enum$_Operation_$29",
"typeString": "enum Enum.Operation"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"typeString": "literal_string \"\""
},
{
"typeIdentifier": "t_enum$_Operation_$29",
"typeString": "enum Enum.Operation"
}
],
"expression": {
"argumentTypes": null,
"id": 1906,
"name": "manager",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 727,
"src": "2509:7:17",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ModuleManager_$1118",
"typeString": "contract ModuleManager"
}
},
"id": 1907,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "execTransactionFromModule",
"nodeType": "MemberAccess",
"referencedDeclaration": 945,
"src": "2509:33:17",
"typeDescriptions": {
"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$returns$_t_bool_$",
"typeString": "function (address,uint256,bytes memory,enum Enum.Operation) external returns (bool)"
}
},
"id": 1914,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2509:70:17",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "436f756c64206e6f742065786563757465206574686572207472616e73666572",
"id": 1915,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2581:34:17",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_2fae53cac084168982e43888b6e5eff084959ab65d511777b56b4cbb265d2586",
"typeString": "literal_string \"Could not execute ether transfer\""
},
"value": "Could not execute ether transfer"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_2fae53cac084168982e43888b6e5eff084959ab65d511777b56b4cbb265d2586",
"typeString": "literal_string \"Could not execute ether transfer\""
}
],
"id": 1905,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
2657,
2658
],
"referencedDeclaration": 2658,
"src": "2501:7:17",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 1916,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2501:115:17",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1917,
"nodeType": "ExpressionStatement",
"src": "2501:115:17"
}
]
}
}
]
},
"documentation": "@dev Returns if Safe transaction is a valid daily limit transaction.\n @param token Address of the token that should be transfered (0 for Ether)\n @param to Address to which the tokens should be transfered\n @param amount Amount of tokens (or Ether) that should be transfered\n @return Returns if transaction can be executed.",
"id": 1944,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [],
"name": "executeDailyLimit",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 1860,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1855,
"name": "token",
"nodeType": "VariableDeclaration",
"scope": 1944,
"src": "1917:13:17",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1854,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1917:7:17",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1857,
"name": "to",
"nodeType": "VariableDeclaration",
"scope": 1944,
"src": "1932:10:17",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1856,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1932:7:17",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1859,
"name": "amount",
"nodeType": "VariableDeclaration",
"scope": 1944,
"src": "1944:14:17",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1858,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1944:7:17",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1916:43:17"
},
"payable": false,
"returnParameters": {
"id": 1861,
"nodeType": "ParameterList",
"parameters": [],
"src": "1979:0:17"
},
"scope": 2014,
"src": "1890:987:17",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 1999,
"nodeType": "Block",
"src": "2980:391:17",
"statements": [
{
"assignments": [
1954
],
"declarations": [
{
"constant": false,
"id": 1954,
"name": "dailyLimit",
"nodeType": "VariableDeclaration",
"scope": 2000,
"src": "2990:29:17",
"stateVariable": false,
"storageLocation": "storage",
"typeDescriptions": {
"typeIdentifier": "t_struct$_DailyLimit_$1800_storage_ptr",
"typeString": "struct DailyLimitModule.DailyLimit"
},
"typeName": {
"contractScope": null,
"id": 1953,
"name": "DailyLimit",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 1800,
"src": "2990:10:17",
"typeDescriptions": {
"typeIdentifier": "t_struct$_DailyLimit_$1800_storage_ptr",
"typeString": "struct DailyLimitModule.DailyLimit"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 1958,
"initialValue": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1955,
"name": "dailyLimits",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1793,
"src": "3022:11:17",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1800_storage_$",
"typeString": "mapping(address => struct DailyLimitModule.DailyLimit storage ref)"
}
},
"id": 1957,
"indexExpression": {
"argumentTypes": null,
"id": 1956,
"name": "token",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1946,
"src": "3034:5:17",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "3022:18:17",
"typeDescriptions": {
"typeIdentifier": "t_struct$_DailyLimit_$1800_storage",
"typeString": "struct DailyLimitModule.DailyLimit storage ref"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "2990:50:17"
},
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1963,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 1959,
"name": "today",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2013,
"src": "3054:5:17",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
"typeString": "function () view returns (uint256)"
}
},
"id": 1960,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3054:7:17",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1961,
"name": "dailyLimit",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1954,
"src": "3064:10:17",
"typeDescriptions": {
"typeIdentifier": "t_struct$_DailyLimit_$1800_storage_ptr",
"typeString": "struct DailyLimitModule.DailyLimit storage pointer"
}
},
"id": 1962,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "lastDay",
"nodeType": "MemberAccess",
"referencedDeclaration": 1799,
"src": "3064:18:17",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "3054:28:17",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 1978,
"nodeType": "IfStatement",
"src": "3050:126:17",
"trueBody": {
"id": 1977,
"nodeType": "Block",
"src": "3084:92:17",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 1969,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1964,
"name": "dailyLimit",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1954,
"src": "3098:10:17",
"typeDescriptions": {
"typeIdentifier": "t_struct$_DailyLimit_$1800_storage_ptr",
"typeString": "struct DailyLimitModule.DailyLimit storage pointer"
}
},
"id": 1966,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"memberName": "lastDay",
"nodeType": "MemberAccess",
"referencedDeclaration": 1799,
"src": "3098:18:17",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 1967,
"name": "today",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2013,
"src": "3119:5:17",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
"typeString": "function () view returns (uint256)"
}
},
"id": 1968,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3119:7:17",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "3098:28:17",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1970,
"nodeType": "ExpressionStatement",
"src": "3098:28:17"
},
{
"expression": {
"argumentTypes": null,
"id": 1975,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1971,
"name": "dailyLimit",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1954,
"src": "3140:10:17",
"typeDescriptions": {
"typeIdentifier": "t_struct$_DailyLimit_$1800_storage_ptr",
"typeString": "struct DailyLimitModule.DailyLimit storage pointer"
}
},
"id": 1973,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"memberName": "spentToday",
"nodeType": "MemberAccess",
"referencedDeclaration": 1797,
"src": "3140:21:17",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "30",
"id": 1974,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3164:1:17",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "3140:25:17",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1976,
"nodeType": "ExpressionStatement",
"src": "3140:25:17"
}
]
}
},
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"id": 1993,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1985,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1982,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1979,
"name": "dailyLimit",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1954,
"src": "3192:10:17",
"typeDescriptions": {
"typeIdentifier": "t_struct$_DailyLimit_$1800_storage_ptr",
"typeString": "struct DailyLimitModule.DailyLimit storage pointer"
}
},
"id": 1980,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "spentToday",
"nodeType": "MemberAccess",
"referencedDeclaration": 1797,
"src": "3192:21:17",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "+",
"rightExpression": {
"argumentTypes": null,
"id": 1981,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1948,
"src": "3216:6:17",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "3192:30:17",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<=",
"rightExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1983,
"name": "dailyLimit",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1954,
"src": "3226:10:17",
"typeDescriptions": {
"typeIdentifier": "t_struct$_DailyLimit_$1800_storage_ptr",
"typeString": "struct DailyLimitModule.DailyLimit storage pointer"
}
},
"id": 1984,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "dailyLimit",
"nodeType": "MemberAccess",
"referencedDeclaration": 1795,
"src": "3226:21:17",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "3192:55:17",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "BinaryOperation",
"operator": "&&",
"rightExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1992,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1989,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1986,
"name": "dailyLimit",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1954,
"src": "3263:10:17",
"typeDescriptions": {
"typeIdentifier": "t_struct$_DailyLimit_$1800_storage_ptr",
"typeString": "struct DailyLimitModule.DailyLimit storage pointer"
}
},
"id": 1987,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "spentToday",
"nodeType": "MemberAccess",
"referencedDeclaration": 1797,
"src": "3263:21:17",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "+",
"rightExpression": {
"argumentTypes": null,
"id": 1988,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1948,
"src": "3287:6:17",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "3263:30:17",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1990,
"name": "dailyLimit",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1954,
"src": "3296:10:17",
"typeDescriptions": {
"typeIdentifier": "t_struct$_DailyLimit_$1800_storage_ptr",
"typeString": "struct DailyLimitModule.DailyLimit storage pointer"
}
},
"id": 1991,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "spentToday",
"nodeType": "MemberAccess",
"referencedDeclaration": 1797,
"src": "3296:21:17",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "3263:54:17",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"src": "3192:125:17",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 1996,
"nodeType": "IfStatement",
"src": "3185:157:17",
"trueBody": {
"expression": {
"argumentTypes": null,
"hexValue": "74727565",
"id": 1994,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3338:4:17",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "true"
},
"functionReturnParameters": 1952,
"id": 1995,
"nodeType": "Return",
"src": "3331:11:17"
}
},
{
"expression": {
"argumentTypes": null,
"hexValue": "66616c7365",
"id": 1997,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3359:5:17",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "false"
},
"functionReturnParameters": 1952,
"id": 1998,
"nodeType": "Return",
"src": "3352:12:17"
}
]
},
"documentation": null,
"id": 2000,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [],
"name": "isUnderLimit",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 1949,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1946,
"name": "token",
"nodeType": "VariableDeclaration",
"scope": 2000,
"src": "2905:13:17",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1945,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2905:7:17",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1948,
"name": "amount",
"nodeType": "VariableDeclaration",
"scope": 2000,
"src": "2920:14:17",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1947,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "2920:7:17",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "2904:31:17"
},
"payable": false,
"returnParameters": {
"id": 1952,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1951,
"name": "",
"nodeType": "VariableDeclaration",
"scope": 2000,
"src": "2970:4:17",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 1950,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "2970:4:17",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "2969:6:17"
},
"scope": 2014,
"src": "2883:488:17",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "internal"
},
{
"body": {
"id": 2012,
"nodeType": "Block",
"src": "3535:44:17",
"statements": [
{
"expression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 2010,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 2005,
"name": "now",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2656,
"src": "3552:3:17",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "-",
"rightExpression": {
"argumentTypes": null,
"components": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 2008,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 2006,
"name": "now",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2656,
"src": "3559:3:17",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "%",
"rightExpression": {
"argumentTypes": null,
"hexValue": "31",
"id": 2007,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3565:6:17",
"subdenomination": "days",
"typeDescriptions": {
"typeIdentifier": "t_rational_86400_by_1",
"typeString": "int_const 86400"
},
"value": "1"
},
"src": "3559:12:17",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"id": 2009,
"isConstant": false,
"isInlineArray": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "TupleExpression",
"src": "3558:14:17",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "3552:20:17",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"functionReturnParameters": 2004,
"id": 2011,
"nodeType": "Return",
"src": "3545:27:17"
}
]
},
"documentation": "@dev Returns last midnight as Unix timestamp.\n @return Unix timestamp.",
"id": 2013,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": true,
"modifiers": [],
"name": "today",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 2001,
"nodeType": "ParameterList",
"parameters": [],
"src": "3477:2:17"
},
"payable": false,
"returnParameters": {
"id": 2004,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 2003,
"name": "",
"nodeType": "VariableDeclaration",
"scope": 2013,
"src": "3525:4:17",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 2002,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "3525:4:17",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "3524:6:17"
},
"scope": 2014,
"src": "3463:116:17",
"stateMutability": "view",
"superFunction": null,
"visibility": "public"
}
],
"scope": 2015,
"src": "296:3285:17"
}
],
"src": "0:3582:17"
},
"compiler": {
"name": "solc",
"version": "0.4.24+commit.e67f0147.Emscripten.clang"
},
"networks": {
2018-06-15 09:08:51 +00:00
"4": {
"events": {},
"links": {},
"address": "0xe6499e457636344bf3561ba3ae15cff9f2d25ac7",
"transactionHash": "0xab457709a3221b85c6aa15b73564eb82c2e9231ff744c505bbead66862a66d01"
},
2018-06-15 07:31:07 +00:00
"1529048918903": {
2018-05-31 13:01:02 +00:00
"events": {},
"links": {},
2018-06-15 07:31:07 +00:00
"address": "0xdc8a3873d2fb4956e2a882441d8d557546353264",
2018-06-11 07:55:04 +00:00
"transactionHash": "0xf501438a4ec967e2928d922e4af568a2a5365002f8b3f9e32117bbacfaa49331"
2018-05-31 13:01:02 +00:00
}
},
"schemaVersion": "2.0.0",
2018-06-15 09:08:51 +00:00
"updatedAt": "2018-06-15T09:07:39.528Z"
2018-05-31 13:01:02 +00:00
}