@descent-protocol/sdk
Version:
A Typescript library for interacting with the Descent Protocol
944 lines (943 loc) • 108 kB
JSON
{
"abi": [
{
"inputs": [
{
"internalType": "contract Vault",
"name": "_vault",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [],
"name": "AlreadyInitialized",
"type": "error"
},
{
"inputs": [],
"name": "BadPrice",
"type": "error"
},
{
"inputs": [],
"name": "NewOwnerIsZeroAddress",
"type": "error"
},
{
"inputs": [],
"name": "NoHandoverRequest",
"type": "error"
},
{
"inputs": [],
"name": "NotPaused",
"type": "error"
},
{
"inputs": [],
"name": "Paused",
"type": "error"
},
{
"inputs": [],
"name": "Unauthorized",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "pendingOwner",
"type": "address"
}
],
"name": "OwnershipHandoverCanceled",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "pendingOwner",
"type": "address"
}
],
"name": "OwnershipHandoverRequested",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "oldOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "OwnershipTransferred",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "collateral",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "price",
"type": "uint256"
}
],
"name": "Read",
"type": "event"
},
{
"inputs": [],
"name": "cancelOwnershipHandover",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "contract ERC20Token",
"name": "",
"type": "address"
}
],
"name": "collaterals",
"outputs": [
{
"internalType": "contract IOSM",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "pendingOwner",
"type": "address"
}
],
"name": "completeOwnershipHandover",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "contract ERC20Token",
"name": "collateral",
"type": "address"
},
{
"internalType": "uint256",
"name": "price",
"type": "uint256"
}
],
"name": "mockUpdatePrice",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "result",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "pendingOwner",
"type": "address"
}
],
"name": "ownershipHandoverExpiresAt",
"outputs": [
{
"internalType": "uint256",
"name": "result",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "pause",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "renounceOwnership",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [],
"name": "requestOwnershipHandover",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "contract ERC20Token",
"name": "collateral",
"type": "address"
},
{
"internalType": "contract IOSM",
"name": "oracle",
"type": "address"
}
],
"name": "setCollateralOSM",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "status",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "transferOwnership",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [],
"name": "unpause",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "contract ERC20Token",
"name": "collateral",
"type": "address"
}
],
"name": "updatePrice",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "vault",
"outputs": [
{
"internalType": "contract Vault",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
}
],
"bytecode": {
"object": "0x608060405234801561001057600080fd5b5060405161097538038061097583398101604081905261002f916100a3565b600260005561003d33610067565b600180546001600160a01b0319166001600160a01b039290921691909117905560026000556100d3565b6001600160a01b0316638b78c6d8198190558060007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b6000602082840312156100b557600080fd5b81516001600160a01b03811681146100cc57600080fd5b9392505050565b610893806100e26000396000f3fe6080604052600436106100e85760003560e01c80638da5cb5b1161008a578063f04e283e11610059578063f04e283e14610252578063f2fde38b14610265578063fbfa77cf14610278578063fee81cf4146102a557600080fd5b80638da5cb5b1461017a57806396e85ced146101cf578063c7331b01146101ef578063eeb97d3b1461020f57600080fd5b8063425bddcf116100c6578063425bddcf1461013557806354d1f13d14610155578063715018a61461015d5780638456cb591461016557600080fd5b8063200d2ed2146100ed57806325692962146101165780633f4ba83a14610120575b600080fd5b3480156100f957600080fd5b5061010360005481565b6040519081526020015b60405180910390f35b61011e6102d8565b005b34801561012c57600080fd5b5061011e610328565b34801561014157600080fd5b5061011e6101503660046107f1565b610373565b61011e61040a565b61011e610446565b34801561017157600080fd5b5061011e61045a565b34801561018657600080fd5b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927545b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161010d565b3480156101db57600080fd5b5061011e6101ea36600461082a565b6104a5565b3480156101fb57600080fd5b5061011e61020a36600461084e565b61064e565b34801561021b57600080fd5b506101aa61022a36600461082a565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b61011e61026036600461082a565b6106cc565b61011e61027336600461082a565b61070c565b34801561028457600080fd5b506001546101aa9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156102b157600080fd5b506101036102c036600461082a565b63389a75e1600c908152600091909152602090205490565b60006202a30067ffffffffffffffff164201905063389a75e1600c5233600052806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d600080a250565b600260005403610364576040517f6cd6020100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61036c610733565b6002600055565b6001600054036103af576040517f9e87fac800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6103b7610733565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260026020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909216179055565b63389a75e1600c523360005260006020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c92600080a2565b61044e610733565b6104586000610769565b565b600160005403610496576040517f9e87fac800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61049e610733565b6001600055565b6001600054036104e1576040517f9e87fac800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff80821660009081526002602090815260408083205481517f9fa6a6e3000000000000000000000000000000000000000000000000000000008152915193941692639fa6a6e3926004808401939192918290030181865afa15801561055e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610582919061087a565b9050806000036105be576040517ffd1ee34900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040517f457972de00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018490529091169063457972de90604401600060405180830381600087803b15801561063257600080fd5b505af1158015610646573d6000803e3d6000fd5b505050505050565b60016000540361068a576040517f9e87fac800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610692610733565b806000036105be576040517ffd1ee34900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106d4610733565b63389a75e1600c52806000526020600c2080544211156106fc57636f5e88186000526004601cfd5b6000905561070981610769565b50565b610714610733565b8060601b61072a57637448fbae6000526004601cfd5b61070981610769565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610458576382b429006000526004601cfd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a355565b73ffffffffffffffffffffffffffffffffffffffff8116811461070957600080fd5b6000806040838503121561080457600080fd5b823561080f816107cf565b9150602083013561081f816107cf565b809150509250929050565b60006020828403121561083c57600080fd5b8135610847816107cf565b9392505050565b6000806040838503121561086157600080fd5b823561086c816107cf565b946020939093013593505050565b60006020828403121561088c57600080fd5b505191905056",
"sourceMap": "348:1130:36:-:0;;;664:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;203:1:29;280:6;:13;700:28:36;717:10;700:16;:28::i;:::-;738:5;:14;;-1:-1:-1;;;;;;738:14:36;-1:-1:-1;;;;;738:14:36;;;;;;;;;;203:1:29;-1:-1:-1;762:13:36;348:1130;;4883:1190:22;-1:-1:-1;;;;;5793:26:22;-1:-1:-1;;5876:29:22;;;5793:26;6031:1;5991:38;6031:1;;5980:63;4883:1190;:::o;14:305:60:-;99:6;152:2;140:9;131:7;127:23;123:32;120:52;;;168:1;165;158:12;120:52;194:16;;-1:-1:-1;;;;;239:31:60;;229:42;;219:70;;285:1;282;275:12;219:70;308:5;14:305;-1:-1:-1;;;14:305:60:o;:::-;348:1130:36;;;;;;",
"linkReferences": {}
},
"deployedBytecode": {
"object": "0x6080604052600436106100e85760003560e01c80638da5cb5b1161008a578063f04e283e11610059578063f04e283e14610252578063f2fde38b14610265578063fbfa77cf14610278578063fee81cf4146102a557600080fd5b80638da5cb5b1461017a57806396e85ced146101cf578063c7331b01146101ef578063eeb97d3b1461020f57600080fd5b8063425bddcf116100c6578063425bddcf1461013557806354d1f13d14610155578063715018a61461015d5780638456cb591461016557600080fd5b8063200d2ed2146100ed57806325692962146101165780633f4ba83a14610120575b600080fd5b3480156100f957600080fd5b5061010360005481565b6040519081526020015b60405180910390f35b61011e6102d8565b005b34801561012c57600080fd5b5061011e610328565b34801561014157600080fd5b5061011e6101503660046107f1565b610373565b61011e61040a565b61011e610446565b34801561017157600080fd5b5061011e61045a565b34801561018657600080fd5b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927545b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161010d565b3480156101db57600080fd5b5061011e6101ea36600461082a565b6104a5565b3480156101fb57600080fd5b5061011e61020a36600461084e565b61064e565b34801561021b57600080fd5b506101aa61022a36600461082a565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b61011e61026036600461082a565b6106cc565b61011e61027336600461082a565b61070c565b34801561028457600080fd5b506001546101aa9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156102b157600080fd5b506101036102c036600461082a565b63389a75e1600c908152600091909152602090205490565b60006202a30067ffffffffffffffff164201905063389a75e1600c5233600052806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d600080a250565b600260005403610364576040517f6cd6020100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61036c610733565b6002600055565b6001600054036103af576040517f9e87fac800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6103b7610733565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260026020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909216179055565b63389a75e1600c523360005260006020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c92600080a2565b61044e610733565b6104586000610769565b565b600160005403610496576040517f9e87fac800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61049e610733565b6001600055565b6001600054036104e1576040517f9e87fac800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff80821660009081526002602090815260408083205481517f9fa6a6e3000000000000000000000000000000000000000000000000000000008152915193941692639fa6a6e3926004808401939192918290030181865afa15801561055e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610582919061087a565b9050806000036105be576040517ffd1ee34900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040517f457972de00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018490529091169063457972de90604401600060405180830381600087803b15801561063257600080fd5b505af1158015610646573d6000803e3d6000fd5b505050505050565b60016000540361068a576040517f9e87fac800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610692610733565b806000036105be576040517ffd1ee34900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106d4610733565b63389a75e1600c52806000526020600c2080544211156106fc57636f5e88186000526004601cfd5b6000905561070981610769565b50565b610714610733565b8060601b61072a57637448fbae6000526004601cfd5b61070981610769565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610458576382b429006000526004601cfd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a355565b73ffffffffffffffffffffffffffffffffffffffff8116811461070957600080fd5b6000806040838503121561080457600080fd5b823561080f816107cf565b9150602083013561081f816107cf565b809150509250929050565b60006020828403121561083c57600080fd5b8135610847816107cf565b9392505050565b6000806040838503121561086157600080fd5b823561086c816107cf565b946020939093013593505050565b60006020828403121561088c57600080fd5b505191905056",
"sourceMap": "348:1130:36:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;211:21:29;;;;;;;;;;;;;;;;;;;160:25:60;;;148:2;133:18;211:21:29;;;;;;;;9021:617:22;;;:::i;:::-;;474:88:36;;;;;;;;;;;;;:::i;788:144::-;;;;;;;;;;-1:-1:-1;788:144:36;;;;;:::i;:::-;;:::i;9720:456:22:-;;;:::i;8762:100::-;;;:::i;568:90:36:-;;;;;;;;;;;;;:::i;11408:182:22:-;;;;;;;;;;-1:-1:-1;11562:11:22;11556:18;11408:182;;;994:42:60;982:55;;;964:74;;952:2;937:18;11408:182:22;818:226:60;997:222:36;;;;;;;;;;-1:-1:-1;997:222:36;;;;;:::i;:::-;;:::i;1284:192::-;;;;;;;;;;-1:-1:-1;1284:192:36;;;;;:::i;:::-;;:::i;421:46::-;;;;;;;;;;-1:-1:-1;421:46:36;;;;;:::i;:::-;;;;;;;;;;;;;;;;10363:708:22;;;;;;:::i;:::-;;:::i;8348:349::-;;;;;;:::i;:::-;;:::i;396:18:36:-;;;;;;;;;;-1:-1:-1;396:18:36;;;;;;;;11693:435:22;;;;;;;;;;-1:-1:-1;11693:435:22;;;;;:::i;:::-;11963:19;11957:4;11950:33;;;11812:14;11996:26;;;;12106:4;12090:21;;12084:28;;11693:435;9021:617;9114:15;7972:9;9132:46;;:15;:46;9114:64;;9346:19;9340:4;9333:33;9396:8;9390:4;9383:22;9452:7;9445:4;9439;9429:21;9422:38;9599:8;9552:45;9549:1;9546;9541:67;9248:374;9021:617::o;474:88:36:-;203:1:29;437:6;;:14;433:38;;460:11;;;;;;;;;;;;;;433:38;12517:13:22::1;:11;:13::i;:::-;203:1:29::2;542:6:36;:13:::0;474:88::o;788:144::-;163:1:29;345:6;;:15;341:36;;369:8;;;;;;;;;;;;;;341:36;12517:13:22::1;:11;:13::i;:::-;893:23:36::2;::::0;;::::2;;::::0;;;:11:::2;:23;::::0;;;;:32;;;::::2;::::0;;;::::2;;::::0;;788:144::o;9720:456:22:-;9922:19;9916:4;9909:33;9968:8;9962:4;9955:22;10020:1;10013:4;10007;9997:21;9990:32;10151:8;10105:44;10102:1;10099;10094:66;9720:456::o;8762:100::-;12517:13;:11;:13::i;:::-;8834:21:::1;8852:1;8834:9;:21::i;:::-;8762:100::o:0;568:90:36:-;163:1:29;345:6;;:15;341:36;;369:8;;;;;;;;;;;;;;341:36;12517:13:22::1;:11;:13::i;:::-;163:1:29::2;637:6:36;:14:::0;568:90::o;997:222::-;163:1:29;345:6;;:15;341:36;;369:8;;;;;;;;;;;;;;341:36;1090:23:36::1;::::0;;::::1;1074:13;1090:23:::0;;;:11:::1;:23;::::0;;;;;;;;:33;;;;;;;1074:13;;1090:23:::1;::::0;:31:::1;::::0;:33:::1;::::0;;::::1;::::0;:23;;:33;;;;;;:23;:33:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1074:49;;1137:5;1146:1;1137:10:::0;1133:33:::1;;1156:10;;;;;;;;;;;;;;1133:33;1176:5;::::0;:36:::1;::::0;;;;:5:::1;2841:55:60::0;;;1176:36:36::1;::::0;::::1;2823:74:60::0;2913:18;;;2906:34;;;1176:5:36;;::::1;::::0;:17:::1;::::0;2796:18:60;;1176:36:36::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;1064:155;997:222:::0;:::o;1284:192::-;163:1:29;345:6;;:15;341:36;;369:8;;;;;;;;;;;;;;341:36;12517:13:22::1;:11;:13::i;:::-;1394:5:36::2;1403:1;1394:10:::0;1390:33:::2;;1413:10;;;;;;;;;;;;;;10363:708:22::0;12517:13;:11;:13::i;:::-;10597:19:::1;10591:4;10584:33;10643:12;10637:4;10630:26;10705:4;10699;10689:21;10811:12;10805:19;10792:11;10789:36;10786:157;;;10857:10;10851:4;10844:24;10924:4;10918;10911:18;10786:157;11020:1;10999:23:::0;;11041::::1;11051:12:::0;11041:9:::1;:23::i;:::-;10363:708:::0;:::o;8348:349::-;12517:13;:11;:13::i;:::-;8520:8:::1;8516:2;8512:17;8502:150;;8562:10;8556:4;8549:24;8633:4;8627;8620:18;8502:150;8671:19;8681:8;8671:9;:19::i;7292:355::-:0;7504:11;7498:18;7488:8;7485:32;7475:156;;7550:10;7544:4;7537:24;7612:4;7606;7599:18;6145:1089;6857:11;7093:16;;6941:26;;;;;;;7053:38;7050:1;;7042:78;7177:27;6145:1089::o;196:166:60:-;294:42;287:5;283:54;276:5;273:65;263:93;;352:1;349;342:12;367:446;469:6;477;530:2;518:9;509:7;505:23;501:32;498:52;;;546:1;543;536:12;498:52;585:9;572:23;604:43;641:5;604:43;:::i;:::-;666:5;-1:-1:-1;723:2:60;708:18;;695:32;736:45;695:32;736:45;:::i;:::-;800:7;790:17;;;367:446;;;;;:::o;1049:279::-;1128:6;1181:2;1169:9;1160:7;1156:23;1152:32;1149:52;;;1197:1;1194;1187:12;1149:52;1236:9;1223:23;1255:43;1292:5;1255:43;:::i;:::-;1317:5;1049:279;-1:-1:-1;;;1049:279:60:o;1333:347::-;1421:6;1429;1482:2;1470:9;1461:7;1457:23;1453:32;1450:52;;;1498:1;1495;1488:12;1450:52;1537:9;1524:23;1556:43;1593:5;1556:43;:::i;:::-;1618:5;1670:2;1655:18;;;;1642:32;;-1:-1:-1;;;1333:347:60:o;2440:184::-;2510:6;2563:2;2551:9;2542:7;2538:23;2534:32;2531:52;;;2579:1;2576;2569:12;2531:52;-1:-1:-1;2602:16:60;;2440:184;-1:-1:-1;2440:184:60:o",
"linkReferences": {}
},
"methodIdentifiers": {
"cancelOwnershipHandover()": "54d1f13d",
"collaterals(address)": "eeb97d3b",
"completeOwnershipHandover(address)": "f04e283e",
"mockUpdatePrice(address,uint256)": "c7331b01",
"owner()": "8da5cb5b",
"ownershipHandoverExpiresAt(address)": "fee81cf4",
"pause()": "8456cb59",
"renounceOwnership()": "715018a6",
"requestOwnershipHandover()": "25692962",
"setCollateralOSM(address,address)": "425bddcf",
"status()": "200d2ed2",
"transferOwnership(address)": "f2fde38b",
"unpause()": "3f4ba83a",
"updatePrice(address)": "96e85ced",
"vault()": "fbfa77cf"
},
"rawMetadata": "{\"compiler\":{\"version\":\"0.8.21+commit.d9974bed\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract Vault\",\"name\":\"_vault\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AlreadyInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BadPrice\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewOwnerIsZeroAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoHandoverRequest\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotPaused\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Paused\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Unauthorized\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pendingOwner\",\"type\":\"address\"}],\"name\":\"OwnershipHandoverCanceled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pendingOwner\",\"type\":\"address\"}],\"name\":\"OwnershipHandoverRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"collateral\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"Read\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"cancelOwnershipHandover\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ERC20Token\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"collaterals\",\"outputs\":[{\"internalType\":\"contract IOSM\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pendingOwner\",\"type\":\"address\"}],\"name\":\"completeOwnershipHandover\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ERC20Token\",\"name\":\"collateral\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"mockUpdatePrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"result\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pendingOwner\",\"type\":\"address\"}],\"name\":\"ownershipHandoverExpiresAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"result\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"requestOwnershipHandover\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ERC20Token\",\"name\":\"collateral\",\"type\":\"address\"},{\"internalType\":\"contract IOSM\",\"name\":\"oracle\",\"type\":\"address\"}],\"name\":\"setCollateralOSM\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"status\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ERC20Token\",\"name\":\"collateral\",\"type\":\"address\"}],\"name\":\"updatePrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vault\",\"outputs\":[{\"internalType\":\"contract Vault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AlreadyInitialized()\":[{\"details\":\"Cannot double-initialize.\"}],\"NewOwnerIsZeroAddress()\":[{\"details\":\"The `newOwner` cannot be the zero address.\"}],\"NoHandoverRequest()\":[{\"details\":\"The `pendingOwner` does not have a valid handover request.\"}],\"Unauthorized()\":[{\"details\":\"The caller is not authorized to call the function.\"}]},\"events\":{\"OwnershipHandoverCanceled(address)\":{\"details\":\"The ownership handover to `pendingOwner` has been canceled.\"},\"OwnershipHandoverRequested(address)\":{\"details\":\"An ownership handover to `pendingOwner` has been requested.\"},\"OwnershipTransferred(address,address)\":{\"details\":\"The ownership is transferred from `oldOwner` to `newOwner`. This event is intentionally kept the same as OpenZeppelin's Ownable to be compatible with indexers and [EIP-173](https://eips.ethereum.org/EIPS/eip-173), despite it not being as lightweight as a single argument event.\"}},\"kind\":\"dev\",\"methods\":{\"cancelOwnershipHandover()\":{\"details\":\"Cancels the two-step ownership handover to the caller, if any.\"},\"completeOwnershipHandover(address)\":{\"details\":\"Allows the owner to complete the two-step ownership handover to `pendingOwner`. Reverts if there is no existing ownership handover requested by `pendingOwner`.\"},\"owner()\":{\"details\":\"Returns the owner of the contract.\"},\"ownershipHandoverExpiresAt(address)\":{\"details\":\"Returns the expiry timestamp for the two-step ownership handover to `pendingOwner`.\"},\"renounceOwnership()\":{\"details\":\"Allows the owner to renounce their ownership.\"},\"requestOwnershipHandover()\":{\"details\":\"Request a two-step ownership handover to the caller. The request will automatically expire in 48 hours (172800 seconds) by default.\"},\"transferOwnership(address)\":{\"details\":\"Allows the owner to transfer the ownership to `newOwner`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/modules/feed.sol\":\"Feed\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"appendCBOR\":false,\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":descent-collective/oracle-module/=lib/oracle-module/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":oracle-module/=lib/oracle-module/\",\":solady/=lib/solady/src/\"]},\"sources\":{\"lib/solady/src/auth/Ownable.sol\":{\"keccak256\":\"0xc208cdd9de02bbf4b5edad18b88e23a2be7ff56d2287d5649329dc7cda64b9a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e8fba079cc7230c617f7493a2e97873f88e59a53a5018fcb2e2b6ac42d8aa5a3\",\"dweb:/ipfs/QmTXg8GSt8hsK2cZhbPFrund1mrwVdkLQmEPoQaFy4fhjs\"]},\"lib/solady/src/tokens/ERC20.sol\":{\"keccak256\":\"0xb4a3f9ba8a05107f7370de42cff57f3ad26dafd438712c11531a5892de2f59e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f0a9ca06e3cf6dea1f9a4c5599581573b7d81cd64dc3afb582f325ccf5fdd6dc\",\"dweb:/ipfs/Qmb9r5dDceNF4W8S5u6i85RsNTgE5XG9HbTXkyS25ad3C6\"]},\"lib/solady/src/utils/SafeTransferLib.sol\":{\"keccak256\":\"0xf98506fade18a92e3d8d0a0ca0bdaeaa099d7620aac2a9d76b5f3d0bcd10691c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a3495c9d108bc69951a12c5ce9f05851cc921f0bb69e2505756e79f3ddab4e1a\",\"dweb:/ipfs/QmT3XwbmdbQCxw7iNcF7DoiypDd5vs2ETFWirXqmJ86Meg\"]},\"src/currency.sol\":{\"keccak256\":\"0xc266e97010a71e6ac755dce3e51a5a5844663b355e20ab40bf2020fd9308369b\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://d2660220b8a14c6d06351765dd7accec03e350e7fa9ae960c1505bea1e5d8d2d\",\"dweb:/ipfs/QmdYdPSnQC2nym38Fca4vRLKU4A78AQkgYasdg3TaRLGNY\"]},\"src/helpers/pausable.sol\":{\"keccak256\":\"0x8acce52dcd450c73da0f77d9539962826da23aca05aa7d0c7568614e89aed997\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://35e2f674e01c0d6107f31d1c32bb2780d442420b7d26636f560a4eb1007f4a8b\",\"dweb:/ipfs/QmWwVLUGiJq6Q3fK6Zhx4pc6kaqC73pkZ1ntfVA3QCHTpd\"]},\"src/interfaces/ICurrency.sol\":{\"keccak256\":\"0x3b7adace3df08c34906612358d435ffff3b90b5eec0eae34b6335cc8dcd0e7ed\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://370c80ec5636bd95342256d4116f703e633e6b0467ee530397e9b5cada37f998\",\"dweb:/ipfs/QmPQ5KY37JpfuSAXpJ16kBXAQVJcE253cfjYGcBEcMLERz\"]},\"src/interfaces/IFeed.sol\":{\"keccak256\":\"0xcb569d8eeab0afb5a2a42772d82b2e213821e7f919c097741b7b2d2440889546\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://01f1ccc183b9567e887e36b2d91c1b6be6dc17cddbfbc31a6768a365b5bebc22\",\"dweb:/ipfs/QmUy25qEjA5QGwtuFRy8fiu3Rcmgn26gpN1tbBUv6hM4gk\"]},\"src/interfaces/IOSM.sol\":{\"keccak256\":\"0x777f22651aedc7c9c528001012a4630bb9a22a6a3a3054dd5a520942aa875cd1\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://913b3fa3a86b89c313d8ffd7bebd78255df4203395b69b987cdecf112dd2567a\",\"dweb:/ipfs/Qma8Y6bWoa3nErqDtnD55NkgQZeWbNDpwjDpYAt37z1wiZ\"]},\"src/interfaces/IRate.sol\":{\"keccak256\":\"0x166dc423b74b60302197a27fb64557ee8ef6bafe416deb08fe7ecf94f0ede1d1\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://123ef521857e33b10b6f92b743831b26dd5100e57271353bf5c1882fc41c6a2e\",\"dweb:/ipfs/QmdK5y8SntLHAVoNRq6isddmNYunrpv1JxAxyEgRiHdAAj\"]},\"src/interfaces/IVault.sol\":{\"keccak256\":\"0x5684f59679e090ebe583d31fda6d8882469436e71670a4873151793675c7c6c4\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://b265c21b1ff01a8c5cf9b1120feb6b5419a96a0e2a6d1ff4bdd89934c7869c9c\",\"dweb:/ipfs/QmdbCgiYE763cAHZ6nevhf7EzF8BzEkfwsbw4qWuxBkm8f\"]},\"src/mocks/ERC20Token.sol\":{\"keccak256\":\"0x62b878fb4dde1f455866e0c1290cc50714805d02c2848a4a9bb33c5dfbc8464d\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://7af3f5638d366abfbca3186813449259a33ed43e7c13ec983d389d73df1ad204\",\"dweb:/ipfs/QmeMdoEVTGqdcgSicTTcmycSQjToT7Sn5ZTgZdVFH9E6HA\"]},\"src/modules/feed.sol\":{\"keccak256\":\"0x1578828ae5678db9d1b329e65902702f4a1f55c251af4c26c3ef67d16c3f9e3b\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://8ec29513508ddd74340d57e24bbfd1ce679a6187ad4b9ec7e7546ad7fc333a44\",\"dweb:/ipfs/Qmc5e6Gwfxh9VExbizSDzm4yQpZ1Yoqtkr5xu2LrK8REjc\"]},\"src/vault.sol\":{\"keccak256\":\"0x377a877ac854164da4e6b2491e2dba44d75cb56216e6b2456fa6b815565ac5e5\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://a0a67817c649b3f65de4971c5346ea93b7432ac2f4e0013e5fb681e488aa1b58\",\"dweb:/ipfs/Qmbvcgn3AoTEahq9qgfuiL81zkZKLVQRbMhMeeqTMiiuKv\"]}},\"version\":1}",
"metadata": {
"compiler": {
"version": "0.8.21+commit.d9974bed"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [
{
"internalType": "contract Vault",
"name": "_vault",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [],
"type": "error",
"name": "AlreadyInitialized"
},
{
"inputs": [],
"type": "error",
"name": "BadPrice"
},
{
"inputs": [],
"type": "error",
"name": "NewOwnerIsZeroAddress"
},
{
"inputs": [],
"type": "error",
"name": "NoHandoverRequest"
},
{
"inputs": [],
"type": "error",
"name": "NotPaused"
},
{
"inputs": [],
"type": "error",
"name": "Paused"
},
{
"inputs": [],
"type": "error",
"name": "Unauthorized"
},
{
"inputs": [
{
"internalType": "address",
"name": "pendingOwner",
"type": "address",
"indexed": true
}
],
"type": "event",
"name": "OwnershipHandoverCanceled",
"anonymous": false
},
{
"inputs": [
{
"internalType": "address",
"name": "pendingOwner",
"type": "address",
"indexed": true
}
],
"type": "event",
"name": "OwnershipHandoverRequested",
"anonymous": false
},
{
"inputs": [
{
"internalType": "address",
"name": "oldOwner",
"type": "address",
"indexed": true
},
{
"internalType": "address",
"name": "newOwner",
"type": "address",
"indexed": true
}
],
"type": "event",
"name": "OwnershipTransferred",
"anonymous": false
},
{
"inputs": [
{
"internalType": "address",
"name": "collateral",
"type": "address",
"indexed": false
},
{
"internalType": "uint256",
"name": "price",
"type": "uint256",
"indexed": false
}
],
"type": "event",
"name": "Read",
"anonymous": false
},
{
"inputs": [],
"stateMutability": "payable",
"type": "function",
"name": "cancelOwnershipHandover"
},
{
"inputs": [
{
"internalType": "contract ERC20Token",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function",
"name": "collaterals",
"outputs": [
{
"internalType": "contract IOSM",
"name": "",
"type": "address"
}
]
},
{
"inputs": [
{
"internalType": "address",
"name": "pendingOwner",
"type": "address"
}
],
"stateMutability": "payable",
"type": "function",
"name": "completeOwnershipHandover"
},
{
"inputs": [
{
"internalType": "contract ERC20Token",
"name": "collateral",
"type": "address"
},
{
"internalType": "uint256",
"name": "price",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function",
"name": "mockUpdatePrice"
},
{
"inputs": [],
"stateMutability": "view",
"type": "function",
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "result",
"type": "address"
}
]
},
{
"inputs": [
{
"internalType": "address",
"name": "pendingOwner",
"type": "address"
}
],
"stateMutability": "view",
"type": "function",
"name": "ownershipHandoverExpiresAt",
"outputs": [
{
"internalType": "uint256",
"name": "result",
"type": "uint256"
}
]
},
{
"inputs": [],
"stateMutability": "nonpayable",
"type": "function",
"name": "pause"
},
{
"inputs": [],
"stateMutability": "payable",
"type": "function",
"name": "renounceOwnership"
},
{
"inputs": [],
"stateMutability": "payable",
"type": "function",
"name": "requestOwnershipHandover"
},
{
"inputs": [
{
"internalType": "contract ERC20Token",
"name": "collateral",
"type": "address"
},
{
"internalType": "contract IOSM",
"name": "oracle",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "function",
"name": "setCollateralOSM"
},
{
"inputs": [],
"stateMutability": "view",
"type": "function",
"name": "status",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
]
},
{
"inputs": [
{
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"stateMutability": "payable",
"type": "function",
"name": "transferOwnership"
},
{
"inputs": [],
"stateMutability": "nonpayable",
"type": "function",
"name": "unpause"
},
{
"inputs": [
{
"internalType": "contract ERC20Token",
"name": "collateral",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "function",
"name": "updatePrice"
},
{
"inputs": [],
"stateMutability": "view",
"type": "function",
"name": "vault",
"outputs": [
{
"internalType": "contract Vault",
"name": "",
"type": "address"
}
]
}
],
"devdoc": {
"kind": "dev",
"methods": {
"cancelOwnershipHandover()": {
"details": "Cancels the two-step ownership handover to the caller, if any."
},
"completeOwnershipHandover(address)": {
"details": "Allows the owner to complete the two-step ownership handover to `pendingOwner`. Reverts if there is no existing ownership handover requested by `pendingOwner`."
},
"owner()": {
"details": "Returns the owner of the contract."
},
"ownershipHandoverExpiresAt(address)": {
"details": "Returns the expiry timestamp for the two-step ownership handover to `pendingOwner`."
},
"renounceOwnership()": {
"details": "Allows the owner to renounce their ownership."
},
"requestOwnershipHandover()": {
"details": "Request a two-step ownership handover to the caller. The request will automatically expire in 48 hours (172800 seconds) by default."
},
"transferOwnership(address)": {
"details": "Allows the owner to transfer the ownership to `newOwner`."
}
},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"settings": {
"remappings": [
"@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/",
"descent-collective/oracle-module/=lib/oracle-module/src/",
"ds-test/=lib/forge-std/lib/ds-test/src/",
"erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/",
"forge-std/=lib/forge-std/src/",
"openzeppelin-contracts/=lib/openzeppelin-contracts/",
"oracle-module/=lib/oracle-module/",
"solady/=lib/solady/src/"
],
"optimizer": {
"enabled": true,
"runs": 1000000
},
"metadata": {
"bytecodeHash": "none",
"appendCBOR": false
},
"compilationTarget": {
"src/modules/feed.sol": "Feed"
},
"libraries": {}
},
"sources": {
"lib/solady/src/auth/Ownable.sol": {
"keccak256": "0xc208cdd9de02bbf4b5edad18b88e23a2be7ff56d2287d5649329dc7cda64b9a3",
"urls": [
"bzz-raw://e8fba079cc7230c617f7493a2e97873f88e59a53a5018fcb2e2b6ac42d8aa5a3",
"dweb:/ipfs/QmTXg8GSt8hsK2cZhbPFrund1mrwVdkLQmEPoQaFy4fhjs"
],
"license": "MIT"
},
"lib/solady/src/tokens/ERC20.sol": {
"keccak256": "0xb4a3f9ba8a05107f7370de42cff57f3ad26dafd438712c11531a5892de2f59e0",
"urls": [
"bzz-raw://f0a9ca06e3cf6dea1f9a4c5599581573b7d81cd64dc3afb582f325ccf5fdd6dc",
"dweb:/ipfs/Qmb9r5dDceNF4W8S5u6i85RsNTgE5XG9HbTXkyS25ad3C6"
],
"license": "MIT"
},
"lib/solady/src/utils/SafeTransferLib.sol": {
"keccak256": "0xf98506fade18a92e3d8d0a0ca0bdaeaa099d7620aac2a9d76b5f3d0bcd10691c",
"urls": [
"bzz-raw://a3495c9d108bc69951a12c5ce9f05851cc921f0bb69e2505756e79f3ddab4e1a",
"dweb:/ipfs/QmT3XwbmdbQCxw7iNcF7DoiypDd5vs2ETFWirXqmJ86Meg"
],
"license": "MIT"
},
"src/currency.sol": {
"keccak256": "0xc266e97010a71e6ac755dce3e51a5a5844663b355e20ab40bf2020fd9308369b",
"urls": [
"bzz-raw://d2660220b8a14c6d06351765dd7accec03e350e7fa9ae960c1505bea1e5d8d2d",
"dweb:/ipfs/QmdYdPSnQC2nym38Fca4vRLKU4A78AQkgYasdg3TaRLGNY"
],
"license": "GPL-3.0"
},
"src/helpers/pausable.sol": {
"keccak256": "0x8acce52dcd450c73da0f77d9539962826da23aca05aa7d0c7568614e89aed997",
"urls": [
"bzz-raw://35e2f674e01c0d6107f31d1c32bb2780d442420b7d26636f560a4eb1007f4a8b",
"dweb:/ipfs/QmWwVLUGiJq6Q3fK6Zhx4pc6kaqC73pkZ1ntfVA3QCHTpd"
],
"license": "GPL-3.0"
},
"src/interfaces/ICurrency.sol": {
"keccak256": "0x3b7adace3df08c34906612358d435ffff3b90b5eec0eae34b6335cc8dcd0e7ed",
"urls": [
"bzz-raw://370c80ec5636bd95342256d4116f703e633e6b0467ee530397e9b5cada37f998",
"dweb:/ipfs/QmPQ5KY37JpfuSAXpJ16kBXAQVJcE253cfjYGcBEcMLERz"
],
"license": "GPL-3.0"
},
"src/interfaces/IFeed.sol": {
"keccak256": "0xcb569d8eeab0afb5a2a42772d82b2e213821e7f919c097741b7b2d2440889546",
"urls": [
"bzz-raw://01f1ccc183b9567e887e36b2d91c1b6be6dc17cddbfbc31a6768a365b5bebc22",
"dweb:/ipfs/QmUy25qEjA5QGwtuFRy8fiu3Rcmgn26gpN1tbBUv6hM4gk"
],
"license": "GPL-3.0"
},
"src/interfaces/IOSM.sol": {
"keccak256": "0x777f22651aedc7c9c528001012a4630bb9a22a6a3a3054dd5a520942aa875cd1",
"urls": [
"bzz-raw://913b3fa3a86b89c313d8ffd7bebd78255df4203395b69b987cdecf112dd2567a",
"dweb:/ipfs/Qma8Y6bWoa3nErqDtnD55NkgQZeWbNDpwjDpYAt37z1wiZ"
],
"license": "GPL-3.0"
},
"src/interfaces/IRate.sol": {
"keccak256": "0x166dc423b74b60302197a27fb64557ee8ef6bafe416deb08fe7ecf94f0ede1d1",
"urls": [
"bzz-raw://123ef521857e33b10b6f92b743831b26dd5100e57271353bf5c1882fc41c6a2e",
"dweb:/ipfs/QmdK5y8SntLHAVoNRq6isddmNYunrpv1JxAxyEgRiHdAAj"
],
"license": "GPL-3.0"
},
"src/interfaces/IVault.sol": {
"keccak256": "0x5684f59679e090ebe583d31fda6d8882469436e71670a4873151793675c7c6c4",
"urls": [
"bzz-raw://b265c21b1ff01a8c5cf9b1120feb6b5419a96a0e2a6d1ff4bdd89934c7869c9c",
"dweb:/ipfs/QmdbCgiYE763cAHZ6nevhf7EzF8BzEkfwsbw4qWuxBkm8f"
],
"license": "GPL-3.0"
},
"src/mocks/ERC20Token.sol": {
"keccak256": "0x62b878fb4dde1f455866e0c1290cc50714805d02c2848a4a9bb33c5dfbc8464d",
"urls": [
"bzz-raw://7af3f5638d366abfbca3186813449259a33ed43e7c13ec983d389d73df1ad204",
"dweb:/ipfs/QmeMdoEVTGqdcgSicTTcmycSQjToT7Sn5ZTgZdVFH9E6HA"
],
"license": "GPL-3.0"
},
"src/modules/feed.sol": {
"keccak256": "0x1578828ae5678db9d1b329e65902702f4a1f55c251af4c26c3ef67d16c3f9e3b",
"urls": [
"bzz-raw://8ec29513508ddd74340d57e24bbfd1ce679a6187ad4b9ec7e7546ad7fc333a44",
"dweb:/ipfs/Qmc5e6Gwfxh9VExbizSDzm4yQpZ1Yoqtkr5xu2LrK8REjc"
],
"license": "GPL-3.0"
},
"src/vault.sol": {
"keccak256": "0x377a877ac854164da4e6b2491e2dba44d75cb56216e6b2456fa6b815565ac5e5",
"urls": [
"bzz-raw://a0a67817c649b3f65de4971c5346ea93b7432ac2f4e0013e5fb681e488aa1b58",
"dweb:/ipfs/Qmbvcgn3AoTEahq9qgfuiL81zkZKLVQRbMhMeeqTMiiuKv"
],
"license": "GPL-3.0"
}
},
"version": 1
},
"ast": {
"absolutePath": "src/modules/feed.sol",
"id": 46592,
"exportedSymbols": {
"ERC20Token": [46438],
"Feed": [46591],
"IFeed": [46158],
"IOSM": [46166],
"Ownable": [44381],
"Pausable": [46103],
"Vault": [48280]
},
"nodeType": "SourceUnit",
"src": "36:1443:36",
"nodes": [
{
"id": 46440,
"nodeType": "PragmaDirective",
"src": "36:23:36",
"nodes": [],
"literals": ["solidity", "0.8", ".21"]
},
{
"id": 46442,
"nodeType": "ImportDirective",
"src": "108:48:36",
"nodes": [],
"absolutePath": "lib/solady/src/auth/Ownable.sol",
"file": "solady/auth/Ownable.sol",
"nameLocation": "-1:-1:-1",
"scope": 46592,
"sourceUnit": 44382,
"symbolAliases": [
{
"foreign": {
"id": 46441,
"name": "Ownable",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 44381,
"src": "116:7:36",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
}
],
"unitAlias": ""
},
{
"id": 46444,
"nodeType": "ImportDirective",
"src": "157:44:36",
"nodes": [],
"absolutePath": "src/interfaces/IOSM.sol",
"file": "../interfaces/IOSM.sol",
"nameLocation": "-1:-1:-1",
"scope": 46592,
"sourceUnit": 46167,
"symbolAliases": [
{
"foreign": {
"id": 46443,
"name": "IOSM",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 46166,
"src": "165:4:36",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
}
],
"unitAlias": ""
},
{
"id": 46446,
"nodeType": "ImportDirective",
"src": "202:46:36",
"nodes": [],
"absolutePath": "src/interfaces/IFeed.sol",
"file": "../interfaces/IFeed.sol",
"nameLocation": "-1:-1:-1",
"scope": 46592,
"sourceUnit": 46159,
"symbolAliases": [
{
"foreign": {
"id": 46445,
"name": "IFeed",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 46158,
"src": "210:5:36",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
}
],
"unitAlias": ""
},
{
"id": 46449,
"nodeType": "ImportDirective",
"src": "249:47:36",
"nodes": [],
"absolutePath": "src/vault.sol",
"file": "../vault.sol",
"nameLocation": "-1:-1:-1",
"scope": 46592,
"sourceUnit": 48281,
"symbolAliases": [
{
"foreign": {
"id": 46447,
"name": "Vault",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 48280,
"src": "257:5:36",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
},
{
"foreign": {
"id": 46448,
"name": "ERC20Token",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 46438,
"src": "264:10:36",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
}
],
"unitAlias": ""
},
{
"id": 46451,
"nodeType": "ImportDirective",
"src": "297:49:36",
"nodes": [],
"absolutePath": "src/helpers/pausable.sol",
"file": "../helpers/pausable.sol",
"nameLocation": "-1:-1:-1",
"scope": 46592,
"sourceUnit": 46104,
"symbolAliases": [
{
"foreign": {
"id": 46450,
"name": "Pausable",
"nodeType": "Identifier",
"overloadedDeclarations": [],