UNPKG

@settlemint/solidity-diamond-bond

Version:

Smart contract set to build an enterprise bond usecase in SettleMint

159 lines (158 loc) 16.1 kB
{ "_format": "hh-sol-artifact-1", "contractName": "CouponFacet", "sourceName": "contracts/facets/CouponFacet.sol", "abi": [ { "inputs": [], "name": "NotAllClaimsReceivedForNextPayment", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "x", "type": "uint256" }, { "internalType": "uint256", "name": "y", "type": "uint256" } ], "name": "PRBMath_MulDiv18_Overflow", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "bondId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "lineNumber", "type": "uint256" } ], "name": "CouponStatusChanged", "type": "event" }, { "inputs": [ { "internalType": "uint256", "name": "_bondId", "type": "uint256" }, { "internalType": "address", "name": "_buyer", "type": "address" } ], "name": "claimCoupon", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "getSelectors", "outputs": [ { "internalType": "bytes4[]", "name": "", "type": "bytes4[]" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "getSelectorsOwnership", "outputs": [ { "internalType": "bytes4[]", "name": "", "type": "bytes4[]" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_newOwner", "type": "address" } ], "name": "initializeOwner", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_bondId", "type": "uint256" }, { "internalType": "address", "name": "_buyer", "type": "address" } ], "name": "withdrawCouponClaim", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ], "bytecode": "0x60808060405234601557610c6c908161001a8239f35b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c806322e29d59146104585780634b503f0b146103fb5780638c5f36bb1461035f5780638da5cb5b1461032b578063b41050041461029e578063f2fde38b146101da5763f976563414610066575f80fd5b34610197576040366003190112610197576100c26004356020610087610876565b91610091816109b4565b604051627eeac760e11b81526001600160a01b03909416600485015260248401919091529192839081906044820190565b0381305afa9182156101cf575f9261019b575b5081156101975760209181601861017193015490670de0b6b3a764000061012e6101218261011661010987601e880161091b565b90549060031b1c88610b81565b0494601f850161091b565b90549060031b1c85610b81565b04926019820190610140818354610930565b809255610152601a8401918254610930565b8091556017830154809114918261018d575b5050610179575b50610930565b604051908152f35b601b01805460ff191660011790555f61016b565b1490505f80610164565b5f80fd5b9091506020813d6020116101c7575b816101b7602093836108e5565b810103126101975751905f6100d5565b3d91506101aa565b6040513d5f823e3d90fd5b34610197576020366003190112610197576101f361088c565b5f516020610c175f395f51905f5254336001600160a01b03821614916102188361095a565b6001600160a01b031691821561024d576102319061095a565b6001600160a01b031916175f516020610c175f395f51905f5255005b60405162461bcd60e51b8152602060048201526024808201527f4e6577206f776e65722063616e6e6f7420626520746865207a65726f206164646044820152637265737360e01b6064820152608490fd5b34610197575f366003190112610197576040516102bc6080826108e5565b600381526060366020830137638da5cb5b60e01b6102d98261093d565b5263f2fde38b60e01b6102eb8261094a565b5280516002101561031757638c5f36bb60e01b606082015260405190819061031390826108a2565b0390f35b634e487b7160e01b5f52603260045260245ffd5b34610197575f366003190112610197575f516020610c175f395f51905f52546040516001600160a01b039091168152602090f35b346101975760203660031901126101975761037861088c565b5f516020610c175f395f51905f52546001600160a01b03166103c2575f516020610c175f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055005b60405162461bcd60e51b815260206004820152601160248201527013dddb995c88185b1c9958591e481cd95d607a1b6044820152606490fd5b34610197575f3660031901126101975761031360405161041c6060826108e5565b600281526040366020830137633e5d958d60e21b6104398261093d565b526322e29d5960e01b61044b8261094a565b52604051918291826108a2565b3461019757604036600319011261019757600435610474610876565b9061047e816109b4565b91601b83019260ff8454161561086757604051627eeac760e11b81526001600160a01b038316600482015260248101849052602081604481305afa9081156101cf575f91610835575b506018820192670de0b6b3a76400006104f46104e78654601e870161091b565b90549060031b1c84610b81565b046005840154908184029184830414841517156106645761051491610930565b60258401546026850154604051636eb1769f60e11b81526001600160a01b0391821660048201819052306024830152939492602090811c9092169181604481855afa80156101cf5785915f91610800575b50106107aa576020925f60649260405196879586946323b872dd60e01b8652600486015260018060a01b0316602485015260448401525af19081156101cf575f9161076f575b501561073157601982019081548181106106d957601a84019081549383851061068257839283860390558282039055149182610678575b50506105ea57005b6021018154908054821015610317575f5260205f208160051c019060f882549160031b169060ff6001831b921b19161790557f6b427e348fe584275fb02de76d900738365c7d93affd48fb998ebf4fb54787eb60408254938151908152846020820152a1600182018092116106645755805460ff19169055005b634e487b7160e01b5f52601160045260245ffd5b14905085806105e2565b60405162461bcd60e51b815260206004820152602960248201527f556e646572666c6f7720646574656374656420696e206e657874206361706974604482015268185b08185b5bdd5b9d60ba1b6064820152608490fd5b60405162461bcd60e51b815260206004820152602a60248201527f556e646572666c6f7720646574656374656420696e206e65787420696e746572604482015269195cdd08185b5bdd5b9d60b21b6064820152608490fd5b60405162461bcd60e51b8152602060048201526016602482015275115490cc8c0e881d1c985b9cd9995c8819985a5b195960521b6044820152606490fd5b90506020813d6020116107a2575b8161078a602093836108e5565b810103126101975751801515810361019757866105ab565b3d915061077d565b60405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608490fd5b9150506020813d60201161082d575b8161081c602093836108e5565b81010312610197578490518b610565565b3d915061080f565b90506020813d60201161085f575b81610850602093836108e5565b810103126101975751856104c7565b3d9150610843565b6313e45dd760e01b5f5260045ffd5b602435906001600160a01b038216820361019757565b600435906001600160a01b038216820361019757565b60206040818301928281528451809452019201905f5b8181106108c55750505090565b82516001600160e01b0319168452602093840193909201916001016108b8565b90601f8019910116810190811067ffffffffffffffff82111761090757604052565b634e487b7160e01b5f52604160045260245ffd5b8054821015610317575f5260205f2001905f90565b9190820180921161066457565b8051156103175760200190565b8051600110156103175760400190565b1561096157565b60405162461bcd60e51b815260206004820152602560248201527f4f6e6c7920746865206f776e65722063616e2063616c6c20746869732066756e60448201526431ba34b7b760d91b6064820152608490fd5b5f818072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b811015610b3f575b50806d04ee2d6d415b85acef8100000000600a921015610b24575b662386f26fc10000811015610b10575b6305f5e100811015610aff575b612710811015610af0575b6064811015610ae2575b1015610ada575b6001810191600a6021610a55610a3f86610b65565b95610a4d60405197886108e5565b808752610b65565b602086019490601f19013686378501015b5f1901916f181899199a1a9b1b9c1cb0b131b232b360811b8282061a8353048015610a9457600a9091610a66565b5050610ad4602c604051809360208201956b1cdd1bdc9859d94b989bdb9960a21b87525180918484015e81015f838201520301601f1981018352826108e5565b51902090565b600101610a2a565b606460029104920191610a23565b61271060049104920191610a19565b6305f5e10060089104920191610a0e565b662386f26fc1000060109104920191610a01565b6d04ee2d6d415b85acef8100000000602091049201916109f1565b6040925072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b90049050600a6109d6565b67ffffffffffffffff811161090757601f01601f191660200190565b9091905f1983820983820291828083109203918083039214610c0557670de0b6b3a7640000821015610bee577faccb18165bd6fe31ae1cf318dc5b51eee0e1ba569b88cd74c1773b91fac106699394670de0b6b3a7640000910990828211900360ee1b910360121c170290565b8490635173648d60e01b5f5260045260245260445ffd5b5050670de0b6b3a76400009004915056fe586d3bf3558e5ffe721c6f44f4451880e303fa89b73bd2c30250f8d38c80d09ca26469706673582212207a96427019f53eeef7f8dc51f1a74ca48f3422796731db220c8ffd15b303683864736f6c634300081e0033", "deployedBytecode": "0x60806040526004361015610011575f80fd5b5f3560e01c806322e29d59146104585780634b503f0b146103fb5780638c5f36bb1461035f5780638da5cb5b1461032b578063b41050041461029e578063f2fde38b146101da5763f976563414610066575f80fd5b34610197576040366003190112610197576100c26004356020610087610876565b91610091816109b4565b604051627eeac760e11b81526001600160a01b03909416600485015260248401919091529192839081906044820190565b0381305afa9182156101cf575f9261019b575b5081156101975760209181601861017193015490670de0b6b3a764000061012e6101218261011661010987601e880161091b565b90549060031b1c88610b81565b0494601f850161091b565b90549060031b1c85610b81565b04926019820190610140818354610930565b809255610152601a8401918254610930565b8091556017830154809114918261018d575b5050610179575b50610930565b604051908152f35b601b01805460ff191660011790555f61016b565b1490505f80610164565b5f80fd5b9091506020813d6020116101c7575b816101b7602093836108e5565b810103126101975751905f6100d5565b3d91506101aa565b6040513d5f823e3d90fd5b34610197576020366003190112610197576101f361088c565b5f516020610c175f395f51905f5254336001600160a01b03821614916102188361095a565b6001600160a01b031691821561024d576102319061095a565b6001600160a01b031916175f516020610c175f395f51905f5255005b60405162461bcd60e51b8152602060048201526024808201527f4e6577206f776e65722063616e6e6f7420626520746865207a65726f206164646044820152637265737360e01b6064820152608490fd5b34610197575f366003190112610197576040516102bc6080826108e5565b600381526060366020830137638da5cb5b60e01b6102d98261093d565b5263f2fde38b60e01b6102eb8261094a565b5280516002101561031757638c5f36bb60e01b606082015260405190819061031390826108a2565b0390f35b634e487b7160e01b5f52603260045260245ffd5b34610197575f366003190112610197575f516020610c175f395f51905f52546040516001600160a01b039091168152602090f35b346101975760203660031901126101975761037861088c565b5f516020610c175f395f51905f52546001600160a01b03166103c2575f516020610c175f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055005b60405162461bcd60e51b815260206004820152601160248201527013dddb995c88185b1c9958591e481cd95d607a1b6044820152606490fd5b34610197575f3660031901126101975761031360405161041c6060826108e5565b600281526040366020830137633e5d958d60e21b6104398261093d565b526322e29d5960e01b61044b8261094a565b52604051918291826108a2565b3461019757604036600319011261019757600435610474610876565b9061047e816109b4565b91601b83019260ff8454161561086757604051627eeac760e11b81526001600160a01b038316600482015260248101849052602081604481305afa9081156101cf575f91610835575b506018820192670de0b6b3a76400006104f46104e78654601e870161091b565b90549060031b1c84610b81565b046005840154908184029184830414841517156106645761051491610930565b60258401546026850154604051636eb1769f60e11b81526001600160a01b0391821660048201819052306024830152939492602090811c9092169181604481855afa80156101cf5785915f91610800575b50106107aa576020925f60649260405196879586946323b872dd60e01b8652600486015260018060a01b0316602485015260448401525af19081156101cf575f9161076f575b501561073157601982019081548181106106d957601a84019081549383851061068257839283860390558282039055149182610678575b50506105ea57005b6021018154908054821015610317575f5260205f208160051c019060f882549160031b169060ff6001831b921b19161790557f6b427e348fe584275fb02de76d900738365c7d93affd48fb998ebf4fb54787eb60408254938151908152846020820152a1600182018092116106645755805460ff19169055005b634e487b7160e01b5f52601160045260245ffd5b14905085806105e2565b60405162461bcd60e51b815260206004820152602960248201527f556e646572666c6f7720646574656374656420696e206e657874206361706974604482015268185b08185b5bdd5b9d60ba1b6064820152608490fd5b60405162461bcd60e51b815260206004820152602a60248201527f556e646572666c6f7720646574656374656420696e206e65787420696e746572604482015269195cdd08185b5bdd5b9d60b21b6064820152608490fd5b60405162461bcd60e51b8152602060048201526016602482015275115490cc8c0e881d1c985b9cd9995c8819985a5b195960521b6044820152606490fd5b90506020813d6020116107a2575b8161078a602093836108e5565b810103126101975751801515810361019757866105ab565b3d915061077d565b60405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608490fd5b9150506020813d60201161082d575b8161081c602093836108e5565b81010312610197578490518b610565565b3d915061080f565b90506020813d60201161085f575b81610850602093836108e5565b810103126101975751856104c7565b3d9150610843565b6313e45dd760e01b5f5260045ffd5b602435906001600160a01b038216820361019757565b600435906001600160a01b038216820361019757565b60206040818301928281528451809452019201905f5b8181106108c55750505090565b82516001600160e01b0319168452602093840193909201916001016108b8565b90601f8019910116810190811067ffffffffffffffff82111761090757604052565b634e487b7160e01b5f52604160045260245ffd5b8054821015610317575f5260205f2001905f90565b9190820180921161066457565b8051156103175760200190565b8051600110156103175760400190565b1561096157565b60405162461bcd60e51b815260206004820152602560248201527f4f6e6c7920746865206f776e65722063616e2063616c6c20746869732066756e60448201526431ba34b7b760d91b6064820152608490fd5b5f818072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b811015610b3f575b50806d04ee2d6d415b85acef8100000000600a921015610b24575b662386f26fc10000811015610b10575b6305f5e100811015610aff575b612710811015610af0575b6064811015610ae2575b1015610ada575b6001810191600a6021610a55610a3f86610b65565b95610a4d60405197886108e5565b808752610b65565b602086019490601f19013686378501015b5f1901916f181899199a1a9b1b9c1cb0b131b232b360811b8282061a8353048015610a9457600a9091610a66565b5050610ad4602c604051809360208201956b1cdd1bdc9859d94b989bdb9960a21b87525180918484015e81015f838201520301601f1981018352826108e5565b51902090565b600101610a2a565b606460029104920191610a23565b61271060049104920191610a19565b6305f5e10060089104920191610a0e565b662386f26fc1000060109104920191610a01565b6d04ee2d6d415b85acef8100000000602091049201916109f1565b6040925072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b90049050600a6109d6565b67ffffffffffffffff811161090757601f01601f191660200190565b9091905f1983820983820291828083109203918083039214610c0557670de0b6b3a7640000821015610bee577faccb18165bd6fe31ae1cf318dc5b51eee0e1ba569b88cd74c1773b91fac106699394670de0b6b3a7640000910990828211900360ee1b910360121c170290565b8490635173648d60e01b5f5260045260245260445ffd5b5050670de0b6b3a76400009004915056fe586d3bf3558e5ffe721c6f44f4451880e303fa89b73bd2c30250f8d38c80d09ca26469706673582212207a96427019f53eeef7f8dc51f1a74ca48f3422796731db220c8ffd15b303683864736f6c634300081e0033", "linkReferences": {}, "deployedLinkReferences": {} }