aspens 0.8.0

Aspens crosschain trading SDK
Documentation
1
{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"cancelOwnershipHandover","inputs":[],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"completeOwnershipHandover","inputs":[{"name":"pendingOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"createInstance","inputs":[{"name":"_tradingInstanceSigner","type":"address","internalType":"address"},{"name":"_operatorAdmin","type":"address","internalType":"address"}],"outputs":[{"name":"_newTradingInstance","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"currentVersionBytecode","inputs":[],"outputs":[{"name":"_currentByteCode","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"getBytecodeSize","inputs":[],"outputs":[{"name":"_byteCodeSize","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getCurrentVersionBytecode","inputs":[],"outputs":[{"name":"_currentByteCode","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"getCurrentVersionHash","inputs":[],"outputs":[{"name":"_currentHash","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"_owner","type":"address","internalType":"address"},{"name":"_instanceDeployer","type":"address","internalType":"address"},{"name":"_maintenanceAddress","type":"address","internalType":"address"},{"name":"_maintenanceBps","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"instanceDeployer","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"maintenanceAddress","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"maintenanceBps","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"result","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"ownershipHandoverExpiresAt","inputs":[{"name":"pendingOwner","type":"address","internalType":"address"}],"outputs":[{"name":"result","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"requestOwnershipHandover","inputs":[],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"rescueEth","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDeployer","inputs":[{"name":"_instanceDeployer","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMaintenance","inputs":[{"name":"_maintenanceAddress","type":"address","internalType":"address"},{"name":"_maintenanceBps","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"updateImpl","inputs":[{"name":"_newImpl","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"ImplUpdated","inputs":[{"name":"oldImpl","type":"address","indexed":true,"internalType":"address"},{"name":"newImpl","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"InstanceDeployerSet","inputs":[{"name":"oldDeployer","type":"address","indexed":true,"internalType":"address"},{"name":"newDeployer","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"MaintenanceFeeSet","inputs":[{"name":"recipient","type":"address","indexed":true,"internalType":"address"},{"name":"bps","type":"uint16","indexed":false,"internalType":"uint16"}],"anonymous":false},{"type":"event","name":"OwnershipHandoverCanceled","inputs":[{"name":"pendingOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OwnershipHandoverRequested","inputs":[{"name":"pendingOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"oldOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"TradingInstanceCreated","inputs":[{"name":"tradingInstanceAddress","type":"address","indexed":true,"internalType":"address"},{"name":"signer","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"AlreadyInitialized","inputs":[]},{"type":"error","name":"FEE_TOO_HIGH","inputs":[{"name":"totalBps","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"INITIALIZER_NOT_DEPLOYER","inputs":[]},{"type":"error","name":"INVALID_BYTE_SIZE","inputs":[]},{"type":"error","name":"NewOwnerIsZeroAddress","inputs":[]},{"type":"error","name":"NoHandoverRequest","inputs":[]},{"type":"error","name":"OPERATOR_ADMIN_IS_SIGNER","inputs":[]},{"type":"error","name":"UNAUTHORIZED_DEPLOYER","inputs":[]},{"type":"error","name":"Unauthorized","inputs":[]},{"type":"error","name":"ZERO_ADDRESS_DEPLOYER","inputs":[]},{"type":"error","name":"ZERO_ADDRESS_MAINTENANCE","inputs":[]},{"type":"error","name":"ZERO_ADDRESS_OPERATOR_ADMIN","inputs":[]},{"type":"error","name":"ZERO_ADDRESS_OWNER","inputs":[]},{"type":"error","name":"ZERO_ADDRESS_SIGNER","inputs":[]}],"bytecode":{"object":"0x60a0604052348015600f57600080fd5b5033608052608051610f5061002f60003960006104470152610f506000f3fe60806040526004361061015f5760003560e01c806396214735116100c0578063d672b0e211610074578063f2fde38b11610059578063f2fde38b14610346578063fcf1e00914610359578063fee81cf41461037957600080fd5b8063d672b0e214610313578063f04e283e1461033357600080fd5b8063ae32f991116100a5578063ae32f991146101a1578063c72802dc146102df578063ce31a06b146102fe57600080fd5b8063962147351461029c57806398b0bec3146102bc57600080fd5b80634159b3f511610117578063715018a6116100fc578063715018a61461025b578063719d5f83146102635780638da5cb5b1461028357600080fd5b80634159b3f51461023357806354d1f13d1461025357600080fd5b8063256929621161014857806325692962146101c35780632e112757146101cd5780632e673446146101ed57600080fd5b806305e6c7ce146101645780630e6b0a15146101a1575b600080fd5b34801561017057600080fd5b50600154610184906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156101ad57600080fd5b506101b66103ac565b6040516101989190610dad565b6101cb6103ec565b005b3480156101d957600080fd5b506101cb6101e8366004610e47565b61043c565b3480156101f957600080fd5b506002546102209074010000000000000000000000000000000000000000900461ffff1681565b60405161ffff9091168152602001610198565b34801561023f57600080fd5b5061018461024e366004610e9b565b610500565b6101cb61075f565b6101cb61079b565b34801561026f57600080fd5b50600254610184906001600160a01b031681565b34801561028f57600080fd5b50638b78c6d81954610184565b3480156102a857600080fd5b506101cb6102b7366004610ece565b6107af565b3480156102c857600080fd5b506102d16107c3565b604051908152602001610198565b3480156102eb57600080fd5b506000546001600160a01b03163b6102d1565b34801561030a57600080fd5b506101cb6107fa565b34801561031f57600080fd5b506101cb61032e366004610ef0565b6108b9565b6101cb610341366004610ece565b6108cf565b6101cb610354366004610ece565b61090c565b34801561036557600080fd5b506101cb610374366004610ece565b610933565b34801561038557600080fd5b506102d1610394366004610ece565b63389a75e1600c908152600091909152602090205490565b606060008054906101000a90046001600160a01b03166001600160a01b0316803b806020016040519081016040528181526000908060200190933c905090565b60006202a30067ffffffffffffffff164201905063389a75e1600c5233600052806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d600080a250565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461049e576040517f2f2b61ab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0384166104de576040517fa7e3283100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104e7846109f2565b6104f083610a4c565b6104fa8282610b00565b50505050565b6001546000906001600160a01b03163314610547576040517fce95115b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546001600160a01b03163b900361058d576040517ff68d79c300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0383166105cd576040517ff7f18c8800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03821661060d576040517fccd2609c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826001600160a01b0316826001600160a01b031603610658576040517f0187b0a400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60025460408051606086811b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000908116602084015230821b8116603484015284821b811660488401527401000000000000000000000000000000000000000090940460f01b7fffff00000000000000000000000000000000000000000000000000000000000016605c83015285901b909216605e8301528051808303605201815260729092019052600054610716906001600160a01b031682610c17565b9150836001600160a01b0316826001600160a01b03167fda6fc6c449f6c6459f464189da9adaede6fd2243bed808c290ce0ef8c286d95660405160405180910390a35092915050565b63389a75e1600c523360005260006020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c92600080a2565b6107a3610d4b565b6107ad6000610d66565b565b6107b7610d4b565b6107c081610a4c565b50565b60008054604080516001600160a01b03909216803b8381016020908101909352808452918491908401903c80519060200120905090565b610802610d4b565b604051600090339047908381818185875af1925050503d8060008114610844576040519150601f19603f3d011682016040523d82523d6000602084013e610849565b606091505b50509050806107c0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f455448207472616e73666572206661696c65640000000000000000000000000060448201526064015b60405180910390fd5b6108c1610d4b565b6108cb8282610b00565b5050565b6108d7610d4b565b63389a75e1600c52806000526020600c2080544211156108ff57636f5e88186000526004601cfd5b600090556107c081610d66565b610914610d4b565b8060601b61092a57637448fbae6000526004601cfd5b6107c081610d66565b61093b610d4b565b806001600160a01b03163b60000361097f576040517ff68d79c300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040516001600160a01b03808516939216917fbc177199a5e2a6bef75e52ba7ca48f30d61d9b98ae9f25df98855a078dd77d3491a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b638b78c6d819805415610a0d57630dc149f06000526004601cfd5b6001600160a01b03909116801560ff1b81179091558060007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b6001600160a01b038116610a8c576040517f0f1230bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516001600160a01b038084169216907f3081fb7fbe195f2fbe682ce4197b446803774976cdfff89932c3546bfa46d06d90600090a3600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6001600160a01b038216610b40576040517fbe00a4af00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61271061ffff82161115610b86576040517f5c9bdcc600000000000000000000000000000000000000000000000000000000815261ffff821660048201526024016108b0565b600280546001600160a01b0384167fffffffffffffffffffff0000000000000000000000000000000000000000000090911681177401000000000000000000000000000000000000000061ffff851690810291909117909255604051918252907f8fcf330a12ecf411890fa5a80a24172826853269c1b19dab2ea67295b1e1beb59060200160405180910390a25050565b60006002825101603f8101600a81036040518360581b8260e81b177f6100003d81600a3d39f3363d3d373d3d3d3d610000806035363936013d7300001781528660601b601e8201527f5af43d3d93803e603357fd5bf300000000000000000000000000000000000000603282015285519150603f8101602087015b60208410610ccf57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09093019260209182019101610c92565b517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602085900360031b1b16815260f085901b9083015282816000f0945084610d3c577febfef1880000000000000000000000000000000000000000000000000000000060005260206000fd5b90910160405250909392505050565b638b78c6d8195433146107ad576382b429006000526004601cfd5b638b78c6d81980546001600160a01b039092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3811560ff1b8217905550565b602081526000825180602084015260005b81811015610ddb5760208186018101516040868401015201610dbe565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b80356001600160a01b0381168114610e3057600080fd5b919050565b803561ffff81168114610e3057600080fd5b60008060008060808587031215610e5d57600080fd5b610e6685610e19565b9350610e7460208601610e19565b9250610e8260408601610e19565b9150610e9060608601610e35565b905092959194509250565b60008060408385031215610eae57600080fd5b610eb783610e19565b9150610ec560208401610e19565b90509250929050565b600060208284031215610ee057600080fd5b610ee982610e19565b9392505050565b60008060408385031215610f0357600080fd5b610f0c83610e19565b9150610ec560208401610e3556fea264697066735822122006100eba7b09843456a6bc929615148d62b0b5b227c6679ca72659af32c67c3564736f6c63430008220033","sourceMap":"647:11996:14:-:0;;;2400:60;;;;;;;;;-1:-1:-1;2443:10:14;2424:29;;647:11996;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361061015f5760003560e01c806396214735116100c0578063d672b0e211610074578063f2fde38b11610059578063f2fde38b14610346578063fcf1e00914610359578063fee81cf41461037957600080fd5b8063d672b0e214610313578063f04e283e1461033357600080fd5b8063ae32f991116100a5578063ae32f991146101a1578063c72802dc146102df578063ce31a06b146102fe57600080fd5b8063962147351461029c57806398b0bec3146102bc57600080fd5b80634159b3f511610117578063715018a6116100fc578063715018a61461025b578063719d5f83146102635780638da5cb5b1461028357600080fd5b80634159b3f51461023357806354d1f13d1461025357600080fd5b8063256929621161014857806325692962146101c35780632e112757146101cd5780632e673446146101ed57600080fd5b806305e6c7ce146101645780630e6b0a15146101a1575b600080fd5b34801561017057600080fd5b50600154610184906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156101ad57600080fd5b506101b66103ac565b6040516101989190610dad565b6101cb6103ec565b005b3480156101d957600080fd5b506101cb6101e8366004610e47565b61043c565b3480156101f957600080fd5b506002546102209074010000000000000000000000000000000000000000900461ffff1681565b60405161ffff9091168152602001610198565b34801561023f57600080fd5b5061018461024e366004610e9b565b610500565b6101cb61075f565b6101cb61079b565b34801561026f57600080fd5b50600254610184906001600160a01b031681565b34801561028f57600080fd5b50638b78c6d81954610184565b3480156102a857600080fd5b506101cb6102b7366004610ece565b6107af565b3480156102c857600080fd5b506102d16107c3565b604051908152602001610198565b3480156102eb57600080fd5b506000546001600160a01b03163b6102d1565b34801561030a57600080fd5b506101cb6107fa565b34801561031f57600080fd5b506101cb61032e366004610ef0565b6108b9565b6101cb610341366004610ece565b6108cf565b6101cb610354366004610ece565b61090c565b34801561036557600080fd5b506101cb610374366004610ece565b610933565b34801561038557600080fd5b506102d1610394366004610ece565b63389a75e1600c908152600091909152602090205490565b606060008054906101000a90046001600160a01b03166001600160a01b0316803b806020016040519081016040528181526000908060200190933c905090565b60006202a30067ffffffffffffffff164201905063389a75e1600c5233600052806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d600080a250565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461049e576040517f2f2b61ab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0384166104de576040517fa7e3283100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104e7846109f2565b6104f083610a4c565b6104fa8282610b00565b50505050565b6001546000906001600160a01b03163314610547576040517fce95115b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546001600160a01b03163b900361058d576040517ff68d79c300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0383166105cd576040517ff7f18c8800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03821661060d576040517fccd2609c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826001600160a01b0316826001600160a01b031603610658576040517f0187b0a400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60025460408051606086811b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000908116602084015230821b8116603484015284821b811660488401527401000000000000000000000000000000000000000090940460f01b7fffff00000000000000000000000000000000000000000000000000000000000016605c83015285901b909216605e8301528051808303605201815260729092019052600054610716906001600160a01b031682610c17565b9150836001600160a01b0316826001600160a01b03167fda6fc6c449f6c6459f464189da9adaede6fd2243bed808c290ce0ef8c286d95660405160405180910390a35092915050565b63389a75e1600c523360005260006020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c92600080a2565b6107a3610d4b565b6107ad6000610d66565b565b6107b7610d4b565b6107c081610a4c565b50565b60008054604080516001600160a01b03909216803b8381016020908101909352808452918491908401903c80519060200120905090565b610802610d4b565b604051600090339047908381818185875af1925050503d8060008114610844576040519150601f19603f3d011682016040523d82523d6000602084013e610849565b606091505b50509050806107c0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f455448207472616e73666572206661696c65640000000000000000000000000060448201526064015b60405180910390fd5b6108c1610d4b565b6108cb8282610b00565b5050565b6108d7610d4b565b63389a75e1600c52806000526020600c2080544211156108ff57636f5e88186000526004601cfd5b600090556107c081610d66565b610914610d4b565b8060601b61092a57637448fbae6000526004601cfd5b6107c081610d66565b61093b610d4b565b806001600160a01b03163b60000361097f576040517ff68d79c300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040516001600160a01b03808516939216917fbc177199a5e2a6bef75e52ba7ca48f30d61d9b98ae9f25df98855a078dd77d3491a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b638b78c6d819805415610a0d57630dc149f06000526004601cfd5b6001600160a01b03909116801560ff1b81179091558060007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b6001600160a01b038116610a8c576040517f0f1230bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516001600160a01b038084169216907f3081fb7fbe195f2fbe682ce4197b446803774976cdfff89932c3546bfa46d06d90600090a3600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6001600160a01b038216610b40576040517fbe00a4af00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61271061ffff82161115610b86576040517f5c9bdcc600000000000000000000000000000000000000000000000000000000815261ffff821660048201526024016108b0565b600280546001600160a01b0384167fffffffffffffffffffff0000000000000000000000000000000000000000000090911681177401000000000000000000000000000000000000000061ffff851690810291909117909255604051918252907f8fcf330a12ecf411890fa5a80a24172826853269c1b19dab2ea67295b1e1beb59060200160405180910390a25050565b60006002825101603f8101600a81036040518360581b8260e81b177f6100003d81600a3d39f3363d3d373d3d3d3d610000806035363936013d7300001781528660601b601e8201527f5af43d3d93803e603357fd5bf300000000000000000000000000000000000000603282015285519150603f8101602087015b60208410610ccf57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09093019260209182019101610c92565b517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602085900360031b1b16815260f085901b9083015282816000f0945084610d3c577febfef1880000000000000000000000000000000000000000000000000000000060005260206000fd5b90910160405250909392505050565b638b78c6d8195433146107ad576382b429006000526004601cfd5b638b78c6d81980546001600160a01b039092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3811560ff1b8217905550565b602081526000825180602084015260005b81811015610ddb5760208186018101516040868401015201610dbe565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b80356001600160a01b0381168114610e3057600080fd5b919050565b803561ffff81168114610e3057600080fd5b60008060008060808587031215610e5d57600080fd5b610e6685610e19565b9350610e7460208601610e19565b9250610e8260408601610e19565b9150610e9060608601610e35565b905092959194509250565b60008060408385031215610eae57600080fd5b610eb783610e19565b9150610ec560208401610e19565b90509250929050565b600060208284031215610ee057600080fd5b610ee982610e19565b9392505050565b60008060408385031215610f0357600080fd5b610f0c83610e19565b9150610ec560208401610e3556fea264697066735822122006100eba7b09843456a6bc929615148d62b0b5b227c6679ca72659af32c67c3564736f6c63430008220033","sourceMap":"647:11996:14:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2037:31;;;;;;;;;;-1:-1:-1;2037:31:14;;;;-1:-1:-1;;;;;2037:31:14;;;;;;-1:-1:-1;;;;;178:55:22;;;160:74;;148:2;133:18;2037:31:14;;;;;;;;11044:174;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;9021:617:7:-;;;:::i;:::-;;4401:508:14;;;;;;;;;;-1:-1:-1;4401:508:14;;;;;:::i;:::-;;:::i;3440:28::-;;;;;;;;;;-1:-1:-1;3440:28:14;;;;;;;;;;;;;;1785:6:22;1773:19;;;1755:38;;1743:2;1728:18;3440:28:14;1611:188:22;8751:1725:14;;;;;;;;;;-1:-1:-1;8751:1725:14;;;;;:::i;:::-;;:::i;9720:456:7:-;;;:::i;8762:100::-;;;:::i;3335:33:14:-;;;;;;;;;;-1:-1:-1;3335:33:14;;;;-1:-1:-1;;;;;3335:33:14;;;11408:182:7;;;;;;;;;;-1:-1:-1;;;11556:18:7;11408:182;;5121:115:14;;;;;;;;;;-1:-1:-1;5121:115:14;;;;;:::i;:::-;;:::i;12045:180::-;;;;;;;;;;;;;:::i;:::-;;;2406:25:22;;;2394:2;2379:18;12045:180:14;2260:177:22;11738:174:14;;;;;;;;;;-1:-1:-1;11788:21:14;11889:4;-1:-1:-1;;;;;11889:4:14;:16;11738:174;;12468:173;;;;;;;;;;;;;:::i;5955:166::-;;;;;;;;;;-1:-1:-1;5955:166:14;;;;;:::i;:::-;;:::i;10363:708:7:-;;;;;;:::i;:::-;;:::i;8348:349::-;;;;;;:::i;:::-;;:::i;10673:226:14:-;;;;;;;;;;-1:-1:-1;10673:226:14;;;;;:::i;:::-;;:::i;11693:435:7:-;;;;;;;;;;-1:-1:-1;11693:435:7;;;;;:::i;:::-;11963:19;11957:4;11950:33;;;11812:14;11996:26;;;;12106:4;12090:21;;12084:28;;11693:435;11044:174:14;11104:29;11202:4;;;;;;;;-1:-1:-1;;;;;11202:4:14;-1:-1:-1;;;;;11202:9:14;;;;;;;;;;;;;;;;;;;;;;;;11183:28;;11044:174;:::o;9021:617:7:-;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;4401:508:14:-;4552:10;-1:-1:-1;;;;;4566:16:14;4552:30;;4548:82;;4591:39;;;;;;;;;;;;;;4548:82;-1:-1:-1;;;;;4644:20:14;;4640:66;;4673:33;;;;;;;;;;;;;;4640:66;4773:24;4790:6;4773:16;:24::i;:::-;4808:31;4821:17;4808:12;:31::i;:::-;4849:53;4865:19;4886:15;4849;:53::i;:::-;4401:508;;;;:::o;8751:1725::-;8926:16;;8865:27;;-1:-1:-1;;;;;8926:16:14;8912:10;:30;8908:79;;8951:36;;;;;;;;;;;;;;8908:79;9047:4;;;-1:-1:-1;;;;;9047:4:14;:16;:21;;9043:66;;9077:32;;;;;;;;;;;;;;9043:66;-1:-1:-1;;;;;9273:36:14;;9269:83;;9318:34;;;;;;;;;;;;;;9269:83;-1:-1:-1;;;;;9366:28:14;;9362:83;;9403:42;;;;;;;;;;;;;;9362:83;9632:22;-1:-1:-1;;;;;9614:40:14;:14;-1:-1:-1;;;;;9614:40:14;;9610:92;;9663:39;;;;;;;;;;;;;;9610:92;10113:18;;10057:107;;;3146:2:22;3142:15;;;3159:66;3138:88;;;10057:107:14;;;3126:101:22;10106:4:14;3261:15:22;;3257:88;;3243:12;;;3236:110;3380:15;;;;;3362:12;;;3355:110;10133:14:14;;;;3503:3:22;3499:16;;;3481:12;;;3474:111;3619:15;;;3615:88;;;3601:12;;;3594:110;10057:107:14;;;;;;;;;3720:12:22;;;;10057:107:14;;-1:-1:-1;10197:4:14;:16;;-1:-1:-1;;;;;10197:4:14;10057:107;10197:10;:16::i;:::-;10175:38;;10446:22;-1:-1:-1;;;;;10389:80:14;10425:19;-1:-1:-1;;;;;10389:80:14;;;;;;;;;;;8898:1578;8751:1725;;;;:::o;9720:456:7:-;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;5121:115:14:-;12517:13:7;:11;:13::i;:::-;5198:31:14::1;5211:17;5198:12;:31::i;:::-;5121:115:::0;:::o;12045:180::-;12101:20;12208:4;;:9;;;-1:-1:-1;;;;;12208:4:14;;;:9;;;;;;;;;;;;;;;;12101:20;;12208:9;;;;;12198:20;;;;;;12183:35;;12045:180;:::o;12468:173::-;12517:13:7;:11;:13::i;:::-;12536:49:14::1;::::0;12519:12:::1;::::0;12536:10:::1;::::0;12559:21:::1;::::0;12519:12;12536:49;12519:12;12536:49;12559:21;12536:10;:49:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12518:67;;;12603:7;12595:39;;;::::0;::::1;::::0;;4155:2:22;12595:39:14::1;::::0;::::1;4137:21:22::0;4194:2;4174:18;;;4167:30;4233:21;4213:18;;;4206:49;4272:18;;12595:39:14::1;;;;;;;;5955:166:::0;12517:13:7;:11;:13::i;:::-;6061:53:14::1;6077:19;6098:15;6061;:53::i;:::-;5955:166:::0;;:::o;10363:708:7:-;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;8348:349::-:0;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;10673:226:14:-:0;12517:13:7;:11;:13::i;:::-;10744:8:14::1;-1:-1:-1::0;;;;;10744:20:14::1;;10768:1;10744:25:::0;10740:70:::1;;10778:32;;;;;;;;;;;;;;10740:70;10851:4;::::0;;10826:40:::1;::::0;-1:-1:-1;;;;;10826:40:14;;::::1;::::0;10851:4;::::1;::::0;10826:40:::1;::::0;::::1;10877:4;:15:::0;;;::::1;-1:-1:-1::0;;;;;10877:15:14;;;::::1;::::0;;;::::1;::::0;;10673:226::o;4883:1190:7:-;-1:-1:-1;;5125:9:7;5119:16;5116:150;;;5171:10;5165:4;5158:24;5243:4;5237;5230:18;5116:150;-1:-1:-1;;;;;5339:26:7;;;5462:16;;5457:3;5453:26;5440:40;;5422:59;;;5339:26;5607:1;5567:38;5607:1;;5556:63;5121:115:14;:::o;5242:285::-;-1:-1:-1;;;;;5314:31:14;;5310:80;;5354:36;;;;;;;;;;;;;;5310:80;5438:16;;5405:69;;-1:-1:-1;;;;;5405:69:14;;;;5438:16;;5405:69;;5438:16;;5405:69;5484:16;:36;;;;-1:-1:-1;;;;;5484:36:14;;;;;;;;;;5242:285::o;6127:458::-;-1:-1:-1;;;;;6228:33:14;;6224:85;;6270:39;;;;;;;;;;;;;;6224:85;2207:6;6323:29;;;;6319:84;;;6361:42;;;;;1785:6:22;1773:19;;6361:42:14;;;1755:38:22;1728:18;;6361:42:14;1611:188:22;6319:84:14;6413:18;:40;;-1:-1:-1;;;;;6413:40:14;;6463:32;;;;;;;;;;;;;;;;;;;;6510:68;;1755:38:22;;;6413:40:14;6510:68;;1743:2:22;1728:18;6510:68:14;;;;;;;6127:458;;:::o;990:7567:1:-;1082:24;1309:1;1302:4;1296:11;1292:19;1429:16;1416:11;1412:34;1492:4;1478:12;1474:23;1563:24;1557:31;6751:11;6745:4;6741:22;6707:7;6701:4;6697:18;6669:116;6559:88;6535:268;6514:3;6490:327;6909:14;6903:4;6899:25;6876:4;6871:3;6867:14;6843:95;7008:42;6985:4;6980:3;6976:14;6952:112;7478:4;7472:11;7457:26;;7520:16;7515:3;7511:26;7575:8;7569:4;7565:19;7598:318;7646:8;7637:7;7634:21;7678:5;7631:70;7735:14;;7719:31;;7880:22;;;;;7792:8;7779:22;;;;7829;7598:318;;;8087:14;8028:11;7990:8;7986:22;;;7983:1;7979:30;7958:95;8083:25;8067:42;;8187:4;8183:22;;;8133:21;;;8167:39;8247:12;8242:3;8239:1;8232:28;8220:40;;8284:8;8274:155;;8361:17;8358:1;8351:28;8406:8;8403:1;8396:19;8274:155;8518:22;;;8492:24;8485:56;-1:-1:-1;990:7567:1;;;-1:-1:-1;;;990:7567:1:o;7292:355:7:-;-1:-1:-1;;7498:18:7;7488:8;7485:32;7475:156;;7550:10;7544:4;7537:24;7612:4;7606;7599:18;6145:1089;-1:-1:-1;;6579:16:7;;-1:-1:-1;;;;;6427:26:7;;;;;;6539:38;6536:1;;6528:78;6703:16;;6698:3;6694:26;6681:40;;6663:59;;5121:115:14;:::o;245:584:22:-;392:2;381:9;374:21;355:4;424:6;418:13;467:6;462:2;451:9;447:18;440:34;492:1;502:140;516:6;513:1;510:13;502:140;;;627:2;611:14;;;607:23;;601:30;596:2;577:17;;;573:26;566:66;531:10;502:140;;;506:3;691:1;686:2;677:6;666:9;662:22;658:31;651:42;820:2;750:66;745:2;737:6;733:15;729:88;718:9;714:104;710:113;702:121;;;245:584;;;;:::o;834:196::-;902:20;;-1:-1:-1;;;;;951:54:22;;941:65;;931:93;;1020:1;1017;1010:12;931:93;834:196;;;:::o;1035:159::-;1102:20;;1162:6;1151:18;;1141:29;;1131:57;;1184:1;1181;1174:12;1199:407;1284:6;1292;1300;1308;1361:3;1349:9;1340:7;1336:23;1332:33;1329:53;;;1378:1;1375;1368:12;1329:53;1401:29;1420:9;1401:29;:::i;:::-;1391:39;;1449:38;1483:2;1472:9;1468:18;1449:38;:::i;:::-;1439:48;;1506:38;1540:2;1529:9;1525:18;1506:38;:::i;:::-;1496:48;;1563:37;1596:2;1585:9;1581:18;1563:37;:::i;:::-;1553:47;;1199:407;;;;;;;:::o;1804:260::-;1872:6;1880;1933:2;1921:9;1912:7;1908:23;1904:32;1901:52;;;1949:1;1946;1939:12;1901:52;1972:29;1991:9;1972:29;:::i;:::-;1962:39;;2020:38;2054:2;2043:9;2039:18;2020:38;:::i;:::-;2010:48;;1804:260;;;;;:::o;2069:186::-;2128:6;2181:2;2169:9;2160:7;2156:23;2152:32;2149:52;;;2197:1;2194;2187:12;2149:52;2220:29;2239:9;2220:29;:::i;:::-;2210:39;2069:186;-1:-1:-1;;;2069:186:22:o;2624:258::-;2691:6;2699;2752:2;2740:9;2731:7;2727:23;2723:32;2720:52;;;2768:1;2765;2758:12;2720:52;2791:29;2810:9;2791:29;:::i;:::-;2781:39;;2839:37;2872:2;2861:9;2857:18;2839:37;:::i","linkReferences":{},"immutableReferences":{"4868":[{"start":1095,"length":32}]}},"methodIdentifiers":{"cancelOwnershipHandover()":"54d1f13d","completeOwnershipHandover(address)":"f04e283e","createInstance(address,address)":"4159b3f5","currentVersionBytecode()":"ae32f991","getBytecodeSize()":"c72802dc","getCurrentVersionBytecode()":"0e6b0a15","getCurrentVersionHash()":"98b0bec3","initialize(address,address,address,uint16)":"2e112757","instanceDeployer()":"05e6c7ce","maintenanceAddress()":"719d5f83","maintenanceBps()":"2e673446","owner()":"8da5cb5b","ownershipHandoverExpiresAt(address)":"fee81cf4","renounceOwnership()":"715018a6","requestOwnershipHandover()":"25692962","rescueEth()":"ce31a06b","setDeployer(address)":"96214735","setMaintenance(address,uint16)":"d672b0e2","transferOwnership(address)":"f2fde38b","updateImpl(address)":"fcf1e009"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.34+commit.80d5c536\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AlreadyInitialized\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"totalBps\",\"type\":\"uint256\"}],\"name\":\"FEE_TOO_HIGH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"INITIALIZER_NOT_DEPLOYER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"INVALID_BYTE_SIZE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewOwnerIsZeroAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoHandoverRequest\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OPERATOR_ADMIN_IS_SIGNER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UNAUTHORIZED_DEPLOYER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Unauthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZERO_ADDRESS_DEPLOYER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZERO_ADDRESS_MAINTENANCE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZERO_ADDRESS_OPERATOR_ADMIN\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZERO_ADDRESS_OWNER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZERO_ADDRESS_SIGNER\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldImpl\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newImpl\",\"type\":\"address\"}],\"name\":\"ImplUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldDeployer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newDeployer\",\"type\":\"address\"}],\"name\":\"InstanceDeployerSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"bps\",\"type\":\"uint16\"}],\"name\":\"MaintenanceFeeSet\",\"type\":\"event\"},{\"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\":true,\"internalType\":\"address\",\"name\":\"tradingInstanceAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"}],\"name\":\"TradingInstanceCreated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"cancelOwnershipHandover\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pendingOwner\",\"type\":\"address\"}],\"name\":\"completeOwnershipHandover\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_tradingInstanceSigner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_operatorAdmin\",\"type\":\"address\"}],\"name\":\"createInstance\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"_newTradingInstance\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"currentVersionBytecode\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"_currentByteCode\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBytecodeSize\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"_byteCodeSize\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCurrentVersionBytecode\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"_currentByteCode\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCurrentVersionHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"_currentHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_instanceDeployer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_maintenanceAddress\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"_maintenanceBps\",\"type\":\"uint16\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"instanceDeployer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maintenanceAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maintenanceBps\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"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\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"requestOwnershipHandover\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rescueEth\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_instanceDeployer\",\"type\":\"address\"}],\"name\":\"setDeployer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_maintenanceAddress\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"_maintenanceBps\",\"type\":\"uint16\"}],\"name\":\"setMaintenance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newImpl\",\"type\":\"address\"}],\"name\":\"updateImpl\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Aspens technical team\",\"errors\":{\"AlreadyInitialized()\":[{\"details\":\"Cannot double-initialize.\"}],\"FEE_TOO_HIGH(uint256)\":[{\"details\":\"A fee (maintenance alone, or maintenance + operator combined)      exceeded DENOMINATOR (100%). `totalBps` is the rejected total.\"}],\"INITIALIZER_NOT_DEPLOYER()\":[{\"details\":\"`MidribFactory.initialize` was called by an address other than the      deployer \\u2014 closes the deploy-time ownership frontrun window.\"}],\"INVALID_BYTE_SIZE()\":[{\"details\":\"An implementation/bytecode address held no code (factory impl unset,      or `updateImpl` pointed at an EOA / empty address).\"}],\"NewOwnerIsZeroAddress()\":[{\"details\":\"The `newOwner` cannot be the zero address.\"}],\"NoHandoverRequest()\":[{\"details\":\"The `pendingOwner` does not have a valid handover request.\"}],\"OPERATOR_ADMIN_IS_SIGNER()\":[{\"details\":\"An operator admin equal to the instance's TEE signer was supplied      (`createInstance` / `setOperatorAdmin`). The admin gates the caps that      bound the TEE, so it must be a key the TEE does not hold.\"}],\"UNAUTHORIZED_DEPLOYER()\":[{\"details\":\"`createInstance` was called by an address other than the factory's      configured instance deployer.\"}],\"Unauthorized()\":[{\"details\":\"The caller is not authorized to call the function.\"}],\"ZERO_ADDRESS_DEPLOYER()\":[{\"details\":\"A zero address was supplied for the factory's instance deployer.\"}],\"ZERO_ADDRESS_MAINTENANCE()\":[{\"details\":\"A zero address was supplied for the maintenance-fee recipient.\"}],\"ZERO_ADDRESS_OPERATOR_ADMIN()\":[{\"details\":\"A zero address was supplied for the operator admin.\"}],\"ZERO_ADDRESS_OWNER()\":[{\"details\":\"A zero address was supplied for the factory owner.\"}],\"ZERO_ADDRESS_SIGNER()\":[{\"details\":\"`createInstance` was given a zero instance signer. No signature can      ever recover to the zero address, so such an instance could never      settle or honor a voucher: anything deposited to it would be stuck.\"}]},\"events\":{\"ImplUpdated(address,address)\":{\"details\":\"Emitted when a new version of Midrib is deployed\"},\"InstanceDeployerSet(address,address)\":{\"details\":\"Emitted when the factory's instance deployer (the key authorized to      call `createInstance`) is set or rotated by the owner.\"},\"MaintenanceFeeSet(address,uint16)\":{\"details\":\"Emitted when the Factory's maintenance fee (Aspens-controlled) is set or rotated.      Applies to instances created AFTER the change (existing instances bake it immutably).\"},\"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.\"},\"TradingInstanceCreated(address,address)\":{\"details\":\"Emitted when a new trading instance of Midrib is created\"}},\"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`.\"},\"createInstance(address,address)\":{\"details\":\"Restricted to the configured {instanceDeployer} (NOT the owner) \\u2014      separation of duties: the routine per-market instance minting runs on      a dedicated, lower-privilege deployer key, while ownership (impl +      fees + deployer rotation) stays with the Aspens admin. Gating here      (vs the prior permissionless form) stops anyone from minting      arbitrary-signer clones that carry this factory's address and a      `TradingInstanceCreated` event from it. The account that BROADCASTS the      `createInstance` transaction (the arborter `GetDeployCalldata` flow \\u2192      `just deploy-instance`) must therefore be the instance deployer key.`_tradingInstanceSigner` becomes the instance's immutable owner (the      TEE signer). It is supplied by the arborter as its own external      (TEE) signing key, so the deployed instance is exclusively      TEE-owned; neither the broadcasting deployer key nor the factory      owner is the instance owner. The arborter independently verifies,      before registering an instance, that BOTH its signer equals its TEE      key and its `operatorAdmin()` equals the admin the arborter resolved      for that deploy \\u2014 the latter because the operator admin gates the      operator fee, the per-epoch withdrawal and settlement caps, and      `terminate()`. It refuses to register      an instance where either differs, so a deployer that substitutes      calldata can only mint inert clones.\",\"params\":{\"_operatorAdmin\":\"the stack-admin key gating this instance's operator fee, caps and        `terminate()` (non-zero, and never `_tradingInstanceSigner`)\",\"_tradingInstanceSigner\":\"address that will sign for the new trading instance (the TEE)\"},\"returns\":{\"_newTradingInstance\":\"address of the newly deployed trading instance\"}},\"currentVersionBytecode()\":{\"returns\":{\"_currentByteCode\":\"current version bytecode\"}},\"getBytecodeSize()\":{\"returns\":{\"_byteCodeSize\":\"length of the current version bytecode\"}},\"getCurrentVersionBytecode()\":{\"returns\":{\"_currentByteCode\":\"current version bytecode\"}},\"getCurrentVersionHash()\":{\"returns\":{\"_currentHash\":\"current version hash\"}},\"initialize(address,address,address,uint16)\":{\"details\":\"Callable ONLY by the factory deployer (captured in the constructor).      This is load-bearing: `initialize` sets the owner and is otherwise      permissionless, so without the guard an attacker could frontrun the      legitimate two-tx deploy (`new` then `initialize`) and take ownership.      Solady's `_initializeOwner` additionally makes this one-shot (a second      call reverts `AlreadyInitialized`).\",\"params\":{\"_instanceDeployer\":\"key authorized to call {createInstance}\",\"_maintenanceAddress\":\"maintenance fee recipient\",\"_maintenanceBps\":\"maintenance fee in basis points (<= DENOMINATOR)\",\"_owner\":\"initial owner (the Aspens admin)\"}},\"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.\"},\"rescueEth()\":{\"details\":\"Only callable by owner. Ownable functions are payable for gas optimization,      so this function allows recovery of accidentally sent ETH.\"},\"setDeployer(address)\":{\"params\":{\"_instanceDeployer\":\"new instance deployer (non-zero)\"}},\"setMaintenance(address,uint16)\":{\"params\":{\"_maintenanceAddress\":\"new maintenance fee recipient\",\"_maintenanceBps\":\"new maintenance fee in basis points (<= DENOMINATOR)\"}},\"transferOwnership(address)\":{\"details\":\"Allows the owner to transfer the ownership to `newOwner`.\"},\"updateImpl(address)\":{\"params\":{\"_newImpl\":\"new implementation to be used for future deployments\"}}},\"stateVariables\":{\"DENOMINATOR\":{\"details\":\"Basis-point denominator (100% = 10_000). Mirrors MidribV3 + the Solana program.\"},\"_factoryDeployer\":{\"details\":\"The EOA that deployed this factory, captured at construction. Only      this address may call {initialize} \\u2014 without the binding, `initialize`      is callable by anyone, so an attacker could frontrun the legitimate      `new MidribFactory(); initialize(...)` deploy sequence (two separate      transactions) to seize ownership and point `impl` at malicious code.      Same class as the Solana `initialize_factory` frontrun. Distinct from      {instanceDeployer}, which gates `createInstance`.\"},\"impl\":{\"details\":\"current implementation\"},\"instanceDeployer\":{\"details\":\"The key authorized to mint trading instances via {createInstance}.      Separated from ownership (separation of duties): the owner (the      Aspens admin) controls the implementation + maintenance fee + this      deployer, while a dedicated, lower-privilege deployer key does the      routine per-market instance minting. A compromised deployer can only      grief (spam clones) \\u2014 it cannot touch existing instances, change the      implementation, or alter fees. Rotated by the owner via {setDeployer}.\"},\"maintenanceAddress\":{\"details\":\"Aspens-controlled maintenance fee recipient. Relatively static; rotatable      ONLY by the Aspens admin (the Factory owner). Baked into each instance's      immutable args at `createInstance`, so a rotation applies to FUTURE instances      only \\u2014 existing instances keep the value they were created with.\"},\"maintenanceBps\":{\"details\":\"Aspens-controlled maintenance fee, in basis points.\"}},\"title\":\"Midrib Factory\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"constructor\":{\"notice\":\"Records the deployer so it \\u2014 and only it \\u2014 can later {initialize}         the factory, closing the deploy-time ownership frontrun window.\"},\"createInstance(address,address)\":{\"notice\":\"Creates a new trading instance, baking the current maintenance fee         (recipient + rate) and the operator admin into its immutable args.\"},\"currentVersionBytecode()\":{\"notice\":\"Returns the current version bytecode (alias for interface compatibility)\"},\"getBytecodeSize()\":{\"notice\":\"Returns the size of the current version bytecode\"},\"getCurrentVersionBytecode()\":{\"notice\":\"Returns the current version bytecode\"},\"getCurrentVersionHash()\":{\"notice\":\"Returns the current version hash\"},\"initialize(address,address,address,uint16)\":{\"notice\":\"Initializes the factory: owner (the Aspens admin), the instance         deployer, and the initial maintenance fee recipient + rate.\"},\"rescueEth()\":{\"notice\":\"Rescue accidentally sent ETH from the contract\"},\"setDeployer(address)\":{\"notice\":\"Rotate the instance deployer \\u2014 the key allowed to call         {createInstance} (owner only).\"},\"setMaintenance(address,uint16)\":{\"notice\":\"Rotate the maintenance fee recipient + rate (Aspens admin only).         Applies to instances created AFTER this call; existing instances are         unaffected (their maintenance fee is immutable in their args).\"},\"updateImpl(address)\":{\"notice\":\"Updates the implementation contract used for new contract deployments\"}},\"notice\":\"Factory contract in charge of spinning up new Midrib trading instances\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"chains/evm/src/MidribFactory.sol\":\"MidribFactory\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":5000},\"remappings\":[\":bitcoinprism-evm/=chains/evm/lib/oif-contracts/lib/bitcoinprism-evm/\",\":clones-with-immutable-args/=chains/evm/lib/clones-with-immutable-args/src/\",\":ds-test/=chains/evm/lib/clones-with-immutable-args/lib/ds-test/src/\",\":erc4626-tests/=chains/evm/lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-gas-snapshot/=chains/evm/lib/permit2/lib/forge-gas-snapshot/src/\",\":forge-std/=chains/evm/lib/forge-std/src/\",\":halmos-cheatcodes/=chains/evm/lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":oif-contracts/=chains/evm/lib/oif-contracts/\",\":openzeppelin-contracts-upgradeable/=chains/evm/lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=chains/evm/lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=chains/evm/lib/openzeppelin-foundry-upgrades/src/\",\":permit2/=chains/evm/lib/permit2/\",\":solady/=chains/evm/lib/solady/src/\",\":soledge/=chains/evm/lib/oif-contracts/lib/the-compact/lib/soledge/src/\",\":solmate/=chains/evm/lib/permit2/lib/solmate/src/\",\":the-compact/=chains/evm/lib/oif-contracts/lib/the-compact/\"]},\"sources\":{\"chains/evm/lib/clones-with-immutable-args/src/ClonesWithImmutableArgs.sol\":{\"keccak256\":\"0x220db41bfceb0146f86e9be87d3d954fd1d52eadcb3bbfc5cd89e5543a46fd1e\",\"license\":\"BSD\",\"urls\":[\"bzz-raw://19155470db05e2e67a8c14f21cc903bb4833d8e5d248c2183073320c8a595705\",\"dweb:/ipfs/QmTchpXE8MMH1XcYxaZvx64UiVzBatbWy7Sw5HFhVJJjxi\"]},\"chains/evm/lib/solady/src/auth/Ownable.sol\":{\"keccak256\":\"0xc208cdd9de02bbf4b5edad18b88e23a2be7ff56d2287d5649329dc7cda64b9a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e8fba079cc7230c617f7493a2e97873f88e59a53a5018fcb2e2b6ac42d8aa5a3\",\"dweb:/ipfs/QmTXg8GSt8hsK2cZhbPFrund1mrwVdkLQmEPoQaFy4fhjs\"]},\"chains/evm/src/MidribFactory.sol\":{\"keccak256\":\"0x3bfba2f7bfb3870f1c4e3d454acdbfefd90e94f5ff4d1081ac2e9622c5a1b796\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://7334512df1385a453c284cebe8700831f13e679415051397ef4858d388e9aacb\",\"dweb:/ipfs/QmXA4BasBasSqutt4s2rRb87NGqeHDcaBW7RZs4jMRy57r\"]},\"chains/evm/src/interfaces/IMidribFactory.sol\":{\"keccak256\":\"0x2526e8d819cacd20f7aab45793de919d5cc330a9ce8a553075cf94b64169518b\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://3f6e50e59a5111ffe98307772b538dc2da85a44fc13b5042bb4b89fbab9be83d\",\"dweb:/ipfs/QmdPjd2b2mRFk1PZfrG14QkWMFaZfc68rtLWtqj2Jawxnd\"]},\"chains/evm/src/libraries/MidribErrors.sol\":{\"keccak256\":\"0xe0d33baff5a69bba1b42c7e9c5902753e6a4b4874d885335c8b2e32a0ee54803\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://21e2142dbf13ece76687b4c891cd8437726f0387d2fed4751f8ffb426b77aea1\",\"dweb:/ipfs/QmYdDzqPhBJw1xdostyerkefZTuFJAqZFQ2ZdRHBompVFD\"]},\"chains/evm/src/libraries/MidribEvents.sol\":{\"keccak256\":\"0x2d744fa82b7a43193520f471f85c6477562ea14da9df49a4b94cc410644a3864\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://abcc30dfbefff3ccfe2dbe37867c42097ffd93fe5bf4c424c62a0a0de04bb189\",\"dweb:/ipfs/QmcKfkhvMHNKLAyEWQ66h5qVmVUpKYQtn2at3euXUU5ez1\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.34+commit.80d5c536"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"AlreadyInitialized"},{"inputs":[{"internalType":"uint256","name":"totalBps","type":"uint256"}],"type":"error","name":"FEE_TOO_HIGH"},{"inputs":[],"type":"error","name":"INITIALIZER_NOT_DEPLOYER"},{"inputs":[],"type":"error","name":"INVALID_BYTE_SIZE"},{"inputs":[],"type":"error","name":"NewOwnerIsZeroAddress"},{"inputs":[],"type":"error","name":"NoHandoverRequest"},{"inputs":[],"type":"error","name":"OPERATOR_ADMIN_IS_SIGNER"},{"inputs":[],"type":"error","name":"UNAUTHORIZED_DEPLOYER"},{"inputs":[],"type":"error","name":"Unauthorized"},{"inputs":[],"type":"error","name":"ZERO_ADDRESS_DEPLOYER"},{"inputs":[],"type":"error","name":"ZERO_ADDRESS_MAINTENANCE"},{"inputs":[],"type":"error","name":"ZERO_ADDRESS_OPERATOR_ADMIN"},{"inputs":[],"type":"error","name":"ZERO_ADDRESS_OWNER"},{"inputs":[],"type":"error","name":"ZERO_ADDRESS_SIGNER"},{"inputs":[{"internalType":"address","name":"oldImpl","type":"address","indexed":true},{"internalType":"address","name":"newImpl","type":"address","indexed":true}],"type":"event","name":"ImplUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"oldDeployer","type":"address","indexed":true},{"internalType":"address","name":"newDeployer","type":"address","indexed":true}],"type":"event","name":"InstanceDeployerSet","anonymous":false},{"inputs":[{"internalType":"address","name":"recipient","type":"address","indexed":true},{"internalType":"uint16","name":"bps","type":"uint16","indexed":false}],"type":"event","name":"MaintenanceFeeSet","anonymous":false},{"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":"tradingInstanceAddress","type":"address","indexed":true},{"internalType":"address","name":"signer","type":"address","indexed":true}],"type":"event","name":"TradingInstanceCreated","anonymous":false},{"inputs":[],"stateMutability":"payable","type":"function","name":"cancelOwnershipHandover"},{"inputs":[{"internalType":"address","name":"pendingOwner","type":"address"}],"stateMutability":"payable","type":"function","name":"completeOwnershipHandover"},{"inputs":[{"internalType":"address","name":"_tradingInstanceSigner","type":"address"},{"internalType":"address","name":"_operatorAdmin","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"createInstance","outputs":[{"internalType":"address","name":"_newTradingInstance","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"currentVersionBytecode","outputs":[{"internalType":"bytes","name":"_currentByteCode","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getBytecodeSize","outputs":[{"internalType":"uint256","name":"_byteCodeSize","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getCurrentVersionBytecode","outputs":[{"internalType":"bytes","name":"_currentByteCode","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getCurrentVersionHash","outputs":[{"internalType":"bytes32","name":"_currentHash","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_instanceDeployer","type":"address"},{"internalType":"address","name":"_maintenanceAddress","type":"address"},{"internalType":"uint16","name":"_maintenanceBps","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"instanceDeployer","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"maintenanceAddress","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"maintenanceBps","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"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":"payable","type":"function","name":"renounceOwnership"},{"inputs":[],"stateMutability":"payable","type":"function","name":"requestOwnershipHandover"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"rescueEth"},{"inputs":[{"internalType":"address","name":"_instanceDeployer","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setDeployer"},{"inputs":[{"internalType":"address","name":"_maintenanceAddress","type":"address"},{"internalType":"uint16","name":"_maintenanceBps","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"setMaintenance"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"payable","type":"function","name":"transferOwnership"},{"inputs":[{"internalType":"address","name":"_newImpl","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"updateImpl"}],"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`."},"createInstance(address,address)":{"details":"Restricted to the configured {instanceDeployer} (NOT the owner) —      separation of duties: the routine per-market instance minting runs on      a dedicated, lower-privilege deployer key, while ownership (impl +      fees + deployer rotation) stays with the Aspens admin. Gating here      (vs the prior permissionless form) stops anyone from minting      arbitrary-signer clones that carry this factory's address and a      `TradingInstanceCreated` event from it. The account that BROADCASTS the      `createInstance` transaction (the arborter `GetDeployCalldata` flow →      `just deploy-instance`) must therefore be the instance deployer key.`_tradingInstanceSigner` becomes the instance's immutable owner (the      TEE signer). It is supplied by the arborter as its own external      (TEE) signing key, so the deployed instance is exclusively      TEE-owned; neither the broadcasting deployer key nor the factory      owner is the instance owner. The arborter independently verifies,      before registering an instance, that BOTH its signer equals its TEE      key and its `operatorAdmin()` equals the admin the arborter resolved      for that deploy — the latter because the operator admin gates the      operator fee, the per-epoch withdrawal and settlement caps, and      `terminate()`. It refuses to register      an instance where either differs, so a deployer that substitutes      calldata can only mint inert clones.","params":{"_operatorAdmin":"the stack-admin key gating this instance's operator fee, caps and        `terminate()` (non-zero, and never `_tradingInstanceSigner`)","_tradingInstanceSigner":"address that will sign for the new trading instance (the TEE)"},"returns":{"_newTradingInstance":"address of the newly deployed trading instance"}},"currentVersionBytecode()":{"returns":{"_currentByteCode":"current version bytecode"}},"getBytecodeSize()":{"returns":{"_byteCodeSize":"length of the current version bytecode"}},"getCurrentVersionBytecode()":{"returns":{"_currentByteCode":"current version bytecode"}},"getCurrentVersionHash()":{"returns":{"_currentHash":"current version hash"}},"initialize(address,address,address,uint16)":{"details":"Callable ONLY by the factory deployer (captured in the constructor).      This is load-bearing: `initialize` sets the owner and is otherwise      permissionless, so without the guard an attacker could frontrun the      legitimate two-tx deploy (`new` then `initialize`) and take ownership.      Solady's `_initializeOwner` additionally makes this one-shot (a second      call reverts `AlreadyInitialized`).","params":{"_instanceDeployer":"key authorized to call {createInstance}","_maintenanceAddress":"maintenance fee recipient","_maintenanceBps":"maintenance fee in basis points (<= DENOMINATOR)","_owner":"initial owner (the Aspens admin)"}},"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."},"rescueEth()":{"details":"Only callable by owner. Ownable functions are payable for gas optimization,      so this function allows recovery of accidentally sent ETH."},"setDeployer(address)":{"params":{"_instanceDeployer":"new instance deployer (non-zero)"}},"setMaintenance(address,uint16)":{"params":{"_maintenanceAddress":"new maintenance fee recipient","_maintenanceBps":"new maintenance fee in basis points (<= DENOMINATOR)"}},"transferOwnership(address)":{"details":"Allows the owner to transfer the ownership to `newOwner`."},"updateImpl(address)":{"params":{"_newImpl":"new implementation to be used for future deployments"}}},"version":1},"userdoc":{"kind":"user","methods":{"constructor":{"notice":"Records the deployer so it — and only it — can later {initialize}         the factory, closing the deploy-time ownership frontrun window."},"createInstance(address,address)":{"notice":"Creates a new trading instance, baking the current maintenance fee         (recipient + rate) and the operator admin into its immutable args."},"currentVersionBytecode()":{"notice":"Returns the current version bytecode (alias for interface compatibility)"},"getBytecodeSize()":{"notice":"Returns the size of the current version bytecode"},"getCurrentVersionBytecode()":{"notice":"Returns the current version bytecode"},"getCurrentVersionHash()":{"notice":"Returns the current version hash"},"initialize(address,address,address,uint16)":{"notice":"Initializes the factory: owner (the Aspens admin), the instance         deployer, and the initial maintenance fee recipient + rate."},"rescueEth()":{"notice":"Rescue accidentally sent ETH from the contract"},"setDeployer(address)":{"notice":"Rotate the instance deployer — the key allowed to call         {createInstance} (owner only)."},"setMaintenance(address,uint16)":{"notice":"Rotate the maintenance fee recipient + rate (Aspens admin only).         Applies to instances created AFTER this call; existing instances are         unaffected (their maintenance fee is immutable in their args)."},"updateImpl(address)":{"notice":"Updates the implementation contract used for new contract deployments"}},"version":1}},"settings":{"remappings":["bitcoinprism-evm/=chains/evm/lib/oif-contracts/lib/bitcoinprism-evm/","clones-with-immutable-args/=chains/evm/lib/clones-with-immutable-args/src/","ds-test/=chains/evm/lib/clones-with-immutable-args/lib/ds-test/src/","erc4626-tests/=chains/evm/lib/openzeppelin-contracts/lib/erc4626-tests/","forge-gas-snapshot/=chains/evm/lib/permit2/lib/forge-gas-snapshot/src/","forge-std/=chains/evm/lib/forge-std/src/","halmos-cheatcodes/=chains/evm/lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","oif-contracts/=chains/evm/lib/oif-contracts/","openzeppelin-contracts-upgradeable/=chains/evm/lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=chains/evm/lib/openzeppelin-contracts/","openzeppelin-foundry-upgrades/=chains/evm/lib/openzeppelin-foundry-upgrades/src/","permit2/=chains/evm/lib/permit2/","solady/=chains/evm/lib/solady/src/","soledge/=chains/evm/lib/oif-contracts/lib/the-compact/lib/soledge/src/","solmate/=chains/evm/lib/permit2/lib/solmate/src/","the-compact/=chains/evm/lib/oif-contracts/lib/the-compact/"],"optimizer":{"enabled":true,"runs":5000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"chains/evm/src/MidribFactory.sol":"MidribFactory"},"evmVersion":"london","libraries":{}},"sources":{"chains/evm/lib/clones-with-immutable-args/src/ClonesWithImmutableArgs.sol":{"keccak256":"0x220db41bfceb0146f86e9be87d3d954fd1d52eadcb3bbfc5cd89e5543a46fd1e","urls":["bzz-raw://19155470db05e2e67a8c14f21cc903bb4833d8e5d248c2183073320c8a595705","dweb:/ipfs/QmTchpXE8MMH1XcYxaZvx64UiVzBatbWy7Sw5HFhVJJjxi"],"license":"BSD"},"chains/evm/lib/solady/src/auth/Ownable.sol":{"keccak256":"0xc208cdd9de02bbf4b5edad18b88e23a2be7ff56d2287d5649329dc7cda64b9a3","urls":["bzz-raw://e8fba079cc7230c617f7493a2e97873f88e59a53a5018fcb2e2b6ac42d8aa5a3","dweb:/ipfs/QmTXg8GSt8hsK2cZhbPFrund1mrwVdkLQmEPoQaFy4fhjs"],"license":"MIT"},"chains/evm/src/MidribFactory.sol":{"keccak256":"0x3bfba2f7bfb3870f1c4e3d454acdbfefd90e94f5ff4d1081ac2e9622c5a1b796","urls":["bzz-raw://7334512df1385a453c284cebe8700831f13e679415051397ef4858d388e9aacb","dweb:/ipfs/QmXA4BasBasSqutt4s2rRb87NGqeHDcaBW7RZs4jMRy57r"],"license":"BUSL-1.1"},"chains/evm/src/interfaces/IMidribFactory.sol":{"keccak256":"0x2526e8d819cacd20f7aab45793de919d5cc330a9ce8a553075cf94b64169518b","urls":["bzz-raw://3f6e50e59a5111ffe98307772b538dc2da85a44fc13b5042bb4b89fbab9be83d","dweb:/ipfs/QmdPjd2b2mRFk1PZfrG14QkWMFaZfc68rtLWtqj2Jawxnd"],"license":"BUSL-1.1"},"chains/evm/src/libraries/MidribErrors.sol":{"keccak256":"0xe0d33baff5a69bba1b42c7e9c5902753e6a4b4874d885335c8b2e32a0ee54803","urls":["bzz-raw://21e2142dbf13ece76687b4c891cd8437726f0387d2fed4751f8ffb426b77aea1","dweb:/ipfs/QmYdDzqPhBJw1xdostyerkefZTuFJAqZFQ2ZdRHBompVFD"],"license":"BUSL-1.1"},"chains/evm/src/libraries/MidribEvents.sol":{"keccak256":"0x2d744fa82b7a43193520f471f85c6477562ea14da9df49a4b94cc410644a3864","urls":["bzz-raw://abcc30dfbefff3ccfe2dbe37867c42097ffd93fe5bf4c424c62a0a0de04bb189","dweb:/ipfs/QmcKfkhvMHNKLAyEWQ66h5qVmVUpKYQtn2at3euXUU5ez1"],"license":"BUSL-1.1"}},"version":1},"id":14}