{"manifestVersion":1,"name":"Ripples integration manifest","generatedBy":"ops/integration/manifest.mjs","sources":{"deployments":"contracts/deployments.json","abis":"contracts/out","idl":"solana/idl/ripples.json","adapterSettings":"services/api/src/adapter/config.mjs","dualFill":{"deployments":"contracts/deployments.json","abis":"contracts/out","idls":["solana/idl/dual_fill.json","solana/idl/dual_fill.Cros7xBrWN2ty4BZs1fmugFvsXTQKweBqFEqcCtTWRVq.json","solana/idl/dual_fill.mainnet-beta.json","solana/idl/dual_fill.devnet.json","solana/idl/agent_vault.json"],"programIndex":"ops/solana/deployments/dual-fill-programs.json","programRecords":["ops/solana/deployments/dual-fill-{cluster}.json","ops/solana/deployments/agent-vault-{cluster}.json","ops/solana/deployments/dual-fill-{cluster}-{programId}.json"],"terms":"services/generator/src/dual-fill-terms.js","routes":"services/api/src/dual-fill-route-table.mjs"}},"explorer":"https://robinhoodchain.blockscout.com","feed":{"base":"https://api.ripples.run/v1/dex/{network}","networks":[{"network":"solana","chain":"solana","base":"https://api.ripples.run/v1/dex/solana","dexKey":"ripples"},{"network":"robinhood","chain":"robinhood","base":"https://api.ripples.run/v1/dex/robinhood","dexKey":"ripples"}],"endpoints":[{"path":"latest-block","query":null,"answers":"{ block }"},{"path":"asset","query":"id","answers":"{ asset }"},{"path":"pair","query":"id","answers":"{ pair }"},{"path":"events","query":"fromBlock, toBlock","answers":"{ events }"}],"specs":[{"name":"DEX Screener Adapter Specs","version":"1.1"},{"name":"GeckoTerminal Integration API Standards","version":"0.1"}],"rules":{"maxBlockRange":1000,"blockBoundsInclusive":true,"envelope":"Every response is a single named key, with no success or data wrapper and no top-level metadata","amounts":"Every amount is an exact decimal string of up to 50 decimal places, never a JSON number","rateLimit":{"requests":600,"windowSeconds":60},"cors":"open; no origin header and no shared secret required","headRule":"The head is the lowest indexed cursor across every source writing the chain, and /events stops at it, so a block is never served twice and never skipped"}},"poolKey":{"currencySort":"numeric ascending, and fixed for the pool's life; both currencies are ERC20s, because a launch settles in an approved quote asset and never in native ETH","fee":0,"tickSpacing":200,"poolId":"keccak256(abi.encode(currency0, currency1, fee, tickSpacing, hooks))","source":"contracts/src/hook/LaunchHook.sol: POOL_FEE and TICK_SPACING"},"chains":[{"name":"Robinhood","chainId":4663,"rpc":"https://rpc.mainnet.chain.robinhood.com","poolManager":"0x8366a39CC670B4001A1121B8F6A443A643e40951","hook":{"address":"0xaF59944A7d03B914567cb0272b7E588A7aE7AAC4","salt":"0x0000000000000000000000000000000000000000000000000000000000002f94","permissions":{"bitmap":"0x2AC4","flags":["beforeInitialize","beforeAddLiquidity","beforeRemoveLiquidity","beforeSwap","afterSwap","afterSwapReturnsDelta"]},"lens":"0x5E16EA0A8910053c333383CF8eb13369eFb5c0b8"},"factories":{"tokenLaunch":"0xE89C1b33B6C2505414667bE7E5084774a72150e1","launchpad":"0x5136aBf2F4059E390459a7dc9FAD4b0859834894"},"quoteRegistry":"0x2BA6B82cD29Bf81DD26691Bd9625B0942527E9Ba","treasury":"0x2F8decA0ceEe010da1bEFB8EAebCf9caBc96145e","defaultQuote":"0x0Bd7D308f8E1639FAb988df18A8011f41EAcAD73","deployBlock":57681720,"sourceCommit":"712c25e7","poolKey":{"currencySort":"numeric ascending, and fixed for the pool's life; both currencies are ERC20s, because a launch settles in an approved quote asset and never in native ETH","fee":0,"tickSpacing":200,"poolId":"keccak256(abi.encode(currency0, currency1, fee, tickSpacing, hooks))","source":"contracts/src/hook/LaunchHook.sol: POOL_FEE and TICK_SPACING","hooks":"0xaF59944A7d03B914567cb0272b7E588A7aE7AAC4"},"emitters":{"poolManager":"0x8366a39CC670B4001A1121B8F6A443A643e40951","hook":"0xaF59944A7d03B914567cb0272b7E588A7aE7AAC4","tokenLaunchFactory":"0xE89C1b33B6C2505414667bE7E5084774a72150e1","launchpadFactory":"0x5136aBf2F4059E390459a7dc9FAD4b0859834894"}},{"name":"Robinhood testnet","chainId":46630,"rpc":"https://rpc.testnet.chain.robinhood.com","poolManager":"0x8366a39CC670B4001A1121B8F6A443A643e40951","hook":{"address":"0xaF59944A7d03B914567cb0272b7E588A7aE7AAC4","salt":"0x0000000000000000000000000000000000000000000000000000000000002f94","permissions":{"bitmap":"0x2AC4","flags":["beforeInitialize","beforeAddLiquidity","beforeRemoveLiquidity","beforeSwap","afterSwap","afterSwapReturnsDelta"]},"lens":"0x2BD4aB15858d35cedF837f236C51cD3901Eed372"},"factories":{"tokenLaunch":"0x0338754d997967402896c9D45dFd5352E68606ba","launchpad":"0x3A632Ce9B54C499abD837c1809a5369f0A224cDc"},"quoteRegistry":"0x705DA7e3649768595368628656643536801FD1Bc","treasury":"0x6B5b493eE751700dc7000a073FDF47E7EFD52f0D","defaultQuote":"0x1F852eF3Afa13156b807204d838BbB46B4b452eb","deployBlock":115647130,"sourceCommit":"76c2dac1","poolKey":{"currencySort":"numeric ascending, and fixed for the pool's life; both currencies are ERC20s, because a launch settles in an approved quote asset and never in native ETH","fee":0,"tickSpacing":200,"poolId":"keccak256(abi.encode(currency0, currency1, fee, tickSpacing, hooks))","source":"contracts/src/hook/LaunchHook.sol: POOL_FEE and TICK_SPACING","hooks":"0xaF59944A7d03B914567cb0272b7E588A7aE7AAC4"},"emitters":{"poolManager":"0x8366a39CC670B4001A1121B8F6A443A643e40951","hook":"0xaF59944A7d03B914567cb0272b7E588A7aE7AAC4","tokenLaunchFactory":"0x0338754d997967402896c9D45dFd5352E68606ba","launchpadFactory":"0x3A632Ce9B54C499abD837c1809a5369f0A224cDc"}}],"pendingChains":[],"events":{"poolManager":[{"name":"Initialize","signature":"Initialize(bytes32,address,address,uint24,int24,address,uint160,int24)","topic0":"0xdd466e674ea557f56295e2d0218a125ea4b4f0f6f3307b95f85e6110838d6438","anonymous":false,"inputs":[{"name":"id","type":"bytes32","indexed":true},{"name":"currency0","type":"address","indexed":true},{"name":"currency1","type":"address","indexed":true},{"name":"fee","type":"uint24","indexed":false},{"name":"tickSpacing","type":"int24","indexed":false},{"name":"hooks","type":"address","indexed":false},{"name":"sqrtPriceX96","type":"uint160","indexed":false},{"name":"tick","type":"int24","indexed":false}],"note":"The pool exists. Its block is the market's creation for every aggregator that dates a pair."},{"name":"ModifyLiquidity","signature":"ModifyLiquidity(bytes32,address,int24,int24,int256,bytes32)","topic0":"0xf208f4912782fd25c7f114ca3723a2d5dd6f3bcc3ac8db5af63baa85f711d5ec","anonymous":false,"inputs":[{"name":"id","type":"bytes32","indexed":true},{"name":"sender","type":"address","indexed":true},{"name":"tickLower","type":"int24","indexed":false},{"name":"tickUpper","type":"int24","indexed":false},{"name":"liquidityDelta","type":"int256","indexed":false},{"name":"salt","type":"bytes32","indexed":false}],"note":"The launch's own position. The seed is the only one before graduation."},{"name":"Swap","signature":"Swap(bytes32,address,int128,int128,uint160,uint128,int24,uint24)","topic0":"0x40e9cecb9f5f1f1c5b9c97dec2917b7ee92e57ba5563708daca94dd84ad7112f","anonymous":false,"inputs":[{"name":"id","type":"bytes32","indexed":true},{"name":"sender","type":"address","indexed":true},{"name":"amount0","type":"int128","indexed":false},{"name":"amount1","type":"int128","indexed":false},{"name":"sqrtPriceX96","type":"uint160","indexed":false},{"name":"liquidity","type":"uint128","indexed":false},{"name":"tick","type":"int24","indexed":false},{"name":"fee","type":"uint24","indexed":false}],"note":"Every trade. The amounts are the pool's, before the hook's cut: read TradeFeeCharged, CreatorTaxCharged and SnipeTaxCharged from the hook in the same transaction and subtract all of them to get what the trader received. TradeFeeCharged is emitted once per payee, so one trade lands two of them whenever the launch pays a creator as well as the treasury."}],"hook":[{"name":"Claimed","signature":"Claimed(address,address,uint256)","topic0":"0xf7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd3992683","anonymous":false,"inputs":[{"name":"token","type":"address","indexed":true},{"name":"account","type":"address","indexed":true},{"name":"amount","type":"uint256","indexed":false}]},{"name":"ContributionRecorded","signature":"ContributionRecorded(bytes32,address,uint256,uint256)","topic0":"0x3b848fcbc1d1d0f19a4a9f30e3990d2ca028a1972bf282879a6fde3e4b28dcba","anonymous":false,"inputs":[{"name":"poolId","type":"bytes32","indexed":true},{"name":"from","type":"address","indexed":true},{"name":"amount","type":"uint256","indexed":false},{"name":"contributedQuote","type":"uint256","indexed":false}],"note":"Quote a linked collection routed into the raise. It counts toward the target and moves no pool price, so it is raise volume that no Swap carries."},{"name":"CreatorFeeRecipientSet","signature":"CreatorFeeRecipientSet(bytes32,address,address)","topic0":"0xe98b751fcb6b01f7da48fff9556bd647d42ca4105dc6220341437f98853c6090","anonymous":false,"inputs":[{"name":"poolId","type":"bytes32","indexed":true},{"name":"previous","type":"address","indexed":true},{"name":"recipient","type":"address","indexed":true}],"note":"A launch's creator income was pointed at a different address by whoever was receiving it. Everything already owed stays claimable by the previous address; only what the launch earns after this event goes to the new one."},{"name":"CreatorTaxCharged","signature":"CreatorTaxCharged(bytes32,address,address,uint256)","topic0":"0x2876f994f3ad04672af9d383779387ed0d3bac89871b923c9f9eef41cd6db318","anonymous":false,"inputs":[{"name":"poolId","type":"bytes32","indexed":true},{"name":"currency","type":"address","indexed":true},{"name":"recipient","type":"address","indexed":true},{"name":"amount","type":"uint256","indexed":false}],"note":"The launch's own creator tax, taken out of the same side of the same swap and paid to the creator in full. It is separate from TradeFeeCharged because it is a separate charge: the trade fee is split with the treasury and this is not, and a trader pays both. Zero to 1,000 basis points, chosen at launch and fixed for the market's life."},{"name":"Credited","signature":"Credited(address,address,uint256)","topic0":"0x4e45da441832cf53bdaa69235704fc0575e68210f459ee1562911024b12967d5","anonymous":false,"inputs":[{"name":"token","type":"address","indexed":true},{"name":"account","type":"address","indexed":true},{"name":"amount","type":"uint256","indexed":false}]},{"name":"Graduated","signature":"Graduated(bytes32,uint256,uint256)","topic0":"0xc1eaf6441a62895ddec3612cee606bd971cf6b1b38dd700f103e7b6b94167d0c","anonymous":false,"inputs":[{"name":"poolId","type":"bytes32","indexed":true},{"name":"realQuote","type":"uint256","indexed":false},{"name":"graduationQuote","type":"uint256","indexed":false}],"note":"The raise cleared its target. The pool id does not change and no new pool is created; the fee schedule changes and swaps are refused until GraduationRaiseSettled lands."},{"name":"GraduationRaiseSettled","signature":"GraduationRaiseSettled(bytes32,uint256)","topic0":"0xd83e1ca0da2f9ec27f30bfc1a0e691a966ad11db495309f9ba21e5c51bf3ad83","anonymous":false,"inputs":[{"name":"poolId","type":"bytes32","indexed":true},{"name":"raisedQuote","type":"uint256","indexed":false}],"note":"The quote the curve position carried out of the pool, measured off the position. It is what realQuote answers for the rest of the launch's life."},{"name":"GraduationSettled","signature":"GraduationSettled(bytes32,uint128)","topic0":"0x0ee67cdb506e34995a59d35b93c370999743c9c5f4237b1b7f61fa3629cae904","anonymous":false,"inputs":[{"name":"poolId","type":"bytes32","indexed":true},{"name":"liquidity","type":"uint128","indexed":false}],"note":"The permanent position is in place and this pool's liquidity is closed for good. LPLocker emits an event of the same name and a wider signature, so key on topic0, not the name."},{"name":"LaunchRegistered","signature":"LaunchRegistered(bytes32,address,address,address,address,uint256,uint160,int24,int24,uint128)","topic0":"0xc072459bb9c7ab9120cc03eec0a7110f7a20df41ccb3610b0c54814b3aaff318","anonymous":false,"inputs":[{"name":"poolId","type":"bytes32","indexed":true},{"name":"token","type":"address","indexed":true},{"name":"quote","type":"address","indexed":true},{"name":"locker","type":"address","indexed":false},{"name":"creator","type":"address","indexed":false},{"name":"graduationQuote","type":"uint256","indexed":false},{"name":"sqrtPriceX96","type":"uint160","indexed":false},{"name":"tickLower","type":"int24","indexed":false},{"name":"tickUpper","type":"int24","indexed":false},{"name":"liquidity","type":"uint128","indexed":false}],"note":"A pool id became a Ripples launch. It is emitted before the pool exists, so this is the earliest block a market can be claimed on, one call ahead of the PoolManager's Initialize."},{"name":"LaunchSeeded","signature":"LaunchSeeded(bytes32,uint128,int24,int24)","topic0":"0x56a662ac2d06fd82f68115bc8aae74e0d9a11dc119aed160f41a5d4def5a5445","anonymous":false,"inputs":[{"name":"poolId","type":"bytes32","indexed":true},{"name":"liquidity","type":"uint128","indexed":false},{"name":"tickLower","type":"int24","indexed":false},{"name":"tickUpper","type":"int24","indexed":false}],"note":"The launch's own liquidity is in the pool and trading is open."},{"name":"LaunchpadSet","signature":"LaunchpadSet(address,bool)","topic0":"0x6bce717262ad8d508f67dc3376d3a257125260f8a426f2afef7296415f64850a","anonymous":false,"inputs":[{"name":"launchpad","type":"address","indexed":true},{"name":"allowed","type":"bool","indexed":false}],"note":"A factory was allowed to register launches, or stopped from doing so. The hook is mined once and outlives every factory that uses it, so a factory redeploy arrives here."},{"name":"OwnershipTransferStarted","signature":"OwnershipTransferStarted(address,address)","topic0":"0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700","anonymous":false,"inputs":[{"name":"previousOwner","type":"address","indexed":true},{"name":"newOwner","type":"address","indexed":true}]},{"name":"OwnershipTransferred","signature":"OwnershipTransferred(address,address)","topic0":"0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","anonymous":false,"inputs":[{"name":"previousOwner","type":"address","indexed":true},{"name":"newOwner","type":"address","indexed":true}]},{"name":"SnipeTaxCharged","signature":"SnipeTaxCharged(bytes32,address,address,uint256,uint256)","topic0":"0x5b35e3889fff69d0365744fa6d7a696f04c94a77c6200b004fda6320ea34606e","anonymous":false,"inputs":[{"name":"poolId","type":"bytes32","indexed":true},{"name":"currency","type":"address","indexed":true},{"name":"recipient","type":"address","indexed":true},{"name":"amount","type":"uint256","indexed":false},{"name":"bps","type":"uint256","indexed":false}],"note":"The opening window's extra take on a buy, in the same unspecified currency. The recipient says where it went: the burn sink takes it out of circulation, the treasury keeps it."},{"name":"TradeFeeCharged","signature":"TradeFeeCharged(bytes32,address,address,uint256)","topic0":"0x2285eb140ea82ca28170f503bd29870d3ff46c2cea01b0d3bf42deed0d8da500","anonymous":false,"inputs":[{"name":"poolId","type":"bytes32","indexed":true},{"name":"currency","type":"address","indexed":true},{"name":"recipient","type":"address","indexed":true},{"name":"amount","type":"uint256","indexed":false}],"note":"What the hook took out of a swap as the launch's trade fee, in the swap's unspecified currency: the launch token on an exact-input buy, the quote on a sell. One event per payee, so a launch that pays a creator emits it twice for one trade and the fee is their sum. Nothing moved to an outside address; the amount is a claim held inside the PoolManager until the recipient claims it."}],"tokenLaunchFactory":[{"name":"AssetOriginSet","signature":"AssetOriginSet(string)","topic0":"0x73b3415953bb883c64e683859b3e778e2ffbee212a395f92fe8b7a2784381407","anonymous":false,"inputs":[{"name":"origin","type":"string","indexed":false}]},{"name":"FeePassCollectionSet","signature":"FeePassCollectionSet(address)","topic0":"0x23631d31dc72ddf493ae1a8e4578e58a5b375a1c6a5daae27c73c01278c072d2","anonymous":false,"inputs":[{"name":"collection","type":"address","indexed":true}]},{"name":"FeePassConsumed","signature":"FeePassConsumed(uint256,address)","topic0":"0x2575cb7be131797b2b269f251e7bcc8713b9c113ab30a4df1c90f384365def77","anonymous":false,"inputs":[{"name":"passTokenId","type":"uint256","indexed":true},{"name":"creator","type":"address","indexed":true}]},{"name":"FeesWithdrawn","signature":"FeesWithdrawn(address,uint256)","topic0":"0xc0819c13be868895eb93e40eaceb96de976442fa1d404e5c55f14bb65a8c489a","anonymous":false,"inputs":[{"name":"to","type":"address","indexed":true},{"name":"amount","type":"uint256","indexed":false}]},{"name":"LaunchCreated","signature":"LaunchCreated(address,address,bytes32,address,address,(string,string,uint256,uint256,uint256,uint256,uint256,uint64,uint96,address,string,string,string,string,string,string,string))","topic0":"0xe6b9a7f89a54ef27b5f1a729370db18a53da3bcedf25a9cce395d3a7151c9d15","anonymous":false,"inputs":[{"name":"creator","type":"address","indexed":true},{"name":"token","type":"address","indexed":true},{"name":"poolId","type":"bytes32","indexed":true},{"name":"locker","type":"address","indexed":false},{"name":"hook","type":"address","indexed":false},{"name":"p","type":"(string,string,uint256,uint256,uint256,uint256,uint256,uint64,uint96,address,string,string,string,string,string,string,string)","indexed":false}],"note":"The third generation of this event and the first to carry a pool id, in topic 3: the same id the PoolManager's Initialize and Swap carry, which is the join between our record and the market's price. Two earlier signatures are still on the test network, so a scanner reading that history needs all three; contracts/test/Interfaces.t.sol holds them together."},{"name":"LaunchFeeSet","signature":"LaunchFeeSet(uint256)","topic0":"0x9c14cfb9531fb93979e22b461eaa41216ae6de79984d69ee4b411726defedeba","anonymous":false,"inputs":[{"name":"fee","type":"uint256","indexed":false}]},{"name":"LaunchHookSet","signature":"LaunchHookSet(address)","topic0":"0x4cce86045ee56e14b861f315f9bbfd9d15354e2b7546aa36b0b6c0d637caaa22","anonymous":false,"inputs":[{"name":"hook","type":"address","indexed":true}],"note":"The hook this factory keys every launch it creates to. Named graduationHook before the pool generation, where it was a different contract that opened no market."},{"name":"LinkedLaunchCreated","signature":"LinkedLaunchCreated(address,address,address,address,address)","topic0":"0x12279582cbf91e478c8256e79366d189bc65274e22711012d134561b98fcdb79","anonymous":false,"inputs":[{"name":"creator","type":"address","indexed":true},{"name":"token","type":"address","indexed":true},{"name":"locker","type":"address","indexed":false},{"name":"collection","type":"address","indexed":false},{"name":"vesting","type":"address","indexed":false}],"note":"The launch also has a collection and a vesting schedule behind it."},{"name":"NftProtocolFeeSet","signature":"NftProtocolFeeSet(uint96)","topic0":"0xac2a075822a6a2a357f96fc654b9ebe49d686520b38aacb2d6f0c378d7deab1b","anonymous":false,"inputs":[{"name":"bps","type":"uint96","indexed":false}]},{"name":"OwnershipTransferStarted","signature":"OwnershipTransferStarted(address,address)","topic0":"0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700","anonymous":false,"inputs":[{"name":"previousOwner","type":"address","indexed":true},{"name":"newOwner","type":"address","indexed":true}]},{"name":"OwnershipTransferred","signature":"OwnershipTransferred(address,address)","topic0":"0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","anonymous":false,"inputs":[{"name":"previousOwner","type":"address","indexed":true},{"name":"newOwner","type":"address","indexed":true}]},{"name":"PlatformSignerSet","signature":"PlatformSignerSet(address)","topic0":"0xf1589df78975fe5494fa74969b25e6930dd0785c88cce9fb712c07e39aceedd9","anonymous":false,"inputs":[{"name":"signer","type":"address","indexed":true}]},{"name":"QuoteRegistrySet","signature":"QuoteRegistrySet(address)","topic0":"0xc70b5b06e2432adbb407847681d30654be86cd6573a21454d58858ff7ec05db5","anonymous":false,"inputs":[{"name":"registry","type":"address","indexed":true}]},{"name":"TokenWithdrawn","signature":"TokenWithdrawn(address,address,uint256)","topic0":"0x8210728e7c071f615b840ee026032693858fbcd5e5359e67e438c890f59e5620","anonymous":false,"inputs":[{"name":"token","type":"address","indexed":true},{"name":"to","type":"address","indexed":true},{"name":"amount","type":"uint256","indexed":false}]},{"name":"TreasurySet","signature":"TreasurySet(address)","topic0":"0x3c864541ef71378c6229510ed90f376565ee42d9c5e0904a984a9e863e6db44f","anonymous":false,"inputs":[{"name":"treasury","type":"address","indexed":true}]},{"name":"WaveCreated","signature":"WaveCreated(address,address,address,uint256,uint96)","topic0":"0x9f1af47c78a2baeaaca67ab23f33a8b692892145caf22a42ec2c21f3550182ee","anonymous":false,"inputs":[{"name":"creator","type":"address","indexed":true},{"name":"locker","type":"address","indexed":true},{"name":"collection","type":"address","indexed":false},{"name":"wave","type":"uint256","indexed":false},{"name":"mintToCurveBps","type":"uint96","indexed":false}]}],"launchpadFactory":[{"name":"AssetOriginSet","signature":"AssetOriginSet(string)","topic0":"0x73b3415953bb883c64e683859b3e778e2ffbee212a395f92fe8b7a2784381407","anonymous":false,"inputs":[{"name":"origin","type":"string","indexed":false}]},{"name":"CollectionCreated","signature":"CollectionCreated(address,address,(string,string,uint256,uint256,uint256,uint64,uint64,uint8,string,string,uint96,address))","topic0":"0x97cb7b021a2c09bd07f0519545e6cb005ae3c7bd3dc6d434a64c0308f7f833b2","anonymous":false,"inputs":[{"name":"creator","type":"address","indexed":true},{"name":"collection","type":"address","indexed":true},{"name":"p","type":"(string,string,uint256,uint256,uint256,uint64,uint64,uint8,string,string,uint96,address)","indexed":false}],"note":"A drop, not a market. It opens no pool and produces no trade."},{"name":"DefaultProtocolFeeSet","signature":"DefaultProtocolFeeSet(uint96)","topic0":"0x95465226ac2117c565282226e964ccd12d2c9aa47cc47869f27d19ef1de07c33","anonymous":false,"inputs":[{"name":"bps","type":"uint96","indexed":false}]},{"name":"FeePassCollectionSet","signature":"FeePassCollectionSet(address)","topic0":"0x23631d31dc72ddf493ae1a8e4578e58a5b375a1c6a5daae27c73c01278c072d2","anonymous":false,"inputs":[{"name":"collection","type":"address","indexed":true}]},{"name":"FeePassConsumed","signature":"FeePassConsumed(uint256,address)","topic0":"0x2575cb7be131797b2b269f251e7bcc8713b9c113ab30a4df1c90f384365def77","anonymous":false,"inputs":[{"name":"passTokenId","type":"uint256","indexed":true},{"name":"creator","type":"address","indexed":true}]},{"name":"FeesWithdrawn","signature":"FeesWithdrawn(address,uint256)","topic0":"0xc0819c13be868895eb93e40eaceb96de976442fa1d404e5c55f14bb65a8c489a","anonymous":false,"inputs":[{"name":"to","type":"address","indexed":true},{"name":"amount","type":"uint256","indexed":false}]},{"name":"LaunchFeeSet","signature":"LaunchFeeSet(uint256)","topic0":"0x9c14cfb9531fb93979e22b461eaa41216ae6de79984d69ee4b411726defedeba","anonymous":false,"inputs":[{"name":"fee","type":"uint256","indexed":false}]},{"name":"OwnershipTransferStarted","signature":"OwnershipTransferStarted(address,address)","topic0":"0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700","anonymous":false,"inputs":[{"name":"previousOwner","type":"address","indexed":true},{"name":"newOwner","type":"address","indexed":true}]},{"name":"OwnershipTransferred","signature":"OwnershipTransferred(address,address)","topic0":"0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","anonymous":false,"inputs":[{"name":"previousOwner","type":"address","indexed":true},{"name":"newOwner","type":"address","indexed":true}]},{"name":"PlatformSignerSet","signature":"PlatformSignerSet(address)","topic0":"0xf1589df78975fe5494fa74969b25e6930dd0785c88cce9fb712c07e39aceedd9","anonymous":false,"inputs":[{"name":"signer","type":"address","indexed":true}]},{"name":"QuoteRegistrySet","signature":"QuoteRegistrySet(address)","topic0":"0xc70b5b06e2432adbb407847681d30654be86cd6573a21454d58858ff7ec05db5","anonymous":false,"inputs":[{"name":"registry","type":"address","indexed":true}]},{"name":"TokenFeesWithdrawn","signature":"TokenFeesWithdrawn(address,address,uint256)","topic0":"0x6241d2d4228642a412963629be2a38b8fea3c68fc02692659f2afb536393e3af","anonymous":false,"inputs":[{"name":"token","type":"address","indexed":true},{"name":"to","type":"address","indexed":true},{"name":"amount","type":"uint256","indexed":false}],"note":"A sweep of an asset other than the fee token. It is this factory's alone, unlike the FeesWithdrawn beside it, so it is the one of the two that can be read with no address filter."},{"name":"TreasurySet","signature":"TreasurySet(address)","topic0":"0x3c864541ef71378c6229510ed90f376565ee42d9c5e0904a984a9e863e6db44f","anonymous":false,"inputs":[{"name":"treasury","type":"address","indexed":true}]}]},"reads":{"tokenLaunchFactory":[{"name":"launchCount","signature":"launchCount()","selector":"0x27cca59f","stateMutability":"view","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"name":"launches","signature":"launches(uint256,uint256)","selector":"0x90166851","stateMutability":"view","inputs":[{"name":"offset","type":"uint256"},{"name":"limit","type":"uint256"}],"outputs":[{"name":"page","type":"(address,address,address,address)[]"}]},{"name":"isFromFactory","signature":"isFromFactory(address)","selector":"0x2e2ecd8d","stateMutability":"view","inputs":[{"name":"locker","type":"address"}],"outputs":[{"name":"","type":"bool"}]}],"launchpadFactory":[{"name":"collectionCount","signature":"collectionCount()","selector":"0xd57f966b","stateMutability":"view","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"name":"collections","signature":"collections(uint256,uint256)","selector":"0x7697c512","stateMutability":"view","inputs":[{"name":"offset","type":"uint256"},{"name":"limit","type":"uint256"}],"outputs":[{"name":"page","type":"address[]"}]},{"name":"isFromFactory","signature":"isFromFactory(address)","selector":"0x2e2ecd8d","stateMutability":"view","inputs":[{"name":"collection","type":"address"}],"outputs":[{"name":"","type":"bool"}]}],"hook":[{"name":"poolKeyFor","signature":"poolKeyFor(address,address)","selector":"0x8f15ae9b","stateMutability":"view","inputs":[{"name":"token","type":"address"},{"name":"quote","type":"address"}],"outputs":[{"name":"","type":"(address,address,uint24,int24,address)"}]},{"name":"poolIdOfToken","signature":"poolIdOfToken(address)","selector":"0x65d7b483","stateMutability":"view","inputs":[{"name":"token","type":"address"}],"outputs":[{"name":"","type":"bytes32"}]},{"name":"configOf","signature":"configOf(bytes32)","selector":"0x6ef61607","stateMutability":"view","inputs":[{"name":"poolId","type":"bytes32"}],"outputs":[{"name":"","type":"(address,address,address,address,address,address,address,uint96,uint96,uint96,uint64,uint64,uint64,uint96,address,uint256)"}]},{"name":"stateOf","signature":"stateOf(bytes32)","selector":"0x64482ac4","stateMutability":"view","inputs":[{"name":"poolId","type":"bytes32"}],"outputs":[{"name":"","type":"(uint8,uint128,uint256,uint256)"}]},{"name":"planOf","signature":"planOf(bytes32)","selector":"0xff798040","stateMutability":"view","inputs":[{"name":"poolId","type":"bytes32"}],"outputs":[{"name":"","type":"(uint160,int24,int24,uint128,uint256)"}]},{"name":"realQuote","signature":"realQuote(bytes32)","selector":"0x05ca6842","stateMutability":"view","inputs":[{"name":"poolId","type":"bytes32"}],"outputs":[{"name":"","type":"uint256"}]},{"name":"graduationQuote","signature":"graduationQuote(bytes32)","selector":"0x4ce1c4a2","stateMutability":"view","inputs":[{"name":"poolId","type":"bytes32"}],"outputs":[{"name":"","type":"uint256"}]},{"name":"graduationReady","signature":"graduationReady(bytes32)","selector":"0x5315769b","stateMutability":"view","inputs":[{"name":"poolId","type":"bytes32"}],"outputs":[{"name":"","type":"bool"}]},{"name":"snipeTaxBps","signature":"snipeTaxBps(bytes32)","selector":"0x7da3dafe","stateMutability":"view","inputs":[{"name":"poolId","type":"bytes32"}],"outputs":[{"name":"","type":"uint256"}]}],"lens":[{"name":"HOOK","signature":"HOOK()","selector":"0xa54eb242","stateMutability":"view","inputs":[],"outputs":[{"name":"","type":"address"}]},{"name":"POOL_MANAGER","signature":"POOL_MANAGER()","selector":"0x62308e85","stateMutability":"view","inputs":[],"outputs":[{"name":"","type":"address"}]},{"name":"launchesOf","signature":"launchesOf(bytes32[])","selector":"0x52c17af4","stateMutability":"view","inputs":[{"name":"poolIds","type":"bytes32[]"}],"outputs":[{"name":"","type":"(bytes32,(address,address,address,address,address,address,address,uint96,uint96,uint96,uint64,uint64,uint64,uint96,address,uint256),(uint160,int24,int24,uint128,uint256),(uint8,uint128,uint256,uint256),uint256,uint160,uint256)[]"}]}]},"topicCollisionRule":"Filter on the emitting address as well as topic0. Every signature below is emitted by both factories, they are deployed side by side on every chain and rotated separately, and each chain's `emitters` carries the two addresses to tell them apart by.","topicCollisions":[{"topic0":"0x73b3415953bb883c64e683859b3e778e2ffbee212a395f92fe8b7a2784381407","signature":"AssetOriginSet(string)","contracts":["TokenLaunchFactory","LaunchpadFactory"]},{"topic0":"0x23631d31dc72ddf493ae1a8e4578e58a5b375a1c6a5daae27c73c01278c072d2","signature":"FeePassCollectionSet(address)","contracts":["TokenLaunchFactory","LaunchpadFactory"]},{"topic0":"0x2575cb7be131797b2b269f251e7bcc8713b9c113ab30a4df1c90f384365def77","signature":"FeePassConsumed(uint256,address)","contracts":["TokenLaunchFactory","LaunchpadFactory"]},{"topic0":"0xc0819c13be868895eb93e40eaceb96de976442fa1d404e5c55f14bb65a8c489a","signature":"FeesWithdrawn(address,uint256)","contracts":["TokenLaunchFactory","LaunchpadFactory"]},{"topic0":"0x9c14cfb9531fb93979e22b461eaa41216ae6de79984d69ee4b411726defedeba","signature":"LaunchFeeSet(uint256)","contracts":["TokenLaunchFactory","LaunchpadFactory"]},{"topic0":"0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700","signature":"OwnershipTransferStarted(address,address)","contracts":["TokenLaunchFactory","LaunchpadFactory"]},{"topic0":"0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","signature":"OwnershipTransferred(address,address)","contracts":["TokenLaunchFactory","LaunchpadFactory"]},{"topic0":"0xf1589df78975fe5494fa74969b25e6930dd0785c88cce9fb712c07e39aceedd9","signature":"PlatformSignerSet(address)","contracts":["TokenLaunchFactory","LaunchpadFactory"]},{"topic0":"0xc70b5b06e2432adbb407847681d30654be86cd6573a21454d58858ff7ec05db5","signature":"QuoteRegistrySet(address)","contracts":["TokenLaunchFactory","LaunchpadFactory"]},{"topic0":"0x3c864541ef71378c6229510ed90f376565ee42d9c5e0904a984a9e863e6db44f","signature":"TreasurySet(address)","contracts":["TokenLaunchFactory","LaunchpadFactory"]}],"solana":{"programId":"RippcKjgg9pkjHY7RKp6R1K8jPGwq2BRSJcgbErufjF","cluster":"mainnet-beta","sourceCommit":"ff94c30263eb221c4ac27aeceb856f59df4277ab","idl":"solana/idl/ripples.json at ff94c30263eb","idlVersion":"0.1.0","instructions":["accept_authority","begin_graduation","buy","cancel_pending_launch","claim_escrow","claim_holder_reward","claim_native_escrow","claim_vested","collect_locked_fees","create_collection","create_collection_with_pass","create_cpmm_pool","create_external_launch","create_launch","create_launch_with_pass","create_linked_collection","creator_withdraw","disable_quote_asset","finalize_beneficiary","finalize_graduation","freeze_metadata","initialize","initialize_holder_rewards","initialize_holder_rewards_config","link_stock","lock_lp","migrate_collection_v2","migrate_launch_v2","migrate_launch_v3","mint_asset","propose_authority","protocol_withdraw","publish_holder_reward_epoch","recover_unattributed","resume_trading","reveal_asset","sell","set_base_uri","set_creator_payout","set_external_launch_controller","set_placeholder_uri","set_quote_asset","sweep_buyback","unwrap_holder_reward_sol","update_config","withdraw_unlocked_lp"],"events":["AssetMinted","AssetRevealed","AuthorityAccepted","AuthorityProposed","BeneficiaryFinalized","Bought","BuybackSwept","CollectionCreated","CollectionLinked","ConfigUpdated","ContributionRecorded","CreatorPayoutSet","EscrowClaimed","ExternalLaunchControllerSet","ExternalLaunchCreated","GraduationBegun","GraduationCancelled","GraduationFinalized","HolderRewardClaimed","HolderRewardEpochPublished","HolderRewardsInitialized","LaunchCreated","LiquidityLocked","LockedFeesCollected","MetadataUpdated","PoolCreated","QuoteAssetSet","RevenueWithdrawn","Sold","UnattributedRecovered","VestingClaimed"],"preGraduationVenue":null,"graduationVenue":"Raydium CPMM"},"dualFill":{"commitment":{"domain":"ripples-dual-fill-v1","dualFillKey":"sha256(utf8(domain) || 0x00 || utf8(canonicalJson(core)))","id":"base64url(dualFillKey[0..16]), no padding, 22 characters","canonicalJson":"keys sorted, integers above 2^53 as decimal strings, no whitespace","optionalCoreKeys":{"agent":"present only when an agent is the creator","collectionSha256":"present only for a Crosscurrent with a collection"},"reference":"@ripplesdotrun/agent-sdk","vectors":["V20","V21","V22"],"example":{"vector":"V20","core":{"v":1,"mode":"fill-first","solanaCluster":"devnet","solanaProgram":"RippcKjgg9pkjHY7RKp6R1K8jPGwq2BRSJcgbErufjF","dualFillProgram":"EmuBkApiTEXxPG9JrsZ6xeHdVvP7tYpRQVemrjRdz8Wu","evmChainId":46630,"dualFillFactory":"0x00000000000000000000000000000000000071f1","rhTokenFactory":"0x0338754d997967402896c9d45dfd5352e68606ba","solanaCreator":"257dxMGYQNp7bb2BMXhDhqfj4fZkGAN2bkuM8cdHSpoU","rhCreator":"0xd065914767ba406e17ff69dfa63d979eb3d7c0d9","identitySha256":"311a1911fcf4321fda99a8280f03d5e81df594a7e162f599e8d438e5aad1dc16","termsSha256":"c1d53b286cd40bcf5d9e396a740890774bcd504714ccd70fda5a17a023cb5867","openAlone":false,"deadline":1790000000,"publicUntil":1789980000,"nonce":"12345678901234567890"},"dualFillKey":"0x7d706417a3d20dcafcc371f8f131876442711f88975490baefb4b3c38a3e9d78","id":"fXBkF6PSDcr8w3H48TGHZA"}},"api":{"base":"https://api.ripples.run/v1/dual-fills","words":"statusLabel and summary lead every answer","routes":[{"name":"list","method":"GET","path":"/v1/dual-fills","auth":null,"summary":"Crosscurrents on the board, newest first, or every Crosscurrent of one creator."},{"name":"reserve","method":"POST","path":"/v1/dual-fills","auth":"evm","summary":"Save a Crosscurrent before either chain sees a transaction, and receive everything both chains commit to."},{"name":"terms","method":"GET","path":"/v1/dual-fills/terms","auth":null,"summary":"Today's terms for a token, combined or agent Crosscurrent, the contracts they use and the shapes offered."},{"name":"byAddress","method":"GET","path":"/v1/dual-fills/by-address/:address","auth":null,"summary":"The Crosscurrent that recorded an address, with the side it belongs to and its role there."},{"name":"openArtwork","method":"POST","path":"/v1/dual-fills/artwork","auth":"evm","summary":"Start a collection's artwork draft, which takes pieces for 24 hours."},{"name":"addPiece","method":"PUT","path":"/v1/dual-fills/artwork/:draft/pieces/:tokenId","auth":"evm","summary":"Upload one piece of a draft's artwork."},{"name":"sealArtwork","method":"POST","path":"/v1/dual-fills/artwork/:draft/seal","auth":"evm","summary":"Publish a draft as content-addressed folders, one for each chain its pieces mint on."},{"name":"get","method":"GET","path":"/v1/dual-fills/:id","auth":null,"summary":"One Crosscurrent as both chains hold it now."},{"name":"abandon","method":"DELETE","path":"/v1/dual-fills/:id","auth":"evm","summary":"Stop setting up a Crosscurrent before either side exists."},{"name":"confirmLeg","method":"POST","path":"/v1/dual-fills/:id/legs","auth":null,"summary":"Add a side once its transaction has confirmed; the API checks it against chain state."},{"name":"reprice","method":"POST","path":"/v1/dual-fills/:id/reprice","auth":"evm","summary":"Price an Open now Crosscurrent's Solana side again before it is created."}]},"networks":[{"name":"mainnet","robinhood":{"chainId":4663,"tokenLaunchFactory":"0xE89C1b33B6C2505414667bE7E5084774a72150e1","dualFillFactory":"0xc6ca96a76D51BE7C2092e0aDe08052ab7De08A87","linkedDualFillFactory":"0xffcD39866B78be6a4f8B7Ff39b980bD5aa528Ce9","dualFillAgentFactory":"0xCdCA84dF5BcdAeb0fb0Fd2BAbF2887F7B387c08D","keeper":"0xB8F0B600D2b6b60364337742efA6592EF7E2d971","nativeWrap":true,"fromBlocks":{"dualFillFactory":74329763,"linkedDualFillFactory":74329809,"dualFillAgentFactory":74330143}},"solana":{"cluster":"mainnet-beta","ripplesProgram":"RippcKjgg9pkjHY7RKp6R1K8jPGwq2BRSJcgbErufjF","dualFillProgram":{"id":"98pdDLeZS9qJxz8e5TubnNyVh4YT5rsA2Vm8X7NbpNRT","upgradeAuthority":"Bz3ovxtMncmF48SYam8hQpB3qB4CGeTV4HEY1E3HRHup","binarySha256":"9917ab5b591a769e7c7dd6bc72bf71dfbb5162b34e52094a20c65a199f26ae8c","idlSha256":"43cb738a99fe6d3ea47c7af9e480b92bdd4c23d3e304dc7391373a8022accf03","interface":"dual_fill"},"legacyDualFillPrograms":[{"id":"Cros7xBrWN2ty4BZs1fmugFvsXTQKweBqFEqcCtTWRVq","upgradeAuthority":"none","binarySha256":"0185f40aa806520f8e3118d7e6943dea76b10e2fa7661734350a8bdc730efbf3","idlSha256":"ce5b0e9ce9cfd9f3e8b4526a3c02be864ffca58fcc185d489540e4373ebeb6b7","interface":"dual_fill.Cros7xBrWN2ty4BZs1fmugFvsXTQKweBqFEqcCtTWRVq"},{"id":"DuaLwpVYtkyuRLPFDF9BcJx2YiDCXQ3n5PsQ4C8en1wj","upgradeAuthority":"none","binarySha256":"2ab08426017c36aa7969bf7ef0711366c3bd5a0dd861d62d085972f44f9be7d2","idlSha256":"957d2184ac7e0c1ef4c6f7978b821e697c470c74ed59d096efeec54faa8aa5a0","interface":"dual_fill.mainnet-beta"}],"agentVaultProgram":{"id":"R467NctqAyhF21QV2BAVRUW8D9iT6bXuWAUYxJWmKb9","upgradeAuthority":"Bz3ovxtMncmF48SYam8hQpB3qB4CGeTV4HEY1E3HRHup","binarySha256":"d237827f7886bb38eb2cf143efe147a64ea7293a94cdb271786f502eeccd0ef9","idlSha256":"e1f879aea10b13c3c8af7ea6cf248bf02e1a37439d1ee1ab0ade157fb93bcb36","interface":"agent_vault"}}},{"name":"testnet","robinhood":{"chainId":46630,"tokenLaunchFactory":"0x0338754d997967402896c9D45dFd5352E68606ba","dualFillFactory":"0xAF790e6AfE2981af31593cBF531a67C284841C65","linkedDualFillFactory":"0xe74cf6C2419353f477643612B4fbf3D2692D9a6F","dualFillAgentFactory":"0x0560333e52D843Ad8DCf0E02a6f5c0f2f60744FA","keeper":"0xaB8C25d68B728f7665d6D6627D8017B0A2422C25","nativeWrap":false,"fromBlocks":{"dualFillFactory":125390749,"linkedDualFillFactory":125390867,"dualFillAgentFactory":125390969}},"solana":{"cluster":"devnet","ripplesProgram":"RippcKjgg9pkjHY7RKp6R1K8jPGwq2BRSJcgbErufjF","dualFillProgram":{"id":"98pdDLeZS9qJxz8e5TubnNyVh4YT5rsA2Vm8X7NbpNRT","upgradeAuthority":"GL6b9QJAimMYaHf68q1BGUy3xcm61RoM8J8ZxupperEe","binarySha256":"9917ab5b591a769e7c7dd6bc72bf71dfbb5162b34e52094a20c65a199f26ae8c","idlSha256":"43cb738a99fe6d3ea47c7af9e480b92bdd4c23d3e304dc7391373a8022accf03","interface":"dual_fill"},"legacyDualFillPrograms":[{"id":"Cros7xBrWN2ty4BZs1fmugFvsXTQKweBqFEqcCtTWRVq","upgradeAuthority":"GL6b9QJAimMYaHf68q1BGUy3xcm61RoM8J8ZxupperEe","binarySha256":"0185f40aa806520f8e3118d7e6943dea76b10e2fa7661734350a8bdc730efbf3","idlSha256":"ce5b0e9ce9cfd9f3e8b4526a3c02be864ffca58fcc185d489540e4373ebeb6b7","interface":"dual_fill.Cros7xBrWN2ty4BZs1fmugFvsXTQKweBqFEqcCtTWRVq"},{"id":"DuaLwpVYtkyuRLPFDF9BcJx2YiDCXQ3n5PsQ4C8en1wj","upgradeAuthority":"GL6b9QJAimMYaHf68q1BGUy3xcm61RoM8J8ZxupperEe","binarySha256":"f76a8c04ffe622c8a315524fec90b6d1ec69707c38c9f28f25e40905b6365183","idlSha256":"deeee916af52b731a8241b87e77664d20349f8f71ef6dc0c0d87fe9be669b436","interface":"dual_fill.devnet"}],"agentVaultProgram":{"id":"R467NctqAyhF21QV2BAVRUW8D9iT6bXuWAUYxJWmKb9","upgradeAuthority":"GL6b9QJAimMYaHf68q1BGUy3xcm61RoM8J8ZxupperEe","binarySha256":"d237827f7886bb38eb2cf143efe147a64ea7293a94cdb271786f502eeccd0ef9","idlSha256":"e1f879aea10b13c3c8af7ea6cf248bf02e1a37439d1ee1ab0ade157fb93bcb36","interface":"agent_vault"}}}],"interfaces":{"DualFillFactory":{"kind":"abi","url":"/integrate/dual-fill/DualFillFactory.abi.json","sha256":"03fa98cbb68a540f6b08740101167f7a5b385363da58a8168922a100c0fc7eb8","source":"contracts/out/DualFillFactory.sol/DualFillFactory.json"},"DualFill":{"kind":"abi","url":"/integrate/dual-fill/DualFill.abi.json","sha256":"ca0604843ff21e99784f513b9ef0dcbd175d75849fa5d293f7b40bc209b92aa2","source":"contracts/out/DualFill.sol/DualFill.json"},"LinkedDualFillFactory":{"kind":"abi","url":"/integrate/dual-fill/LinkedDualFillFactory.abi.json","sha256":"9b4e277866be8461d24bf6c5fd3ae9acb2667568ac6511234b076dea77df033d","source":"contracts/out/LinkedDualFillFactory.sol/LinkedDualFillFactory.json"},"LinkedDualFill":{"kind":"abi","url":"/integrate/dual-fill/LinkedDualFill.abi.json","sha256":"9d7b309dcb49b08d1fb35a465ee0bd2cdc0a1d900f1c66e1149be20917237f58","source":"contracts/out/LinkedDualFill.sol/LinkedDualFill.json"},"DualFillAgentFactory":{"kind":"abi","url":"/integrate/dual-fill/DualFillAgentFactory.abi.json","sha256":"9e3aace11bec64624f45c4fdb3da4a32daa773f34afe97b24981a60722500427","source":"contracts/out/DualFillAgentFactory.sol/DualFillAgentFactory.json"},"DualFillAgentTreasury":{"kind":"abi","url":"/integrate/dual-fill/DualFillAgentTreasury.abi.json","sha256":"14f28dc37c34ea5921b41c69116cd02386437a98beb883a9dc822bd46ef34ed9","source":"contracts/out/DualFillAgentTreasury.sol/DualFillAgentTreasury.json"},"dual_fill":{"kind":"idl","url":"/integrate/dual-fill/dual_fill.idl.json","sha256":"43cb738a99fe6d3ea47c7af9e480b92bdd4c23d3e304dc7391373a8022accf03","source":"solana/idl/dual_fill.json"},"dual_fill.Cros7xBrWN2ty4BZs1fmugFvsXTQKweBqFEqcCtTWRVq":{"kind":"idl","url":"/integrate/dual-fill/dual_fill.Cros7xBrWN2ty4BZs1fmugFvsXTQKweBqFEqcCtTWRVq.idl.json","sha256":"ce5b0e9ce9cfd9f3e8b4526a3c02be864ffca58fcc185d489540e4373ebeb6b7","source":"solana/idl/dual_fill.Cros7xBrWN2ty4BZs1fmugFvsXTQKweBqFEqcCtTWRVq.json"},"dual_fill.mainnet-beta":{"kind":"idl","url":"/integrate/dual-fill/dual_fill.mainnet-beta.idl.json","sha256":"957d2184ac7e0c1ef4c6f7978b821e697c470c74ed59d096efeec54faa8aa5a0","source":"solana/idl/dual_fill.mainnet-beta.json"},"dual_fill.devnet":{"kind":"idl","url":"/integrate/dual-fill/dual_fill.devnet.idl.json","sha256":"deeee916af52b731a8241b87e77664d20349f8f71ef6dc0c0d87fe9be669b436","source":"solana/idl/dual_fill.devnet.json"},"agent_vault":{"kind":"idl","url":"/integrate/dual-fill/agent_vault.idl.json","sha256":"e1f879aea10b13c3c8af7ea6cf248bf02e1a37439d1ee1ab0ade157fb93bcb36","source":"solana/idl/agent_vault.json"}},"events":{"dualFillFactory":[{"name":"FillCreated","signature":"FillCreated(address,address,bytes32,uint256,uint64,uint64,bool,uint256,bytes32,(string,string,uint256,uint256,uint256,uint256,uint256,uint64,uint96,address,string,string,string,string,string,string,string))","topic0":"0x00a4d22a91b6b8283c2b127728ec8deeda1a3ae5cb1c462f802b4cf6f0733ce4","anonymous":false,"inputs":[{"name":"fill","type":"address","indexed":true},{"name":"creator","type":"address","indexed":true},{"name":"dualFillKey","type":"bytes32","indexed":true},{"name":"target","type":"uint256","indexed":false},{"name":"deadline","type":"uint64","indexed":false},{"name":"publicUntil","type":"uint64","indexed":false},{"name":"openAlone","type":"bool","indexed":false},{"name":"feeBudget","type":"uint256","indexed":false},{"name":"paramsHash","type":"bytes32","indexed":false},{"name":"params","type":"(string,string,uint256,uint256,uint256,uint256,uint256,uint64,uint96,address,string,string,string,string,string,string,string)","indexed":false}],"note":"The Robinhood side of a Crosscurrent with no collection or agent exists. The fill, its creator and the Crosscurrent key are the three topics, so one filter on the key finds the side without reading the data."}],"dualFill":[{"name":"Aborted","signature":"Aborted(address)","topic0":"0x13c3922f06c44c3cac6a2c721f8ec8db793360b0180d5e560ca2028de2037eaa","anonymous":false,"inputs":[{"name":"opener","type":"address","indexed":true}]},{"name":"Cancelled","signature":"Cancelled()","topic0":"0x63b958841f79ab97cb5456da181454b9932c0e15a3b17f1cbd27e2a8bc610437","anonymous":false,"inputs":[]},{"name":"Claimed","signature":"Claimed(address,uint256,uint256)","topic0":"0x987d620f307ff6b94d58743cb7a7509f24071586a77759b77c2d4e29f75a2f9a","anonymous":false,"inputs":[{"name":"account","type":"address","indexed":true},{"name":"tokens","type":"uint256","indexed":false},{"name":"quote","type":"uint256","indexed":false}]},{"name":"CreatorFeesForwarded","signature":"CreatorFeesForwarded(uint256,uint256)","topic0":"0xaa330b55610f73593b7470d1932f2523ccc17286e023c6ec532d595cc6a2acd5","anonymous":false,"inputs":[{"name":"quote","type":"uint256","indexed":false},{"name":"token","type":"uint256","indexed":false}]},{"name":"Deposited","signature":"Deposited(address,uint256,uint256,bool)","topic0":"0x65e6f89b6907d6277741ee4ccbc4ae260163a17f16bbb55b5344dff064867c40","anonymous":false,"inputs":[{"name":"account","type":"address","indexed":true},{"name":"amount","type":"uint256","indexed":false},{"name":"total","type":"uint256","indexed":false},{"name":"native","type":"bool","indexed":false}]},{"name":"FeeBudgetReturned","signature":"FeeBudgetReturned(uint256)","topic0":"0xc721e23deda263c544f0b77b4fbc995baa8253a1443e8c5b4b64b1d7568596a6","anonymous":false,"inputs":[{"name":"amount","type":"uint256","indexed":false}]},{"name":"FeesHandedOver","signature":"FeesHandedOver(address)","topic0":"0xbb1a6597846990220fd35033701ecd7153257e500949af585ec78e5e27cfebe3","anonymous":false,"inputs":[{"name":"creator","type":"address","indexed":true}]},{"name":"Filled","signature":"Filled(uint256)","topic0":"0xd14df08fabc3175c71c9c6b212bd0fd290d0e78a5f809c5f28deb5ba6f029b91","anonymous":false,"inputs":[{"name":"total","type":"uint256","indexed":false}]},{"name":"Opened","signature":"Opened(address,address,bytes32,address,uint256,uint256,uint256)","topic0":"0xf849d2586cabd9983f79f1db336a8684e1489b070cefc38d37db4d37858eff0e","anonymous":false,"inputs":[{"name":"token","type":"address","indexed":true},{"name":"locker","type":"address","indexed":true},{"name":"poolId","type":"bytes32","indexed":true},{"name":"opener","type":"address","indexed":false},{"name":"launchFee","type":"uint256","indexed":false},{"name":"tokensForFill","type":"uint256","indexed":false},{"name":"quoteBack","type":"uint256","indexed":false}],"note":"The fill bought its opening share and the market is trading. LinkedDualFill emits the same signature, so filter on fills the two factories created."},{"name":"Refunded","signature":"Refunded(address,uint256)","topic0":"0xd7dee2702d63ad89917b6a4da9981c90c4d24f8c2bdfd64c604ecae57d8d0651","anonymous":false,"inputs":[{"name":"account","type":"address","indexed":true},{"name":"amount","type":"uint256","indexed":false}]},{"name":"Withdrawn","signature":"Withdrawn(address,uint256,uint256)","topic0":"0x92ccf450a286a957af52509bc1c9939d1a6a481783e142e41e2499f0bb66ebc6","anonymous":false,"inputs":[{"name":"account","type":"address","indexed":true},{"name":"amount","type":"uint256","indexed":false},{"name":"total","type":"uint256","indexed":false}]}],"linkedDualFillFactory":[{"name":"FillCreated","signature":"FillCreated(address,address,bytes32,uint256,uint64,uint64,bool,uint256,bytes32,(string,string,uint256,uint256,uint256,uint256,uint256,uint64,uint96,address,string,string,string,string,string,string,string),(string,string,uint256,uint256,uint256,uint64,uint64,uint8,string,string,uint96,address),(uint96,uint96,uint64,uint64,bool,bool))","topic0":"0x3f5bfa35fd1339f5fb34156fdedbd6866ad2474437afb17b271e113136c28ccf","anonymous":false,"inputs":[{"name":"fill","type":"address","indexed":true},{"name":"creator","type":"address","indexed":true},{"name":"dualFillKey","type":"bytes32","indexed":true},{"name":"target","type":"uint256","indexed":false},{"name":"deadline","type":"uint64","indexed":false},{"name":"publicUntil","type":"uint64","indexed":false},{"name":"openAlone","type":"bool","indexed":false},{"name":"feeBudget","type":"uint256","indexed":false},{"name":"paramsHash","type":"bytes32","indexed":false},{"name":"tp","type":"(string,string,uint256,uint256,uint256,uint256,uint256,uint64,uint96,address,string,string,string,string,string,string,string)","indexed":false},{"name":"np","type":"(string,string,uint256,uint256,uint256,uint64,uint64,uint8,string,string,uint96,address)","indexed":false},{"name":"lp","type":"(uint96,uint96,uint64,uint64,bool,bool)","indexed":false}],"note":"The Robinhood side of a Crosscurrent with a collection exists. It carries the collection's terms after the launch's, so its topic differs from the token factory's FillCreated."}],"linkedDualFill":[{"name":"Aborted","signature":"Aborted(address)","topic0":"0x13c3922f06c44c3cac6a2c721f8ec8db793360b0180d5e560ca2028de2037eaa","anonymous":false,"inputs":[{"name":"opener","type":"address","indexed":true}]},{"name":"AssetForwarded","signature":"AssetForwarded(address,uint256)","topic0":"0x05c47bff5ba0a5fce90c1fa237cb294e2be5093759e575a4c5f46b1e60201875","anonymous":false,"inputs":[{"name":"asset","type":"address","indexed":true},{"name":"amount","type":"uint256","indexed":false}]},{"name":"Cancelled","signature":"Cancelled()","topic0":"0x63b958841f79ab97cb5456da181454b9932c0e15a3b17f1cbd27e2a8bc610437","anonymous":false,"inputs":[]},{"name":"Claimed","signature":"Claimed(address,uint256,uint256)","topic0":"0x987d620f307ff6b94d58743cb7a7509f24071586a77759b77c2d4e29f75a2f9a","anonymous":false,"inputs":[{"name":"account","type":"address","indexed":true},{"name":"tokens","type":"uint256","indexed":false},{"name":"quote","type":"uint256","indexed":false}]},{"name":"CollectionOpened","signature":"CollectionOpened(address,address)","topic0":"0x2b23f7c6fc26148cee31ca8edf5b8e65c5d38af84c2e194d0366d330db459a7c","anonymous":false,"inputs":[{"name":"collection","type":"address","indexed":true},{"name":"vesting","type":"address","indexed":true}],"note":"The collection and its vesting schedule exist, in the same transaction as Opened."},{"name":"CreatorFeesForwarded","signature":"CreatorFeesForwarded(uint256,uint256)","topic0":"0xaa330b55610f73593b7470d1932f2523ccc17286e023c6ec532d595cc6a2acd5","anonymous":false,"inputs":[{"name":"quote","type":"uint256","indexed":false},{"name":"token","type":"uint256","indexed":false}]},{"name":"Deposited","signature":"Deposited(address,uint256,uint256,bool)","topic0":"0x65e6f89b6907d6277741ee4ccbc4ae260163a17f16bbb55b5344dff064867c40","anonymous":false,"inputs":[{"name":"account","type":"address","indexed":true},{"name":"amount","type":"uint256","indexed":false},{"name":"total","type":"uint256","indexed":false},{"name":"native","type":"bool","indexed":false}]},{"name":"FeeBudgetReturned","signature":"FeeBudgetReturned(uint256)","topic0":"0xc721e23deda263c544f0b77b4fbc995baa8253a1443e8c5b4b64b1d7568596a6","anonymous":false,"inputs":[{"name":"amount","type":"uint256","indexed":false}]},{"name":"FeesHandedOver","signature":"FeesHandedOver(address)","topic0":"0xbb1a6597846990220fd35033701ecd7153257e500949af585ec78e5e27cfebe3","anonymous":false,"inputs":[{"name":"creator","type":"address","indexed":true}]},{"name":"Filled","signature":"Filled(uint256)","topic0":"0xd14df08fabc3175c71c9c6b212bd0fd290d0e78a5f809c5f28deb5ba6f029b91","anonymous":false,"inputs":[{"name":"total","type":"uint256","indexed":false}]},{"name":"Opened","signature":"Opened(address,address,bytes32,address,uint256,uint256,uint256)","topic0":"0xf849d2586cabd9983f79f1db336a8684e1489b070cefc38d37db4d37858eff0e","anonymous":false,"inputs":[{"name":"token","type":"address","indexed":true},{"name":"locker","type":"address","indexed":true},{"name":"poolId","type":"bytes32","indexed":true},{"name":"opener","type":"address","indexed":false},{"name":"launchFee","type":"uint256","indexed":false},{"name":"tokensForFill","type":"uint256","indexed":false},{"name":"quoteBack","type":"uint256","indexed":false}]},{"name":"Refunded","signature":"Refunded(address,uint256)","topic0":"0xd7dee2702d63ad89917b6a4da9981c90c4d24f8c2bdfd64c604ecae57d8d0651","anonymous":false,"inputs":[{"name":"account","type":"address","indexed":true},{"name":"amount","type":"uint256","indexed":false}]},{"name":"Withdrawn","signature":"Withdrawn(address,uint256,uint256)","topic0":"0x92ccf450a286a957af52509bc1c9939d1a6a481783e142e41e2499f0bb66ebc6","anonymous":false,"inputs":[{"name":"account","type":"address","indexed":true},{"name":"amount","type":"uint256","indexed":false},{"name":"total","type":"uint256","indexed":false}]}],"dualFillAgentFactory":[{"name":"AgentDualFillCreated","signature":"AgentDualFillCreated(address,address,address,address,bytes32,uint256)","topic0":"0xebe6fc7218fc60683b8bbe69d8e4e6b14dcd8ce8b6c1379426f7fc07e0425bd9","anonymous":false,"inputs":[{"name":"creator","type":"address","indexed":true},{"name":"treasury","type":"address","indexed":true},{"name":"operator","type":"address","indexed":true},{"name":"fill","type":"address","indexed":false},{"name":"dualFillKey","type":"bytes32","indexed":false},{"name":"runway","type":"uint256","indexed":false}],"note":"An agent treasury was created, funded and made the creator of a fill in one transaction. The treasury is the fill's creator of record; the wallet that funded it is topic 1."}],"dualFillAgentTreasury":[{"name":"BondReturned","signature":"BondReturned(address,uint256)","topic0":"0x9347cad0e396dd77ea84d092d0e565cf227a1672e5981022e22c07d8d09e12bc","anonymous":false,"inputs":[{"name":"to","type":"address","indexed":true},{"name":"amount","type":"uint256","indexed":false}]},{"name":"Bought","signature":"Bought(uint256,uint256)","topic0":"0x3ccb2ab6980b218b1dd4974b07365cd90a191e170c611da46262fecc208bd661","anonymous":false,"inputs":[{"name":"spent","type":"uint256","indexed":false},{"name":"received","type":"uint256","indexed":false}]},{"name":"Bound","signature":"Bound(address,address)","topic0":"0x0d128562eaa47ab89086803e64a0f96847c0ed3cc63c26251f29ba1aede09d4e","anonymous":false,"inputs":[{"name":"token","type":"address","indexed":true},{"name":"locker","type":"address","indexed":true}]},{"name":"FeesClaimed","signature":"FeesClaimed(uint256,uint256)","topic0":"0xa1f87f32d0f17fab0242ca800d736293de8988c14b27747e218cf13d5c249f53","anonymous":false,"inputs":[{"name":"quoteAmount","type":"uint256","indexed":false},{"name":"tokenAmount","type":"uint256","indexed":false}]},{"name":"FillCancelled","signature":"FillCancelled(address)","topic0":"0x5924e8f5c663cbf9d94e93dabad9ac7323f82cfe85069dc40c4ac75df47cf2a4","anonymous":false,"inputs":[{"name":"fill","type":"address","indexed":true}]},{"name":"FillStarted","signature":"FillStarted(address,bytes32,uint256)","topic0":"0x033bda7bf11fdf18549a1f433edc81b9d5822672d5b69dc6e6c4e057a4251640","anonymous":false,"inputs":[{"name":"fill","type":"address","indexed":true},{"name":"dualFillKey","type":"bytes32","indexed":true},{"name":"feeBudget","type":"uint256","indexed":false}]},{"name":"Noted","signature":"Noted(bytes32,string)","topic0":"0xd4d08a94163d1e1ffbf270c31a57b5f1502d91abcd6ac037e0b62cc5af7e4aef","anonymous":false,"inputs":[{"name":"digest","type":"bytes32","indexed":true},{"name":"uri","type":"string","indexed":false}]},{"name":"OperatorRetired","signature":"OperatorRetired()","topic0":"0xa68770f5e7c6c8b6662c89b74137de3ebddabd56f9d487ce9d8ea60e0bab4a8a","anonymous":false,"inputs":[],"note":"The funder stopped the agent for good. The treasury refuses every operator call after it."},{"name":"Paid","signature":"Paid(address,uint256)","topic0":"0x737c69225d647e5994eab1a6c301bf6d9232beb2759ae1e27a8966b4732bc489","anonymous":false,"inputs":[{"name":"to","type":"address","indexed":true},{"name":"amount","type":"uint256","indexed":false}]},{"name":"RunwayReturned","signature":"RunwayReturned(address,uint256)","topic0":"0x796a3a10564d81bea438b8ea0d5c4f97140ef425a506ccfc6366d57b3a46e93d","anonymous":false,"inputs":[{"name":"to","type":"address","indexed":true},{"name":"amount","type":"uint256","indexed":false}],"note":"A side that can never open sent the runway back to the wallet that funded it."},{"name":"Sold","signature":"Sold(uint256,uint256)","topic0":"0x7ea63cabf285309a7f2750def3e745dd81fc85e39926c5b47f0bd45938e1a412","anonymous":false,"inputs":[{"name":"sold","type":"uint256","indexed":false},{"name":"received","type":"uint256","indexed":false}]}]},"topicCollisions":[{"topic0":"0x13c3922f06c44c3cac6a2c721f8ec8db793360b0180d5e560ca2028de2037eaa","signature":"Aborted(address)","contracts":["DualFill","LinkedDualFill"]},{"topic0":"0x63b958841f79ab97cb5456da181454b9932c0e15a3b17f1cbd27e2a8bc610437","signature":"Cancelled()","contracts":["DualFill","LinkedDualFill"]},{"topic0":"0x987d620f307ff6b94d58743cb7a7509f24071586a77759b77c2d4e29f75a2f9a","signature":"Claimed(address,uint256,uint256)","contracts":["DualFill","LinkedDualFill"]},{"topic0":"0xaa330b55610f73593b7470d1932f2523ccc17286e023c6ec532d595cc6a2acd5","signature":"CreatorFeesForwarded(uint256,uint256)","contracts":["DualFill","LinkedDualFill"]},{"topic0":"0x65e6f89b6907d6277741ee4ccbc4ae260163a17f16bbb55b5344dff064867c40","signature":"Deposited(address,uint256,uint256,bool)","contracts":["DualFill","LinkedDualFill"]},{"topic0":"0xc721e23deda263c544f0b77b4fbc995baa8253a1443e8c5b4b64b1d7568596a6","signature":"FeeBudgetReturned(uint256)","contracts":["DualFill","LinkedDualFill"]},{"topic0":"0xbb1a6597846990220fd35033701ecd7153257e500949af585ec78e5e27cfebe3","signature":"FeesHandedOver(address)","contracts":["DualFill","LinkedDualFill"]},{"topic0":"0xd14df08fabc3175c71c9c6b212bd0fd290d0e78a5f809c5f28deb5ba6f029b91","signature":"Filled(uint256)","contracts":["DualFill","LinkedDualFill"]},{"topic0":"0xf849d2586cabd9983f79f1db336a8684e1489b070cefc38d37db4d37858eff0e","signature":"Opened(address,address,bytes32,address,uint256,uint256,uint256)","contracts":["DualFill","LinkedDualFill"]},{"topic0":"0xd7dee2702d63ad89917b6a4da9981c90c4d24f8c2bdfd64c604ecae57d8d0651","signature":"Refunded(address,uint256)","contracts":["DualFill","LinkedDualFill"]},{"topic0":"0x92ccf450a286a957af52509bc1c9939d1a6a481783e142e41e2499f0bb66ebc6","signature":"Withdrawn(address,uint256,uint256)","contracts":["DualFill","LinkedDualFill"]}],"reads":{"dualFillFactory":[{"name":"fillCount","signature":"fillCount()","selector":"0x6051e4dc","stateMutability":"view","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"name":"fills","signature":"fills(uint256,uint256)","selector":"0x7dca72b7","stateMutability":"view","inputs":[{"name":"offset","type":"uint256"},{"name":"limit","type":"uint256"}],"outputs":[{"name":"page","type":"address[]"}]},{"name":"fillOf","signature":"fillOf(address,bytes32)","selector":"0x08d2ffc7","stateMutability":"view","inputs":[{"name":"creator","type":"address"},{"name":"dualFillKey","type":"bytes32"}],"outputs":[{"name":"fill","type":"address"}]},{"name":"isFill","signature":"isFill(address)","selector":"0x3b52525a","stateMutability":"view","inputs":[{"name":"fill","type":"address"}],"outputs":[{"name":"","type":"bool"}]}],"dualFill":[{"name":"DUAL_FILL_KEY","signature":"DUAL_FILL_KEY()","selector":"0x0e8ceacc","stateMutability":"view","inputs":[],"outputs":[{"name":"","type":"bytes32"}]},{"name":"CREATOR","signature":"CREATOR()","selector":"0xe4fbb609","stateMutability":"view","inputs":[],"outputs":[{"name":"","type":"address"}]},{"name":"PARAMS_HASH","signature":"PARAMS_HASH()","selector":"0x1411a9ef","stateMutability":"view","inputs":[],"outputs":[{"name":"","type":"bytes32"}]},{"name":"terms","signature":"terms()","selector":"0xd5025625","stateMutability":"view","inputs":[],"outputs":[{"name":"","type":"(address,bytes32,uint256,uint64,uint64,bool,uint256,bytes32,address,address,address,bool,address)"}]},{"name":"snapshot","signature":"snapshot()","selector":"0x9711715a","stateMutability":"view","inputs":[],"outputs":[{"name":"s","type":"(uint8,uint256,uint256,uint256,uint64,address,address,bytes32,uint256,uint256,uint256,bool,bool,bool)"}]},{"name":"status","signature":"status()","selector":"0x200d2ed2","stateMutability":"view","inputs":[],"outputs":[{"name":"","type":"uint8"}]},{"name":"depositOf","signature":"depositOf(address)","selector":"0x23e3fbd5","stateMutability":"view","inputs":[{"name":"account","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"name":"claimable","signature":"claimable(address)","selector":"0x402914f5","stateMutability":"view","inputs":[{"name":"account","type":"address"}],"outputs":[{"name":"tokens","type":"uint256"},{"name":"quote","type":"uint256"}]},{"name":"refundable","signature":"refundable()","selector":"0xbf89662d","stateMutability":"view","inputs":[],"outputs":[{"name":"","type":"bool"}]},{"name":"token","signature":"token()","selector":"0xfc0c546a","stateMutability":"view","inputs":[],"outputs":[{"name":"","type":"address"}]},{"name":"poolId","signature":"poolId()","selector":"0x3e0dc34e","stateMutability":"view","inputs":[],"outputs":[{"name":"","type":"bytes32"}]},{"name":"openedAt","signature":"openedAt()","selector":"0x38930203","stateMutability":"view","inputs":[],"outputs":[{"name":"","type":"uint64"}]}],"linkedDualFillFactory":[{"name":"fillCount","signature":"fillCount()","selector":"0x6051e4dc","stateMutability":"view","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"name":"fills","signature":"fills(uint256,uint256)","selector":"0x7dca72b7","stateMutability":"view","inputs":[{"name":"offset","type":"uint256"},{"name":"limit","type":"uint256"}],"outputs":[{"name":"page","type":"address[]"}]},{"name":"fillOf","signature":"fillOf(address,bytes32)","selector":"0x08d2ffc7","stateMutability":"view","inputs":[{"name":"creator","type":"address"},{"name":"dualFillKey","type":"bytes32"}],"outputs":[{"name":"fill","type":"address"}]},{"name":"isFill","signature":"isFill(address)","selector":"0x3b52525a","stateMutability":"view","inputs":[{"name":"fill","type":"address"}],"outputs":[{"name":"","type":"bool"}]},{"name":"curveSupplyFor","signature":"curveSupplyFor(uint96)","selector":"0xdb7bc409","stateMutability":"pure","inputs":[{"name":"nftAllocationBps","type":"uint96"}],"outputs":[{"name":"","type":"uint256"}]}],"linkedDualFill":[{"name":"collection","signature":"collection()","selector":"0x7de1e536","stateMutability":"view","inputs":[],"outputs":[{"name":"","type":"address"}]},{"name":"vesting","signature":"vesting()","selector":"0x44c63eec","stateMutability":"view","inputs":[],"outputs":[{"name":"","type":"address"}]}],"dualFillAgentFactory":[{"name":"treasuryOf","signature":"treasuryOf(address,bytes32)","selector":"0x9edb32bd","stateMutability":"view","inputs":[{"name":"creator","type":"address"},{"name":"dualFillKey","type":"bytes32"}],"outputs":[{"name":"treasury","type":"address"}]},{"name":"treasuryCount","signature":"treasuryCount()","selector":"0xc0d10bd3","stateMutability":"view","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"name":"treasuries","signature":"treasuries(uint256,uint256)","selector":"0x36169483","stateMutability":"view","inputs":[{"name":"offset","type":"uint256"},{"name":"limit","type":"uint256"}],"outputs":[{"name":"page","type":"address[]"}]},{"name":"isFromFactory","signature":"isFromFactory(address)","selector":"0x2e2ecd8d","stateMutability":"view","inputs":[{"name":"treasury","type":"address"}],"outputs":[{"name":"","type":"bool"}]}],"dualFillAgentTreasury":[{"name":"CREATOR","signature":"CREATOR()","selector":"0xe4fbb609","stateMutability":"view","inputs":[],"outputs":[{"name":"","type":"address"}]},{"name":"OPERATOR","signature":"OPERATOR()","selector":"0x983d2737","stateMutability":"view","inputs":[],"outputs":[{"name":"","type":"address"}]},{"name":"fill","signature":"fill()","selector":"0xd9c55ce1","stateMutability":"view","inputs":[],"outputs":[{"name":"","type":"address"}]},{"name":"charter","signature":"charter()","selector":"0xc1aadb4d","stateMutability":"view","inputs":[],"outputs":[{"name":"operator","type":"address"},{"name":"dailySpend","type":"uint128"},{"name":"perCallSpend","type":"uint128"},{"name":"dailySell","type":"uint128"},{"name":"dailyMint","type":"uint32"},{"name":"payees_","type":"address[]"}]},{"name":"remainingToday","signature":"remainingToday()","selector":"0xfc3c5515","stateMutability":"view","inputs":[],"outputs":[{"name":"spend","type":"uint256"},{"name":"sellable","type":"uint256"},{"name":"mintable","type":"uint256"}]},{"name":"boughtTokens","signature":"boughtTokens()","selector":"0x582c6d70","stateMutability":"view","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"name":"sellableTokens","signature":"sellableTokens()","selector":"0x808bcddc","stateMutability":"view","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"name":"payees","signature":"payees()","selector":"0x4e8086aa","stateMutability":"view","inputs":[],"outputs":[{"name":"","type":"address[]"}]},{"name":"retired","signature":"retired()","selector":"0x2eb38ae0","stateMutability":"view","inputs":[],"outputs":[{"name":"","type":"bool"}]}]},"solanaAccounts":{"fill":{"seeds":["fill","creator","dualFillKey"],"size":611},"vault":{"seeds":["vault","fill"]},"receipt":{"seeds":["receipt","fill","contributor"],"size":81,"fillOffset":8,"contributorOffset":40},"linkedTerms":{"seeds":["linked","fill"],"size":497},"agent":{"program":"agent_vault","seeds":["agent","sponsor","dualFillKey"],"size":537,"sponsorOffset":8},"agentVault":{"program":"agent_vault","seeds":["vault","agent"]}}}}