UNPKG

@settlemint/solidity-diamond-bond

Version:

Smart contract set to build an enterprise bond usecase in SettleMint

159 lines (158 loc) 21.4 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": "0x608080604052346015576111aa908161001b8239f35b600080fdfe6080604052600436101561001257600080fd5b60003560e01c806322e29d591461066e5780634b503f0b146105de5780638c5f36bb146104a95780638da5cb5b14610456578063b410500414610362578063f2fde38b146102275763f97656341461006957600080fd5b346101df5760406003193601126101df576100eb600435602061008a610c13565b9161009481610df2565b9260405194859283927efdd58e000000000000000000000000000000000000000000000000000000008452600484016020909392919373ffffffffffffffffffffffffffffffffffffffff60408201951681520152565b0381305afa91821561021b576000926101e4575b5081156101df5760209181601861019b93015490670de0b6b3a764000061015861014b8261014061013387601e8801610d25565b90549060031b1c886110a5565b0494601f8501610d25565b90549060031b1c856110a5565b0492601982019061016a818354610d3d565b80925561017c601a8401918254610d3d565b809155601783015480911491826101d5575b50506101a3575b50610d3d565b604051908152f35b601b0160017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0082541617905538610195565b149050388061018e565b600080fd5b90916020823d602011610213575b816101ff60209383610cb5565b8101031261021057505190386100ff565b80fd5b3d91506101f2565b6040513d6000823e3d90fd5b346101df5760206003193601126101df57610240610c36565b7f586d3bf3558e5ffe721c6f44f4451880e303fa89b73bd2c30250f8d38c80d09c549073ffffffffffffffffffffffffffffffffffffffff80831633149161028783610d67565b169182156102df576102b97fffffffffffffffffffffffff000000000000000000000000000000000000000092610d67565b16177f586d3bf3558e5ffe721c6f44f4451880e303fa89b73bd2c30250f8d38c80d09c55005b60846040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4e6577206f776e65722063616e6e6f7420626520746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152fd5b346101df5760006003193601126101df57604051610381608082610cb5565b6003815260603660208301377f8da5cb5b000000000000000000000000000000000000000000000000000000006103b782610d4a565b527ff2fde38b000000000000000000000000000000000000000000000000000000006103e282610d57565b5280516002101561042757807f8c5f36bb00000000000000000000000000000000000000000000000000000000606061042393015260405191829182610c59565b0390f35b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b346101df5760006003193601126101df57602073ffffffffffffffffffffffffffffffffffffffff7f586d3bf3558e5ffe721c6f44f4451880e303fa89b73bd2c30250f8d38c80d09c5416604051908152f35b346101df5760206003193601126101df576104c2610c36565b73ffffffffffffffffffffffffffffffffffffffff7f586d3bf3558e5ffe721c6f44f4451880e303fa89b73bd2c30250f8d38c80d09c54166105805773ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff00000000000000000000000000000000000000007f586d3bf3558e5ffe721c6f44f4451880e303fa89b73bd2c30250f8d38c80d09c5416177f586d3bf3558e5ffe721c6f44f4451880e303fa89b73bd2c30250f8d38c80d09c55600080f35b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4f776e657220616c7265616479207365740000000000000000000000000000006044820152fd5b346101df5760006003193601126101df57610423604051610600606082610cb5565b6002815260403660208301377ff97656340000000000000000000000000000000000000000000000000000000061063682610d4a565b527f22e29d590000000000000000000000000000000000000000000000000000000061066182610d57565b5260405191829182610c59565b346101df5760406003193601126101df5760043561068a610c13565b9061069481610df2565b91601b83019260ff84541615610be9576040517efdd58e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8316600482015260248101849052602081604481305afa90811561021b57600091610bb7575b506018820192670de0b6b3a76400006107316107248654601e8701610d25565b90549060031b1c846110a5565b046005840154908184029184830414841517156109205761075191610d3d565b73ffffffffffffffffffffffffffffffffffffffff602585015460201c169173ffffffffffffffffffffffffffffffffffffffff602686015416926040517fdd62ed3e000000000000000000000000000000000000000000000000000000008152846004820152306024820152602081604481855afa801561021b578491600091610b82575b5010610afe5773ffffffffffffffffffffffffffffffffffffffff93600060649260209560405197889687957f23b872dd000000000000000000000000000000000000000000000000000000008752600487015216602485015260448401525af190811561021b57600091610abf575b5015610a6157601982019081548181106109dd57601a8401908154938385106109595783928386039055828203905514918261094f575b505061088657005b60210181549080548210156104275760005260206000208160051c019060f882549160031b169060ff6001831b921b19161790557f6b427e348fe584275fb02de76d900738365c7d93affd48fb998ebf4fb54787eb60408254938151908152846020820152a160018201809211610920575580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055005b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b149050858061087e565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f556e646572666c6f7720646574656374656420696e206e65787420636170697460448201527f616c20616d6f756e7400000000000000000000000000000000000000000000006064820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f556e646572666c6f7720646574656374656420696e206e65787420696e74657260448201527f65737420616d6f756e74000000000000000000000000000000000000000000006064820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f45524332303a207472616e73666572206661696c6564000000000000000000006044820152fd5b6020813d602011610af6575b81610ad860209383610cb5565b81010312610af25751908115158203610210575086610847565b5080fd5b3d9150610acb565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e63650000000000000000000000000000000000000000000000006064820152fd5b9150506020813d602011610baf575b81610b9e60209383610cb5565b810103126101df578390518b6107d7565b3d9150610b91565b906020823d602011610be1575b81610bd160209383610cb5565b8101031261021057505185610704565b3d9150610bc4565b7f13e45dd70000000000000000000000000000000000000000000000000000000060005260046000fd5b6024359073ffffffffffffffffffffffffffffffffffffffff821682036101df57565b6004359073ffffffffffffffffffffffffffffffffffffffff821682036101df57565b602060408183019282815284518094520192019060005b818110610c7d5750505090565b82517fffffffff0000000000000000000000000000000000000000000000000000000016845260209384019390920191600101610c70565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610cf657604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b80548210156104275760005260206000200190600090565b9190820180921161092057565b8051156104275760200190565b8051600110156104275760400190565b15610d6e57565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4f6e6c7920746865206f776e65722063616e2063616c6c20746869732066756e60448201527f6374696f6e0000000000000000000000000000000000000000000000000000006064820152fd5b80816000927a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000811015611040575b50806d04ee2d6d415b85acef8100000000600a921015611025575b662386f26fc10000811015611011575b6305f5e100811015611000575b612710811015610ff1575b6064811015610fe3575b1015610fd8575b600a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602160018501947fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0610edc610ec68861106b565b97610ed4604051998a610cb5565b80895261106b565b013660208801378501015b01917f30313233343536373839616263646566000000000000000000000000000000008282061a8353048015610f41577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600a9192610ee7565b505060405160208101917f73746f726167652e626f6e64000000000000000000000000000000000000000083528181519160005b838110610fc057505080610fba92602c920160008382015203017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282610cb5565b51902090565b6020828201810151602c878401015285935001610f75565b600190910190610e6f565b606460029104930192610e68565b61271060049104930192610e5e565b6305f5e10060089104930192610e53565b662386f26fc1000060109104930192610e46565b6d04ee2d6d415b85acef810000000060209104930192610e36565b604093507a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000090049050600a610e1b565b67ffffffffffffffff8111610cf657601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b9190917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8382098382029182808310920391808303921461116357670de0b6b3a7640000821015611131577faccb18165bd6fe31ae1cf318dc5b51eee0e1ba569b88cd74c1773b91fac106699394670de0b6b3a7640000910990828211900360ee1b910360121c170290565b84907f5173648d0000000000000000000000000000000000000000000000000000000060005260045260245260446000fd5b5050670de0b6b3a76400009004915056fea2646970667358221220630e90a61e6106face0ae989e970eb4d9a31ec7324cb1f2329b5a1835a0a298f64736f6c634300081b0033", "deployedBytecode": "0x6080604052600436101561001257600080fd5b60003560e01c806322e29d591461066e5780634b503f0b146105de5780638c5f36bb146104a95780638da5cb5b14610456578063b410500414610362578063f2fde38b146102275763f97656341461006957600080fd5b346101df5760406003193601126101df576100eb600435602061008a610c13565b9161009481610df2565b9260405194859283927efdd58e000000000000000000000000000000000000000000000000000000008452600484016020909392919373ffffffffffffffffffffffffffffffffffffffff60408201951681520152565b0381305afa91821561021b576000926101e4575b5081156101df5760209181601861019b93015490670de0b6b3a764000061015861014b8261014061013387601e8801610d25565b90549060031b1c886110a5565b0494601f8501610d25565b90549060031b1c856110a5565b0492601982019061016a818354610d3d565b80925561017c601a8401918254610d3d565b809155601783015480911491826101d5575b50506101a3575b50610d3d565b604051908152f35b601b0160017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0082541617905538610195565b149050388061018e565b600080fd5b90916020823d602011610213575b816101ff60209383610cb5565b8101031261021057505190386100ff565b80fd5b3d91506101f2565b6040513d6000823e3d90fd5b346101df5760206003193601126101df57610240610c36565b7f586d3bf3558e5ffe721c6f44f4451880e303fa89b73bd2c30250f8d38c80d09c549073ffffffffffffffffffffffffffffffffffffffff80831633149161028783610d67565b169182156102df576102b97fffffffffffffffffffffffff000000000000000000000000000000000000000092610d67565b16177f586d3bf3558e5ffe721c6f44f4451880e303fa89b73bd2c30250f8d38c80d09c55005b60846040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4e6577206f776e65722063616e6e6f7420626520746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152fd5b346101df5760006003193601126101df57604051610381608082610cb5565b6003815260603660208301377f8da5cb5b000000000000000000000000000000000000000000000000000000006103b782610d4a565b527ff2fde38b000000000000000000000000000000000000000000000000000000006103e282610d57565b5280516002101561042757807f8c5f36bb00000000000000000000000000000000000000000000000000000000606061042393015260405191829182610c59565b0390f35b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b346101df5760006003193601126101df57602073ffffffffffffffffffffffffffffffffffffffff7f586d3bf3558e5ffe721c6f44f4451880e303fa89b73bd2c30250f8d38c80d09c5416604051908152f35b346101df5760206003193601126101df576104c2610c36565b73ffffffffffffffffffffffffffffffffffffffff7f586d3bf3558e5ffe721c6f44f4451880e303fa89b73bd2c30250f8d38c80d09c54166105805773ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff00000000000000000000000000000000000000007f586d3bf3558e5ffe721c6f44f4451880e303fa89b73bd2c30250f8d38c80d09c5416177f586d3bf3558e5ffe721c6f44f4451880e303fa89b73bd2c30250f8d38c80d09c55600080f35b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4f776e657220616c7265616479207365740000000000000000000000000000006044820152fd5b346101df5760006003193601126101df57610423604051610600606082610cb5565b6002815260403660208301377ff97656340000000000000000000000000000000000000000000000000000000061063682610d4a565b527f22e29d590000000000000000000000000000000000000000000000000000000061066182610d57565b5260405191829182610c59565b346101df5760406003193601126101df5760043561068a610c13565b9061069481610df2565b91601b83019260ff84541615610be9576040517efdd58e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8316600482015260248101849052602081604481305afa90811561021b57600091610bb7575b506018820192670de0b6b3a76400006107316107248654601e8701610d25565b90549060031b1c846110a5565b046005840154908184029184830414841517156109205761075191610d3d565b73ffffffffffffffffffffffffffffffffffffffff602585015460201c169173ffffffffffffffffffffffffffffffffffffffff602686015416926040517fdd62ed3e000000000000000000000000000000000000000000000000000000008152846004820152306024820152602081604481855afa801561021b578491600091610b82575b5010610afe5773ffffffffffffffffffffffffffffffffffffffff93600060649260209560405197889687957f23b872dd000000000000000000000000000000000000000000000000000000008752600487015216602485015260448401525af190811561021b57600091610abf575b5015610a6157601982019081548181106109dd57601a8401908154938385106109595783928386039055828203905514918261094f575b505061088657005b60210181549080548210156104275760005260206000208160051c019060f882549160031b169060ff6001831b921b19161790557f6b427e348fe584275fb02de76d900738365c7d93affd48fb998ebf4fb54787eb60408254938151908152846020820152a160018201809211610920575580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055005b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b149050858061087e565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f556e646572666c6f7720646574656374656420696e206e65787420636170697460448201527f616c20616d6f756e7400000000000000000000000000000000000000000000006064820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f556e646572666c6f7720646574656374656420696e206e65787420696e74657260448201527f65737420616d6f756e74000000000000000000000000000000000000000000006064820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f45524332303a207472616e73666572206661696c6564000000000000000000006044820152fd5b6020813d602011610af6575b81610ad860209383610cb5565b81010312610af25751908115158203610210575086610847565b5080fd5b3d9150610acb565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e63650000000000000000000000000000000000000000000000006064820152fd5b9150506020813d602011610baf575b81610b9e60209383610cb5565b810103126101df578390518b6107d7565b3d9150610b91565b906020823d602011610be1575b81610bd160209383610cb5565b8101031261021057505185610704565b3d9150610bc4565b7f13e45dd70000000000000000000000000000000000000000000000000000000060005260046000fd5b6024359073ffffffffffffffffffffffffffffffffffffffff821682036101df57565b6004359073ffffffffffffffffffffffffffffffffffffffff821682036101df57565b602060408183019282815284518094520192019060005b818110610c7d5750505090565b82517fffffffff0000000000000000000000000000000000000000000000000000000016845260209384019390920191600101610c70565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610cf657604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b80548210156104275760005260206000200190600090565b9190820180921161092057565b8051156104275760200190565b8051600110156104275760400190565b15610d6e57565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4f6e6c7920746865206f776e65722063616e2063616c6c20746869732066756e60448201527f6374696f6e0000000000000000000000000000000000000000000000000000006064820152fd5b80816000927a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000811015611040575b50806d04ee2d6d415b85acef8100000000600a921015611025575b662386f26fc10000811015611011575b6305f5e100811015611000575b612710811015610ff1575b6064811015610fe3575b1015610fd8575b600a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602160018501947fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0610edc610ec68861106b565b97610ed4604051998a610cb5565b80895261106b565b013660208801378501015b01917f30313233343536373839616263646566000000000000000000000000000000008282061a8353048015610f41577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600a9192610ee7565b505060405160208101917f73746f726167652e626f6e64000000000000000000000000000000000000000083528181519160005b838110610fc057505080610fba92602c920160008382015203017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282610cb5565b51902090565b6020828201810151602c878401015285935001610f75565b600190910190610e6f565b606460029104930192610e68565b61271060049104930192610e5e565b6305f5e10060089104930192610e53565b662386f26fc1000060109104930192610e46565b6d04ee2d6d415b85acef810000000060209104930192610e36565b604093507a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000090049050600a610e1b565b67ffffffffffffffff8111610cf657601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b9190917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8382098382029182808310920391808303921461116357670de0b6b3a7640000821015611131577faccb18165bd6fe31ae1cf318dc5b51eee0e1ba569b88cd74c1773b91fac106699394670de0b6b3a7640000910990828211900360ee1b910360121c170290565b84907f5173648d0000000000000000000000000000000000000000000000000000000060005260045260245260446000fd5b5050670de0b6b3a76400009004915056fea2646970667358221220630e90a61e6106face0ae989e970eb4d9a31ec7324cb1f2329b5a1835a0a298f64736f6c634300081b0033", "linkReferences": {}, "deployedLinkReferences": {} }