@ubi.fun/sdk 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +10 -0
- package/README.md +279 -0
- package/dist/abi/AddressFeeSplitManager.d.cts +938 -0
- package/dist/abi/AddressFeeSplitManager.d.ts +939 -0
- package/dist/abi/AddressFeeSplitManager.d.ts.map +1 -0
- package/dist/abi/BidWall.d.cts +739 -0
- package/dist/abi/BidWall.d.ts +740 -0
- package/dist/abi/BidWall.d.ts.map +1 -0
- package/dist/abi/FairLaunch.d.cts +535 -0
- package/dist/abi/FairLaunch.d.ts +536 -0
- package/dist/abi/FairLaunch.d.ts.map +1 -0
- package/dist/abi/FeeEscrow.d.cts +281 -0
- package/dist/abi/FeeEscrow.d.ts +282 -0
- package/dist/abi/FeeEscrow.d.ts.map +1 -0
- package/dist/abi/Flaunch.d.cts +775 -0
- package/dist/abi/Flaunch.d.ts +776 -0
- package/dist/abi/Flaunch.d.ts.map +1 -0
- package/dist/abi/FlaunchPositionManager.d.cts +2170 -0
- package/dist/abi/FlaunchPositionManager.d.ts +2171 -0
- package/dist/abi/FlaunchPositionManager.d.ts.map +1 -0
- package/dist/abi/FlaunchZap.d.cts +300 -0
- package/dist/abi/FlaunchZap.d.ts +301 -0
- package/dist/abi/FlaunchZap.d.ts.map +1 -0
- package/dist/abi/InitialPrice.d.cts +252 -0
- package/dist/abi/InitialPrice.d.ts +253 -0
- package/dist/abi/InitialPrice.d.ts.map +1 -0
- package/dist/abi/Memecoin.d.cts +680 -0
- package/dist/abi/Memecoin.d.ts +681 -0
- package/dist/abi/Memecoin.d.ts.map +1 -0
- package/dist/abi/Multicall.d.cts +332 -0
- package/dist/abi/Multicall.d.ts +333 -0
- package/dist/abi/Multicall.d.ts.map +1 -0
- package/dist/abi/PoolManager.d.cts +1056 -0
- package/dist/abi/PoolManager.d.ts +1057 -0
- package/dist/abi/PoolManager.d.ts.map +1 -0
- package/dist/abi/PoolSwap.d.cts +89 -0
- package/dist/abi/PoolSwap.d.ts +90 -0
- package/dist/abi/PoolSwap.d.ts.map +1 -0
- package/dist/abi/Quoter.d.cts +485 -0
- package/dist/abi/Quoter.d.ts +486 -0
- package/dist/abi/Quoter.d.ts.map +1 -0
- package/dist/abi/ReferralEscrow.d.cts +459 -0
- package/dist/abi/ReferralEscrow.d.ts +460 -0
- package/dist/abi/ReferralEscrow.d.ts.map +1 -0
- package/dist/abi/TreasuryManager.d.cts +325 -0
- package/dist/abi/TreasuryManager.d.ts +326 -0
- package/dist/abi/TreasuryManager.d.ts.map +1 -0
- package/dist/abi/TreasuryManagerFactory.d.cts +433 -0
- package/dist/abi/TreasuryManagerFactory.d.ts +434 -0
- package/dist/abi/TreasuryManagerFactory.d.ts.map +1 -0
- package/dist/abi/UniversalRewardsDistributor.d.cts +191 -0
- package/dist/abi/UniversalRewardsDistributor.d.ts +192 -0
- package/dist/abi/UniversalRewardsDistributor.d.ts.map +1 -0
- package/dist/abi/XHandleClaims.d.cts +383 -0
- package/dist/abi/XHandleClaims.d.ts +384 -0
- package/dist/abi/XHandleClaims.d.ts.map +1 -0
- package/dist/abi/index.cjs +13541 -0
- package/dist/abi/index.cjs.map +1 -0
- package/dist/abi/index.d.cts +18 -0
- package/dist/abi/index.d.ts +19 -0
- package/dist/abi/index.d.ts.map +1 -0
- package/dist/abi/index.js +13522 -0
- package/dist/abi/index.js.map +1 -0
- package/dist/addresses/index.cjs +90 -0
- package/dist/addresses/index.cjs.map +1 -0
- package/dist/addresses/index.js +70 -0
- package/dist/addresses/index.js.map +1 -0
- package/dist/addresses.d.cts +48 -0
- package/dist/addresses.d.ts +49 -0
- package/dist/addresses.d.ts.map +1 -0
- package/dist/clients/BidWallClient.d.cts +44 -0
- package/dist/clients/BidWallClient.d.ts +45 -0
- package/dist/clients/BidWallClient.d.ts.map +1 -0
- package/dist/clients/FairLaunchClient.d.cts +47 -0
- package/dist/clients/FairLaunchClient.d.ts +48 -0
- package/dist/clients/FairLaunchClient.d.ts.map +1 -0
- package/dist/clients/FeeEscrowClient.d.cts +40 -0
- package/dist/clients/FeeEscrowClient.d.ts +41 -0
- package/dist/clients/FeeEscrowClient.d.ts.map +1 -0
- package/dist/clients/FlaunchClient.d.cts +35 -0
- package/dist/clients/FlaunchClient.d.ts +36 -0
- package/dist/clients/FlaunchClient.d.ts.map +1 -0
- package/dist/clients/FlaunchPositionManagerClient.d.cts +117 -0
- package/dist/clients/FlaunchPositionManagerClient.d.ts +118 -0
- package/dist/clients/FlaunchPositionManagerClient.d.ts.map +1 -0
- package/dist/clients/FlaunchZapClient.d.cts +127 -0
- package/dist/clients/FlaunchZapClient.d.ts +128 -0
- package/dist/clients/FlaunchZapClient.d.ts.map +1 -0
- package/dist/clients/InitialPriceClient.d.cts +32 -0
- package/dist/clients/InitialPriceClient.d.ts +33 -0
- package/dist/clients/InitialPriceClient.d.ts.map +1 -0
- package/dist/clients/MemecoinClient.d.cts +66 -0
- package/dist/clients/MemecoinClient.d.ts +67 -0
- package/dist/clients/MemecoinClient.d.ts.map +1 -0
- package/dist/clients/MulticallClient.d.cts +15 -0
- package/dist/clients/MulticallClient.d.ts +16 -0
- package/dist/clients/MulticallClient.d.ts.map +1 -0
- package/dist/clients/PoolManagerClient.d.cts +50 -0
- package/dist/clients/PoolManagerClient.d.ts +51 -0
- package/dist/clients/PoolManagerClient.d.ts.map +1 -0
- package/dist/clients/PoolSwapClient.d.cts +37 -0
- package/dist/clients/PoolSwapClient.d.ts +38 -0
- package/dist/clients/PoolSwapClient.d.ts.map +1 -0
- package/dist/clients/QuoterClient.d.cts +58 -0
- package/dist/clients/QuoterClient.d.ts +59 -0
- package/dist/clients/QuoterClient.d.ts.map +1 -0
- package/dist/clients/ReferralEscrowClient.d.cts +39 -0
- package/dist/clients/ReferralEscrowClient.d.ts +40 -0
- package/dist/clients/ReferralEscrowClient.d.ts.map +1 -0
- package/dist/clients/TreasuryManagerClient.d.cts +71 -0
- package/dist/clients/TreasuryManagerClient.d.ts +72 -0
- package/dist/clients/TreasuryManagerClient.d.ts.map +1 -0
- package/dist/clients/TreasuryManagerFactoryClient.d.cts +15 -0
- package/dist/clients/TreasuryManagerFactoryClient.d.ts +16 -0
- package/dist/clients/TreasuryManagerFactoryClient.d.ts.map +1 -0
- package/dist/clients/UniversalRewardsDistributorClient.d.cts +45 -0
- package/dist/clients/UniversalRewardsDistributorClient.d.ts +46 -0
- package/dist/clients/UniversalRewardsDistributorClient.d.ts.map +1 -0
- package/dist/clients/XHandleClaimsClient.d.cts +64 -0
- package/dist/clients/XHandleClaimsClient.d.ts +65 -0
- package/dist/clients/XHandleClaimsClient.d.ts.map +1 -0
- package/dist/helpers/chainIdToChain.d.cts +113 -0
- package/dist/helpers/chainIdToChain.d.ts +114 -0
- package/dist/helpers/chainIdToChain.d.ts.map +1 -0
- package/dist/helpers/hex.d.cts +3 -0
- package/dist/helpers/hex.d.ts +4 -0
- package/dist/helpers/hex.d.ts.map +1 -0
- package/dist/helpers/index.cjs +196 -0
- package/dist/helpers/index.cjs.map +1 -0
- package/dist/helpers/index.d.cts +3 -0
- package/dist/helpers/index.d.ts +4 -0
- package/dist/helpers/index.d.ts.map +1 -0
- package/dist/helpers/index.js +184 -0
- package/dist/helpers/index.js.map +1 -0
- package/dist/helpers/ipfs.d.cts +56 -0
- package/dist/helpers/ipfs.d.ts +57 -0
- package/dist/helpers/ipfs.d.ts.map +1 -0
- package/dist/hooks/FlaunchPositionManagerHooks.d.cts +28 -0
- package/dist/hooks/FlaunchPositionManagerHooks.d.ts +29 -0
- package/dist/hooks/FlaunchPositionManagerHooks.d.ts.map +1 -0
- package/dist/hooks/index.cjs +73 -0
- package/dist/hooks/index.cjs.map +1 -0
- package/dist/hooks/index.d.cts +1 -0
- package/dist/hooks/index.d.ts +2 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +70 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/index.cjs +16808 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +31 -0
- package/dist/index.d.ts +32 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +16718 -0
- package/dist/index.js.map +1 -0
- package/dist/index.umd.cjs +2 -0
- package/dist/index.umd.cjs.map +1 -0
- package/dist/sdk/FlaunchSDK.d.cts +520 -0
- package/dist/sdk/FlaunchSDK.d.ts +521 -0
- package/dist/sdk/FlaunchSDK.d.ts.map +1 -0
- package/dist/sdk/calldata.d.cts +65 -0
- package/dist/sdk/calldata.d.ts +66 -0
- package/dist/sdk/calldata.d.ts.map +1 -0
- package/dist/sdk/drift.d.cts +20 -0
- package/dist/sdk/drift.d.ts +21 -0
- package/dist/sdk/drift.d.ts.map +1 -0
- package/dist/sdk/factory.d.cts +20 -0
- package/dist/sdk/factory.d.ts +21 -0
- package/dist/sdk/factory.d.ts.map +1 -0
- package/dist/types.d.cts +56 -0
- package/dist/types.d.ts +57 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/utils/index.cjs +455 -0
- package/dist/utils/index.cjs.map +1 -0
- package/dist/utils/index.d.cts +4 -0
- package/dist/utils/index.d.ts +5 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +431 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/parseSwap.d.cts +45 -0
- package/dist/utils/parseSwap.d.ts +46 -0
- package/dist/utils/parseSwap.d.ts.map +1 -0
- package/dist/utils/slippage.d.cts +11 -0
- package/dist/utils/slippage.d.ts +12 -0
- package/dist/utils/slippage.d.ts.map +1 -0
- package/dist/utils/swap.d.cts +49 -0
- package/dist/utils/swap.d.ts +50 -0
- package/dist/utils/swap.d.ts.map +1 -0
- package/dist/utils/univ4.d.cts +78 -0
- package/dist/utils/univ4.d.ts +79 -0
- package/dist/utils/univ4.d.ts.map +1 -0
- package/package.json +161 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/addresses.ts","../src/abi/FlaunchPositionManager.ts","../src/utils/slippage.ts","../src/utils/parseSwap.ts","../src/abi/InitialPrice.ts","../src/clients/InitialPriceClient.ts","../src/clients/FlaunchPositionManagerClient.ts","../src/helpers/hex.ts","../src/abi/PoolManager.ts","../src/clients/PoolManagerClient.ts","../src/abi/FairLaunch.ts","../src/clients/FairLaunchClient.ts","../src/abi/BidWall.ts","../src/clients/BidWallClient.ts","../src/abi/FlaunchZap.ts","../src/helpers/ipfs.ts","../src/utils/univ4.ts","../src/utils/swap.ts","../src/clients/FlaunchZapClient.ts","../src/abi/Flaunch.ts","../src/clients/FlaunchClient.ts","../src/abi/Memecoin.ts","../src/clients/MemecoinClient.ts","../src/abi/Quoter.ts","../src/clients/QuoterClient.ts","../src/abi/FeeEscrow.ts","../src/clients/FeeEscrowClient.ts","../src/abi/ReferralEscrow.ts","../src/clients/ReferralEscrowClient.ts","../src/abi/PoolSwap.ts","../src/clients/PoolSwapClient.ts","../src/abi/XHandleClaims.ts","../src/clients/XHandleClaimsClient.ts","../src/abi/UniversalRewardsDistributor.ts","../src/clients/UniversalRewardsDistributorClient.ts","../src/abi/TreasuryManagerFactory.ts","../src/clients/TreasuryManagerFactoryClient.ts","../src/abi/TreasuryManager.ts","../src/clients/TreasuryManagerClient.ts","../src/abi/Multicall.ts","../src/clients/MulticallClient.ts","../src/abi/AddressFeeSplitManager.ts","../src/sdk/FlaunchSDK.ts","../src/helpers/chainIdToChain.ts","../src/sdk/drift.ts","../src/sdk/factory.ts","../src/sdk/calldata.ts","../src/index.ts"],"sourcesContent":["import { Addresses } from \"./types\";\n\n/**\n * ubi.fun deployments on Arc (Circle).\n *\n * Source of truth: deployments/arc-mainnet-5042.json and\n * deployments/arc-testnet-5042002.json in the contracts repo, mirrored by the\n * committed frontend registry. The cash / native asset on Arc is native USDC\n * (6 decimals through its ERC20 interface) at\n * 0x3600000000000000000000000000000000000000: the position manager's\n * \"nativeToken\" slot IS this USDC, and every pool pairs a coin against it.\n * There is no flETH, no WETH wrapping, and no unwrap step on this chain.\n */\nexport const ARC_MAINNET_CHAIN_ID = 5042;\nexport const ARC_TESTNET_CHAIN_ID = 5042002;\n\n/** Arc native USDC (ERC20 interface, 6 decimals). The cash side of every pool. */\nexport const USDC_ADDRESS =\n \"0x3600000000000000000000000000000000000000\" as const;\n\n/**\n * The pool \"native token\": Arc native USDC on both networks. Kept as an\n * Addresses map so client code stays chain-keyed like every other contract.\n */\nexport const NativeTokenAddress: Addresses = {\n [ARC_MAINNET_CHAIN_ID]: USDC_ADDRESS,\n [ARC_TESTNET_CHAIN_ID]: USDC_ADDRESS,\n};\n\nexport const FlaunchZapAddress: Addresses = {\n [ARC_MAINNET_CHAIN_ID]: \"0xe07F7cA66EC795592385018Dd998F0B50b8A2834\",\n [ARC_TESTNET_CHAIN_ID]: \"0x3fd667aaa89519772bb44e984de408bfcd40e285\",\n};\n\n// SDK \"FlaunchPositionManager\" maps to our deployment \"PositionManager\".\nexport const FlaunchPositionManagerAddress: Addresses = {\n [ARC_MAINNET_CHAIN_ID]: \"0xC780c0f4aAc690908854D351b8bFda2812daeFDc\",\n [ARC_TESTNET_CHAIN_ID]: \"0x88af0b76752ff31aa351cea2cc2e43a1b7c32fdc\",\n};\n\nexport const FlaunchAddress: Addresses = {\n [ARC_MAINNET_CHAIN_ID]: \"0x93E5A7565008db9688BA5211Fa552d8b108B9c75\",\n [ARC_TESTNET_CHAIN_ID]: \"0x55a0e1a458f1c13023dbd6b204e2a439c3b44663\",\n};\n\nexport const FairLaunchAddress: Addresses = {\n [ARC_MAINNET_CHAIN_ID]: \"0xdCDADa707264d9e2B0E8c2feC467860C97434Bd4\",\n [ARC_TESTNET_CHAIN_ID]: \"0xd2ea5591fe0b5820b6de33afbc3b468d070038ea\",\n};\n\n// SDK \"BidWall\" maps to our deployment \"BurningBidWall\" (a modified BidWall).\nexport const BidWallAddress: Addresses = {\n [ARC_MAINNET_CHAIN_ID]: \"0xC5DD30802fefab789Cd9b1e835Bd7301a8D23F8A\",\n [ARC_TESTNET_CHAIN_ID]: \"0x04f947e5fc0ac42836f880d45705af7483a2c4c0\",\n};\n\n/** Referrer-aware swap router: the supported way to trade ubi.fun pools. */\nexport const PoolSwapAddress: Addresses = {\n [ARC_MAINNET_CHAIN_ID]: \"0x3A61B6E86fde5Fc657a48819837F346C7E2Fffa7\",\n [ARC_TESTNET_CHAIN_ID]: \"0x396d41eb4d110d64491d01cd186548fdc82b1b4a\",\n};\n\nexport const TreasuryManagerFactoryAddress: Addresses = {\n [ARC_MAINNET_CHAIN_ID]: \"0xE25C132F379DB49C463328eF427E28DBCbD3a2F0\",\n [ARC_TESTNET_CHAIN_ID]: \"0x093c10b780f7cf8fca9aa7dbc83a64cddf55215f\",\n};\n\n// The approved AddressFeeSplitManager IMPLEMENTATION (factory deploys clones).\nexport const AddressFeeSplitManagerAddress: Addresses = {\n [ARC_MAINNET_CHAIN_ID]: \"0xde10818344f5ab75ecfA772887cE5751D6Cb91C7\",\n [ARC_TESTNET_CHAIN_ID]: \"0xA7d182B81aF7B40b6d09Da88A12a4f7ad770e162\",\n};\n\n/** Creator revenue escrow: balances accrue here, claimed as USDC (unwrap=false). */\nexport const FeeEscrowAddress: Addresses = {\n [ARC_MAINNET_CHAIN_ID]: \"0x678f0D1C045e820Ec1d4806749f2629e1035550e\",\n [ARC_TESTNET_CHAIN_ID]: \"0x59b3269aaf9db83bd3029c84d8b5226fa5702f78\",\n};\n\n/** Referrer rewards escrow: 5% of every swap fee routed with your address. */\nexport const ReferralEscrowAddress: Addresses = {\n [ARC_MAINNET_CHAIN_ID]: \"0xf25B9ceAba005CcCb0cefC4e323e6e519F111eB3\",\n [ARC_TESTNET_CHAIN_ID]: \"0x51b6a4759f9c9a681349c857f6fd912cdfeb8fef\",\n};\n\n/** X-handle earnings registry: per-handle CREATE2 escrows + attested claims. */\nexport const XHandleClaimsAddress: Addresses = {\n [ARC_MAINNET_CHAIN_ID]: \"0xfC38298590893c39E46D319aEd9EC3bf6CB17A3E\",\n [ARC_TESTNET_CHAIN_ID]: \"0x6fE2b9e1Da493E4584e742C03e1926a4CD8AC2A1\",\n};\n\n/**\n * Morpho UniversalRewardsDistributor paying the daily USDC holder pool\n * (24% of every swap fee). Claims are Merkle-proofed cumulative amounts.\n */\nexport const UniversalRewardsDistributorAddress: Addresses = {\n [ARC_MAINNET_CHAIN_ID]: \"0x66003091e723778d7D3285BB6c24ff3F0Ddcc7F7\",\n [ARC_TESTNET_CHAIN_ID]: \"0x7a8e9dA46db2be8436c4404476b40F07a31A6d95\",\n};\n\n/** Uniswap v4 PoolManager (canonical deployment on mainnet, ours on testnet). */\nexport const PoolManagerAddress: Addresses = {\n [ARC_MAINNET_CHAIN_ID]: \"0x8366a39CC670B4001A1121B8F6A443A643e40951\",\n [ARC_TESTNET_CHAIN_ID]: \"0x5fb24c800133a0930280788c5eb3468764154309\",\n};\n\nexport const QuoterAddress: Addresses = {\n [ARC_MAINNET_CHAIN_ID]: \"0x4595D3CD7A6D98d83A719934e829db5076fF1d0d\",\n [ARC_TESTNET_CHAIN_ID]: \"0xf517623f178Ba90e5b3299cb121D38F5A0733ac4\",\n};\n\n/** Base URL of the ubi.fun read/upload API serving each network. */\nexport const ApiBaseUrl: { [chainId: number]: string } = {\n [ARC_MAINNET_CHAIN_ID]: \"https://api.ubi.fun\",\n [ARC_TESTNET_CHAIN_ID]: \"https://api-dev.ubi.fun\",\n};\n","// Generated from PositionManager (the ubi.fun v5 fork; SDK keeps the upstream client name).\n// Source artifact: PositionManager.sol/PositionManager.json (FOUNDRY_PROFILE=arc forge build). Do not hand-edit;\n// regenerate from the contracts repo when the deployed bytecode changes.\nexport const FlaunchPositionManagerAbi = [\n {\n \"type\": \"constructor\",\n \"inputs\": [\n {\n \"name\": \"params\",\n \"type\": \"tuple\",\n \"internalType\": \"struct PositionManager.ConstructorParams\",\n \"components\": [\n {\n \"name\": \"nativeToken\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"poolManager\",\n \"type\": \"address\",\n \"internalType\": \"contract IPoolManager\"\n },\n {\n \"name\": \"feeDistribution\",\n \"type\": \"tuple\",\n \"internalType\": \"struct FeeDistributor.FeeDistribution\",\n \"components\": [\n {\n \"name\": \"swapFee\",\n \"type\": \"uint24\",\n \"internalType\": \"uint24\"\n },\n {\n \"name\": \"referrer\",\n \"type\": \"uint24\",\n \"internalType\": \"uint24\"\n },\n {\n \"name\": \"protocol\",\n \"type\": \"uint24\",\n \"internalType\": \"uint24\"\n },\n {\n \"name\": \"active\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ]\n },\n {\n \"name\": \"initialPrice\",\n \"type\": \"address\",\n \"internalType\": \"contract IInitialPrice\"\n },\n {\n \"name\": \"protocolOwner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"protocolFeeRecipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"flayGovernance\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"feeEscrow\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"feeExemptions\",\n \"type\": \"address\",\n \"internalType\": \"contract FeeExemptions\"\n },\n {\n \"name\": \"actionManager\",\n \"type\": \"address\",\n \"internalType\": \"contract TreasuryActionManager\"\n },\n {\n \"name\": \"bidWall\",\n \"type\": \"address\",\n \"internalType\": \"contract BidWall\"\n },\n {\n \"name\": \"fairLaunch\",\n \"type\": \"address\",\n \"internalType\": \"contract FairLaunch\"\n }\n ]\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"receive\",\n \"stateMutability\": \"payable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"BURN_ADDRESS\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"MAX_FAIR_LAUNCH_PROTOCOL_ALLOCATION\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint24\",\n \"internalType\": \"uint24\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"MAX_PROTOCOL_ALLOCATION\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint24\",\n \"internalType\": \"uint24\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"actionManager\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"contract TreasuryActionManager\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"afterAddLiquidity\",\n \"inputs\": [\n {\n \"name\": \"_sender\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_key\",\n \"type\": \"tuple\",\n \"internalType\": \"struct PoolKey\",\n \"components\": [\n {\n \"name\": \"currency0\",\n \"type\": \"address\",\n \"internalType\": \"Currency\"\n },\n {\n \"name\": \"currency1\",\n \"type\": \"address\",\n \"internalType\": \"Currency\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"uint24\",\n \"internalType\": \"uint24\"\n },\n {\n \"name\": \"tickSpacing\",\n \"type\": \"int24\",\n \"internalType\": \"int24\"\n },\n {\n \"name\": \"hooks\",\n \"type\": \"address\",\n \"internalType\": \"contract IHooks\"\n }\n ]\n },\n {\n \"name\": \"\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IPoolManager.ModifyLiquidityParams\",\n \"components\": [\n {\n \"name\": \"tickLower\",\n \"type\": \"int24\",\n \"internalType\": \"int24\"\n },\n {\n \"name\": \"tickUpper\",\n \"type\": \"int24\",\n \"internalType\": \"int24\"\n },\n {\n \"name\": \"liquidityDelta\",\n \"type\": \"int256\",\n \"internalType\": \"int256\"\n },\n {\n \"name\": \"salt\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"name\": \"_delta\",\n \"type\": \"int256\",\n \"internalType\": \"BalanceDelta\"\n },\n {\n \"name\": \"_feesAccrued\",\n \"type\": \"int256\",\n \"internalType\": \"BalanceDelta\"\n },\n {\n \"name\": \"\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"selector_\",\n \"type\": \"bytes4\",\n \"internalType\": \"bytes4\"\n },\n {\n \"name\": \"\",\n \"type\": \"int256\",\n \"internalType\": \"BalanceDelta\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"afterDonate\",\n \"inputs\": [\n {\n \"name\": \"_sender\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_key\",\n \"type\": \"tuple\",\n \"internalType\": \"struct PoolKey\",\n \"components\": [\n {\n \"name\": \"currency0\",\n \"type\": \"address\",\n \"internalType\": \"Currency\"\n },\n {\n \"name\": \"currency1\",\n \"type\": \"address\",\n \"internalType\": \"Currency\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"uint24\",\n \"internalType\": \"uint24\"\n },\n {\n \"name\": \"tickSpacing\",\n \"type\": \"int24\",\n \"internalType\": \"int24\"\n },\n {\n \"name\": \"hooks\",\n \"type\": \"address\",\n \"internalType\": \"contract IHooks\"\n }\n ]\n },\n {\n \"name\": \"_amount0\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"_amount1\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"selector_\",\n \"type\": \"bytes4\",\n \"internalType\": \"bytes4\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"afterInitialize\",\n \"inputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"\",\n \"type\": \"tuple\",\n \"internalType\": \"struct PoolKey\",\n \"components\": [\n {\n \"name\": \"currency0\",\n \"type\": \"address\",\n \"internalType\": \"Currency\"\n },\n {\n \"name\": \"currency1\",\n \"type\": \"address\",\n \"internalType\": \"Currency\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"uint24\",\n \"internalType\": \"uint24\"\n },\n {\n \"name\": \"tickSpacing\",\n \"type\": \"int24\",\n \"internalType\": \"int24\"\n },\n {\n \"name\": \"hooks\",\n \"type\": \"address\",\n \"internalType\": \"contract IHooks\"\n }\n ]\n },\n {\n \"name\": \"\",\n \"type\": \"uint160\",\n \"internalType\": \"uint160\"\n },\n {\n \"name\": \"\",\n \"type\": \"int24\",\n \"internalType\": \"int24\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes4\",\n \"internalType\": \"bytes4\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"afterRemoveLiquidity\",\n \"inputs\": [\n {\n \"name\": \"_sender\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_key\",\n \"type\": \"tuple\",\n \"internalType\": \"struct PoolKey\",\n \"components\": [\n {\n \"name\": \"currency0\",\n \"type\": \"address\",\n \"internalType\": \"Currency\"\n },\n {\n \"name\": \"currency1\",\n \"type\": \"address\",\n \"internalType\": \"Currency\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"uint24\",\n \"internalType\": \"uint24\"\n },\n {\n \"name\": \"tickSpacing\",\n \"type\": \"int24\",\n \"internalType\": \"int24\"\n },\n {\n \"name\": \"hooks\",\n \"type\": \"address\",\n \"internalType\": \"contract IHooks\"\n }\n ]\n },\n {\n \"name\": \"\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IPoolManager.ModifyLiquidityParams\",\n \"components\": [\n {\n \"name\": \"tickLower\",\n \"type\": \"int24\",\n \"internalType\": \"int24\"\n },\n {\n \"name\": \"tickUpper\",\n \"type\": \"int24\",\n \"internalType\": \"int24\"\n },\n {\n \"name\": \"liquidityDelta\",\n \"type\": \"int256\",\n \"internalType\": \"int256\"\n },\n {\n \"name\": \"salt\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"name\": \"_delta\",\n \"type\": \"int256\",\n \"internalType\": \"BalanceDelta\"\n },\n {\n \"name\": \"_feesAccrued\",\n \"type\": \"int256\",\n \"internalType\": \"BalanceDelta\"\n },\n {\n \"name\": \"\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"selector_\",\n \"type\": \"bytes4\",\n \"internalType\": \"bytes4\"\n },\n {\n \"name\": \"\",\n \"type\": \"int256\",\n \"internalType\": \"BalanceDelta\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"afterSwap\",\n \"inputs\": [\n {\n \"name\": \"_sender\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_key\",\n \"type\": \"tuple\",\n \"internalType\": \"struct PoolKey\",\n \"components\": [\n {\n \"name\": \"currency0\",\n \"type\": \"address\",\n \"internalType\": \"Currency\"\n },\n {\n \"name\": \"currency1\",\n \"type\": \"address\",\n \"internalType\": \"Currency\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"uint24\",\n \"internalType\": \"uint24\"\n },\n {\n \"name\": \"tickSpacing\",\n \"type\": \"int24\",\n \"internalType\": \"int24\"\n },\n {\n \"name\": \"hooks\",\n \"type\": \"address\",\n \"internalType\": \"contract IHooks\"\n }\n ]\n },\n {\n \"name\": \"_params\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IPoolManager.SwapParams\",\n \"components\": [\n {\n \"name\": \"zeroForOne\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"amountSpecified\",\n \"type\": \"int256\",\n \"internalType\": \"int256\"\n },\n {\n \"name\": \"sqrtPriceLimitX96\",\n \"type\": \"uint160\",\n \"internalType\": \"uint160\"\n }\n ]\n },\n {\n \"name\": \"_delta\",\n \"type\": \"int256\",\n \"internalType\": \"BalanceDelta\"\n },\n {\n \"name\": \"_hookData\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"selector_\",\n \"type\": \"bytes4\",\n \"internalType\": \"bytes4\"\n },\n {\n \"name\": \"hookDeltaUnspecified_\",\n \"type\": \"int128\",\n \"internalType\": \"int128\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"beforeAddLiquidity\",\n \"inputs\": [\n {\n \"name\": \"_sender\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_key\",\n \"type\": \"tuple\",\n \"internalType\": \"struct PoolKey\",\n \"components\": [\n {\n \"name\": \"currency0\",\n \"type\": \"address\",\n \"internalType\": \"Currency\"\n },\n {\n \"name\": \"currency1\",\n \"type\": \"address\",\n \"internalType\": \"Currency\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"uint24\",\n \"internalType\": \"uint24\"\n },\n {\n \"name\": \"tickSpacing\",\n \"type\": \"int24\",\n \"internalType\": \"int24\"\n },\n {\n \"name\": \"hooks\",\n \"type\": \"address\",\n \"internalType\": \"contract IHooks\"\n }\n ]\n },\n {\n \"name\": \"\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IPoolManager.ModifyLiquidityParams\",\n \"components\": [\n {\n \"name\": \"tickLower\",\n \"type\": \"int24\",\n \"internalType\": \"int24\"\n },\n {\n \"name\": \"tickUpper\",\n \"type\": \"int24\",\n \"internalType\": \"int24\"\n },\n {\n \"name\": \"liquidityDelta\",\n \"type\": \"int256\",\n \"internalType\": \"int256\"\n },\n {\n \"name\": \"salt\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"name\": \"\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"selector_\",\n \"type\": \"bytes4\",\n \"internalType\": \"bytes4\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"beforeDonate\",\n \"inputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"\",\n \"type\": \"tuple\",\n \"internalType\": \"struct PoolKey\",\n \"components\": [\n {\n \"name\": \"currency0\",\n \"type\": \"address\",\n \"internalType\": \"Currency\"\n },\n {\n \"name\": \"currency1\",\n \"type\": \"address\",\n \"internalType\": \"Currency\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"uint24\",\n \"internalType\": \"uint24\"\n },\n {\n \"name\": \"tickSpacing\",\n \"type\": \"int24\",\n \"internalType\": \"int24\"\n },\n {\n \"name\": \"hooks\",\n \"type\": \"address\",\n \"internalType\": \"contract IHooks\"\n }\n ]\n },\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes4\",\n \"internalType\": \"bytes4\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"beforeInitialize\",\n \"inputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"\",\n \"type\": \"tuple\",\n \"internalType\": \"struct PoolKey\",\n \"components\": [\n {\n \"name\": \"currency0\",\n \"type\": \"address\",\n \"internalType\": \"Currency\"\n },\n {\n \"name\": \"currency1\",\n \"type\": \"address\",\n \"internalType\": \"Currency\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"uint24\",\n \"internalType\": \"uint24\"\n },\n {\n \"name\": \"tickSpacing\",\n \"type\": \"int24\",\n \"internalType\": \"int24\"\n },\n {\n \"name\": \"hooks\",\n \"type\": \"address\",\n \"internalType\": \"contract IHooks\"\n }\n ]\n },\n {\n \"name\": \"\",\n \"type\": \"uint160\",\n \"internalType\": \"uint160\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes4\",\n \"internalType\": \"bytes4\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"beforeRemoveLiquidity\",\n \"inputs\": [\n {\n \"name\": \"_sender\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_key\",\n \"type\": \"tuple\",\n \"internalType\": \"struct PoolKey\",\n \"components\": [\n {\n \"name\": \"currency0\",\n \"type\": \"address\",\n \"internalType\": \"Currency\"\n },\n {\n \"name\": \"currency1\",\n \"type\": \"address\",\n \"internalType\": \"Currency\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"uint24\",\n \"internalType\": \"uint24\"\n },\n {\n \"name\": \"tickSpacing\",\n \"type\": \"int24\",\n \"internalType\": \"int24\"\n },\n {\n \"name\": \"hooks\",\n \"type\": \"address\",\n \"internalType\": \"contract IHooks\"\n }\n ]\n },\n {\n \"name\": \"\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IPoolManager.ModifyLiquidityParams\",\n \"components\": [\n {\n \"name\": \"tickLower\",\n \"type\": \"int24\",\n \"internalType\": \"int24\"\n },\n {\n \"name\": \"tickUpper\",\n \"type\": \"int24\",\n \"internalType\": \"int24\"\n },\n {\n \"name\": \"liquidityDelta\",\n \"type\": \"int256\",\n \"internalType\": \"int256\"\n },\n {\n \"name\": \"salt\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"name\": \"\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"selector_\",\n \"type\": \"bytes4\",\n \"internalType\": \"bytes4\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"beforeSwap\",\n \"inputs\": [\n {\n \"name\": \"_sender\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_key\",\n \"type\": \"tuple\",\n \"internalType\": \"struct PoolKey\",\n \"components\": [\n {\n \"name\": \"currency0\",\n \"type\": \"address\",\n \"internalType\": \"Currency\"\n },\n {\n \"name\": \"currency1\",\n \"type\": \"address\",\n \"internalType\": \"Currency\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"uint24\",\n \"internalType\": \"uint24\"\n },\n {\n \"name\": \"tickSpacing\",\n \"type\": \"int24\",\n \"internalType\": \"int24\"\n },\n {\n \"name\": \"hooks\",\n \"type\": \"address\",\n \"internalType\": \"contract IHooks\"\n }\n ]\n },\n {\n \"name\": \"_params\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IPoolManager.SwapParams\",\n \"components\": [\n {\n \"name\": \"zeroForOne\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"amountSpecified\",\n \"type\": \"int256\",\n \"internalType\": \"int256\"\n },\n {\n \"name\": \"sqrtPriceLimitX96\",\n \"type\": \"uint160\",\n \"internalType\": \"uint160\"\n }\n ]\n },\n {\n \"name\": \"_hookData\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"selector_\",\n \"type\": \"bytes4\",\n \"internalType\": \"bytes4\"\n },\n {\n \"name\": \"beforeSwapDelta_\",\n \"type\": \"int256\",\n \"internalType\": \"BeforeSwapDelta\"\n },\n {\n \"name\": \"\",\n \"type\": \"uint24\",\n \"internalType\": \"uint24\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"bidWall\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"contract BidWall\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"cancelOwnershipHandover\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"payable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"closeBidWall\",\n \"inputs\": [\n {\n \"name\": \"_key\",\n \"type\": \"tuple\",\n \"internalType\": \"struct PoolKey\",\n \"components\": [\n {\n \"name\": \"currency0\",\n \"type\": \"address\",\n \"internalType\": \"Currency\"\n },\n {\n \"name\": \"currency1\",\n \"type\": \"address\",\n \"internalType\": \"Currency\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"uint24\",\n \"internalType\": \"uint24\"\n },\n {\n \"name\": \"tickSpacing\",\n \"type\": \"int24\",\n \"internalType\": \"int24\"\n },\n {\n \"name\": \"hooks\",\n \"type\": \"address\",\n \"internalType\": \"contract IHooks\"\n }\n ]\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"completeOwnershipHandover\",\n \"inputs\": [\n {\n \"name\": \"pendingOwner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"payable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"fairLaunch\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"contract FairLaunch\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"fairLaunchFeeCalculator\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"contract IFeeCalculator\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"feeCalculator\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"contract IFeeCalculator\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"feeEscrow\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"contract FeeEscrow\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"feeExemptions\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"contract FeeExemptions\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"feeSplit\",\n \"inputs\": [\n {\n \"name\": \"_poolId\",\n \"type\": \"bytes32\",\n \"internalType\": \"PoolId\"\n },\n {\n \"name\": \"_amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"bidWall_\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"creator_\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"protocol_\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"flaunch\",\n \"inputs\": [\n {\n \"name\": \"_params\",\n \"type\": \"tuple\",\n \"internalType\": \"struct PositionManager.FlaunchParams\",\n \"components\": [\n {\n \"name\": \"name\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"symbol\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"tokenUri\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"initialTokenFairLaunch\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"fairLaunchDuration\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"premineAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"creator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"creatorFeeAllocation\",\n \"type\": \"uint24\",\n \"internalType\": \"uint24\"\n },\n {\n \"name\": \"flaunchAt\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"initialPriceParams\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"feeCalculatorParams\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ]\n }\n ],\n \"outputs\": [\n {\n \"name\": \"memecoin_\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"payable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"flaunchContract\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"contract IFlaunch\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"flaunchesAt\",\n \"inputs\": [\n {\n \"name\": \"_poolId\",\n \"type\": \"bytes32\",\n \"internalType\": \"PoolId\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"_flaunchTime\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"flayGovernance\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getFairLaunchFeeDistribution\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"feeDistribution_\",\n \"type\": \"tuple\",\n \"internalType\": \"struct FeeDistributor.FeeDistribution\",\n \"components\": [\n {\n \"name\": \"swapFee\",\n \"type\": \"uint24\",\n \"internalType\": \"uint24\"\n },\n {\n \"name\": \"referrer\",\n \"type\": \"uint24\",\n \"internalType\": \"uint24\"\n },\n {\n \"name\": \"protocol\",\n \"type\": \"uint24\",\n \"internalType\": \"uint24\"\n },\n {\n \"name\": \"active\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ]\n },\n {\n \"name\": \"creatorAllocation_\",\n \"type\": \"uint24\",\n \"internalType\": \"uint24\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getFeeCalculator\",\n \"inputs\": [\n {\n \"name\": \"_isFairLaunch\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"contract IFeeCalculator\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getFlaunchingFee\",\n \"inputs\": [\n {\n \"name\": \"_initialPriceParams\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getFlaunchingMarketCap\",\n \"inputs\": [\n {\n \"name\": \"_initialPriceParams\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getHookPermissions\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"tuple\",\n \"internalType\": \"struct Hooks.Permissions\",\n \"components\": [\n {\n \"name\": \"beforeInitialize\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"afterInitialize\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"beforeAddLiquidity\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"afterAddLiquidity\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"beforeRemoveLiquidity\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"afterRemoveLiquidity\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"beforeSwap\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"afterSwap\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"beforeDonate\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"afterDonate\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"beforeSwapReturnDelta\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"afterSwapReturnDelta\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"afterAddLiquidityReturnDelta\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"afterRemoveLiquidityReturnDelta\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ]\n }\n ],\n \"stateMutability\": \"pure\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getPoolFeeDistribution\",\n \"inputs\": [\n {\n \"name\": \"_poolId\",\n \"type\": \"bytes32\",\n \"internalType\": \"PoolId\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"feeDistribution_\",\n \"type\": \"tuple\",\n \"internalType\": \"struct FeeDistributor.FeeDistribution\",\n \"components\": [\n {\n \"name\": \"swapFee\",\n \"type\": \"uint24\",\n \"internalType\": \"uint24\"\n },\n {\n \"name\": \"referrer\",\n \"type\": \"uint24\",\n \"internalType\": \"uint24\"\n },\n {\n \"name\": \"protocol\",\n \"type\": \"uint24\",\n \"internalType\": \"uint24\"\n },\n {\n \"name\": \"active\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ]\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"initialPrice\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"contract IInitialPrice\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"maxReferrerAllocation\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint24\",\n \"internalType\": \"uint24\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"minProtocolAllocation\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint24\",\n \"internalType\": \"uint24\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"nativeToken\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"notifier\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"contract Notifier\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"owner\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"result\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"ownershipHandoverExpiresAt\",\n \"inputs\": [\n {\n \"name\": \"pendingOwner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"result\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"poolFees\",\n \"inputs\": [\n {\n \"name\": \"_poolKey\",\n \"type\": \"tuple\",\n \"internalType\": \"struct PoolKey\",\n \"components\": [\n {\n \"name\": \"currency0\",\n \"type\": \"address\",\n \"internalType\": \"Currency\"\n },\n {\n \"name\": \"currency1\",\n \"type\": \"address\",\n \"internalType\": \"Currency\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"uint24\",\n \"internalType\": \"uint24\"\n },\n {\n \"name\": \"tickSpacing\",\n \"type\": \"int24\",\n \"internalType\": \"int24\"\n },\n {\n \"name\": \"hooks\",\n \"type\": \"address\",\n \"internalType\": \"contract IHooks\"\n }\n ]\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"tuple\",\n \"internalType\": \"struct InternalSwapPool.ClaimableFees\",\n \"components\": [\n {\n \"name\": \"amount0\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"amount1\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"poolKey\",\n \"inputs\": [\n {\n \"name\": \"_token\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"tuple\",\n \"internalType\": \"struct PoolKey\",\n \"components\": [\n {\n \"name\": \"currency0\",\n \"type\": \"address\",\n \"internalType\": \"Currency\"\n },\n {\n \"name\": \"currency1\",\n \"type\": \"address\",\n \"internalType\": \"Currency\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"uint24\",\n \"internalType\": \"uint24\"\n },\n {\n \"name\": \"tickSpacing\",\n \"type\": \"int24\",\n \"internalType\": \"int24\"\n },\n {\n \"name\": \"hooks\",\n \"type\": \"address\",\n \"internalType\": \"contract IHooks\"\n }\n ]\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"poolManager\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"contract IPoolManager\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"referralEscrow\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"contract ReferralEscrow\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"renounceOwnership\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"payable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"requestOwnershipHandover\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"payable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setFairLaunchFeeCalculator\",\n \"inputs\": [\n {\n \"name\": \"_feeCalculator\",\n \"type\": \"address\",\n \"internalType\": \"contract IFeeCalculator\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setFairLaunchFeeDistribution\",\n \"inputs\": [\n {\n \"name\": \"_feeDistribution\",\n \"type\": \"tuple\",\n \"internalType\": \"struct FeeDistributor.FeeDistribution\",\n \"components\": [\n {\n \"name\": \"swapFee\",\n \"type\": \"uint24\",\n \"internalType\": \"uint24\"\n },\n {\n \"name\": \"referrer\",\n \"type\": \"uint24\",\n \"internalType\": \"uint24\"\n },\n {\n \"name\": \"protocol\",\n \"type\": \"uint24\",\n \"internalType\": \"uint24\"\n },\n {\n \"name\": \"active\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ]\n },\n {\n \"name\": \"_creatorAllocation\",\n \"type\": \"uint24\",\n \"internalType\": \"uint24\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setFeeCalculator\",\n \"inputs\": [\n {\n \"name\": \"_feeCalculator\",\n \"type\": \"address\",\n \"internalType\": \"contract IFeeCalculator\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setFeeDistribution\",\n \"inputs\": [\n {\n \"name\": \"_feeDistribution\",\n \"type\": \"tuple\",\n \"internalType\": \"struct FeeDistributor.FeeDistribution\",\n \"components\": [\n {\n \"name\": \"swapFee\",\n \"type\": \"uint24\",\n \"internalType\": \"uint24\"\n },\n {\n \"name\": \"referrer\",\n \"type\": \"uint24\",\n \"internalType\": \"uint24\"\n },\n {\n \"name\": \"protocol\",\n \"type\": \"uint24\",\n \"internalType\": \"uint24\"\n },\n {\n \"name\": \"active\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ]\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setFlaunch\",\n \"inputs\": [\n {\n \"name\": \"_flaunchContract\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setInitialPrice\",\n \"inputs\": [\n {\n \"name\": \"_initialPrice\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setPoolFeeDistribution\",\n \"inputs\": [\n {\n \"name\": \"_poolId\",\n \"type\": \"bytes32\",\n \"internalType\": \"PoolId\"\n },\n {\n \"name\": \"_feeDistribution\",\n \"type\": \"tuple\",\n \"internalType\": \"struct FeeDistributor.FeeDistribution\",\n \"components\": [\n {\n \"name\": \"swapFee\",\n \"type\": \"uint24\",\n \"internalType\": \"uint24\"\n },\n {\n \"name\": \"referrer\",\n \"type\": \"uint24\",\n \"internalType\": \"uint24\"\n },\n {\n \"name\": \"protocol\",\n \"type\": \"uint24\",\n \"internalType\": \"uint24\"\n },\n {\n \"name\": \"active\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ]\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setProtocolFeeDistribution\",\n \"inputs\": [\n {\n \"name\": \"_protocol\",\n \"type\": \"uint24\",\n \"internalType\": \"uint24\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setReferralEscrow\",\n \"inputs\": [\n {\n \"name\": \"_referralEscrow\",\n \"type\": \"address\",\n \"internalType\": \"address payable\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transferOwnership\",\n \"inputs\": [\n {\n \"name\": \"newOwner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"payable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"unlockCallback\",\n \"inputs\": [\n {\n \"name\": \"data\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"event\",\n \"name\": \"CreatorFeeAllocationUpdated\",\n \"inputs\": [\n {\n \"name\": \"_poolId\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"PoolId\"\n },\n {\n \"name\": \"_allocation\",\n \"type\": \"uint24\",\n \"indexed\": false,\n \"internalType\": \"uint24\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"FairLaunchBurn\",\n \"inputs\": [\n {\n \"name\": \"_poolId\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"PoolId\"\n },\n {\n \"name\": \"_unsoldSupply\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"FairLaunchFeeCalculatorUpdated\",\n \"inputs\": [\n {\n \"name\": \"_feeCalculator\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"FairLaunchFeeDistributionUpdated\",\n \"inputs\": [\n {\n \"name\": \"_feeDistribution\",\n \"type\": \"tuple\",\n \"indexed\": false,\n \"internalType\": \"struct FeeDistributor.FeeDistribution\",\n \"components\": [\n {\n \"name\": \"swapFee\",\n \"type\": \"uint24\",\n \"internalType\": \"uint24\"\n },\n {\n \"name\": \"referrer\",\n \"type\": \"uint24\",\n \"internalType\": \"uint24\"\n },\n {\n \"name\": \"protocol\",\n \"type\": \"uint24\",\n \"internalType\": \"uint24\"\n },\n {\n \"name\": \"active\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ]\n },\n {\n \"name\": \"_creatorAllocation\",\n \"type\": \"uint24\",\n \"indexed\": false,\n \"internalType\": \"uint24\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"FeeCalculatorUpdated\",\n \"inputs\": [\n {\n \"name\": \"_feeCalculator\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"FeeDistributionUpdated\",\n \"inputs\": [\n {\n \"name\": \"_feeDistribution\",\n \"type\": \"tuple\",\n \"indexed\": false,\n \"internalType\": \"struct FeeDistributor.FeeDistribution\",\n \"components\": [\n {\n \"name\": \"swapFee\",\n \"type\": \"uint24\",\n \"internalType\": \"uint24\"\n },\n {\n \"name\": \"referrer\",\n \"type\": \"uint24\",\n \"internalType\": \"uint24\"\n },\n {\n \"name\": \"protocol\",\n \"type\": \"uint24\",\n \"internalType\": \"uint24\"\n },\n {\n \"name\": \"active\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ]\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"HookFee\",\n \"inputs\": [\n {\n \"name\": \"id\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"sender\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"feeAmount0\",\n \"type\": \"uint128\",\n \"indexed\": false,\n \"internalType\": \"uint128\"\n },\n {\n \"name\": \"feeAmount1\",\n \"type\": \"uint128\",\n \"indexed\": false,\n \"internalType\": \"uint128\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"HookSwap\",\n \"inputs\": [\n {\n \"name\": \"id\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"sender\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount0\",\n \"type\": \"int128\",\n \"indexed\": false,\n \"internalType\": \"int128\"\n },\n {\n \"name\": \"amount1\",\n \"type\": \"int128\",\n \"indexed\": false,\n \"internalType\": \"int128\"\n },\n {\n \"name\": \"hookLPfeeAmount0\",\n \"type\": \"uint128\",\n \"indexed\": false,\n \"internalType\": \"uint128\"\n },\n {\n \"name\": \"hookLPfeeAmount1\",\n \"type\": \"uint128\",\n \"indexed\": false,\n \"internalType\": \"uint128\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"InitialPriceUpdated\",\n \"inputs\": [\n {\n \"name\": \"_initialPrice\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OwnershipHandoverCanceled\",\n \"inputs\": [\n {\n \"name\": \"pendingOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OwnershipHandoverRequested\",\n \"inputs\": [\n {\n \"name\": \"pendingOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OwnershipTransferred\",\n \"inputs\": [\n {\n \"name\": \"oldOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"newOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"PoolCreated\",\n \"inputs\": [\n {\n \"name\": \"_poolId\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"PoolId\"\n },\n {\n \"name\": \"_memecoin\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_memecoinTreasury\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_tokenId\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"_currencyFlipped\",\n \"type\": \"bool\",\n \"indexed\": false,\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"_flaunchFee\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"_params\",\n \"type\": \"tuple\",\n \"indexed\": false,\n \"internalType\": \"struct PositionManager.FlaunchParams\",\n \"components\": [\n {\n \"name\": \"name\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"symbol\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"tokenUri\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"initialTokenFairLaunch\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"fairLaunchDuration\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"premineAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"creator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"creatorFeeAllocation\",\n \"type\": \"uint24\",\n \"internalType\": \"uint24\"\n },\n {\n \"name\": \"flaunchAt\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"initialPriceParams\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"feeCalculatorParams\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ]\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"PoolFeeDistributionUpdated\",\n \"inputs\": [\n {\n \"name\": \"_poolId\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"PoolId\"\n },\n {\n \"name\": \"_feeDistribution\",\n \"type\": \"tuple\",\n \"indexed\": false,\n \"internalType\": \"struct FeeDistributor.FeeDistribution\",\n \"components\": [\n {\n \"name\": \"swapFee\",\n \"type\": \"uint24\",\n \"internalType\": \"uint24\"\n },\n {\n \"name\": \"referrer\",\n \"type\": \"uint24\",\n \"internalType\": \"uint24\"\n },\n {\n \"name\": \"protocol\",\n \"type\": \"uint24\",\n \"internalType\": \"uint24\"\n },\n {\n \"name\": \"active\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ]\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"PoolFeesDistributed\",\n \"inputs\": [\n {\n \"name\": \"_poolId\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"PoolId\"\n },\n {\n \"name\": \"_donateAmount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"_creatorAmount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"_bidWallAmount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"_governanceAmount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"_protocolAmount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"PoolFeesReceived\",\n \"inputs\": [\n {\n \"name\": \"_poolId\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"PoolId\"\n },\n {\n \"name\": \"_amount0\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"_amount1\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"PoolFeesSwapped\",\n \"inputs\": [\n {\n \"name\": \"_poolId\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"PoolId\"\n },\n {\n \"name\": \"zeroForOne\",\n \"type\": \"bool\",\n \"indexed\": false,\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"_amount0\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"_amount1\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"PoolPremine\",\n \"inputs\": [\n {\n \"name\": \"_poolId\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"PoolId\"\n },\n {\n \"name\": \"_premineAmount\",\n \"type\": \"int256\",\n \"indexed\": false,\n \"internalType\": \"int256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"PoolScheduled\",\n \"inputs\": [\n {\n \"name\": \"_poolId\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"PoolId\"\n },\n {\n \"name\": \"_flaunchesAt\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"PoolStateUpdated\",\n \"inputs\": [\n {\n \"name\": \"_poolId\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"PoolId\"\n },\n {\n \"name\": \"_sqrtPriceX96\",\n \"type\": \"uint160\",\n \"indexed\": false,\n \"internalType\": \"uint160\"\n },\n {\n \"name\": \"_tick\",\n \"type\": \"int24\",\n \"indexed\": false,\n \"internalType\": \"int24\"\n },\n {\n \"name\": \"_protocolFee\",\n \"type\": \"uint24\",\n \"indexed\": false,\n \"internalType\": \"uint24\"\n },\n {\n \"name\": \"_swapFee\",\n \"type\": \"uint24\",\n \"indexed\": false,\n \"internalType\": \"uint24\"\n },\n {\n \"name\": \"_liquidity\",\n \"type\": \"uint128\",\n \"indexed\": false,\n \"internalType\": \"uint128\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"PoolSwap\",\n \"inputs\": [\n {\n \"name\": \"poolId\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"PoolId\"\n },\n {\n \"name\": \"flAmount0\",\n \"type\": \"int256\",\n \"indexed\": false,\n \"internalType\": \"int256\"\n },\n {\n \"name\": \"flAmount1\",\n \"type\": \"int256\",\n \"indexed\": false,\n \"internalType\": \"int256\"\n },\n {\n \"name\": \"flFee0\",\n \"type\": \"int256\",\n \"indexed\": false,\n \"internalType\": \"int256\"\n },\n {\n \"name\": \"flFee1\",\n \"type\": \"int256\",\n \"indexed\": false,\n \"internalType\": \"int256\"\n },\n {\n \"name\": \"ispAmount0\",\n \"type\": \"int256\",\n \"indexed\": false,\n \"internalType\": \"int256\"\n },\n {\n \"name\": \"ispAmount1\",\n \"type\": \"int256\",\n \"indexed\": false,\n \"internalType\": \"int256\"\n },\n {\n \"name\": \"ispFee0\",\n \"type\": \"int256\",\n \"indexed\": false,\n \"internalType\": \"int256\"\n },\n {\n \"name\": \"ispFee1\",\n \"type\": \"int256\",\n \"indexed\": false,\n \"internalType\": \"int256\"\n },\n {\n \"name\": \"uniAmount0\",\n \"type\": \"int256\",\n \"indexed\": false,\n \"internalType\": \"int256\"\n },\n {\n \"name\": \"uniAmount1\",\n \"type\": \"int256\",\n \"indexed\": false,\n \"internalType\": \"int256\"\n },\n {\n \"name\": \"uniFee0\",\n \"type\": \"int256\",\n \"indexed\": false,\n \"internalType\": \"int256\"\n },\n {\n \"name\": \"uniFee1\",\n \"type\": \"int256\",\n \"indexed\": false,\n \"internalType\": \"int256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"ReferralEscrowUpdated\",\n \"inputs\": [\n {\n \"name\": \"_referralEscrow\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"ReferrerFeePaid\",\n \"inputs\": [\n {\n \"name\": \"_poolId\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"PoolId\"\n },\n {\n \"name\": \"_recipient\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_token\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_amount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"AlreadyInitialized\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"CallerIsNotBidWall\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"CallerNotCreator\",\n \"inputs\": [\n {\n \"name\": \"_caller\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"CannotBeInitializedDirectly\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"CannotModifyLiquidityDuringFairLaunch\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"CannotSellTokenDuringFairLaunch\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"CreatorFeeInvalid\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"HookNotImplemented\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InsufficientFlaunchFee\",\n \"inputs\": [\n {\n \"name\": \"_paid\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"_required\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidPool\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"LockFailure\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NewOwnerIsZeroAddress\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NoHandoverRequest\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotPoolManager\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotSelf\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ProtocolFeeInvalid\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"RecipientZeroAddress\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ReferrerFeeInvalid\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"SwapFeeInvalid\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TokenNotFlaunched\",\n \"inputs\": [\n {\n \"name\": \"_flaunchesAt\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"Unauthorized\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"UnknownPool\",\n \"inputs\": [\n {\n \"name\": \"_poolId\",\n \"type\": \"bytes32\",\n \"internalType\": \"PoolId\"\n }\n ]\n }\n] as const;\n","import { parseEther } from \"viem\";\n\n/**\n * Applies a slippage tolerance to an amount.\n *\n * @dev EXACT_OUT adds the slippage, EXACT_IN removes it. `slippage` is a\n * fraction string, e.g. \"0.05\" for 5%.\n */\nexport const getAmountWithSlippage = ({\n amount,\n slippage,\n swapType,\n}: {\n amount: bigint | undefined;\n slippage: string;\n swapType: \"EXACT_IN\" | \"EXACT_OUT\";\n}) => {\n if (amount == null) {\n return 0n;\n }\n\n const absAmount = amount < 0n ? -amount : amount;\n const slippageMultiplier =\n swapType === \"EXACT_IN\"\n ? BigInt(1e18) - parseEther(slippage)\n : BigInt(1e18) + parseEther(slippage);\n\n return (absAmount * slippageMultiplier) / BigInt(1e18);\n};\n","export interface SwapLogArgs {\n flAmount0: bigint;\n flAmount1: bigint;\n flFee0: bigint;\n flFee1: bigint;\n ispAmount0: bigint;\n ispAmount1: bigint;\n ispFee0: bigint;\n ispFee1: bigint;\n uniAmount0: bigint;\n uniAmount1: bigint;\n uniFee0: bigint;\n uniFee1: bigint;\n}\n\nexport interface SwapFees {\n /** True when the fee was taken on the USDC side, false when in the coin. */\n isInUSDC: boolean;\n amount: bigint;\n}\n\nexport interface BuySwapData {\n type: \"BUY\";\n delta: {\n coinsBought: bigint;\n usdcSold: bigint;\n fees: SwapFees;\n };\n}\n\nexport interface SellSwapData {\n type: \"SELL\";\n delta: {\n coinsSold: bigint;\n usdcBought: bigint;\n fees: SwapFees;\n };\n}\n\nexport type ParsedSwapData = BuySwapData | SellSwapData;\n\n/**\n * Parses raw PoolSwap log arguments into structured swap data. The three\n * amount-pair legs (fl = fair launch fill, isp = internal swap pool, uni =\n * Uniswap pool) show how a fill was sourced; this nets them into one delta.\n * @param args - The swap log arguments\n * @param usdcIsCurrencyZero - Whether USDC is currency0 in the pool\n * @returns Parsed swap data with type and delta information\n */\nexport function parseSwapData(\n args: SwapLogArgs,\n usdcIsCurrencyZero: boolean\n): ParsedSwapData {\n const {\n flAmount0,\n flAmount1,\n flFee0,\n flFee1,\n ispAmount0,\n ispAmount1,\n ispFee0,\n ispFee1,\n uniAmount0,\n uniAmount1,\n uniFee0,\n uniFee1,\n } = args;\n\n const currency0Delta = flAmount0 + ispAmount0 + uniAmount0;\n const currency1Delta = flAmount1 + ispAmount1 + uniAmount1;\n const currency0Fees = flFee0 + ispFee0 + uniFee0;\n const currency1Fees = flFee1 + ispFee1 + uniFee1;\n\n let feesIsInUSDC: boolean;\n let swapType: \"BUY\" | \"SELL\";\n\n if (usdcIsCurrencyZero) {\n swapType = currency0Delta < 0 ? \"BUY\" : \"SELL\";\n feesIsInUSDC = currency0Fees < 0;\n } else {\n swapType = currency1Delta < 0 ? \"BUY\" : \"SELL\";\n feesIsInUSDC = currency1Fees < 0;\n }\n\n const absCurrency0Delta =\n currency0Delta < 0 ? -currency0Delta : currency0Delta;\n const absCurrency1Delta =\n currency1Delta < 0 ? -currency1Delta : currency1Delta;\n const absCurrency0Fees = currency0Fees < 0 ? -currency0Fees : currency0Fees;\n const absCurrency1Fees = currency1Fees < 0 ? -currency1Fees : currency1Fees;\n\n const fees: SwapFees = {\n isInUSDC: feesIsInUSDC,\n amount: usdcIsCurrencyZero\n ? feesIsInUSDC\n ? absCurrency0Fees\n : absCurrency1Fees\n : feesIsInUSDC\n ? absCurrency1Fees\n : absCurrency0Fees,\n };\n\n if (swapType === \"BUY\") {\n return {\n type: swapType,\n delta: {\n coinsBought: usdcIsCurrencyZero\n ? absCurrency1Delta - (!fees.isInUSDC ? fees.amount : 0n)\n : absCurrency0Delta - (!fees.isInUSDC ? fees.amount : 0n),\n usdcSold: usdcIsCurrencyZero\n ? absCurrency0Delta - (fees.isInUSDC ? fees.amount : 0n)\n : absCurrency1Delta - (fees.isInUSDC ? fees.amount : 0n),\n fees,\n },\n };\n } else {\n return {\n type: swapType,\n delta: {\n coinsSold: usdcIsCurrencyZero\n ? absCurrency1Delta - (!fees.isInUSDC ? fees.amount : 0n)\n : absCurrency0Delta - (!fees.isInUSDC ? fees.amount : 0n),\n usdcBought: usdcIsCurrencyZero\n ? absCurrency0Delta - (fees.isInUSDC ? fees.amount : 0n)\n : absCurrency1Delta - (fees.isInUSDC ? fees.amount : 0n),\n fees,\n },\n };\n }\n}\n","// Generated from UsdcMarketCappedPrice (the deployed IInitialPrice implementation).\n// Source artifact: UsdcMarketCappedPrice.sol/UsdcMarketCappedPrice.json (FOUNDRY_PROFILE=arc forge build). Do not hand-edit;\n// regenerate from the contracts repo when the deployed bytecode changes.\nexport const InitialPriceAbi = [\n {\n \"type\": \"constructor\",\n \"inputs\": [\n {\n \"name\": \"_protocolOwner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_flaunchFeeExemption\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"MINIMUM_USDC_MARKET_CAP\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"NATIVE_SCALAR\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"cancelOwnershipHandover\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"payable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"completeOwnershipHandover\",\n \"inputs\": [\n {\n \"name\": \"pendingOwner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"payable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"flaunchFeeExemption\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"contract FlaunchFeeExemption\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"flaunchFeeThreshold\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getFlaunchingFee\",\n \"inputs\": [\n {\n \"name\": \"_sender\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_initialPriceParams\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getMarketCap\",\n \"inputs\": [\n {\n \"name\": \"_initialPriceParams\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"pure\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getSqrtPriceX96\",\n \"inputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_flipped\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"_initialPriceParams\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"sqrtPriceX96_\",\n \"type\": \"uint160\",\n \"internalType\": \"uint160\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"owner\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"result\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"ownershipHandoverExpiresAt\",\n \"inputs\": [\n {\n \"name\": \"pendingOwner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"result\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"renounceOwnership\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"payable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"requestOwnershipHandover\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"payable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setFlaunchFeeThreshold\",\n \"inputs\": [\n {\n \"name\": \"_flaunchFeeThreshold\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transferOwnership\",\n \"inputs\": [\n {\n \"name\": \"newOwner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"payable\"\n },\n {\n \"type\": \"event\",\n \"name\": \"FlaunchFeeThresholdUpdated\",\n \"inputs\": [\n {\n \"name\": \"_flaunchFeeThreshold\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OwnershipHandoverCanceled\",\n \"inputs\": [\n {\n \"name\": \"pendingOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OwnershipHandoverRequested\",\n \"inputs\": [\n {\n \"name\": \"pendingOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OwnershipTransferred\",\n \"inputs\": [\n {\n \"name\": \"oldOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"newOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"AlreadyInitialized\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MarketCapTooSmall\",\n \"inputs\": [\n {\n \"name\": \"_usdcMarketCap\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"_usdcMarketCapMinimum\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"NewOwnerIsZeroAddress\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NoHandoverRequest\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"Unauthorized\",\n \"inputs\": []\n }\n] as const;\n","import {\n type ReadContract,\n type Address,\n type Drift,\n type HexString,\n createDrift,\n} from \"@delvtech/drift\";\nimport { InitialPriceAbi } from \"../abi/InitialPrice\";\nimport { zeroAddress } from \"viem\";\n\nexport type InitialPriceABI = typeof InitialPriceAbi;\n\n/**\n * Client for the deployed IInitialPrice implementation (UsdcMarketCappedPrice):\n * turns the launcher's chosen initial market cap (USDC, 6 decimals, abi-encoded\n * as a single uint256) into the pool's starting price and the flaunch fee.\n */\nexport class ReadInitialPrice {\n public readonly contract: ReadContract<InitialPriceABI>;\n\n constructor(address: Address, drift: Drift = createDrift()) {\n if (!address) {\n throw new Error(\"Address is required\");\n }\n\n this.contract = drift.contract({\n abi: InitialPriceAbi,\n address,\n });\n }\n\n /**\n * The flaunch fee for a launch, in the chain's native units (18 decimals on\n * Arc, where msg.value is USDC at 18 decimals). Zero for market caps below\n * the on-chain threshold and for fee-exempt senders.\n * @param params.sender - The address that will send the launch\n * @param params.initialPriceParams - The abi-encoded initial market cap\n */\n getFlaunchingFee(params: { sender: Address; initialPriceParams: HexString }) {\n return this.contract.read(\"getFlaunchingFee\", {\n _sender: params.sender,\n _initialPriceParams: params.initialPriceParams,\n });\n }\n\n /**\n * The starting sqrt price for a launch\n * @param params.usdcIsCurrencyZero - Whether USDC sorts as currency0\n * @param params.initialPriceParams - The abi-encoded initial market cap\n */\n getSqrtPriceX96(params: {\n usdcIsCurrencyZero: boolean;\n initialPriceParams: HexString;\n }) {\n return this.contract.read(\"getSqrtPriceX96\", {\n _flipped: !params.usdcIsCurrencyZero,\n _initialPriceParams: params.initialPriceParams,\n 0: zeroAddress, // unnamed sender param, unused by the implementation\n });\n }\n}\n","import {\n type ReadContract,\n type Address,\n type Drift,\n type EventLog,\n createDrift,\n HexString,\n} from \"@delvtech/drift\";\nimport { type Hex } from \"viem\";\nimport { FlaunchPositionManagerAbi } from \"../abi/FlaunchPositionManager\";\nimport { getAmountWithSlippage } from \"../utils/slippage\";\nimport { parseSwapData, type SwapLogArgs } from \"../utils/parseSwap\";\nimport { ReadInitialPrice } from \"./InitialPriceClient\";\n\nexport type FlaunchPositionManagerABI = typeof FlaunchPositionManagerAbi;\nexport type PoolCreatedLog = EventLog<\n FlaunchPositionManagerABI,\n \"PoolCreated\"\n> & {\n timestamp: number;\n};\nexport type PoolCreatedLogs = PoolCreatedLog[];\n\nexport interface WatchPoolCreatedParams {\n onPoolCreated: ({\n logs,\n isFetchingFromStart,\n }: {\n logs: PoolCreatedLogs;\n isFetchingFromStart: boolean;\n }) => void;\n startBlockNumber?: bigint;\n}\n\nexport type BaseSwapLog = EventLog<FlaunchPositionManagerABI, \"PoolSwap\"> & {\n timestamp: number;\n};\n\nexport type BuySwapLog = BaseSwapLog & {\n type: \"BUY\";\n delta: {\n coinsBought: bigint;\n usdcSold: bigint;\n fees: {\n isInUSDC: boolean;\n amount: bigint;\n };\n };\n};\n\nexport type SellSwapLog = BaseSwapLog & {\n type: \"SELL\";\n delta: {\n coinsSold: bigint;\n usdcBought: bigint;\n fees: {\n isInUSDC: boolean;\n amount: bigint;\n };\n };\n};\n\nexport type PoolSwapLog = BuySwapLog | SellSwapLog | BaseSwapLog;\nexport type PoolSwapLogs = PoolSwapLog[];\n\nexport interface WatchPoolSwapParams<\n TUSDCIsCurrencyZero extends boolean | undefined = undefined\n> {\n onPoolSwap: ({\n logs,\n isFetchingFromStart,\n }: {\n logs: TUSDCIsCurrencyZero extends boolean\n ? (BuySwapLog | SellSwapLog)[]\n : BaseSwapLog[];\n isFetchingFromStart: boolean;\n }) => void;\n usdcIsCurrencyZero?: TUSDCIsCurrencyZero;\n startBlockNumber?: bigint;\n filterByPoolId?: HexString;\n}\n\n/**\n * Client for the PositionManager, the Uniswap v4 hook at the center of the\n * protocol: it creates pools, collects and splits fees, and emits the\n * PoolCreated / PoolSwap events integrators index.\n *\n * Launch coins through the FlaunchZap (see ReadWriteFlaunchZap) and trade\n * through PoolSwap; this client is the read/event surface.\n */\nexport class ReadFlaunchPositionManager {\n public readonly contract: ReadContract<FlaunchPositionManagerABI>;\n drift: Drift;\n public pollPoolCreatedNow?: () => Promise<void>;\n public pollPoolSwapNow?: () => Promise<void>;\n public readonly TOTAL_SUPPLY = 100n * 10n ** 27n; // 100 Billion tokens in wei\n\n constructor(address: Address, drift: Drift = createDrift()) {\n this.drift = drift;\n if (!address) {\n throw new Error(\"Address is required\");\n }\n this.contract = drift.contract({\n abi: FlaunchPositionManagerAbi,\n address,\n });\n }\n\n getFeeCalculator({ forFairLaunch }: { forFairLaunch: boolean }) {\n return this.contract.read(\"getFeeCalculator\", {\n _isFairLaunch: forFairLaunch,\n });\n }\n\n async isValidCoin(coinAddress: Address) {\n const poolKey = await this.contract.read(\"poolKey\", {\n _token: coinAddress,\n });\n\n return poolKey.tickSpacing !== 0;\n }\n\n /**\n * Reads the exact pool key for a coin, as stored by the hook. Prefer this\n * over assembling the key by hand.\n */\n poolKey(coinAddress: Address) {\n return this.contract.read(\"poolKey\", {\n _token: coinAddress,\n });\n }\n\n /**\n * The live fee distribution for a pool (swapFee, referrer, protocol shares\n * in hundredths of a percent)\n */\n getPoolFeeDistribution(poolId: HexString) {\n return this.contract.read(\"getPoolFeeDistribution\", {\n _poolId: poolId,\n });\n }\n\n /**\n * The flaunch fee a launch would owe, in native units (msg.value; USDC at 18\n * decimals on Arc). Reads through the initial price contract so sender fee\n * exemptions apply.\n */\n async getFlaunchingFee(params: {\n sender: Address;\n initialPriceParams: HexString;\n slippagePercent?: number;\n }) {\n const readInitialPrice = new ReadInitialPrice(\n await this.contract.read(\"initialPrice\"),\n this.drift\n );\n const flaunchingFee = await readInitialPrice.getFlaunchingFee(params);\n\n // pad the fee by the slippage percent so a price move between quote and\n // send does not revert the launch (excess is refunded on-chain)\n const flaunchingFeeWithSlippage = getAmountWithSlippage({\n amount: flaunchingFee,\n slippage: ((params.slippagePercent ?? 0) / 100).toFixed(18).toString(),\n swapType: \"EXACT_OUT\",\n });\n return flaunchingFeeWithSlippage;\n }\n\n async watchPoolCreated({\n onPoolCreated,\n startBlockNumber,\n }: WatchPoolCreatedParams) {\n let intervalId: ReturnType<typeof setInterval>;\n\n if (startBlockNumber !== undefined) {\n onPoolCreated({\n logs: [],\n isFetchingFromStart: true,\n });\n }\n\n let lastBlockNumber = startBlockNumber\n ? startBlockNumber - 1n\n : await this.drift.getBlockNumber();\n\n const pollEvents = async () => {\n try {\n const currentBlockNumber = await this.drift.getBlockNumber();\n\n if (currentBlockNumber > lastBlockNumber) {\n const _logs = await this.contract.getEvents(\"PoolCreated\", {\n fromBlock: lastBlockNumber + 1n,\n toBlock: currentBlockNumber,\n });\n\n // Get timestamps for each log\n const logsWithTimestamps = await Promise.all(\n [..._logs].reverse().map(async (log) => {\n const block = await this.drift.getBlock(log.blockNumber);\n return {\n ...log,\n timestamp: Number(block?.timestamp) * 1_000, // convert to ms for js\n };\n })\n );\n\n if (logsWithTimestamps.length > 0) {\n onPoolCreated({\n logs: logsWithTimestamps,\n isFetchingFromStart: false,\n });\n } else {\n onPoolCreated({\n logs: [],\n isFetchingFromStart: false,\n });\n }\n\n lastBlockNumber = currentBlockNumber;\n }\n } catch (error) {\n console.error(\"Error polling events:\", error);\n }\n };\n\n intervalId = setInterval(pollEvents, 5_000);\n\n this.pollPoolCreatedNow = pollEvents;\n\n // Return both cleanup function and immediate poll function\n return {\n cleanup: () => {\n if (intervalId) {\n clearInterval(intervalId);\n }\n // Clear the pollNow function when cleaning up\n this.pollPoolCreatedNow = undefined;\n },\n pollPoolCreatedNow: pollEvents,\n };\n }\n\n /**\n * Parses a transaction hash to extract PoolSwap events and return parsed swap data\n * @param txHash - The transaction hash to parse\n * @param usdcIsCurrencyZero - Whether USDC is currency0 in the pool (optional)\n * @returns Parsed swap log or undefined if no PoolSwap event found\n */\n async parseSwapTx(\n txHash: Hex,\n usdcIsCurrencyZero?: boolean\n ): Promise<PoolSwapLog | undefined> {\n try {\n // Get transaction to get block number\n const tx = await this.drift.getTransaction({ hash: txHash });\n if (!tx) {\n return undefined;\n }\n\n // Get block to get timestamp\n const block = await this.drift.getBlock(tx.blockNumber);\n const timestamp = Number(block?.timestamp) * 1_000; // convert to ms for js\n\n // Get PoolSwap events from the specific transaction\n const swapLogs = await this.contract.getEvents(\"PoolSwap\", {\n fromBlock: tx.blockNumber,\n toBlock: tx.blockNumber,\n });\n\n // Find the first swap log that matches our transaction hash\n const targetLog = swapLogs.find((log) => log.transactionHash === txHash);\n if (!targetLog) {\n return undefined;\n }\n\n // If usdcIsCurrencyZero is not provided, return basic log\n if (usdcIsCurrencyZero === undefined) {\n return {\n ...targetLog,\n timestamp,\n };\n }\n\n // Parse the swap data using the utility function\n const swapData = parseSwapData(\n targetLog.args as SwapLogArgs,\n usdcIsCurrencyZero\n );\n\n return {\n ...targetLog,\n timestamp,\n type: swapData.type,\n delta: swapData.delta,\n };\n } catch (error) {\n console.error(\"Error parsing swap transaction:\", error);\n return undefined;\n }\n }\n\n async watchPoolSwap<T extends boolean | undefined = undefined>({\n onPoolSwap,\n usdcIsCurrencyZero,\n startBlockNumber,\n filterByPoolId,\n }: WatchPoolSwapParams<T>) {\n let intervalId: ReturnType<typeof setInterval>;\n\n if (startBlockNumber !== undefined) {\n onPoolSwap({\n logs: [],\n isFetchingFromStart: true,\n });\n }\n\n let lastBlockNumber = startBlockNumber\n ? startBlockNumber - 1n\n : await this.drift.getBlockNumber();\n\n const pollEvents = async () => {\n try {\n const currentBlockNumber = await this.drift.getBlockNumber();\n\n if (currentBlockNumber > lastBlockNumber) {\n const _logs = await this.contract.getEvents(\"PoolSwap\", {\n fromBlock: lastBlockNumber + 1n,\n toBlock: currentBlockNumber,\n filter: {\n poolId: filterByPoolId,\n },\n });\n\n // Get timestamps for each log\n const logsWithTimestamps = await Promise.all(\n [..._logs].reverse().map(async (log): Promise<PoolSwapLog> => {\n const block = await this.drift.getBlock(log.blockNumber);\n const timestamp = Number(block?.timestamp) * 1_000; // convert to ms for js\n\n if (usdcIsCurrencyZero === undefined) {\n return {\n ...log,\n timestamp,\n };\n }\n\n // parse swap data\n const swapData = parseSwapData(\n log.args as SwapLogArgs,\n usdcIsCurrencyZero\n );\n\n return {\n ...log,\n timestamp,\n type: swapData.type,\n delta: swapData.delta,\n };\n })\n );\n\n if (logsWithTimestamps.length > 0) {\n onPoolSwap({\n logs: logsWithTimestamps as T extends boolean\n ? (BuySwapLog | SellSwapLog)[]\n : BaseSwapLog[],\n isFetchingFromStart: false,\n });\n } else {\n onPoolSwap({\n logs: [],\n isFetchingFromStart: false,\n });\n }\n\n lastBlockNumber = currentBlockNumber;\n }\n } catch (error) {\n console.error(\"Error polling events:\", error);\n }\n };\n\n intervalId = setInterval(pollEvents, 5_000);\n\n this.pollPoolSwapNow = pollEvents;\n\n // Return both cleanup function and immediate poll function\n return {\n cleanup: () => {\n if (intervalId) {\n clearInterval(intervalId);\n }\n // Clear the pollNow function when cleaning up\n this.pollPoolSwapNow = undefined;\n },\n pollPoolSwapNow: pollEvents,\n };\n }\n}\n","import { encodeAbiParameters, Hex, hexToBigInt, pad } from \"viem\";\n\nexport const bytes32ToUint256 = (value: Hex) => {\n return hexToBigInt(value);\n};\n\nexport const uint256ToBytes32 = (value: bigint) => {\n return pad(\n encodeAbiParameters([{ type: \"uint256\", name: \"value\" }], [value]),\n { size: 32, dir: \"right\" }\n );\n};\n","// Generated from Uniswap v4 PoolManager.\n// Source artifact: PoolManager.sol/PoolManager.json (FOUNDRY_PROFILE=arc forge build). Do not hand-edit;\n// regenerate from the contracts repo when the deployed bytecode changes.\nexport const PoolManagerAbi = [\n {\n \"type\": \"constructor\",\n \"inputs\": [\n {\n \"name\": \"initialOwner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"allowance\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"spender\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"id\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"approve\",\n \"inputs\": [\n {\n \"name\": \"spender\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"id\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"balanceOf\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"id\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"balance\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"burn\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"id\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"clear\",\n \"inputs\": [\n {\n \"name\": \"currency\",\n \"type\": \"address\",\n \"internalType\": \"Currency\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"collectProtocolFees\",\n \"inputs\": [\n {\n \"name\": \"recipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"currency\",\n \"type\": \"address\",\n \"internalType\": \"Currency\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"amountCollected\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"donate\",\n \"inputs\": [\n {\n \"name\": \"key\",\n \"type\": \"tuple\",\n \"internalType\": \"struct PoolKey\",\n \"components\": [\n {\n \"name\": \"currency0\",\n \"type\": \"address\",\n \"internalType\": \"Currency\"\n },\n {\n \"name\": \"currency1\",\n \"type\": \"address\",\n \"internalType\": \"Currency\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"uint24\",\n \"internalType\": \"uint24\"\n },\n {\n \"name\": \"tickSpacing\",\n \"type\": \"int24\",\n \"internalType\": \"int24\"\n },\n {\n \"name\": \"hooks\",\n \"type\": \"address\",\n \"internalType\": \"contract IHooks\"\n }\n ]\n },\n {\n \"name\": \"amount0\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"amount1\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"hookData\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"delta\",\n \"type\": \"int256\",\n \"internalType\": \"BalanceDelta\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"extsload\",\n \"inputs\": [\n {\n \"name\": \"slot\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"extsload\",\n \"inputs\": [\n {\n \"name\": \"startSlot\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"nSlots\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32[]\",\n \"internalType\": \"bytes32[]\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"extsload\",\n \"inputs\": [\n {\n \"name\": \"slots\",\n \"type\": \"bytes32[]\",\n \"internalType\": \"bytes32[]\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32[]\",\n \"internalType\": \"bytes32[]\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"exttload\",\n \"inputs\": [\n {\n \"name\": \"slots\",\n \"type\": \"bytes32[]\",\n \"internalType\": \"bytes32[]\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32[]\",\n \"internalType\": \"bytes32[]\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"exttload\",\n \"inputs\": [\n {\n \"name\": \"slot\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"initialize\",\n \"inputs\": [\n {\n \"name\": \"key\",\n \"type\": \"tuple\",\n \"internalType\": \"struct PoolKey\",\n \"components\": [\n {\n \"name\": \"currency0\",\n \"type\": \"address\",\n \"internalType\": \"Currency\"\n },\n {\n \"name\": \"currency1\",\n \"type\": \"address\",\n \"internalType\": \"Currency\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"uint24\",\n \"internalType\": \"uint24\"\n },\n {\n \"name\": \"tickSpacing\",\n \"type\": \"int24\",\n \"internalType\": \"int24\"\n },\n {\n \"name\": \"hooks\",\n \"type\": \"address\",\n \"internalType\": \"contract IHooks\"\n }\n ]\n },\n {\n \"name\": \"sqrtPriceX96\",\n \"type\": \"uint160\",\n \"internalType\": \"uint160\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"tick\",\n \"type\": \"int24\",\n \"internalType\": \"int24\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"isOperator\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"isOperator\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"mint\",\n \"inputs\": [\n {\n \"name\": \"to\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"id\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"modifyLiquidity\",\n \"inputs\": [\n {\n \"name\": \"key\",\n \"type\": \"tuple\",\n \"internalType\": \"struct PoolKey\",\n \"components\": [\n {\n \"name\": \"currency0\",\n \"type\": \"address\",\n \"internalType\": \"Currency\"\n },\n {\n \"name\": \"currency1\",\n \"type\": \"address\",\n \"internalType\": \"Currency\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"uint24\",\n \"internalType\": \"uint24\"\n },\n {\n \"name\": \"tickSpacing\",\n \"type\": \"int24\",\n \"internalType\": \"int24\"\n },\n {\n \"name\": \"hooks\",\n \"type\": \"address\",\n \"internalType\": \"contract IHooks\"\n }\n ]\n },\n {\n \"name\": \"params\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IPoolManager.ModifyLiquidityParams\",\n \"components\": [\n {\n \"name\": \"tickLower\",\n \"type\": \"int24\",\n \"internalType\": \"int24\"\n },\n {\n \"name\": \"tickUpper\",\n \"type\": \"int24\",\n \"internalType\": \"int24\"\n },\n {\n \"name\": \"liquidityDelta\",\n \"type\": \"int256\",\n \"internalType\": \"int256\"\n },\n {\n \"name\": \"salt\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"name\": \"hookData\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"callerDelta\",\n \"type\": \"int256\",\n \"internalType\": \"BalanceDelta\"\n },\n {\n \"name\": \"feesAccrued\",\n \"type\": \"int256\",\n \"internalType\": \"BalanceDelta\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"owner\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"protocolFeeController\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"protocolFeesAccrued\",\n \"inputs\": [\n {\n \"name\": \"currency\",\n \"type\": \"address\",\n \"internalType\": \"Currency\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setOperator\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"approved\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setProtocolFee\",\n \"inputs\": [\n {\n \"name\": \"key\",\n \"type\": \"tuple\",\n \"internalType\": \"struct PoolKey\",\n \"components\": [\n {\n \"name\": \"currency0\",\n \"type\": \"address\",\n \"internalType\": \"Currency\"\n },\n {\n \"name\": \"currency1\",\n \"type\": \"address\",\n \"internalType\": \"Currency\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"uint24\",\n \"internalType\": \"uint24\"\n },\n {\n \"name\": \"tickSpacing\",\n \"type\": \"int24\",\n \"internalType\": \"int24\"\n },\n {\n \"name\": \"hooks\",\n \"type\": \"address\",\n \"internalType\": \"contract IHooks\"\n }\n ]\n },\n {\n \"name\": \"newProtocolFee\",\n \"type\": \"uint24\",\n \"internalType\": \"uint24\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setProtocolFeeController\",\n \"inputs\": [\n {\n \"name\": \"controller\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"settle\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"payable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"settleFor\",\n \"inputs\": [\n {\n \"name\": \"recipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"payable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"supportsInterface\",\n \"inputs\": [\n {\n \"name\": \"interfaceId\",\n \"type\": \"bytes4\",\n \"internalType\": \"bytes4\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"swap\",\n \"inputs\": [\n {\n \"name\": \"key\",\n \"type\": \"tuple\",\n \"internalType\": \"struct PoolKey\",\n \"components\": [\n {\n \"name\": \"currency0\",\n \"type\": \"address\",\n \"internalType\": \"Currency\"\n },\n {\n \"name\": \"currency1\",\n \"type\": \"address\",\n \"internalType\": \"Currency\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"uint24\",\n \"internalType\": \"uint24\"\n },\n {\n \"name\": \"tickSpacing\",\n \"type\": \"int24\",\n \"internalType\": \"int24\"\n },\n {\n \"name\": \"hooks\",\n \"type\": \"address\",\n \"internalType\": \"contract IHooks\"\n }\n ]\n },\n {\n \"name\": \"params\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IPoolManager.SwapParams\",\n \"components\": [\n {\n \"name\": \"zeroForOne\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"amountSpecified\",\n \"type\": \"int256\",\n \"internalType\": \"int256\"\n },\n {\n \"name\": \"sqrtPriceLimitX96\",\n \"type\": \"uint160\",\n \"internalType\": \"uint160\"\n }\n ]\n },\n {\n \"name\": \"hookData\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"swapDelta\",\n \"type\": \"int256\",\n \"internalType\": \"BalanceDelta\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"sync\",\n \"inputs\": [\n {\n \"name\": \"currency\",\n \"type\": \"address\",\n \"internalType\": \"Currency\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"take\",\n \"inputs\": [\n {\n \"name\": \"currency\",\n \"type\": \"address\",\n \"internalType\": \"Currency\"\n },\n {\n \"name\": \"to\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transfer\",\n \"inputs\": [\n {\n \"name\": \"receiver\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"id\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transferFrom\",\n \"inputs\": [\n {\n \"name\": \"sender\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"receiver\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"id\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transferOwnership\",\n \"inputs\": [\n {\n \"name\": \"newOwner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"unlock\",\n \"inputs\": [\n {\n \"name\": \"data\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"result\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"updateDynamicLPFee\",\n \"inputs\": [\n {\n \"name\": \"key\",\n \"type\": \"tuple\",\n \"internalType\": \"struct PoolKey\",\n \"components\": [\n {\n \"name\": \"currency0\",\n \"type\": \"address\",\n \"internalType\": \"Currency\"\n },\n {\n \"name\": \"currency1\",\n \"type\": \"address\",\n \"internalType\": \"Currency\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"uint24\",\n \"internalType\": \"uint24\"\n },\n {\n \"name\": \"tickSpacing\",\n \"type\": \"int24\",\n \"internalType\": \"int24\"\n },\n {\n \"name\": \"hooks\",\n \"type\": \"address\",\n \"internalType\": \"contract IHooks\"\n }\n ]\n },\n {\n \"name\": \"newDynamicLPFee\",\n \"type\": \"uint24\",\n \"internalType\": \"uint24\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"event\",\n \"name\": \"Approval\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"spender\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"id\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"Donate\",\n \"inputs\": [\n {\n \"name\": \"id\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"PoolId\"\n },\n {\n \"name\": \"sender\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount0\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"amount1\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"Initialize\",\n \"inputs\": [\n {\n \"name\": \"id\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"PoolId\"\n },\n {\n \"name\": \"currency0\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"Currency\"\n },\n {\n \"name\": \"currency1\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"Currency\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"uint24\",\n \"indexed\": false,\n \"internalType\": \"uint24\"\n },\n {\n \"name\": \"tickSpacing\",\n \"type\": \"int24\",\n \"indexed\": false,\n \"internalType\": \"int24\"\n },\n {\n \"name\": \"hooks\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"contract IHooks\"\n },\n {\n \"name\": \"sqrtPriceX96\",\n \"type\": \"uint160\",\n \"indexed\": false,\n \"internalType\": \"uint160\"\n },\n {\n \"name\": \"tick\",\n \"type\": \"int24\",\n \"indexed\": false,\n \"internalType\": \"int24\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"ModifyLiquidity\",\n \"inputs\": [\n {\n \"name\": \"id\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"PoolId\"\n },\n {\n \"name\": \"sender\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"tickLower\",\n \"type\": \"int24\",\n \"indexed\": false,\n \"internalType\": \"int24\"\n },\n {\n \"name\": \"tickUpper\",\n \"type\": \"int24\",\n \"indexed\": false,\n \"internalType\": \"int24\"\n },\n {\n \"name\": \"liquidityDelta\",\n \"type\": \"int256\",\n \"indexed\": false,\n \"internalType\": \"int256\"\n },\n {\n \"name\": \"salt\",\n \"type\": \"bytes32\",\n \"indexed\": false,\n \"internalType\": \"bytes32\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OperatorSet\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"approved\",\n \"type\": \"bool\",\n \"indexed\": false,\n \"internalType\": \"bool\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OwnershipTransferred\",\n \"inputs\": [\n {\n \"name\": \"user\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"newOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"ProtocolFeeControllerUpdated\",\n \"inputs\": [\n {\n \"name\": \"protocolFeeController\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"ProtocolFeeUpdated\",\n \"inputs\": [\n {\n \"name\": \"id\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"PoolId\"\n },\n {\n \"name\": \"protocolFee\",\n \"type\": \"uint24\",\n \"indexed\": false,\n \"internalType\": \"uint24\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"Swap\",\n \"inputs\": [\n {\n \"name\": \"id\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"PoolId\"\n },\n {\n \"name\": \"sender\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount0\",\n \"type\": \"int128\",\n \"indexed\": false,\n \"internalType\": \"int128\"\n },\n {\n \"name\": \"amount1\",\n \"type\": \"int128\",\n \"indexed\": false,\n \"internalType\": \"int128\"\n },\n {\n \"name\": \"sqrtPriceX96\",\n \"type\": \"uint160\",\n \"indexed\": false,\n \"internalType\": \"uint160\"\n },\n {\n \"name\": \"liquidity\",\n \"type\": \"uint128\",\n \"indexed\": false,\n \"internalType\": \"uint128\"\n },\n {\n \"name\": \"tick\",\n \"type\": \"int24\",\n \"indexed\": false,\n \"internalType\": \"int24\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"uint24\",\n \"indexed\": false,\n \"internalType\": \"uint24\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"Transfer\",\n \"inputs\": [\n {\n \"name\": \"caller\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"from\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"to\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"id\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"AlreadyUnlocked\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"CurrenciesOutOfOrderOrEqual\",\n \"inputs\": [\n {\n \"name\": \"currency0\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"currency1\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"CurrencyNotSettled\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"DelegateCallNotAllowed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidCaller\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ManagerLocked\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MustClearExactPositiveDelta\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NonzeroNativeValue\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"PoolNotInitialized\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ProtocolFeeCurrencySynced\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ProtocolFeeTooLarge\",\n \"inputs\": [\n {\n \"name\": \"fee\",\n \"type\": \"uint24\",\n \"internalType\": \"uint24\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"SwapAmountCannotBeZero\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TickSpacingTooLarge\",\n \"inputs\": [\n {\n \"name\": \"tickSpacing\",\n \"type\": \"int24\",\n \"internalType\": \"int24\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"TickSpacingTooSmall\",\n \"inputs\": [\n {\n \"name\": \"tickSpacing\",\n \"type\": \"int24\",\n \"internalType\": \"int24\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"UnauthorizedDynamicLPFeeUpdate\",\n \"inputs\": []\n }\n] as const;\n","import {\n type ReadContract,\n type Address,\n type Drift,\n type HexString,\n createDrift,\n} from \"@delvtech/drift\";\nimport {\n keccak256,\n encodePacked,\n stringToHex,\n pad,\n hexToBigInt,\n sliceHex,\n type Hex,\n} from \"viem\";\nimport { bytes32ToUint256, uint256ToBytes32 } from \"../helpers/hex\";\nimport { PoolManagerAbi } from \"../abi/PoolManager\";\n\nexport type PoolManagerABI = typeof PoolManagerAbi;\n\nexport interface PositionInfoParams {\n poolId: HexString;\n owner: Address;\n tickLower: number;\n tickUpper: number;\n salt: string;\n}\n\n/**\n * Client for the Uniswap v4 PoolManager. Pool state is read straight off the\n * singleton's storage via extsload (StateView is not deployed on Arc), using\n * the same slot derivations as Uniswap's StateLibrary.\n */\nexport class ReadPoolManager {\n public readonly contract: ReadContract<PoolManagerABI>;\n\n constructor(address: Address, drift: Drift = createDrift()) {\n if (!address) {\n throw new Error(\"Address is required\");\n }\n\n this.contract = drift.contract({\n abi: PoolManagerAbi,\n address,\n });\n }\n\n /** The base storage slot of a pool's State struct (_pools is at slot 6). */\n poolStateSlot({ poolId }: { poolId: HexString }) {\n const POOLS_SLOT = uint256ToBytes32(6n);\n\n return keccak256(\n encodePacked([\"bytes32\", \"bytes32\"], [poolId, POOLS_SLOT])\n );\n }\n\n /**\n * Reads a pool's Slot0: current sqrt price, tick, and fee configuration\n * @param poolId - The ID of the pool\n * @returns Promise<{sqrtPriceX96: bigint, tick: number, protocolFee: number, lpFee: number}>\n */\n async poolSlot0({ poolId }: { poolId: HexString }) {\n const stateSlot = this.poolStateSlot({ poolId });\n\n const result = await this.contract.read(\"extsload\", {\n slot: stateSlot,\n });\n\n const data = (Array.isArray(result) ? result[0] : result) as HexString;\n const dataAsBigInt = BigInt(data);\n\n // Slot0 packing (bottom to top): uint160 sqrtPriceX96, int24 tick,\n // uint24 protocolFee, uint24 lpFee.\n const sqrtPriceX96 = dataAsBigInt & ((1n << 160n) - 1n);\n\n const tickRaw = Number((dataAsBigInt >> 160n) & 0xffffffn);\n const tick = tickRaw > 0x7fffff ? tickRaw - 0x1000000 : tickRaw;\n\n const protocolFee = Number((dataAsBigInt >> 184n) & 0xffffffn);\n const lpFee = Number((dataAsBigInt >> 208n) & 0xffffffn);\n\n return { sqrtPriceX96, tick, protocolFee, lpFee };\n }\n\n /**\n * Reads a liquidity position's state\n * @param poolId - The ID of the pool\n * @param owner - The address of the position owner\n * @param tickLower - The lower tick of the position\n * @param tickUpper - The upper tick of the position\n * @param salt - The salt used to identify the position\n * @returns Promise<{liquidity, feeGrowthInside0LastX128, feeGrowthInside1LastX128}>\n */\n async positionInfo({\n poolId,\n owner,\n tickLower,\n tickUpper,\n salt,\n }: PositionInfoParams): Promise<{\n liquidity: bigint;\n feeGrowthInside0LastX128: bigint;\n feeGrowthInside1LastX128: bigint;\n }> {\n const saltBytes32 = pad(stringToHex(salt), { size: 32, dir: \"right\" });\n\n const positionKey = keccak256(\n encodePacked(\n [\"address\", \"int24\", \"int24\", \"bytes32\"],\n [owner, tickLower, tickUpper, saltBytes32]\n )\n );\n\n const stateSlot = this.poolStateSlot({ poolId });\n\n // Pool.State layout: slot0(+0), feeGrowthGlobal0(+1), feeGrowthGlobal1(+2),\n // liquidity(+3), ticks(+4), tickBitmap(+5), positions(+6).\n const POSITIONS_OFFSET = 6n;\n const positionMapping = uint256ToBytes32(\n bytes32ToUint256(stateSlot) + POSITIONS_OFFSET\n );\n\n const positionInfoSlot = keccak256(\n encodePacked([\"bytes32\", \"bytes32\"], [positionKey, positionMapping])\n );\n\n const result = await this.contract.read(\"extsload\", {\n startSlot: positionInfoSlot,\n nSlots: 3n,\n });\n\n // Adapters differ on whether bytes32[] comes back as an array of words or\n // one concatenated hex blob; accept both.\n let words: Hex[];\n if (Array.isArray(result)) {\n words = result as Hex[];\n } else {\n const blob = result as unknown as Hex;\n words = [0, 1, 2].map((i) =>\n sliceHex(blob, i * 32, (i + 1) * 32)\n );\n }\n\n return {\n liquidity: hexToBigInt(words[0]),\n feeGrowthInside0LastX128: hexToBigInt(words[1]),\n feeGrowthInside1LastX128: hexToBigInt(words[2]),\n };\n }\n}\n","// Generated from FairLaunch.\n// Source artifact: FairLaunch.sol/FairLaunch.json (FOUNDRY_PROFILE=arc forge build). Do not hand-edit;\n// regenerate from the contracts repo when the deployed bytecode changes.\nexport const FairLaunchAbi = [\n {\n \"type\": \"constructor\",\n \"inputs\": [\n {\n \"name\": \"_poolManager\",\n \"type\": \"address\",\n \"internalType\": \"contract IPoolManager\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"DEFAULT_ADMIN_ROLE\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"closePosition\",\n \"inputs\": [\n {\n \"name\": \"_poolKey\",\n \"type\": \"tuple\",\n \"internalType\": \"struct PoolKey\",\n \"components\": [\n {\n \"name\": \"currency0\",\n \"type\": \"address\",\n \"internalType\": \"Currency\"\n },\n {\n \"name\": \"currency1\",\n \"type\": \"address\",\n \"internalType\": \"Currency\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"uint24\",\n \"internalType\": \"uint24\"\n },\n {\n \"name\": \"tickSpacing\",\n \"type\": \"int24\",\n \"internalType\": \"int24\"\n },\n {\n \"name\": \"hooks\",\n \"type\": \"address\",\n \"internalType\": \"contract IHooks\"\n }\n ]\n },\n {\n \"name\": \"_tokenFees\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"_nativeIsZero\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"tuple\",\n \"internalType\": \"struct FairLaunch.FairLaunchInfo\",\n \"components\": [\n {\n \"name\": \"startsAt\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"endsAt\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"initialTick\",\n \"type\": \"int24\",\n \"internalType\": \"int24\"\n },\n {\n \"name\": \"revenue\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"supply\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"closed\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ]\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"createPosition\",\n \"inputs\": [\n {\n \"name\": \"_poolId\",\n \"type\": \"bytes32\",\n \"internalType\": \"PoolId\"\n },\n {\n \"name\": \"_initialTick\",\n \"type\": \"int24\",\n \"internalType\": \"int24\"\n },\n {\n \"name\": \"_flaunchesAt\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"_initialTokenFairLaunch\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"_fairLaunchDuration\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"tuple\",\n \"internalType\": \"struct FairLaunch.FairLaunchInfo\",\n \"components\": [\n {\n \"name\": \"startsAt\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"endsAt\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"initialTick\",\n \"type\": \"int24\",\n \"internalType\": \"int24\"\n },\n {\n \"name\": \"revenue\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"supply\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"closed\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ]\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"fairLaunchInfo\",\n \"inputs\": [\n {\n \"name\": \"_poolId\",\n \"type\": \"bytes32\",\n \"internalType\": \"PoolId\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"tuple\",\n \"internalType\": \"struct FairLaunch.FairLaunchInfo\",\n \"components\": [\n {\n \"name\": \"startsAt\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"endsAt\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"initialTick\",\n \"type\": \"int24\",\n \"internalType\": \"int24\"\n },\n {\n \"name\": \"revenue\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"supply\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"closed\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ]\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"fillFromPosition\",\n \"inputs\": [\n {\n \"name\": \"_poolKey\",\n \"type\": \"tuple\",\n \"internalType\": \"struct PoolKey\",\n \"components\": [\n {\n \"name\": \"currency0\",\n \"type\": \"address\",\n \"internalType\": \"Currency\"\n },\n {\n \"name\": \"currency1\",\n \"type\": \"address\",\n \"internalType\": \"Currency\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"uint24\",\n \"internalType\": \"uint24\"\n },\n {\n \"name\": \"tickSpacing\",\n \"type\": \"int24\",\n \"internalType\": \"int24\"\n },\n {\n \"name\": \"hooks\",\n \"type\": \"address\",\n \"internalType\": \"contract IHooks\"\n }\n ]\n },\n {\n \"name\": \"_amountSpecified\",\n \"type\": \"int256\",\n \"internalType\": \"int256\"\n },\n {\n \"name\": \"_nativeIsZero\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"beforeSwapDelta_\",\n \"type\": \"int256\",\n \"internalType\": \"BeforeSwapDelta\"\n },\n {\n \"name\": \"balanceDelta_\",\n \"type\": \"int256\",\n \"internalType\": \"BalanceDelta\"\n },\n {\n \"name\": \"fairLaunchInfo_\",\n \"type\": \"tuple\",\n \"internalType\": \"struct FairLaunch.FairLaunchInfo\",\n \"components\": [\n {\n \"name\": \"startsAt\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"endsAt\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"initialTick\",\n \"type\": \"int24\",\n \"internalType\": \"int24\"\n },\n {\n \"name\": \"revenue\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"supply\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"closed\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ]\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getRoleAdmin\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"grantRole\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"hasRole\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"inFairLaunchWindow\",\n \"inputs\": [\n {\n \"name\": \"_poolId\",\n \"type\": \"bytes32\",\n \"internalType\": \"PoolId\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"initialSupply\",\n \"inputs\": [\n {\n \"name\": \"_poolId\",\n \"type\": \"bytes32\",\n \"internalType\": \"PoolId\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"_supply\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"modifyRevenue\",\n \"inputs\": [\n {\n \"name\": \"_poolId\",\n \"type\": \"bytes32\",\n \"internalType\": \"PoolId\"\n },\n {\n \"name\": \"_revenue\",\n \"type\": \"int256\",\n \"internalType\": \"int256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"poolManager\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"contract IPoolManager\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"renounceRole\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"callerConfirmation\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"revokeRole\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"supportsInterface\",\n \"inputs\": [\n {\n \"name\": \"interfaceId\",\n \"type\": \"bytes4\",\n \"internalType\": \"bytes4\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"event\",\n \"name\": \"FairLaunchCreated\",\n \"inputs\": [\n {\n \"name\": \"_poolId\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"PoolId\"\n },\n {\n \"name\": \"_tokens\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"_startsAt\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"_endsAt\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"FairLaunchEnded\",\n \"inputs\": [\n {\n \"name\": \"_poolId\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"PoolId\"\n },\n {\n \"name\": \"_revenue\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"_supply\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"_endedAt\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"RoleAdminChanged\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"previousAdminRole\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"newAdminRole\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"RoleGranted\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"sender\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"RoleRevoked\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"sender\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"AccessControlBadConfirmation\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"AccessControlUnauthorizedAccount\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"neededRole\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"CannotModifyLiquidityDuringFairLaunch\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"CannotSellTokenDuringFairLaunch\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotPositionManager\",\n \"inputs\": []\n }\n] as const;\n","import {\n type ReadContract,\n type Address,\n type Drift,\n type EventLog,\n type ReadWriteContract,\n type ReadWriteAdapter,\n type HexString,\n createDrift,\n} from \"@delvtech/drift\";\nimport { FairLaunchAbi } from \"../abi/FairLaunch\";\n\nexport type FairLaunchABI = typeof FairLaunchAbi;\n\n/**\n * Client for interacting with the FairLaunch V1 contract in read-only mode\n * Provides methods to query fair launch information and status\n */\nexport class ReadFairLaunch {\n public readonly contract: ReadContract<FairLaunchABI>;\n\n /**\n * Creates a new ReadFairLaunch instance\n * @param address - The address of the FairLaunch contract\n * @param drift - Optional drift instance for contract interactions (creates new instance if not provided)\n * @throws Error if address is not provided\n */\n constructor(address: Address, drift: Drift = createDrift()) {\n if (!address) {\n throw new Error(\"Address is required\");\n }\n\n this.contract = drift.contract({\n abi: FairLaunchAbi,\n address,\n });\n }\n\n /**\n * Gets the fair launch duration in seconds for a pool. Per-pool since v5\n * (the launcher chooses it in FlaunchParams.fairLaunchDuration).\n */\n async fairLaunchDuration({ poolId }: { poolId: HexString }) {\n const { startsAt, endsAt } = await this.fairLaunchInfo({ poolId });\n return Number(endsAt - startsAt);\n }\n\n /**\n * Gets information about a fair launch for a specific pool\n * @param poolId - The ID of the pool\n * @returns Promise<{initialTick: number, closed: boolean, endsAt: number}> - Fair launch details\n */\n fairLaunchInfo({ poolId }: { poolId: HexString }) {\n return this.contract.read(\"fairLaunchInfo\", {\n _poolId: poolId,\n });\n }\n\n /**\n * Checks if a fair launch is currently active\n * @param poolId - The ID of the pool\n * @returns Promise<boolean> - True if the fair launch is active (not closed and not expired), false otherwise\n */\n async isFairLaunchActive({ poolId }: { poolId: HexString }) {\n const { closed, endsAt } = await this.fairLaunchInfo({ poolId });\n if (closed) {\n return false;\n }\n\n if (new Date().getTime() / 1000 > endsAt) {\n return false;\n }\n\n return true;\n }\n}\n","// Generated from BurningBidWall (the deployed BidWall variant).\n// Source artifact: BurningBidWall.sol/BurningBidWall.json (FOUNDRY_PROFILE=arc forge build). Do not hand-edit;\n// regenerate from the contracts repo when the deployed bytecode changes.\nexport const BidwallAbi = [\n {\n \"type\": \"constructor\",\n \"inputs\": [\n {\n \"name\": \"_nativeToken\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_poolManager\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_protocolOwner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"DEFAULT_ADMIN_ROLE\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"cancelOwnershipHandover\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"payable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"checkStalePosition\",\n \"inputs\": [\n {\n \"name\": \"_poolKey\",\n \"type\": \"tuple\",\n \"internalType\": \"struct PoolKey\",\n \"components\": [\n {\n \"name\": \"currency0\",\n \"type\": \"address\",\n \"internalType\": \"Currency\"\n },\n {\n \"name\": \"currency1\",\n \"type\": \"address\",\n \"internalType\": \"Currency\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"uint24\",\n \"internalType\": \"uint24\"\n },\n {\n \"name\": \"tickSpacing\",\n \"type\": \"int24\",\n \"internalType\": \"int24\"\n },\n {\n \"name\": \"hooks\",\n \"type\": \"address\",\n \"internalType\": \"contract IHooks\"\n }\n ]\n },\n {\n \"name\": \"_currentTick\",\n \"type\": \"int24\",\n \"internalType\": \"int24\"\n },\n {\n \"name\": \"_nativeIsZero\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"closeBidWall\",\n \"inputs\": [\n {\n \"name\": \"_key\",\n \"type\": \"tuple\",\n \"internalType\": \"struct PoolKey\",\n \"components\": [\n {\n \"name\": \"currency0\",\n \"type\": \"address\",\n \"internalType\": \"Currency\"\n },\n {\n \"name\": \"currency1\",\n \"type\": \"address\",\n \"internalType\": \"Currency\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"uint24\",\n \"internalType\": \"uint24\"\n },\n {\n \"name\": \"tickSpacing\",\n \"type\": \"int24\",\n \"internalType\": \"int24\"\n },\n {\n \"name\": \"hooks\",\n \"type\": \"address\",\n \"internalType\": \"contract IHooks\"\n }\n ]\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"completeOwnershipHandover\",\n \"inputs\": [\n {\n \"name\": \"pendingOwner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"payable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"deposit\",\n \"inputs\": [\n {\n \"name\": \"_poolKey\",\n \"type\": \"tuple\",\n \"internalType\": \"struct PoolKey\",\n \"components\": [\n {\n \"name\": \"currency0\",\n \"type\": \"address\",\n \"internalType\": \"Currency\"\n },\n {\n \"name\": \"currency1\",\n \"type\": \"address\",\n \"internalType\": \"Currency\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"uint24\",\n \"internalType\": \"uint24\"\n },\n {\n \"name\": \"tickSpacing\",\n \"type\": \"int24\",\n \"internalType\": \"int24\"\n },\n {\n \"name\": \"hooks\",\n \"type\": \"address\",\n \"internalType\": \"contract IHooks\"\n }\n ]\n },\n {\n \"name\": \"_ethSwapAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"_currentTick\",\n \"type\": \"int24\",\n \"internalType\": \"int24\"\n },\n {\n \"name\": \"_nativeIsZero\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getRoleAdmin\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"grantRole\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"hasRole\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"isBidWallEnabled\",\n \"inputs\": [\n {\n \"name\": \"_poolId\",\n \"type\": \"bytes32\",\n \"internalType\": \"PoolId\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"lastPoolTransaction\",\n \"inputs\": [\n {\n \"name\": \"_poolId\",\n \"type\": \"bytes32\",\n \"internalType\": \"PoolId\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"_timestamp\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"nativeToken\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"owner\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"result\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"ownershipHandoverExpiresAt\",\n \"inputs\": [\n {\n \"name\": \"pendingOwner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"result\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"poolInfo\",\n \"inputs\": [\n {\n \"name\": \"_poolId\",\n \"type\": \"bytes32\",\n \"internalType\": \"PoolId\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"disabled\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"initialized\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"tickLower\",\n \"type\": \"int24\",\n \"internalType\": \"int24\"\n },\n {\n \"name\": \"tickUpper\",\n \"type\": \"int24\",\n \"internalType\": \"int24\"\n },\n {\n \"name\": \"pendingETHFees\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"cumulativeSwapFees\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"poolManager\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"contract IPoolManager\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"position\",\n \"inputs\": [\n {\n \"name\": \"_poolId\",\n \"type\": \"bytes32\",\n \"internalType\": \"PoolId\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"amount0_\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"amount1_\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"pendingEth_\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"renounceOwnership\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"payable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"renounceRole\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"callerConfirmation\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"requestOwnershipHandover\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"payable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"revokeRole\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setDisabledState\",\n \"inputs\": [\n {\n \"name\": \"_key\",\n \"type\": \"tuple\",\n \"internalType\": \"struct PoolKey\",\n \"components\": [\n {\n \"name\": \"currency0\",\n \"type\": \"address\",\n \"internalType\": \"Currency\"\n },\n {\n \"name\": \"currency1\",\n \"type\": \"address\",\n \"internalType\": \"Currency\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"uint24\",\n \"internalType\": \"uint24\"\n },\n {\n \"name\": \"tickSpacing\",\n \"type\": \"int24\",\n \"internalType\": \"int24\"\n },\n {\n \"name\": \"hooks\",\n \"type\": \"address\",\n \"internalType\": \"contract IHooks\"\n }\n ]\n },\n {\n \"name\": \"_disable\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setStaleTimeWindow\",\n \"inputs\": [\n {\n \"name\": \"_staleTimeWindow\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setSwapFeeThreshold\",\n \"inputs\": [\n {\n \"name\": \"swapFeeThreshold\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"staleTimeWindow\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"supportsInterface\",\n \"inputs\": [\n {\n \"name\": \"interfaceId\",\n \"type\": \"bytes4\",\n \"internalType\": \"bytes4\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transferOwnership\",\n \"inputs\": [\n {\n \"name\": \"newOwner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"payable\"\n },\n {\n \"type\": \"event\",\n \"name\": \"BidWallClosed\",\n \"inputs\": [\n {\n \"name\": \"_poolId\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"PoolId\"\n },\n {\n \"name\": \"_recipient\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_eth\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"BidWallDeposit\",\n \"inputs\": [\n {\n \"name\": \"_poolId\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"PoolId\"\n },\n {\n \"name\": \"_added\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"_pending\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"BidWallDisabledStateUpdated\",\n \"inputs\": [\n {\n \"name\": \"_poolId\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"PoolId\"\n },\n {\n \"name\": \"_disabled\",\n \"type\": \"bool\",\n \"indexed\": false,\n \"internalType\": \"bool\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"BidWallInitialized\",\n \"inputs\": [\n {\n \"name\": \"_poolId\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"PoolId\"\n },\n {\n \"name\": \"_eth\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"_tickLower\",\n \"type\": \"int24\",\n \"indexed\": false,\n \"internalType\": \"int24\"\n },\n {\n \"name\": \"_tickUpper\",\n \"type\": \"int24\",\n \"indexed\": false,\n \"internalType\": \"int24\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"BidWallRepositioned\",\n \"inputs\": [\n {\n \"name\": \"_poolId\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"PoolId\"\n },\n {\n \"name\": \"_eth\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"_tickLower\",\n \"type\": \"int24\",\n \"indexed\": false,\n \"internalType\": \"int24\"\n },\n {\n \"name\": \"_tickUpper\",\n \"type\": \"int24\",\n \"indexed\": false,\n \"internalType\": \"int24\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"BidWallRewardsTransferred\",\n \"inputs\": [\n {\n \"name\": \"_poolId\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"PoolId\"\n },\n {\n \"name\": \"_recipient\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_tokens\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"FixedSwapFeeThresholdUpdated\",\n \"inputs\": [\n {\n \"name\": \"_newSwapFeeThreshold\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OwnershipHandoverCanceled\",\n \"inputs\": [\n {\n \"name\": \"pendingOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OwnershipHandoverRequested\",\n \"inputs\": [\n {\n \"name\": \"pendingOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OwnershipTransferred\",\n \"inputs\": [\n {\n \"name\": \"oldOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"newOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"RoleAdminChanged\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"previousAdminRole\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"newAdminRole\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"RoleGranted\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"sender\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"RoleRevoked\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"sender\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"StaleTimeWindowUpdated\",\n \"inputs\": [\n {\n \"name\": \"_staleTimeWindow\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"AccessControlBadConfirmation\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"AccessControlUnauthorizedAccount\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"neededRole\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"AlreadyInitialized\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"CallerIsNotCreator\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NewOwnerIsZeroAddress\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NoHandoverRequest\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotPositionManager\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"Unauthorized\",\n \"inputs\": []\n }\n] as const;\n","import {\n type ReadContract,\n type Address,\n type Drift,\n type EventLog,\n type ReadWriteContract,\n type ReadWriteAdapter,\n type HexString,\n createDrift,\n} from \"@delvtech/drift\";\nimport { BidwallAbi } from \"../abi/BidWall\";\n\nexport type BidwallABI = typeof BidwallAbi;\n\n/**\n * Client for interacting with the BidWall V1 contract in read-only mode\n * Provides methods to query bid wall positions and pool information\n */\nexport class ReadBidWall {\n public readonly contract: ReadContract<BidwallABI>;\n\n /**\n * Creates a new ReadBidWall instance\n * @param address - The address of the BidWall contract\n * @param drift - Optional drift instance for contract interactions (creates new instance if not provided)\n * @throws Error if address is not provided\n */\n constructor(address: Address, drift: Drift = createDrift()) {\n if (!address) {\n throw new Error(\"Address is required\");\n }\n\n this.contract = drift.contract({\n abi: BidwallAbi,\n address,\n });\n }\n\n /**\n * Gets information about a bid wall position for a specific pool\n * @param poolId - The ID of the pool\n * @returns Promise<{amount0_: bigint, amount1_: bigint, pendingEth_: bigint}> - Position details including token amounts and pending ETH\n */\n position({ poolId }: { poolId: HexString }) {\n return this.contract.read(\"position\", {\n _poolId: poolId,\n });\n }\n\n /**\n * Gets configuration information about a pool's bid wall\n * @param poolId - The ID of the pool\n * @returns Promise<{tickLower: number, tickUpper: number}> - Pool configuration including tick range\n */\n poolInfo({ poolId }: { poolId: HexString }) {\n return this.contract.read(\"poolInfo\", {\n _poolId: poolId,\n });\n }\n}\n","// Generated from FlaunchZap (one-transaction launch entry point).\n// Source artifact: FlaunchZap.sol/FlaunchZap.json (FOUNDRY_PROFILE=arc forge build). Do not hand-edit;\n// regenerate from the contracts repo when the deployed bytecode changes.\n// NOTE: the 3-arg flaunch overload is stripped so drift name-keyed calls\n// resolve unambiguously; pass zeroed whitelist/airdrop/manager params instead.\nexport const FlaunchZapAbi = [\n {\n \"type\": \"constructor\",\n \"inputs\": [\n {\n \"name\": \"_positionManager\",\n \"type\": \"address\",\n \"internalType\": \"contract PositionManager\"\n },\n {\n \"name\": \"_flaunchContract\",\n \"type\": \"address\",\n \"internalType\": \"contract Flaunch\"\n },\n {\n \"name\": \"_flETH\",\n \"type\": \"address\",\n \"internalType\": \"contract IFLETH\"\n },\n {\n \"name\": \"_poolSwap\",\n \"type\": \"address\",\n \"internalType\": \"contract PoolSwap\"\n },\n {\n \"name\": \"_treasuryManagerFactory\",\n \"type\": \"address\",\n \"internalType\": \"contract ITreasuryManagerFactory\"\n },\n {\n \"name\": \"_merkleAirdrop\",\n \"type\": \"address\",\n \"internalType\": \"contract IMerkleAirdrop\"\n },\n {\n \"name\": \"_whitelistFairLaunch\",\n \"type\": \"address\",\n \"internalType\": \"contract WhitelistFairLaunch\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"receive\",\n \"stateMutability\": \"payable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"calculateFee\",\n \"inputs\": [\n {\n \"name\": \"_premineAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"_slippage\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"_initialPriceParams\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"ethRequired_\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"deployAndInitializeManager\",\n \"inputs\": [\n {\n \"name\": \"_managerImplementation\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_owner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_data\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"_permissions\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"manager_\",\n \"type\": \"address\",\n \"internalType\": \"address payable\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"flETH\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"contract IFLETH\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"flaunch\",\n \"inputs\": [\n {\n \"name\": \"_flaunchParams\",\n \"type\": \"tuple\",\n \"internalType\": \"struct PositionManager.FlaunchParams\",\n \"components\": [\n {\n \"name\": \"name\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"symbol\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"tokenUri\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"initialTokenFairLaunch\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"fairLaunchDuration\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"premineAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"creator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"creatorFeeAllocation\",\n \"type\": \"uint24\",\n \"internalType\": \"uint24\"\n },\n {\n \"name\": \"flaunchAt\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"initialPriceParams\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"feeCalculatorParams\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ]\n },\n {\n \"name\": \"_trustedFeeSigner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_premineSwapHookData\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"_whitelistParams\",\n \"type\": \"tuple\",\n \"internalType\": \"struct FlaunchZap.WhitelistParams\",\n \"components\": [\n {\n \"name\": \"merkleRoot\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"merkleIPFSHash\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"maxTokens\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"name\": \"_airdropParams\",\n \"type\": \"tuple\",\n \"internalType\": \"struct FlaunchZap.AirdropParams\",\n \"components\": [\n {\n \"name\": \"airdropIndex\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"airdropAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"airdropEndTime\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"merkleRoot\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"merkleIPFSHash\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n }\n ]\n },\n {\n \"name\": \"_treasuryManagerParams\",\n \"type\": \"tuple\",\n \"internalType\": \"struct FlaunchZap.TreasuryManagerParams\",\n \"components\": [\n {\n \"name\": \"manager\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"permissions\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"initializeData\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"depositData\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ]\n }\n ],\n \"outputs\": [\n {\n \"name\": \"memecoin_\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"ethSpent_\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"deployedManager_\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"payable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"flaunchContract\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"contract Flaunch\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"merkleAirdrop\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"contract IMerkleAirdrop\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"poolSwap\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"contract PoolSwap\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"positionManager\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"contract PositionManager\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"treasuryManagerFactory\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"contract ITreasuryManagerFactory\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"whitelistFairLaunch\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"contract WhitelistFairLaunch\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"error\",\n \"name\": \"CreatorCannotBeZero\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InsufficientMemecoinsForAirdrop\",\n \"inputs\": []\n }\n] as const;\n","import axios from \"axios\";\nimport { IPFSParams } from \"../types\";\nimport { ApiBaseUrl } from \"../addresses\";\n\n// List of public IPFS gateways to cycle through\nconst IPFS_GATEWAYS = [\"https://ipfs.io/ipfs/\", \"https://dweb.link/ipfs/\"];\n\n// Counter to track the current gateway index\nlet currentGatewayIndex = 0;\n\nexport const resolveIPFS = (value: string): string => {\n if (value.startsWith(\"ipfs://\")) {\n const cid = value.slice(7);\n // Get the next gateway and increment the counter\n const gateway = IPFS_GATEWAYS[currentGatewayIndex];\n // Update the counter, cycling back to 0 when we reach the end\n currentGatewayIndex = (currentGatewayIndex + 1) % IPFS_GATEWAYS.length;\n return `${gateway}${cid}`;\n }\n return value;\n};\n\n/**\n * Every gateway URL an ipfs:// value can resolve to, so a fetch can fail over\n * when a public gateway rejects the request (they rate limit aggressively).\n * Non-IPFS values resolve to themselves.\n */\nexport const resolveIPFSCandidates = (value: string): string[] => {\n if (value.startsWith(\"ipfs://\")) {\n const cid = value.slice(7);\n return IPFS_GATEWAYS.map((gateway) => `${gateway}${cid}`);\n }\n return [value];\n};\n\n/**\n * Bounds for fetching coin metadata from a resolved tokenURI. The URI is\n * attacker-controlled onchain data, so cap the request rather than handing\n * axios an unbounded one.\n */\nconst METADATA_FETCH_TIMEOUT_MS = 15_000;\nconst METADATA_MAX_REDIRECTS = 3;\nconst METADATA_MAX_BYTES = 5 * 1024 * 1024;\n\n/**\n * Fetches token metadata from a resolved tokenURI over HTTP(S).\n *\n * @remarks\n * Applies a timeout, a redirect cap, and a response-size cap, and rejects\n * non-HTTP(S) protocols. It does NOT defend against SSRF: a coin's tokenURI\n * is arbitrary onchain data, so in a server context it can point at private\n * or link-local addresses. When calling this from a server with untrusted\n * coin addresses, route it through your own vetted fetch or egress policy\n * (see `setIPFSResolver` to swap the resolver, and the README).\n */\nexport const fetchTokenUriMetadata = async (url: string): Promise<any> => {\n if (!/^https?:\\/\\//i.test(url)) {\n throw new Error(`Unsupported tokenURI protocol: ${url.slice(0, 64)}`);\n }\n const response = await axios.get(url, {\n timeout: METADATA_FETCH_TIMEOUT_MS,\n maxRedirects: METADATA_MAX_REDIRECTS,\n maxContentLength: METADATA_MAX_BYTES,\n maxBodyLength: METADATA_MAX_BYTES,\n });\n return response.data;\n};\n\n/**\n * Fetches token metadata trying each candidate URL in order, so an ipfs://\n * tokenURI survives one public gateway refusing the request. Throws the last\n * error when every candidate fails.\n */\nexport const fetchTokenUriMetadataWithFallback = async (\n urls: string[]\n): Promise<any> => {\n let lastError: unknown;\n for (const url of urls) {\n try {\n return await fetchTokenUriMetadata(url);\n } catch (error) {\n lastError = error;\n }\n }\n throw lastError;\n};\n\n/** Decodes a base64 (optionally data-URL) image into bytes + mime type. */\nconst decodeBase64Image = (\n base64Image: string\n): { bytes: Uint8Array; mimeType: string } => {\n const base64Data = base64Image.split(\",\")[1] || base64Image;\n const byteCharacters = atob(base64Data);\n const bytes = new Uint8Array(byteCharacters.length);\n for (let i = 0; i < byteCharacters.length; i++) {\n bytes[i] = byteCharacters.charCodeAt(i);\n }\n\n let mimeType = \"image/png\"; // default\n if (base64Image.startsWith(\"data:\")) {\n mimeType = base64Image.split(\";\")[0].split(\":\")[1];\n }\n\n return { bytes, mimeType };\n};\n\n/**\n * Pins a token image + metadata through the ubi.fun API upload endpoint (the\n * same path the app uses: POST {apiUrl}/upload) and returns the tokenUri.\n * IP rate limited; 5MB image cap.\n */\nexport const uploadToUbiApi = async (params: {\n apiUrl: string;\n name: string;\n symbol: string;\n base64Image: string;\n description: string;\n websiteUrl?: string;\n discordUrl?: string;\n twitterUrl?: string;\n telegramUrl?: string;\n}): Promise<{ tokenUri: string; image: string }> => {\n const { bytes, mimeType } = decodeBase64Image(params.base64Image);\n\n const formData = new FormData();\n formData.append(\n \"image\",\n new Blob([bytes as BlobPart], { type: mimeType }),\n `image.${mimeType.split(\"/\")[1] ?? \"png\"}`\n );\n formData.append(\"name\", params.name);\n formData.append(\"symbol\", params.symbol);\n formData.append(\"description\", params.description);\n if (params.websiteUrl) {\n formData.append(\"website\", params.websiteUrl);\n }\n if (params.discordUrl) {\n formData.append(\"discord\", params.discordUrl);\n }\n if (params.twitterUrl) {\n formData.append(\"twitter\", params.twitterUrl);\n }\n if (params.telegramUrl) {\n formData.append(\"telegram\", params.telegramUrl);\n }\n\n try {\n const response = await axios.post(`${params.apiUrl}/upload`, formData);\n return {\n tokenUri: response.data.tokenUri,\n image: response.data.image,\n };\n } catch (error) {\n if (axios.isAxiosError(error)) {\n throw new Error(\n `Failed to upload token metadata: ${\n error.response?.data?.error || error.message\n }`\n );\n }\n throw error;\n }\n};\n\n/**\n * Pins the token image + metadata through the ubi.fun API and returns the\n * `ipfs://` tokenUri to pass into a flaunch call.\n *\n * To host metadata yourself (any provider, any storage), skip this entirely:\n * upload however you like, then pass the resulting URI straight to\n * `flaunch({ tokenUri })`.\n */\nexport const generateTokenUri = async (\n name: string,\n symbol: string,\n params: IPFSParams & { chainId: number }\n) => {\n const apiUrl = ApiBaseUrl[params.chainId];\n if (!apiUrl) {\n throw new Error(\n `No ubi.fun API for chain ${params.chainId}; pin the metadata yourself and pass flaunch({ tokenUri })`\n );\n }\n\n const { tokenUri } = await uploadToUbiApi({\n apiUrl,\n name,\n symbol,\n base64Image: params.metadata.base64Image,\n description: params.metadata.description,\n websiteUrl: params.metadata.websiteUrl,\n discordUrl: params.metadata.discordUrl,\n twitterUrl: params.metadata.twitterUrl,\n telegramUrl: params.metadata.telegramUrl,\n });\n\n return tokenUri;\n};\n","import { concat, keccak256, pad, toHex } from \"viem\";\nimport { PoolKey } from \"../types\";\n\n// our min/max tick range that is valid for the tick spacing (60)\nexport const TickFinder = {\n MIN_TICK: -887220,\n MAX_TICK: 887220,\n};\n\nexport const Q96 = 2n ** 96n;\nexport const Q192 = 2n ** 192n;\n\nexport const TICK_SPACING = 60;\n\nexport const getPoolId = (poolKey: PoolKey) => {\n // Pack the data in the same order as Solidity struct\n const packed = concat([\n pad(poolKey.currency0, { size: 32 }), // address padded to 32 bytes\n pad(poolKey.currency1, { size: 32 }), // address padded to 32 bytes\n pad(toHex(poolKey.fee), { size: 32 }), // uint24 padded to 32 bytes\n pad(toHex(poolKey.tickSpacing), { size: 32 }), // int24 padded to 32 bytes\n pad(poolKey.hooks, { size: 32 }), // address padded to 32 bytes\n ]);\n\n return keccak256(packed);\n};\n\nexport const orderPoolKey = (poolKey: PoolKey) => {\n // Compare lowercased so checksummed input cannot flip the v4 numeric ordering\n const [currency0, currency1] =\n poolKey.currency0.toLowerCase() < poolKey.currency1.toLowerCase()\n ? [poolKey.currency0, poolKey.currency1]\n : [poolKey.currency1, poolKey.currency0];\n\n return {\n ...poolKey,\n currency0,\n currency1,\n };\n};\n\nexport const getValidTick = ({\n tick,\n tickSpacing,\n roundDown = true,\n}: {\n tick: number;\n tickSpacing: number;\n roundDown?: boolean;\n}) => {\n // If the tick is already valid, exit early\n if (tick % tickSpacing === 0) {\n return tick;\n }\n\n // Division that rounds towards zero (like Solidity)\n let validTick = Math.trunc(tick / tickSpacing) * tickSpacing;\n\n // Handle negative ticks (Solidity behavior)\n if (tick < 0 && tick % tickSpacing !== 0) {\n validTick -= tickSpacing;\n }\n\n // If not rounding down, add TICK_SPACING to get the upper tick\n if (!roundDown) {\n validTick += tickSpacing;\n }\n\n return validTick;\n};\n\n// Rounds up or down to the nearest tick\nexport const getNearestUsableTick = ({\n tick,\n tickSpacing,\n}: {\n tick: number;\n tickSpacing: number;\n}): number => {\n const rounded = Math.round(tick / tickSpacing) * tickSpacing;\n return Math.max(TickFinder.MIN_TICK, Math.min(TickFinder.MAX_TICK, rounded));\n};\n\nconst getAmount0ForLiquidity = (\n sqrtRatioAX96: bigint,\n sqrtRatioBX96: bigint,\n liquidity: bigint\n) => {\n let [sqrtRatioA, sqrtRatioB] = [sqrtRatioAX96, sqrtRatioBX96];\n\n if (sqrtRatioA > sqrtRatioB) {\n [sqrtRatioA, sqrtRatioB] = [sqrtRatioB, sqrtRatioA];\n }\n\n const leftShiftedLiquidity = liquidity << 96n;\n const sqrtDiff = sqrtRatioB - sqrtRatioA;\n const multipliedRes = leftShiftedLiquidity * sqrtDiff;\n const numerator = multipliedRes / sqrtRatioB;\n const amount0 = numerator / sqrtRatioA;\n\n return amount0;\n};\n\nconst getAmount1ForLiquidity = (\n sqrtRatioAX96: bigint,\n sqrtRatioBX96: bigint,\n liquidity: bigint\n) => {\n let [sqrtRatioA, sqrtRatioB] = [sqrtRatioAX96, sqrtRatioBX96];\n\n if (sqrtRatioA > sqrtRatioB) {\n [sqrtRatioA, sqrtRatioB] = [sqrtRatioB, sqrtRatioA];\n }\n\n const sqrtDiff = sqrtRatioB - sqrtRatioA;\n const multipliedRes = liquidity * sqrtDiff;\n\n const amount1 = multipliedRes / 2n ** 96n;\n\n return amount1;\n};\n\nexport const getSqrtPriceX96FromTick = (tick: number): bigint => {\n const absTick = tick < 0 ? BigInt(-tick) : BigInt(tick);\n if (absTick > TickFinder.MAX_TICK) {\n throw new Error(\"Tick out of range\");\n }\n\n let ratio =\n (absTick & 1n) !== 0n\n ? 0xfffcb933bd6fad37aa2d162d1a594001n\n : 0x100000000000000000000000000000000n;\n\n if ((absTick & 2n) !== 0n)\n ratio = (ratio * 0xfff97272373d413259a46990580e213an) >> 128n;\n if ((absTick & 4n) !== 0n)\n ratio = (ratio * 0xfff2e50f5f656932ef12357cf3c7fdccn) >> 128n;\n if ((absTick & 8n) !== 0n)\n ratio = (ratio * 0xffe5caca7e10e4e61c3624eaa0941cd0n) >> 128n;\n if ((absTick & 16n) !== 0n)\n ratio = (ratio * 0xffcb9843d60f6159c9db58835c926644n) >> 128n;\n if ((absTick & 32n) !== 0n)\n ratio = (ratio * 0xff973b41fa98c081472e6896dfb254c0n) >> 128n;\n if ((absTick & 64n) !== 0n)\n ratio = (ratio * 0xff2ea16466c96a3843ec78b326b52861n) >> 128n;\n if ((absTick & 128n) !== 0n)\n ratio = (ratio * 0xfe5dee046a99a2a811c461f1969c3053n) >> 128n;\n if ((absTick & 256n) !== 0n)\n ratio = (ratio * 0xfcbe86c7900a88aedcffc83b479aa3a4n) >> 128n;\n if ((absTick & 512n) !== 0n)\n ratio = (ratio * 0xf987a7253ac413176f2b074cf7815e54n) >> 128n;\n if ((absTick & 1024n) !== 0n)\n ratio = (ratio * 0xf3392b0822b70005940c7a398e4b70f3n) >> 128n;\n if ((absTick & 2048n) !== 0n)\n ratio = (ratio * 0xe7159475a2c29b7443b29c7fa6e889d9n) >> 128n;\n if ((absTick & 4096n) !== 0n)\n ratio = (ratio * 0xd097f3bdfd2022b8845ad8f792aa5825n) >> 128n;\n if ((absTick & 8192n) !== 0n)\n ratio = (ratio * 0xa9f746462d870fdf8a65dc1f90e061e5n) >> 128n;\n if ((absTick & 16384n) !== 0n)\n ratio = (ratio * 0x70d869a156d2a1b890bb3df62baf32f7n) >> 128n;\n if ((absTick & 32768n) !== 0n)\n ratio = (ratio * 0x31be135f97d08fd981231505542fcfa6n) >> 128n;\n if ((absTick & 65536n) !== 0n)\n ratio = (ratio * 0x9aa508b5b7a84e1c677de54f3e99bc9n) >> 128n;\n if ((absTick & 131072n) !== 0n)\n ratio = (ratio * 0x5d6af8dedb81196699c329225ee604n) >> 128n;\n if ((absTick & 262144n) !== 0n)\n ratio = (ratio * 0x2216e584f5fa1ea926041bedfe98n) >> 128n;\n if ((absTick & 524288n) !== 0n)\n ratio = (ratio * 0x48a170391f7dc42444e8fa2n) >> 128n;\n\n if (tick > 0) {\n ratio = (2n ** 256n - 1n) / ratio;\n }\n\n // Convert from Q128.128 to Q128.96\n const resultShifted = ratio >> 32n;\n if (ratio % (1n << 32n) === 0n) {\n return resultShifted;\n }\n return resultShifted + 1n;\n};\n\nexport const calculateUnderlyingTokenBalances = (\n liquidity: bigint,\n tickLower: number,\n tickUpper: number,\n tickCurrent: number\n): { amount0: bigint; amount1: bigint } => {\n const sqrtPriceCurrentX96 = getSqrtPriceX96FromTick(tickCurrent);\n const sqrtPriceLowerX96 = getSqrtPriceX96FromTick(tickLower);\n const sqrtPriceUpperX96 = getSqrtPriceX96FromTick(tickUpper);\n\n let amount0 = 0n;\n let amount1 = 0n;\n\n if (sqrtPriceCurrentX96 <= sqrtPriceLowerX96) {\n // Current price is below the position range\n amount0 = getAmount0ForLiquidity(\n sqrtPriceLowerX96,\n sqrtPriceUpperX96,\n liquidity\n );\n } else if (sqrtPriceCurrentX96 < sqrtPriceUpperX96) {\n // Current price is within the position range\n amount0 = getAmount0ForLiquidity(\n sqrtPriceCurrentX96,\n sqrtPriceUpperX96,\n liquidity\n );\n amount1 = getAmount1ForLiquidity(\n sqrtPriceLowerX96,\n sqrtPriceCurrentX96,\n liquidity\n );\n } else {\n // Current price is above the position range\n amount1 = getAmount1ForLiquidity(\n sqrtPriceLowerX96,\n sqrtPriceUpperX96,\n liquidity\n );\n }\n\n return { amount0, amount1 };\n};\n\n// Helper function to convert price ratio to tick with decimal handling\nexport const priceRatioToTick = ({\n priceInput,\n isDirection1Per0,\n decimals0,\n decimals1,\n spacing,\n shouldGetNearestUsableTick = true,\n}: {\n priceInput: string;\n isDirection1Per0: boolean;\n decimals0: number;\n decimals1: number;\n spacing: number;\n shouldGetNearestUsableTick?: boolean;\n}): number => {\n if (!priceInput || isNaN(Number(priceInput))) return 0;\n\n const inputPrice = Number(priceInput);\n\n try {\n // For Uniswap v3/v4, the tick represents price as: price = 1.0001^tick\n // where price = amount1/amount0 in their raw decimal format\n\n let priceRatio: number;\n\n if (isDirection1Per0) {\n // Input is token1 per token0 (e.g., memecoin per USDC)\n // Convert from human-readable to raw: divide by (10^decimals0 / 10^decimals1)\n priceRatio = inputPrice / Math.pow(10, decimals0 - decimals1);\n } else {\n // Input is token0 per token1 (e.g., USDC per memecoin)\n // Invert to get token1 per token0, then convert to raw\n priceRatio = 1 / inputPrice / Math.pow(10, decimals0 - decimals1);\n }\n\n // Calculate tick: tick = log(price) / log(1.0001)\n const tick = Math.log(priceRatio) / Math.log(1.0001);\n\n if (shouldGetNearestUsableTick) {\n return getValidTick({\n tick: Math.round(tick),\n tickSpacing: spacing,\n });\n } else {\n return Math.round(tick);\n }\n } catch (error) {\n console.error(\"Error converting price to tick:\", error);\n // Fallback to basic calculation\n const rawTick = Math.floor(Math.log(inputPrice) / Math.log(1.0001));\n if (shouldGetNearestUsableTick) {\n return getValidTick({\n tick: rawTick,\n tickSpacing: spacing,\n });\n } else {\n return rawTick;\n }\n }\n};\n\n/**\n * Accurate liquidity calculation using proper Uniswap v3/v4 math\n */\nexport const getLiquidityFromAmounts = (params: {\n currentTick: number;\n tickLower: number;\n tickUpper: number;\n amount0: bigint;\n amount1: bigint;\n}) => {\n const sqrtRatioCurrentX96 = getSqrtPriceX96FromTick(params.currentTick);\n let sqrtRatioAX96 = getSqrtPriceX96FromTick(params.tickLower);\n let sqrtRatioBX96 = getSqrtPriceX96FromTick(params.tickUpper);\n\n if (sqrtRatioAX96 > sqrtRatioBX96) {\n [sqrtRatioAX96, sqrtRatioBX96] = [sqrtRatioBX96, sqrtRatioAX96];\n }\n\n if (sqrtRatioCurrentX96 <= sqrtRatioAX96) {\n return maxLiquidityForAmount0Precise(\n sqrtRatioAX96,\n sqrtRatioBX96,\n params.amount0\n );\n } else if (sqrtRatioCurrentX96 < sqrtRatioBX96) {\n const liquidity0 = maxLiquidityForAmount0Precise(\n sqrtRatioCurrentX96,\n sqrtRatioBX96,\n params.amount0\n );\n const liquidity1 = maxLiquidityForAmount1(\n sqrtRatioAX96,\n sqrtRatioCurrentX96,\n params.amount1\n );\n return liquidity0 < liquidity1 ? liquidity0 : liquidity1;\n } else {\n return maxLiquidityForAmount1(sqrtRatioAX96, sqrtRatioBX96, params.amount1);\n }\n};\n\n/**\n * Returns a precise maximum amount of liquidity received for a given amount of token 0 by dividing by Q64 instead of Q96 in the intermediate step,\n * and shifting the subtracted ratio left by 32 bits.\n * @param sqrtRatioAX96 The price at the lower boundary\n * @param sqrtRatioBX96 The price at the upper boundary\n * @param amount0 The token0 amount\n * @returns liquidity for amount0, precise\n */\nexport function maxLiquidityForAmount0Precise(\n sqrtRatioAX96: bigint,\n sqrtRatioBX96: bigint,\n amount0: bigint\n): bigint {\n if (sqrtRatioAX96 > sqrtRatioBX96) {\n [sqrtRatioAX96, sqrtRatioBX96] = [sqrtRatioBX96, sqrtRatioAX96];\n }\n\n // Handle edge case where sqrt ratios are equal (division by zero)\n if (sqrtRatioAX96 === sqrtRatioBX96) {\n return 0n;\n }\n\n const Q96 = 2n ** 96n;\n const numerator = amount0 * sqrtRatioAX96 * sqrtRatioBX96;\n const denominator = Q96 * (sqrtRatioBX96 - sqrtRatioAX96);\n\n return numerator / denominator;\n}\n\n/**\n * Computes the maximum amount of liquidity received for a given amount of token1\n * @param sqrtRatioAX96 The price at the lower tick boundary\n * @param sqrtRatioBX96 The price at the upper tick boundary\n * @param amount1 The token1 amount\n * @returns liquidity for amount1\n */\nexport function maxLiquidityForAmount1(\n sqrtRatioAX96: bigint,\n sqrtRatioBX96: bigint,\n amount1: bigint\n): bigint {\n if (sqrtRatioAX96 > sqrtRatioBX96) {\n [sqrtRatioAX96, sqrtRatioBX96] = [sqrtRatioBX96, sqrtRatioAX96];\n }\n\n // Handle edge case where sqrt ratios are equal (division by zero)\n if (sqrtRatioAX96 === sqrtRatioBX96) {\n return 0n;\n }\n\n const Q96 = 2n ** 96n;\n return (amount1 * Q96) / (sqrtRatioBX96 - sqrtRatioAX96);\n}\n\n/**\n * Calculate the actual amounts needed for a given liquidity\n * This prevents MaximumAmountExceeded errors by ensuring we provide sufficient maximums\n */\nexport const getAmountsForLiquidity = (params: {\n currentTick: number;\n tickLower: number;\n tickUpper: number;\n liquidity: bigint;\n}): { amount0: bigint; amount1: bigint } => {\n // Handle zero liquidity case\n if (params.liquidity === 0n) {\n return { amount0: 0n, amount1: 0n };\n }\n\n const sqrtRatioCurrentX96 = getSqrtPriceX96FromTick(params.currentTick);\n let sqrtRatioAX96 = getSqrtPriceX96FromTick(params.tickLower);\n let sqrtRatioBX96 = getSqrtPriceX96FromTick(params.tickUpper);\n\n if (sqrtRatioAX96 > sqrtRatioBX96) {\n [sqrtRatioAX96, sqrtRatioBX96] = [sqrtRatioBX96, sqrtRatioAX96];\n }\n\n let amount0 = 0n;\n let amount1 = 0n;\n\n if (sqrtRatioCurrentX96 <= sqrtRatioAX96) {\n // Current price is below the range, only token0 needed\n amount0 = getAmount0ForLiquidity(\n sqrtRatioAX96,\n sqrtRatioBX96,\n params.liquidity\n );\n } else if (sqrtRatioCurrentX96 < sqrtRatioBX96) {\n // Current price is within the range, need both tokens\n amount0 = getAmount0ForLiquidity(\n sqrtRatioCurrentX96,\n sqrtRatioBX96,\n params.liquidity\n );\n amount1 = getAmount1ForLiquidity(\n sqrtRatioAX96,\n sqrtRatioCurrentX96,\n params.liquidity\n );\n } else {\n // Current price is above the range, only token1 needed\n amount1 = getAmount1ForLiquidity(\n sqrtRatioAX96,\n sqrtRatioBX96,\n params.liquidity\n );\n }\n\n return { amount0, amount1 };\n};\n","import { encodeAbiParameters, isAddress, zeroAddress, type Address } from \"viem\";\nimport { PoolKey } from \"../types\";\nimport { USDC_ADDRESS } from \"../addresses\";\nimport { orderPoolKey, Q192 } from \"./univ4\";\n\n/**\n * Swap-building helpers shared by the quoter and PoolSwap clients. Pool keys,\n * hook data and direction mirror the ubi.fun app and MCP server exactly; the\n * SDK's price bound additionally anchors on the quoted end price so an\n * exact-input trade's own impact does not eat the slippage budget.\n */\n\n/**\n * Encodes the referrer for the hook: 5% of the swap fee accrues on-chain to\n * this address (claimable from the ReferralEscrow). '0x' means no referrer and\n * the share cascades down the fee split instead. The SAME hookData must be\n * used for the quote and the swap for them to match.\n */\nexport function referrerHookData(\n referrer: Address | undefined\n): `0x${string}` {\n return referrer && isAddress(referrer) && referrer !== zeroAddress\n ? encodeAbiParameters([{ type: \"address\" }], [referrer])\n : \"0x\";\n}\n\n/** Builds the v4 pool key for a coin: USDC on the cash side, hook fixed by the protocol. */\nexport function coinPoolKey(\n coinAddress: Address,\n positionManagerAddress: Address\n): PoolKey {\n return orderPoolKey({\n currency0: USDC_ADDRESS,\n currency1: coinAddress,\n fee: 0,\n tickSpacing: 60,\n hooks: positionManagerAddress,\n });\n}\n\n/** True when USDC sorts as currency0 for this coin's pool. */\nexport function usdcIsCurrencyZero(coinAddress: Address): boolean {\n return coinAddress.toLowerCase() > USDC_ADDRESS.toLowerCase();\n}\n\n/**\n * v4 swap direction. Buys spend USDC for the coin: when USDC is currency0\n * that's a zeroForOne swap, otherwise the reverse.\n */\nexport function swapDirection(\n side: \"buy\" | \"sell\",\n coinAddress: Address\n): boolean {\n return side === \"buy\"\n ? usdcIsCurrencyZero(coinAddress)\n : !usdcIsCurrencyZero(coinAddress);\n}\n\n// Uniswap v4 sqrt price bounds (TickMath.MIN_SQRT_PRICE / MAX_SQRT_PRICE, exclusive).\nconst MIN_SQRT_PRICE = 4_295_128_739n + 1n;\nconst MAX_SQRT_PRICE =\n 1_461_446_703_485_210_103_287_273_052_203_988_822_378_723_970_342n - 1n;\n\nfunction bigintSqrt(value: bigint): bigint {\n if (value < 2n) {\n return value;\n }\n let current = value;\n let next = (current + value / current) / 2n;\n while (next < current) {\n current = next;\n next = (current + value / current) / 2n;\n }\n return current;\n}\n\n/**\n * Expected pool sqrt price after an exact-input fill, derived from the quoted\n * amounts through the constant-liquidity identity amountOut/amountIn =\n * sqrtP_start * sqrtP_end (inverted for oneForZero). Hook fees only skew the\n * estimate toward the permissive side, so a slippage margin applied on top of\n * it never lands tighter than the real fill. Falls back to the spot price when\n * a quote leg is zero or the estimate lands on the wrong side of spot.\n */\nexport function expectedEndSqrtPriceX96({\n current,\n zeroForOne,\n amountIn,\n amountOut,\n}: {\n current: bigint;\n zeroForOne: boolean;\n amountIn: bigint;\n amountOut: bigint;\n}): bigint {\n if (current === 0n || amountIn <= 0n || amountOut <= 0n) {\n return current;\n }\n const end = zeroForOne\n ? (amountOut * Q192) / (amountIn * current)\n : (amountIn * Q192) / (amountOut * current);\n if (zeroForOne) {\n return end < current ? end : current;\n }\n return end > current ? end : current;\n}\n\n/**\n * Slippage bound as a sqrt price limit: the pool price may move at most\n * `slippageBps` beyond `current` (pass the expected end price for exact-input\n * swaps, so the trade's own quoted impact is not counted against the budget)\n * before the swap stops filling.\n */\nexport function sqrtPriceLimit({\n current,\n zeroForOne,\n slippageBps,\n}: {\n current: bigint;\n zeroForOne: boolean;\n slippageBps: number;\n}): bigint {\n if (\n !Number.isInteger(slippageBps) ||\n slippageBps < 0 ||\n slippageBps >= 10_000\n ) {\n throw new Error(\n `slippageBps must be an integer in [0, 10000), got ${slippageBps}`\n );\n }\n const factor = BigInt(\n zeroForOne ? 10_000 - slippageBps : 10_000 + slippageBps\n );\n const multiplier = bigintSqrt((factor * 10n ** 18n) / 10_000n);\n const limit = (current * multiplier) / 10n ** 9n;\n return zeroForOne\n ? limit > MIN_SQRT_PRICE\n ? limit\n : MIN_SQRT_PRICE\n : limit < MAX_SQRT_PRICE\n ? limit\n : MAX_SQRT_PRICE;\n}\n","import {\n type ReadContract,\n type Address,\n type Drift,\n type ReadWriteContract,\n type ReadWriteAdapter,\n type HexString,\n createDrift,\n} from \"@delvtech/drift\";\nimport { FlaunchZapAbi } from \"../abi/FlaunchZap\";\nimport { parseUnits, zeroAddress, zeroHash } from \"viem\";\nimport { encodeAbiParameters } from \"viem\";\nimport { generateTokenUri } from \"../helpers/ipfs\";\nimport { referrerHookData } from \"../utils/swap\";\nimport { IPFSParams } from \"../types\";\nimport { AddressFeeSplitManagerAddress } from \"../addresses\";\n\nexport type FlaunchZapABI = typeof FlaunchZapAbi;\n\nexport interface FlaunchParams {\n name: string;\n symbol: string;\n tokenUri: string;\n /** Percent of supply (0-95) sold at the fixed fair launch price first. 0 for no fair launch. */\n fairLaunchPercent: number;\n /** Fair launch window in seconds (0 when fairLaunchPercent is 0). */\n fairLaunchDuration: number;\n /** Initial market cap in whole USD; $10,000 is the on-chain minimum and currently fee-free. */\n initialMarketCapUSD: number;\n /** Receives the Flaunch NFT (the revenue claim) and the creator revenue. */\n creator: Address;\n /** Creator vs floor-bid split of the creator share, 0-100 (the app defaults to 90). */\n creatorFeeAllocationPercent: number;\n /** 0 (or omit) to launch now, or a start timestamp within 30 days. */\n flaunchAt?: bigint;\n /** Coins the creator buys at the launch price in the same transaction. */\n premineAmount?: bigint;\n /** Referrer credited on the premine swap fee (only relevant with premineAmount). */\n premineReferrer?: Address;\n treasuryManagerParams?: {\n manager?: Address;\n /** Permissions contract for a newly deployed manager; zero address = open. */\n permissions?: Address;\n initializeData?: HexString;\n depositData?: HexString;\n };\n /** Restrict the fair launch to a Merkle whitelist (zero root = open launch). */\n whitelistParams?: {\n merkleRoot: HexString;\n merkleIPFSHash: string;\n maxTokens: bigint;\n };\n /** Reserve part of the supply for a launch airdrop (zero values = none). */\n airdropParams?: {\n airdropIndex: bigint;\n airdropAmount: bigint;\n airdropEndTime: bigint;\n merkleRoot: HexString;\n merkleIPFSHash: string;\n };\n}\n\nexport interface FlaunchIPFSParams\n extends Omit<FlaunchParams, \"tokenUri\">,\n IPFSParams {}\n\nexport interface FlaunchWithSplitManagerParams\n extends Omit<FlaunchParams, \"treasuryManagerParams\"> {\n /**\n * Other recipients and their percentages (0-100, fractional allowed, 5\n * decimal places of precision). The creator automatically receives the exact\n * remainder to 100%. A recipient can be an X-handle escrow address\n * (ReadXHandleClaims.escrowAddress) to pay a handle that has not claimed yet.\n */\n splitReceivers: {\n address: Address;\n percent: number;\n }[];\n}\n\nexport interface FlaunchWithSplitManagerIPFSParams\n extends Omit<FlaunchWithSplitManagerParams, \"tokenUri\">,\n IPFSParams {}\n\n/**\n * Base client for interacting with the FlaunchZap contract in read-only mode.\n * The zap is the one-transaction launch entry point: token, Uniswap v4 pool,\n * locked liquidity, fair launch, and the creator revenue stream.\n */\nexport class ReadFlaunchZap {\n drift: Drift;\n chainId: number;\n public readonly contract: ReadContract<FlaunchZapABI>;\n public readonly TOTAL_SUPPLY = 100n * 10n ** 27n; // 100 Billion tokens in wei\n\n constructor(chainId: number, address: Address, drift: Drift = createDrift()) {\n this.chainId = chainId;\n this.drift = drift;\n if (!address) {\n throw new Error(\"Address is required\");\n }\n this.contract = drift.contract({\n abi: FlaunchZapAbi,\n address,\n });\n }\n\n /**\n * The msg.value required to flaunch: covers the premine purchase when there\n * is one, plus the flaunch fee for market caps at or above the on-chain\n * threshold. On Arc msg.value is native USDC at 18 decimals. Always send\n * exactly this; sending less reverts with InsufficientFlaunchFee.\n */\n valueRequiredToFlaunch(params: {\n premineAmount: bigint;\n initialPriceParams: HexString;\n slippagePercent?: number;\n }) {\n const slippagePercent = params.slippagePercent ?? 0;\n if (\n !Number.isFinite(slippagePercent) ||\n slippagePercent < 0 ||\n slippagePercent > 100\n ) {\n throw new Error(\n `slippagePercent must be between 0 and 100, got ${slippagePercent}`\n );\n }\n return this.contract.read(\"calculateFee\", {\n _premineAmount: params.premineAmount ?? 0n,\n _slippage: BigInt(Math.round(slippagePercent * 100)),\n _initialPriceParams: params.initialPriceParams,\n });\n }\n}\n\n/**\n * Extended client for interacting with the FlaunchZap contract with write capabilities\n */\nexport class ReadWriteFlaunchZap extends ReadFlaunchZap {\n declare contract: ReadWriteContract<FlaunchZapABI>;\n\n constructor(\n chainId: number,\n address: Address,\n drift: Drift<ReadWriteAdapter> = createDrift()\n ) {\n super(chainId, address, drift);\n }\n\n /**\n * Flaunches a new token: creates the coin, its pool, locked liquidity, the\n * fair launch (if any), and the creator revenue stream in one transaction\n * @param params - Parameters for the flaunch\n * @returns Transaction response for the flaunch creation\n */\n async flaunch(params: FlaunchParams) {\n if (params.fairLaunchPercent < 0 || params.fairLaunchPercent > 95) {\n throw new Error(\"fairLaunchPercent must be between 0 and 95\");\n }\n if (\n !Number.isFinite(params.creatorFeeAllocationPercent) ||\n params.creatorFeeAllocationPercent < 0 ||\n params.creatorFeeAllocationPercent > 100\n ) {\n throw new Error(\n `creatorFeeAllocationPercent must be between 0 and 100, got ${params.creatorFeeAllocationPercent}`\n );\n }\n if (params.fairLaunchPercent > 0 && params.fairLaunchDuration <= 0) {\n throw new Error(\n \"fairLaunchDuration (seconds) is required when fairLaunchPercent > 0\"\n );\n }\n\n const initialMCapInUSDCWei = parseUnits(\n params.initialMarketCapUSD.toString(),\n 6\n );\n const initialPriceParams = encodeAbiParameters(\n [\n {\n type: \"uint256\",\n },\n ],\n [initialMCapInUSDCWei]\n );\n\n const fairLaunchInBps = BigInt(Math.round(params.fairLaunchPercent * 100));\n const creatorFeeAllocationInBps = Math.round(\n params.creatorFeeAllocationPercent * 100\n );\n\n const value = await this.valueRequiredToFlaunch({\n premineAmount: params.premineAmount ?? 0n,\n initialPriceParams,\n slippagePercent: params.premineAmount ? 5 : 0,\n });\n\n const treasuryManagerParams = {\n manager: params.treasuryManagerParams?.manager ?? zeroAddress,\n permissions: params.treasuryManagerParams?.permissions ?? zeroAddress,\n initializeData: params.treasuryManagerParams?.initializeData ?? \"0x\",\n depositData: params.treasuryManagerParams?.depositData ?? \"0x\",\n };\n\n return this.contract.write(\n \"flaunch\",\n {\n _flaunchParams: {\n name: params.name,\n symbol: params.symbol,\n tokenUri: params.tokenUri,\n initialTokenFairLaunch:\n (this.TOTAL_SUPPLY * fairLaunchInBps) / 10_000n,\n fairLaunchDuration: BigInt(params.fairLaunchDuration),\n premineAmount: params.premineAmount ?? 0n,\n creator: params.creator,\n creatorFeeAllocation: creatorFeeAllocationInBps,\n flaunchAt: params.flaunchAt ?? 0n,\n initialPriceParams,\n feeCalculatorParams: \"0x\",\n },\n _trustedFeeSigner: zeroAddress,\n _premineSwapHookData: referrerHookData(params.premineReferrer),\n _treasuryManagerParams: treasuryManagerParams,\n _whitelistParams: params.whitelistParams ?? {\n merkleRoot: zeroHash,\n merkleIPFSHash: \"\",\n maxTokens: 0n,\n },\n _airdropParams: params.airdropParams ?? {\n airdropIndex: 0n,\n airdropAmount: 0n,\n airdropEndTime: 0n,\n merkleRoot: zeroHash,\n merkleIPFSHash: \"\",\n },\n },\n {\n value,\n }\n );\n }\n\n /**\n * Flaunches a new token, first pinning the image + metadata through the\n * ubi.fun API to produce the tokenUri. To host the metadata yourself, pin\n * it however you like and call `flaunch({ tokenUri })` instead.\n */\n async flaunchIPFS(params: FlaunchIPFSParams) {\n const tokenUri = await generateTokenUri(params.name, params.symbol, {\n chainId: this.chainId,\n metadata: params.metadata,\n });\n\n return this.flaunch({\n ...params,\n tokenUri,\n });\n }\n\n /**\n * Flaunches a new token that splits the creator revenue between the creator\n * and a list of recipients through the approved AddressFeeSplitManager.\n * Shares are fixed at launch (5-decimal precision); the revenue NFT is\n * deposited into the manager escrow rather than staying in the creator's\n * wallet.\n *\n * Same layout the app uses: creatorShare/ownerShare are 0 and every payee is\n * a recipient row (the manager requires recipient shares to total exactly\n * 100%); the creator's row is the exact remainder after the listed\n * receivers, so rounding can never brick the launch.\n * @returns Transaction response for the flaunch creation\n */\n async flaunchWithSplitManager(params: FlaunchWithSplitManagerParams) {\n const VALID_SHARE_TOTAL = 100_00000n; // 100% at 5 decimals\n const toShare = (percent: number) => BigInt(Math.round(percent * 100000));\n\n const receiverShares = params.splitReceivers.map((receiver) => {\n if (\n !Number.isFinite(receiver.percent) ||\n receiver.percent <= 0 ||\n receiver.percent >= 100\n ) {\n throw new Error(\n `splitReceiver percent must be in (0, 100), got ${receiver.percent} for ${receiver.address}`\n );\n }\n return {\n recipient: receiver.address,\n share: toShare(receiver.percent),\n };\n });\n\n const totalReceiverShares = receiverShares.reduce(\n (acc, curr) => acc + curr.share,\n 0n\n );\n\n if (totalReceiverShares >= VALID_SHARE_TOTAL) {\n throw new Error(\n \"splitReceivers total 100% or more; the creator must keep a share\"\n );\n }\n\n const recipientShares = [\n // The creator receives the exact remainder to 100%.\n {\n recipient: params.creator,\n share: VALID_SHARE_TOTAL - totalReceiverShares,\n },\n ...receiverShares,\n ];\n\n const initializeData = encodeAbiParameters(\n [\n {\n type: \"tuple\",\n name: \"params\",\n components: [\n { type: \"uint256\", name: \"creatorShare\" },\n { type: \"uint256\", name: \"ownerShare\" },\n {\n type: \"tuple[]\",\n name: \"recipientShares\",\n components: [\n { type: \"address\", name: \"recipient\" },\n { type: \"uint256\", name: \"share\" },\n ],\n },\n ],\n },\n ],\n [\n {\n creatorShare: 0n,\n ownerShare: 0n,\n recipientShares,\n },\n ]\n );\n\n return this.flaunch({\n ...params,\n treasuryManagerParams: {\n manager: AddressFeeSplitManagerAddress[this.chainId],\n initializeData,\n depositData: \"0x\",\n },\n });\n }\n\n /**\n * Flaunches a new token that splits the creator fees to the creator and a\n * list of recipients, pinning the token metadata through the ubi.fun API\n * first. To host the metadata yourself, pin it however you like and call\n * `flaunchWithSplitManager({ tokenUri })` instead.\n * @returns Promise resolving to the transaction response for the flaunch creation\n */\n async flaunchIPFSWithSplitManager(params: FlaunchWithSplitManagerIPFSParams) {\n const tokenUri = await generateTokenUri(params.name, params.symbol, {\n chainId: this.chainId,\n metadata: params.metadata,\n });\n\n return this.flaunchWithSplitManager({\n ...params,\n tokenUri,\n });\n }\n}\n","// Generated from Flaunch (ERC721 revenue stream).\n// Source artifact: Flaunch.sol/Flaunch.json (FOUNDRY_PROFILE=arc forge build). Do not hand-edit;\n// regenerate from the contracts repo when the deployed bytecode changes.\nexport const FlaunchAbi = [\n {\n \"type\": \"constructor\",\n \"inputs\": [\n {\n \"name\": \"_memecoinImplementation\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_baseURI\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"MAX_CREATOR_ALLOCATION\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"MAX_FAIR_LAUNCH_TOKENS\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"MAX_SCHEDULE_DURATION\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"approve\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"id\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"payable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"balanceOf\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"result\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"baseURI\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"burn\",\n \"inputs\": [\n {\n \"name\": \"_tokenId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"cancelOwnershipHandover\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"payable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"completeOwnershipHandover\",\n \"inputs\": [\n {\n \"name\": \"pendingOwner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"payable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"flaunch\",\n \"inputs\": [\n {\n \"name\": \"_params\",\n \"type\": \"tuple\",\n \"internalType\": \"struct PositionManager.FlaunchParams\",\n \"components\": [\n {\n \"name\": \"name\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"symbol\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"tokenUri\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"initialTokenFairLaunch\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"fairLaunchDuration\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"premineAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"creator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"creatorFeeAllocation\",\n \"type\": \"uint24\",\n \"internalType\": \"uint24\"\n },\n {\n \"name\": \"flaunchAt\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"initialPriceParams\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"feeCalculatorParams\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ]\n }\n ],\n \"outputs\": [\n {\n \"name\": \"memecoin_\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"memecoinTreasury_\",\n \"type\": \"address\",\n \"internalType\": \"address payable\"\n },\n {\n \"name\": \"tokenId_\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getApproved\",\n \"inputs\": [\n {\n \"name\": \"id\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"result\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"initialize\",\n \"inputs\": [\n {\n \"name\": \"_positionManager\",\n \"type\": \"address\",\n \"internalType\": \"contract PositionManager\"\n },\n {\n \"name\": \"_memecoinTreasuryImplementation\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"isApprovedForAll\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"result\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"memecoin\",\n \"inputs\": [\n {\n \"name\": \"_tokenId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"memecoinImplementation\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"memecoinTreasury\",\n \"inputs\": [\n {\n \"name\": \"_tokenId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address payable\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"memecoinTreasuryImplementation\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"name\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"nextTokenId\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"owner\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"result\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"ownerOf\",\n \"inputs\": [\n {\n \"name\": \"id\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"result\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"ownershipHandoverExpiresAt\",\n \"inputs\": [\n {\n \"name\": \"pendingOwner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"result\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"poolId\",\n \"inputs\": [\n {\n \"name\": \"_tokenId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"PoolId\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"positionManager\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"contract PositionManager\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"renounceOwnership\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"payable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"requestOwnershipHandover\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"payable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"safeTransferFrom\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"to\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"id\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"payable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"safeTransferFrom\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"to\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"id\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"data\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"payable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setApprovalForAll\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"isApproved\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setBaseURI\",\n \"inputs\": [\n {\n \"name\": \"_baseURI\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setMemecoinImplementation\",\n \"inputs\": [\n {\n \"name\": \"_memecoinImplementation\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setMemecoinMetadata\",\n \"inputs\": [\n {\n \"name\": \"_memecoin\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"name_\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"symbol_\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setMemecoinTreasuryImplementation\",\n \"inputs\": [\n {\n \"name\": \"_memecoinTreasuryImplementation\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"supportsInterface\",\n \"inputs\": [\n {\n \"name\": \"interfaceId\",\n \"type\": \"bytes4\",\n \"internalType\": \"bytes4\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"result\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"symbol\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"tokenId\",\n \"inputs\": [\n {\n \"name\": \"_memecoin\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"_tokenId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"tokenURI\",\n \"inputs\": [\n {\n \"name\": \"_tokenId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transferFrom\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"to\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"id\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"payable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transferOwnership\",\n \"inputs\": [\n {\n \"name\": \"newOwner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"payable\"\n },\n {\n \"type\": \"event\",\n \"name\": \"Approval\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"id\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"ApprovalForAll\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"isApproved\",\n \"type\": \"bool\",\n \"indexed\": false,\n \"internalType\": \"bool\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"BaseURIUpdated\",\n \"inputs\": [\n {\n \"name\": \"_newBaseURI\",\n \"type\": \"string\",\n \"indexed\": false,\n \"internalType\": \"string\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"Initialized\",\n \"inputs\": [\n {\n \"name\": \"version\",\n \"type\": \"uint64\",\n \"indexed\": false,\n \"internalType\": \"uint64\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"MemecoinImplementationUpdated\",\n \"inputs\": [\n {\n \"name\": \"_newImplementation\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"MemecoinTreasuryImplementationUpdated\",\n \"inputs\": [\n {\n \"name\": \"_newImplementation\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OwnershipHandoverCanceled\",\n \"inputs\": [\n {\n \"name\": \"pendingOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OwnershipHandoverRequested\",\n \"inputs\": [\n {\n \"name\": \"pendingOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OwnershipTransferred\",\n \"inputs\": [\n {\n \"name\": \"oldOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"newOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"Transfer\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"to\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"id\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"AccountBalanceOverflow\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"AlreadyInitialized\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"BalanceQueryForZeroAddress\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"CallerIsNotPositionManager\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"CreatorFeeAllocationInvalid\",\n \"inputs\": [\n {\n \"name\": \"_allocation\",\n \"type\": \"uint24\",\n \"internalType\": \"uint24\"\n },\n {\n \"name\": \"_maxAllocation\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidFlaunchSchedule\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidInitialSupply\",\n \"inputs\": [\n {\n \"name\": \"_initialSupply\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidInitialization\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NewOwnerIsZeroAddress\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NoHandoverRequest\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotInitializing\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotOwnerNorApproved\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"PremineExceedsInitialAmount\",\n \"inputs\": [\n {\n \"name\": \"_buyAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"_initialSupply\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"TokenAlreadyExists\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TokenDoesNotExist\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TransferFromIncorrectOwner\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TransferToNonERC721ReceiverImplementer\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TransferToZeroAddress\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"Unauthorized\",\n \"inputs\": []\n }\n] as const;\n","import {\n type ReadContract,\n type Address,\n type Drift,\n type EventLog,\n type ReadWriteContract,\n type ReadWriteAdapter,\n type HexString,\n createDrift,\n} from \"@delvtech/drift\";\nimport { FlaunchAbi } from \"../abi/Flaunch\";\n\nexport type FlaunchABI = typeof FlaunchAbi;\n\n/**\n * Client for interacting with the Flaunch V1 contract in read-only mode\n * Provides methods to query token IDs and metadata URIs\n */\nexport class ReadFlaunch {\n public readonly contract: ReadContract<FlaunchABI>;\n\n /**\n * Creates a new ReadFlaunch instance\n * @param address - The address of the Flaunch contract\n * @param drift - Optional drift instance for contract interactions (creates new instance if not provided)\n * @throws Error if address is not provided\n */\n constructor(address: Address, drift: Drift = createDrift()) {\n if (!address) {\n throw new Error(\"Address is required\");\n }\n\n this.contract = drift.contract({\n abi: FlaunchAbi,\n address,\n });\n }\n\n /**\n * Gets the token ID associated with a memecoin\n * @param coinAddress - The address of the memecoin\n * @returns Promise<bigint> - The token ID\n */\n tokenId(coinAddress: Address) {\n return this.contract.read(\"tokenId\", {\n _memecoin: coinAddress,\n });\n }\n\n /**\n * Gets the metadata URI for a token\n * @param tokenId - The ID of the token\n * @returns Promise<string> - The token's metadata URI\n */\n tokenURI(tokenId: bigint) {\n return this.contract.read(\"tokenURI\", {\n _tokenId: tokenId,\n });\n }\n\n /**\n * Gets the memecoin address for a given token ID\n * @param tokenId - The ID of the token\n * @returns Promise<Address> - The address of the memecoin\n */\n memecoin(tokenId: bigint) {\n return this.contract.read(\"memecoin\", {\n _tokenId: tokenId,\n });\n }\n}\n","// Generated from Memecoin (ERC20).\n// Source artifact: Memecoin.sol/Memecoin.json (FOUNDRY_PROFILE=arc forge build). Do not hand-edit;\n// regenerate from the contracts repo when the deployed bytecode changes.\nexport const MemecoinAbi = [\n {\n \"type\": \"constructor\",\n \"inputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"CLOCK_MODE\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"DOMAIN_SEPARATOR\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"allowance\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"spender\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"approve\",\n \"inputs\": [\n {\n \"name\": \"spender\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"balanceOf\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"burn\",\n \"inputs\": [\n {\n \"name\": \"value\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"burnFrom\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"value\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"checkpoints\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"pos\",\n \"type\": \"uint32\",\n \"internalType\": \"uint32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"tuple\",\n \"internalType\": \"struct ERC20VotesUpgradeable.Checkpoint\",\n \"components\": [\n {\n \"name\": \"fromBlock\",\n \"type\": \"uint32\",\n \"internalType\": \"uint32\"\n },\n {\n \"name\": \"votes\",\n \"type\": \"uint224\",\n \"internalType\": \"uint224\"\n }\n ]\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"clock\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"creator\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"creator_\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"decimals\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint8\",\n \"internalType\": \"uint8\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"decreaseAllowance\",\n \"inputs\": [\n {\n \"name\": \"spender\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"subtractedValue\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"delegate\",\n \"inputs\": [\n {\n \"name\": \"delegatee\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"delegateBySig\",\n \"inputs\": [\n {\n \"name\": \"delegatee\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"nonce\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"expiry\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"v\",\n \"type\": \"uint8\",\n \"internalType\": \"uint8\"\n },\n {\n \"name\": \"r\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"s\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"delegates\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"eip712Domain\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"fields\",\n \"type\": \"bytes1\",\n \"internalType\": \"bytes1\"\n },\n {\n \"name\": \"name\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"version\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"chainId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"verifyingContract\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"salt\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"extensions\",\n \"type\": \"uint256[]\",\n \"internalType\": \"uint256[]\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"flaunch\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"contract Flaunch\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getPastTotalSupply\",\n \"inputs\": [\n {\n \"name\": \"timepoint\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getPastVotes\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"timepoint\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getVotes\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"increaseAllowance\",\n \"inputs\": [\n {\n \"name\": \"spender\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"addedValue\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"initialize\",\n \"inputs\": [\n {\n \"name\": \"name_\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"symbol_\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"tokenUri_\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"mint\",\n \"inputs\": [\n {\n \"name\": \"_to\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"name\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"nonces\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"numCheckpoints\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint32\",\n \"internalType\": \"uint32\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"permit\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"spender\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"value\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"deadline\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"v\",\n \"type\": \"uint8\",\n \"internalType\": \"uint8\"\n },\n {\n \"name\": \"r\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"s\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setMetadata\",\n \"inputs\": [\n {\n \"name\": \"name_\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"symbol_\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"supportsInterface\",\n \"inputs\": [\n {\n \"name\": \"_interfaceId\",\n \"type\": \"bytes4\",\n \"internalType\": \"bytes4\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"symbol\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"tokenURI\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"totalSupply\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transfer\",\n \"inputs\": [\n {\n \"name\": \"to\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transferFrom\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"to\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"treasury\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address payable\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"version\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"event\",\n \"name\": \"Approval\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"spender\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"value\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"DelegateChanged\",\n \"inputs\": [\n {\n \"name\": \"delegator\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"fromDelegate\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"toDelegate\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"DelegateVotesChanged\",\n \"inputs\": [\n {\n \"name\": \"delegate\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"previousBalance\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"newBalance\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"EIP712DomainChanged\",\n \"inputs\": [],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"Initialized\",\n \"inputs\": [\n {\n \"name\": \"version\",\n \"type\": \"uint8\",\n \"indexed\": false,\n \"internalType\": \"uint8\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"MetadataUpdated\",\n \"inputs\": [\n {\n \"name\": \"_name\",\n \"type\": \"string\",\n \"indexed\": false,\n \"internalType\": \"string\"\n },\n {\n \"name\": \"_symbol\",\n \"type\": \"string\",\n \"indexed\": false,\n \"internalType\": \"string\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"Transfer\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"to\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"value\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"CallerNotFlaunch\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MintAddressIsZero\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"Permit2AllowanceIsFixedAtInfinity\",\n \"inputs\": []\n }\n] as const;\n","import {\n type ReadContract,\n type Address,\n type Drift,\n type EventLog,\n type ReadWriteContract,\n type ReadWriteAdapter,\n type HexString,\n createDrift,\n} from \"@delvtech/drift\";\nimport { MemecoinAbi } from \"../abi/Memecoin\";\n\nexport type MemecoinABI = typeof MemecoinAbi;\n\n/**\n * Client for interacting with Memecoin (ERC20) contracts in read-only mode\n * Provides methods to query basic token information and balances\n */\nexport class ReadMemecoin {\n public readonly contract: ReadContract<MemecoinABI>;\n\n /**\n * Creates a new ReadMemecoin instance\n * @param address - The address of the Memecoin contract\n * @param drift - Optional drift instance for contract interactions (creates new instance if not provided)\n * @throws Error if address is not provided\n */\n constructor(address: Address, drift: Drift = createDrift()) {\n if (!address) {\n throw new Error(\"Address is required\");\n }\n\n this.contract = drift.contract({\n abi: MemecoinAbi,\n address,\n });\n }\n\n /**\n * Gets the name of the token\n * @returns Promise<string> - The name of the token\n */\n name() {\n return this.contract.read(\"name\", {});\n }\n\n /**\n * Gets the symbol of the token\n * @returns Promise<string> - The symbol of the token\n */\n symbol() {\n return this.contract.read(\"symbol\");\n }\n\n /**\n * Gets the token URI containing metadata\n * @returns Promise<string> - The token URI\n */\n tokenURI() {\n return this.contract.read(\"tokenURI\");\n }\n\n /**\n * Gets the decimals of the token\n * @returns Promise<number> - The decimals of the token\n */\n decimals() {\n return this.contract.read(\"decimals\");\n }\n\n /**\n * Gets the total supply of the token\n * @returns Promise<bigint> - The total supply\n */\n totalSupply() {\n return this.contract.read(\"totalSupply\");\n }\n\n /**\n * Gets the token balance of a specific user\n * @param user - The address of the user to check\n * @returns Promise<bigint> - The token balance\n */\n balanceOf(user: Address) {\n return this.contract.read(\"balanceOf\", {\n account: user,\n });\n }\n\n /**\n * Gets the allowance of an ERC20 token to a spender\n * @param owner - The address of the owner to check\n * @param spender - The address of the spender to check\n * @returns Promise<bigint> - The allowance of the coin to the spender\n */\n allowance(owner: Address, spender: Address) {\n return this.contract.read(\"allowance\", {\n owner,\n spender,\n });\n }\n}\n\nexport class ReadWriteMemecoin extends ReadMemecoin {\n declare contract: ReadWriteContract<MemecoinABI>;\n\n constructor(address: Address, drift: Drift = createDrift()) {\n super(address, drift);\n }\n\n /**\n * Approves an amount of the token to be spent by another address\n * @param spender - The address of the spender to approve\n * @param amount - The amount of the token to approve\n * @returns Promise<void> - The transaction receipt\n */\n approve(spender: Address, amount: bigint) {\n return this.contract.write(\"approve\", {\n spender,\n amount,\n });\n }\n}\n","// Generated from Uniswap V4Quoter.\n// Source artifact: V4Quoter.sol/V4Quoter.json (FOUNDRY_PROFILE=arc forge build). Do not hand-edit;\n// regenerate from the contracts repo when the deployed bytecode changes.\nexport const QuoterAbi = [\n {\n \"type\": \"constructor\",\n \"inputs\": [\n {\n \"name\": \"_poolManager\",\n \"type\": \"address\",\n \"internalType\": \"contract IPoolManager\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"_quoteExactInput\",\n \"inputs\": [\n {\n \"name\": \"params\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IV4Quoter.QuoteExactParams\",\n \"components\": [\n {\n \"name\": \"exactCurrency\",\n \"type\": \"address\",\n \"internalType\": \"Currency\"\n },\n {\n \"name\": \"path\",\n \"type\": \"tuple[]\",\n \"internalType\": \"struct PathKey[]\",\n \"components\": [\n {\n \"name\": \"intermediateCurrency\",\n \"type\": \"address\",\n \"internalType\": \"Currency\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"uint24\",\n \"internalType\": \"uint24\"\n },\n {\n \"name\": \"tickSpacing\",\n \"type\": \"int24\",\n \"internalType\": \"int24\"\n },\n {\n \"name\": \"hooks\",\n \"type\": \"address\",\n \"internalType\": \"contract IHooks\"\n },\n {\n \"name\": \"hookData\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ]\n },\n {\n \"name\": \"exactAmount\",\n \"type\": \"uint128\",\n \"internalType\": \"uint128\"\n }\n ]\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"_quoteExactInputSingle\",\n \"inputs\": [\n {\n \"name\": \"params\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IV4Quoter.QuoteExactSingleParams\",\n \"components\": [\n {\n \"name\": \"poolKey\",\n \"type\": \"tuple\",\n \"internalType\": \"struct PoolKey\",\n \"components\": [\n {\n \"name\": \"currency0\",\n \"type\": \"address\",\n \"internalType\": \"Currency\"\n },\n {\n \"name\": \"currency1\",\n \"type\": \"address\",\n \"internalType\": \"Currency\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"uint24\",\n \"internalType\": \"uint24\"\n },\n {\n \"name\": \"tickSpacing\",\n \"type\": \"int24\",\n \"internalType\": \"int24\"\n },\n {\n \"name\": \"hooks\",\n \"type\": \"address\",\n \"internalType\": \"contract IHooks\"\n }\n ]\n },\n {\n \"name\": \"zeroForOne\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"exactAmount\",\n \"type\": \"uint128\",\n \"internalType\": \"uint128\"\n },\n {\n \"name\": \"hookData\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ]\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"_quoteExactOutput\",\n \"inputs\": [\n {\n \"name\": \"params\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IV4Quoter.QuoteExactParams\",\n \"components\": [\n {\n \"name\": \"exactCurrency\",\n \"type\": \"address\",\n \"internalType\": \"Currency\"\n },\n {\n \"name\": \"path\",\n \"type\": \"tuple[]\",\n \"internalType\": \"struct PathKey[]\",\n \"components\": [\n {\n \"name\": \"intermediateCurrency\",\n \"type\": \"address\",\n \"internalType\": \"Currency\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"uint24\",\n \"internalType\": \"uint24\"\n },\n {\n \"name\": \"tickSpacing\",\n \"type\": \"int24\",\n \"internalType\": \"int24\"\n },\n {\n \"name\": \"hooks\",\n \"type\": \"address\",\n \"internalType\": \"contract IHooks\"\n },\n {\n \"name\": \"hookData\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ]\n },\n {\n \"name\": \"exactAmount\",\n \"type\": \"uint128\",\n \"internalType\": \"uint128\"\n }\n ]\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"_quoteExactOutputSingle\",\n \"inputs\": [\n {\n \"name\": \"params\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IV4Quoter.QuoteExactSingleParams\",\n \"components\": [\n {\n \"name\": \"poolKey\",\n \"type\": \"tuple\",\n \"internalType\": \"struct PoolKey\",\n \"components\": [\n {\n \"name\": \"currency0\",\n \"type\": \"address\",\n \"internalType\": \"Currency\"\n },\n {\n \"name\": \"currency1\",\n \"type\": \"address\",\n \"internalType\": \"Currency\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"uint24\",\n \"internalType\": \"uint24\"\n },\n {\n \"name\": \"tickSpacing\",\n \"type\": \"int24\",\n \"internalType\": \"int24\"\n },\n {\n \"name\": \"hooks\",\n \"type\": \"address\",\n \"internalType\": \"contract IHooks\"\n }\n ]\n },\n {\n \"name\": \"zeroForOne\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"exactAmount\",\n \"type\": \"uint128\",\n \"internalType\": \"uint128\"\n },\n {\n \"name\": \"hookData\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ]\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"poolManager\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"contract IPoolManager\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"quoteExactInput\",\n \"inputs\": [\n {\n \"name\": \"params\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IV4Quoter.QuoteExactParams\",\n \"components\": [\n {\n \"name\": \"exactCurrency\",\n \"type\": \"address\",\n \"internalType\": \"Currency\"\n },\n {\n \"name\": \"path\",\n \"type\": \"tuple[]\",\n \"internalType\": \"struct PathKey[]\",\n \"components\": [\n {\n \"name\": \"intermediateCurrency\",\n \"type\": \"address\",\n \"internalType\": \"Currency\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"uint24\",\n \"internalType\": \"uint24\"\n },\n {\n \"name\": \"tickSpacing\",\n \"type\": \"int24\",\n \"internalType\": \"int24\"\n },\n {\n \"name\": \"hooks\",\n \"type\": \"address\",\n \"internalType\": \"contract IHooks\"\n },\n {\n \"name\": \"hookData\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ]\n },\n {\n \"name\": \"exactAmount\",\n \"type\": \"uint128\",\n \"internalType\": \"uint128\"\n }\n ]\n }\n ],\n \"outputs\": [\n {\n \"name\": \"amountOut\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"gasEstimate\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"quoteExactInputSingle\",\n \"inputs\": [\n {\n \"name\": \"params\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IV4Quoter.QuoteExactSingleParams\",\n \"components\": [\n {\n \"name\": \"poolKey\",\n \"type\": \"tuple\",\n \"internalType\": \"struct PoolKey\",\n \"components\": [\n {\n \"name\": \"currency0\",\n \"type\": \"address\",\n \"internalType\": \"Currency\"\n },\n {\n \"name\": \"currency1\",\n \"type\": \"address\",\n \"internalType\": \"Currency\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"uint24\",\n \"internalType\": \"uint24\"\n },\n {\n \"name\": \"tickSpacing\",\n \"type\": \"int24\",\n \"internalType\": \"int24\"\n },\n {\n \"name\": \"hooks\",\n \"type\": \"address\",\n \"internalType\": \"contract IHooks\"\n }\n ]\n },\n {\n \"name\": \"zeroForOne\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"exactAmount\",\n \"type\": \"uint128\",\n \"internalType\": \"uint128\"\n },\n {\n \"name\": \"hookData\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ]\n }\n ],\n \"outputs\": [\n {\n \"name\": \"amountOut\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"gasEstimate\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"quoteExactOutput\",\n \"inputs\": [\n {\n \"name\": \"params\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IV4Quoter.QuoteExactParams\",\n \"components\": [\n {\n \"name\": \"exactCurrency\",\n \"type\": \"address\",\n \"internalType\": \"Currency\"\n },\n {\n \"name\": \"path\",\n \"type\": \"tuple[]\",\n \"internalType\": \"struct PathKey[]\",\n \"components\": [\n {\n \"name\": \"intermediateCurrency\",\n \"type\": \"address\",\n \"internalType\": \"Currency\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"uint24\",\n \"internalType\": \"uint24\"\n },\n {\n \"name\": \"tickSpacing\",\n \"type\": \"int24\",\n \"internalType\": \"int24\"\n },\n {\n \"name\": \"hooks\",\n \"type\": \"address\",\n \"internalType\": \"contract IHooks\"\n },\n {\n \"name\": \"hookData\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ]\n },\n {\n \"name\": \"exactAmount\",\n \"type\": \"uint128\",\n \"internalType\": \"uint128\"\n }\n ]\n }\n ],\n \"outputs\": [\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"gasEstimate\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"quoteExactOutputSingle\",\n \"inputs\": [\n {\n \"name\": \"params\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IV4Quoter.QuoteExactSingleParams\",\n \"components\": [\n {\n \"name\": \"poolKey\",\n \"type\": \"tuple\",\n \"internalType\": \"struct PoolKey\",\n \"components\": [\n {\n \"name\": \"currency0\",\n \"type\": \"address\",\n \"internalType\": \"Currency\"\n },\n {\n \"name\": \"currency1\",\n \"type\": \"address\",\n \"internalType\": \"Currency\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"uint24\",\n \"internalType\": \"uint24\"\n },\n {\n \"name\": \"tickSpacing\",\n \"type\": \"int24\",\n \"internalType\": \"int24\"\n },\n {\n \"name\": \"hooks\",\n \"type\": \"address\",\n \"internalType\": \"contract IHooks\"\n }\n ]\n },\n {\n \"name\": \"zeroForOne\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"exactAmount\",\n \"type\": \"uint128\",\n \"internalType\": \"uint128\"\n },\n {\n \"name\": \"hookData\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ]\n }\n ],\n \"outputs\": [\n {\n \"name\": \"amountIn\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"gasEstimate\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"unlockCallback\",\n \"inputs\": [\n {\n \"name\": \"data\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"error\",\n \"name\": \"NotEnoughLiquidity\",\n \"inputs\": [\n {\n \"name\": \"poolId\",\n \"type\": \"bytes32\",\n \"internalType\": \"PoolId\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"NotPoolManager\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotSelf\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"QuoteSwap\",\n \"inputs\": [\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"UnexpectedCallSuccess\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"UnexpectedRevertBytes\",\n \"inputs\": [\n {\n \"name\": \"revertData\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ]\n }\n] as const;\n","import {\n type ReadContract,\n type Address,\n type Drift,\n createDrift,\n} from \"@delvtech/drift\";\nimport { QuoterAbi } from \"../abi/Quoter\";\nimport { coinPoolKey, referrerHookData, swapDirection } from \"../utils/swap\";\n\nexport type QuoterABI = typeof QuoterAbi;\n\n/**\n * Client for the Uniswap V4Quoter. Every ubi.fun pool is a single hop between\n * the coin and USDC (6 decimals) with the PositionManager as the hook, so all\n * quotes are quoteExactInputSingle / quoteExactOutputSingle calls.\n *\n * Pass the SAME referrer you will swap with: the hook data changes how the fee\n * is assigned, and a quote without it will not match execution.\n */\nexport class ReadQuoter {\n chainId: number;\n public readonly contract: ReadContract<QuoterABI>;\n\n constructor(chainId: number, address: Address, drift: Drift = createDrift()) {\n this.chainId = chainId;\n if (!address) {\n throw new Error(\"Address is required\");\n }\n\n this.contract = drift.contract({\n abi: QuoterAbi,\n address,\n });\n }\n\n /**\n * Quote for buying a coin with an exact amount of USDC\n * @param coinAddress - The coin to buy\n * @param amountIn - Exact USDC to spend (6 decimals)\n * @param positionManagerAddress - The PositionManager (pool hook)\n * @param referrer - Optional referrer address, must match the swap's referrer\n * @returns Promise<bigint> - Expected coins out (18 decimals)\n */\n async getBuyQuoteExactInput({\n coinAddress,\n amountIn,\n positionManagerAddress,\n referrer,\n }: {\n coinAddress: Address;\n amountIn: bigint;\n positionManagerAddress: Address;\n referrer?: Address;\n }) {\n const res = await this.contract.simulateWrite(\"quoteExactInputSingle\", {\n params: {\n poolKey: coinPoolKey(coinAddress, positionManagerAddress),\n zeroForOne: swapDirection(\"buy\", coinAddress),\n exactAmount: amountIn,\n hookData: referrerHookData(referrer),\n },\n });\n\n return res.amountOut;\n }\n\n /**\n * Quote for selling an exact amount of a coin for USDC\n * @param coinAddress - The coin to sell\n * @param amountIn - Exact coins to sell (18 decimals)\n * @param positionManagerAddress - The PositionManager (pool hook)\n * @param referrer - Optional referrer address, must match the swap's referrer\n * @returns Promise<bigint> - Expected USDC out (6 decimals)\n */\n async getSellQuoteExactInput({\n coinAddress,\n amountIn,\n positionManagerAddress,\n referrer,\n }: {\n coinAddress: Address;\n amountIn: bigint;\n positionManagerAddress: Address;\n referrer?: Address;\n }) {\n const res = await this.contract.simulateWrite(\"quoteExactInputSingle\", {\n params: {\n poolKey: coinPoolKey(coinAddress, positionManagerAddress),\n zeroForOne: swapDirection(\"sell\", coinAddress),\n exactAmount: amountIn,\n hookData: referrerHookData(referrer),\n },\n });\n\n return res.amountOut;\n }\n\n /**\n * Quote for buying an exact amount of a coin, answering the USDC required\n * @param coinAddress - The coin to buy\n * @param coinOut - Exact coins to receive (18 decimals)\n * @param positionManagerAddress - The PositionManager (pool hook)\n * @param referrer - Optional referrer address, must match the swap's referrer\n * @returns Promise<bigint> - Required USDC in (6 decimals)\n */\n async getBuyQuoteExactOutput({\n coinAddress,\n coinOut,\n positionManagerAddress,\n referrer,\n }: {\n coinAddress: Address;\n coinOut: bigint;\n positionManagerAddress: Address;\n referrer?: Address;\n }) {\n const res = await this.contract.simulateWrite(\"quoteExactOutputSingle\", {\n params: {\n poolKey: coinPoolKey(coinAddress, positionManagerAddress),\n zeroForOne: swapDirection(\"buy\", coinAddress),\n exactAmount: coinOut,\n hookData: referrerHookData(referrer),\n },\n });\n\n return res.amountIn;\n }\n}\n","// Generated from FeeEscrow.\n// Source artifact: FeeEscrow.sol/FeeEscrow.json (FOUNDRY_PROFILE=arc forge build). Do not hand-edit;\n// regenerate from the contracts repo when the deployed bytecode changes.\nexport const FeeEscrowAbi = [\n {\n \"type\": \"constructor\",\n \"inputs\": [\n {\n \"name\": \"_nativeToken\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_indexer\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"receive\",\n \"stateMutability\": \"payable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"allocateFees\",\n \"inputs\": [\n {\n \"name\": \"_poolId\",\n \"type\": \"bytes32\",\n \"internalType\": \"PoolId\"\n },\n {\n \"name\": \"_recipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"balances\",\n \"inputs\": [\n {\n \"name\": \"_recipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"_amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"cancelOwnershipHandover\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"payable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"completeOwnershipHandover\",\n \"inputs\": [\n {\n \"name\": \"pendingOwner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"payable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"indexer\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"contract IndexerSubscriber\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"nativeToken\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"owner\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"result\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"ownershipHandoverExpiresAt\",\n \"inputs\": [\n {\n \"name\": \"pendingOwner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"result\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"renounceOwnership\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"payable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"requestOwnershipHandover\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"payable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setIndexer\",\n \"inputs\": [\n {\n \"name\": \"_indexer\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"totalFeesAllocated\",\n \"inputs\": [\n {\n \"name\": \"_poolId\",\n \"type\": \"bytes32\",\n \"internalType\": \"PoolId\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"_amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transferOwnership\",\n \"inputs\": [\n {\n \"name\": \"newOwner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"payable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"withdrawFees\",\n \"inputs\": [\n {\n \"name\": \"_recipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_unwrap\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"event\",\n \"name\": \"Deposit\",\n \"inputs\": [\n {\n \"name\": \"_poolId\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"PoolId\"\n },\n {\n \"name\": \"_payee\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_token\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_amount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OwnershipHandoverCanceled\",\n \"inputs\": [\n {\n \"name\": \"pendingOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OwnershipHandoverRequested\",\n \"inputs\": [\n {\n \"name\": \"pendingOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OwnershipTransferred\",\n \"inputs\": [\n {\n \"name\": \"oldOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"newOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"Withdrawal\",\n \"inputs\": [\n {\n \"name\": \"_sender\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_recipient\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_token\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_amount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"AlreadyInitialized\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidRecipient\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NewOwnerIsZeroAddress\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NoHandoverRequest\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"PoolIdNotIndexed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"RecipientZeroAddress\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"Unauthorized\",\n \"inputs\": []\n }\n] as const;\n","import {\n type ReadContract,\n type Address,\n type Drift,\n type ReadWriteContract,\n type ReadWriteAdapter,\n createDrift,\n} from \"@delvtech/drift\";\nimport { FeeEscrowAbi } from \"../abi/FeeEscrow\";\n\nexport type FeeEscrowABI = typeof FeeEscrowAbi;\n\n/**\n * Client for interacting with the FeeEscrow contract in read-only mode\n * Provides methods to query fee balances and withdraw fees\n */\nexport class ReadFeeEscrow {\n public readonly contract: ReadContract<FeeEscrowABI>;\n\n /**\n * Creates a new ReadFeeEscrow instance\n * @param address - The address of the FeeEscrow contract\n * @param drift - Optional drift instance for contract interactions (creates new instance if not provided)\n * @throws Error if address is not provided\n */\n constructor(address: Address, drift: Drift = createDrift()) {\n if (!address) {\n throw new Error(\"Address is required\");\n }\n\n this.contract = drift.contract({\n abi: FeeEscrowAbi,\n address,\n });\n }\n\n /**\n * Gets the claimable balance of fees for a creator\n * @param creator - The address of the creator to check\n * @returns Promise<bigint> - The claimable balance of fees\n */\n balances(creator: Address) {\n return this.contract.read(\"balances\", {\n _recipient: creator,\n });\n }\n}\n\n/**\n * Extended client for interacting with the FeeEscrow contract with write capabilities\n * Provides methods to withdraw fees\n */\nexport class ReadWriteFeeEscrow extends ReadFeeEscrow {\n declare contract: ReadWriteContract<FeeEscrowABI>;\n\n constructor(\n address: Address,\n drift: Drift<ReadWriteAdapter> = createDrift()\n ) {\n super(address, drift);\n }\n\n /**\n * Withdraws the caller's accrued fees to a recipient as USDC.\n * @dev MUST be unwrap=false on Arc: unwrap=true calls a WETH-style\n * withdraw() that does not exist on the native USDC interface and the whole\n * claim would revert. The ERC20 IS the dollar.\n * @param recipient - The address to receive the fees\n * @returns Transaction response\n */\n withdrawFees(recipient: Address) {\n return this.contract.write(\"withdrawFees\", {\n _recipient: recipient,\n _unwrap: false,\n });\n }\n}\n","// Generated from ReferralEscrow.\n// Source artifact: ReferralEscrow.sol/ReferralEscrow.json (FOUNDRY_PROFILE=arc forge build). Do not hand-edit;\n// regenerate from the contracts repo when the deployed bytecode changes.\nexport const ReferralEscrowAbi = [\n {\n \"type\": \"constructor\",\n \"inputs\": [\n {\n \"name\": \"_nativeToken\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_protocolOwner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_unwrapNativeClaims\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"receive\",\n \"stateMutability\": \"payable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"DEFAULT_ADMIN_ROLE\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"allocations\",\n \"inputs\": [\n {\n \"name\": \"_user\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_token\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"_amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"assignTokens\",\n \"inputs\": [\n {\n \"name\": \"_poolId\",\n \"type\": \"bytes32\",\n \"internalType\": \"PoolId\"\n },\n {\n \"name\": \"_user\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_token\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"cancelOwnershipHandover\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"payable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"claimTokens\",\n \"inputs\": [\n {\n \"name\": \"_tokens\",\n \"type\": \"address[]\",\n \"internalType\": \"address[]\"\n },\n {\n \"name\": \"_recipient\",\n \"type\": \"address\",\n \"internalType\": \"address payable\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"completeOwnershipHandover\",\n \"inputs\": [\n {\n \"name\": \"pendingOwner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"payable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getRoleAdmin\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"grantRole\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"hasRole\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"nativeToken\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"owner\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"result\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"ownershipHandoverExpiresAt\",\n \"inputs\": [\n {\n \"name\": \"pendingOwner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"result\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"poolSwap\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"contract PoolSwap\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"renounceOwnership\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"payable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"renounceRole\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"callerConfirmation\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"requestOwnershipHandover\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"payable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"revokeRole\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setPoolSwap\",\n \"inputs\": [\n {\n \"name\": \"_poolSwap\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"supportsInterface\",\n \"inputs\": [\n {\n \"name\": \"interfaceId\",\n \"type\": \"bytes4\",\n \"internalType\": \"bytes4\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transferOwnership\",\n \"inputs\": [\n {\n \"name\": \"newOwner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"payable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"unwrapNativeClaims\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"event\",\n \"name\": \"OwnershipHandoverCanceled\",\n \"inputs\": [\n {\n \"name\": \"pendingOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OwnershipHandoverRequested\",\n \"inputs\": [\n {\n \"name\": \"pendingOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OwnershipTransferred\",\n \"inputs\": [\n {\n \"name\": \"oldOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"newOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"RoleAdminChanged\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"previousAdminRole\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"newAdminRole\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"RoleGranted\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"sender\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"RoleRevoked\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"sender\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"TokensAssigned\",\n \"inputs\": [\n {\n \"name\": \"_poolId\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"PoolId\"\n },\n {\n \"name\": \"_user\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_token\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_amount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"TokensClaimed\",\n \"inputs\": [\n {\n \"name\": \"_user\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_recipient\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_token\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_amount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"AccessControlBadConfirmation\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"AccessControlUnauthorizedAccount\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"neededRole\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"AlreadyInitialized\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MismatchedTokensAndLimits\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NewOwnerIsZeroAddress\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NoHandoverRequest\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotPositionManager\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"Unauthorized\",\n \"inputs\": []\n }\n] as const;\n","import {\n type ReadContract,\n type Address,\n type Drift,\n type ReadWriteContract,\n type ReadWriteAdapter,\n createDrift,\n} from \"@delvtech/drift\";\nimport { ReferralEscrowAbi } from \"../abi/ReferralEscrow\";\n\nexport type ReferralEscrowABI = typeof ReferralEscrowAbi;\n\n/**\n * Client for interacting with the ReferralEscrow contract in read-only mode\n * Provides methods to query token allocations\n */\nexport class ReadReferralEscrow {\n public readonly contract: ReadContract<ReferralEscrowABI>;\n\n /**\n * Creates a new ReadReferralEscrow instance\n * @param address - The address of the ReferralEscrow contract\n * @param drift - Optional drift instance for contract interactions (creates new instance if not provided)\n * @throws Error if address is not provided\n */\n constructor(address: Address, drift: Drift = createDrift()) {\n if (!address) {\n throw new Error(\"Address is required\");\n }\n\n this.contract = drift.contract({\n abi: ReferralEscrowAbi,\n address,\n });\n }\n\n /**\n * Gets the token allocation for a specific user and token\n * @param user - The address of the user to check\n * @param token - The address of the token\n * @returns Promise<bigint> - The allocated token amount\n */\n allocations(user: Address, token: Address) {\n return this.contract.read(\"allocations\", {\n _user: user,\n _token: token,\n });\n }\n}\n\n/**\n * Extended client for interacting with the ReferralEscrow contract with write capabilities\n * Provides methods to claim tokens\n */\nexport class ReadWriteReferralEscrow extends ReadReferralEscrow {\n declare contract: ReadWriteContract<ReferralEscrowABI>;\n\n constructor(\n address: Address,\n drift: Drift<ReadWriteAdapter> = createDrift()\n ) {\n super(address, drift);\n }\n\n /**\n * Claims tokens for a recipient\n * @param tokens - Array of token addresses to claim\n * @param recipient - The address to receive the claimed tokens\n * @returns Promise<void>\n */\n claimTokens(tokens: Address[], recipient: Address) {\n return this.contract.write(\"claimTokens\", {\n _tokens: tokens,\n _recipient: recipient,\n });\n }\n}\n","// Generated from PoolSwap (referrer-aware swap router).\n// Source artifact: PoolSwap.sol/PoolSwap.json (FOUNDRY_PROFILE=arc forge build). Do not hand-edit;\n// regenerate from the contracts repo when the deployed bytecode changes.\n// NOTE: the 2-arg and hookData swap overloads are stripped so drift name-keyed\n// calls resolve unambiguously; the SDK always swaps with an explicit referrer.\nexport const PoolSwapAbi = [\n {\n \"type\": \"constructor\",\n \"inputs\": [\n {\n \"name\": \"_manager\",\n \"type\": \"address\",\n \"internalType\": \"contract IPoolManager\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"manager\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"contract IPoolManager\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"swap\",\n \"inputs\": [\n {\n \"name\": \"_key\",\n \"type\": \"tuple\",\n \"internalType\": \"struct PoolKey\",\n \"components\": [\n {\n \"name\": \"currency0\",\n \"type\": \"address\",\n \"internalType\": \"Currency\"\n },\n {\n \"name\": \"currency1\",\n \"type\": \"address\",\n \"internalType\": \"Currency\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"uint24\",\n \"internalType\": \"uint24\"\n },\n {\n \"name\": \"tickSpacing\",\n \"type\": \"int24\",\n \"internalType\": \"int24\"\n },\n {\n \"name\": \"hooks\",\n \"type\": \"address\",\n \"internalType\": \"contract IHooks\"\n }\n ]\n },\n {\n \"name\": \"_params\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IPoolManager.SwapParams\",\n \"components\": [\n {\n \"name\": \"zeroForOne\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"amountSpecified\",\n \"type\": \"int256\",\n \"internalType\": \"int256\"\n },\n {\n \"name\": \"sqrtPriceLimitX96\",\n \"type\": \"uint160\",\n \"internalType\": \"uint160\"\n }\n ]\n },\n {\n \"name\": \"_referrer\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"delta_\",\n \"type\": \"int256\",\n \"internalType\": \"BalanceDelta\"\n }\n ],\n \"stateMutability\": \"payable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"unlockCallback\",\n \"inputs\": [\n {\n \"name\": \"rawData\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n }\n] as const;\n","import {\n type ReadContract,\n type ReadWriteContract,\n type ReadWriteAdapter,\n type Address,\n type Drift,\n createDrift,\n} from \"@delvtech/drift\";\nimport { zeroAddress } from \"viem\";\nimport { PoolSwapAbi } from \"../abi/PoolSwap\";\nimport { PoolKey } from \"../types\";\n\nexport type PoolSwapABI = typeof PoolSwapAbi;\n\n/**\n * Client for the PoolSwap contract, the supported way to trade ubi.fun pools:\n * unlike a generic v4 router it forwards a referrer to the hook, which assigns\n * that address 5% of the swap fee in the ReferralEscrow.\n *\n * Approve the input token to PoolSwap before swapping: USDC for buys, the coin\n * for sells. Amounts are USDC 6 decimals on the cash side and 18 decimals on\n * the coin side.\n */\nexport class ReadPoolSwap {\n public readonly contract: ReadContract<PoolSwapABI>;\n\n constructor(address: Address, drift: Drift = createDrift()) {\n if (!address) {\n throw new Error(\"Address is required\");\n }\n\n this.contract = drift.contract({\n abi: PoolSwapAbi,\n address,\n });\n }\n}\n\nexport class ReadWritePoolSwap extends ReadPoolSwap {\n declare contract: ReadWriteContract<PoolSwapABI>;\n\n constructor(\n address: Address,\n drift: Drift<ReadWriteAdapter> = createDrift()\n ) {\n super(address, drift);\n }\n\n /**\n * Executes a swap against a ubi.fun pool\n * @param params.poolKey - The pool key (read it back with PositionManager.poolKey)\n * @param params.zeroForOne - v4 direction against the pool key ordering\n * @param params.amountSpecified - Negative for exact-in, positive for exact-out\n * @param params.sqrtPriceLimitX96 - Slippage bound on the pool price\n * @param params.referrer - Optional referrer credited with 5% of the swap fee\n * @returns Transaction response\n */\n swap(params: {\n poolKey: PoolKey;\n zeroForOne: boolean;\n amountSpecified: bigint;\n sqrtPriceLimitX96: bigint;\n referrer?: Address;\n }) {\n return this.contract.write(\"swap\", {\n _key: params.poolKey,\n _params: {\n zeroForOne: params.zeroForOne,\n amountSpecified: params.amountSpecified,\n sqrtPriceLimitX96: params.sqrtPriceLimitX96,\n },\n _referrer: params.referrer ?? zeroAddress,\n });\n }\n}\n","// Generated from XHandleClaims (X-handle earnings escrow registry).\n// Source artifact: XHandleClaims.sol/XHandleClaims.json (FOUNDRY_PROFILE=arc forge build). Do not hand-edit;\n// regenerate from the contracts repo when the deployed bytecode changes.\nexport const XHandleClaimsAbi = [\n {\n \"type\": \"constructor\",\n \"inputs\": [\n {\n \"name\": \"_usdc\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_signer\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_protocolOwner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"bind\",\n \"inputs\": [\n {\n \"name\": \"_handleHash\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"_wallet\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_deadline\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"_signature\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"bindNonce\",\n \"inputs\": [\n {\n \"name\": \"_handleHash\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"_nonce\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"cancelOwnershipHandover\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"payable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"claim\",\n \"inputs\": [\n {\n \"name\": \"_handleHash\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"_manager\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"amount_\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"completeOwnershipHandover\",\n \"inputs\": [\n {\n \"name\": \"pendingOwner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"payable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"escrowAddress\",\n \"inputs\": [\n {\n \"name\": \"_handleHash\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"escrowOf\",\n \"inputs\": [\n {\n \"name\": \"_handleHash\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"_escrow\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"owner\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"result\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"ownershipHandoverExpiresAt\",\n \"inputs\": [\n {\n \"name\": \"pendingOwner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"result\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"renounceOwnership\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"payable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"requestOwnershipHandover\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"payable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setSigner\",\n \"inputs\": [\n {\n \"name\": \"_signer\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"signer\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"sweep\",\n \"inputs\": [\n {\n \"name\": \"_handleHash\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"_token\",\n \"type\": \"address\",\n \"internalType\": \"contract IERC20\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"amount_\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transferOwnership\",\n \"inputs\": [\n {\n \"name\": \"newOwner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"payable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"usdc\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"contract IERC20\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"walletOf\",\n \"inputs\": [\n {\n \"name\": \"_handleHash\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"_wallet\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"event\",\n \"name\": \"EscrowDeployed\",\n \"inputs\": [\n {\n \"name\": \"_handleHash\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"_escrow\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"HandleBound\",\n \"inputs\": [\n {\n \"name\": \"_handleHash\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"_wallet\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_nonce\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"HandleClaimed\",\n \"inputs\": [\n {\n \"name\": \"_handleHash\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"_wallet\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_amount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OwnershipHandoverCanceled\",\n \"inputs\": [\n {\n \"name\": \"pendingOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OwnershipHandoverRequested\",\n \"inputs\": [\n {\n \"name\": \"pendingOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OwnershipTransferred\",\n \"inputs\": [\n {\n \"name\": \"oldOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"newOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"SignerUpdated\",\n \"inputs\": [\n {\n \"name\": \"_signer\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"AlreadyInitialized\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"DeadlineExpired\",\n \"inputs\": [\n {\n \"name\": \"_deadline\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ECDSAInvalidSignature\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ECDSAInvalidSignatureLength\",\n \"inputs\": [\n {\n \"name\": \"length\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ECDSAInvalidSignatureS\",\n \"inputs\": [\n {\n \"name\": \"s\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"HandleNotBound\",\n \"inputs\": [\n {\n \"name\": \"_handleHash\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidSignature\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NewOwnerIsZeroAddress\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NoHandoverRequest\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"Unauthorized\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ZeroAddress\",\n \"inputs\": []\n }\n] as const;\n","import {\n type ReadContract,\n type ReadWriteContract,\n type ReadWriteAdapter,\n type Address,\n type Drift,\n createDrift,\n} from \"@delvtech/drift\";\nimport { keccak256, stringToBytes, type Hex } from \"viem\";\nimport { XHandleClaimsAbi } from \"../abi/XHandleClaims\";\n\nexport type XHandleClaimsABI = typeof XHandleClaimsAbi;\n\n/** Allowed X handle shape, with or without the leading @. */\nexport const HANDLE_RE = /^@?[A-Za-z0-9_]{1,15}$/;\n\n/** Lowercase, no leading @. The canonical form links and hashes use. */\nexport function normalizeHandle(handle: string): string {\n return handle.trim().replace(/^@/, \"\").toLowerCase();\n}\n\n/**\n * keccak256 of the normalized handle: the on-chain key of the XHandleClaims\n * registry. Must match the app and backend (it does; same normalization).\n * Throws on anything outside HANDLE_RE: the OAuth backend only attests real X\n * usernames, so an escrow derived from an invalid handle could never be bound\n * and any revenue routed to it would be stuck forever.\n */\nexport function handleHashOf(handle: string): Hex {\n const trimmed = handle.trim();\n if (!HANDLE_RE.test(trimmed)) {\n throw new Error(\n `Invalid X handle \"${handle}\": expected 1-15 letters, digits or ` +\n `underscores, with an optional leading @`\n );\n }\n return keccak256(stringToBytes(normalizeHandle(trimmed)));\n}\n\n/**\n * Client for the XHandleClaims registry: launches can route earnings-split\n * shares to an X handle instead of an address. Each handle maps to a\n * deterministic CREATE2 escrow (predictable before deployment, so it can be a\n * split recipient at launch). The handle's owner proves control through the\n * ubi.fun X OAuth flow, which returns an attestation signature for `bind`;\n * after binding, `claim` pulls the escrowed USDC to the bound wallet.\n */\nexport class ReadXHandleClaims {\n public readonly contract: ReadContract<XHandleClaimsABI>;\n\n constructor(address: Address, drift: Drift = createDrift()) {\n if (!address) {\n throw new Error(\"Address is required\");\n }\n\n this.contract = drift.contract({\n abi: XHandleClaimsAbi,\n address,\n });\n }\n\n /**\n * The deterministic escrow address for a handle, valid before the escrow is\n * deployed. Use this as a split recipient at launch time.\n */\n escrowAddress(handle: string) {\n return this.contract.read(\"escrowAddress\", {\n _handleHash: handleHashOf(handle),\n });\n }\n\n /** The wallet a handle is bound to (zero address if unbound). */\n boundWallet(handle: string) {\n return this.contract.read(\"walletOf\", {\n _handleHash: handleHashOf(handle),\n });\n }\n\n /** The current bind nonce for a handle (increments on each re-bind). */\n bindNonce(handle: string) {\n return this.contract.read(\"bindNonce\", {\n _handleHash: handleHashOf(handle),\n });\n }\n}\n\nexport class ReadWriteXHandleClaims extends ReadXHandleClaims {\n declare contract: ReadWriteContract<XHandleClaimsABI>;\n\n constructor(\n address: Address,\n drift: Drift<ReadWriteAdapter> = createDrift()\n ) {\n super(address, drift);\n }\n\n /**\n * Binds a handle to a wallet using the attestation from the ubi.fun X OAuth\n * flow (GET /auth/x/start on the API starts it; the callback returns this\n * signature). Anyone can submit the bind once signed.\n */\n bind(params: {\n handle: string;\n wallet: Address;\n deadline: bigint;\n signature: Hex;\n }) {\n return this.contract.write(\"bind\", {\n _handleHash: handleHashOf(params.handle),\n _wallet: params.wallet,\n _deadline: params.deadline,\n _signature: params.signature,\n });\n }\n\n /**\n * Claims a bound handle's share out of a launch's split manager and forwards\n * it to the bound wallet as USDC.\n * @param handle - The X handle\n * @param manager - The AddressFeeSplitManager instance holding the share\n */\n claim(handle: string, manager: Address) {\n return this.contract.write(\"claim\", {\n _handleHash: handleHashOf(handle),\n _manager: manager,\n });\n }\n\n /**\n * Sweeps a token balance sitting directly on the handle's escrow (e.g. USDC\n * sent to it outside a split manager) to the bound wallet.\n */\n sweep(handle: string, token: Address) {\n return this.contract.write(\"sweep\", {\n _handleHash: handleHashOf(handle),\n _token: token,\n });\n }\n}\n","// Generated from Morpho UniversalRewardsDistributor (daily USDC holder pool).\n// Source artifact: IUniversalRewardsDistributor.sol/IUniversalRewardsDistributor.json (FOUNDRY_PROFILE=arc forge build). Do not hand-edit;\n// regenerate from the contracts repo when the deployed bytecode changes.\nexport const UniversalRewardsDistributorAbi = [\n {\n \"type\": \"function\",\n \"name\": \"acceptRoot\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"claim\",\n \"inputs\": [\n {\n \"name\": \"_account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_reward\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_claimable\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"_proof\",\n \"type\": \"bytes32[]\",\n \"internalType\": \"bytes32[]\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"claimed\",\n \"inputs\": [\n {\n \"name\": \"_account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_reward\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"ipfsHash\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"isUpdater\",\n \"inputs\": [\n {\n \"name\": \"_updater\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"owner\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"pendingRoot\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"root\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"ipfsHash\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"validAt\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"revokePendingRoot\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"root\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setOwner\",\n \"inputs\": [\n {\n \"name\": \"_newOwner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setRoot\",\n \"inputs\": [\n {\n \"name\": \"_newRoot\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"_newIpfsHash\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setRootUpdater\",\n \"inputs\": [\n {\n \"name\": \"_updater\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_active\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setTimelock\",\n \"inputs\": [\n {\n \"name\": \"_newTimelock\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"submitRoot\",\n \"inputs\": [\n {\n \"name\": \"_newRoot\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"_newIpfsHash\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"timelock\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n }\n] as const;\n","import {\n type ReadContract,\n type ReadWriteContract,\n type ReadWriteAdapter,\n type Address,\n type Drift,\n createDrift,\n} from \"@delvtech/drift\";\nimport { type Hex } from \"viem\";\nimport { UniversalRewardsDistributorAbi } from \"../abi/UniversalRewardsDistributor\";\n\nexport type UniversalRewardsDistributorABI =\n typeof UniversalRewardsDistributorAbi;\n\n/**\n * Client for Morpho's UniversalRewardsDistributor, which pays the daily USDC\n * holder pool (24% of every swap fee). Entitlements are cumulative amounts in\n * a Merkle root the keeper submits after each daily epoch; a root becomes\n * claimable after the on-chain timelock. Fetch an address's cumulative amount\n * and proof from the ubi.fun API (GET {apiUrl}/ubi/:address), then `claim`\n * pays out the difference between the cumulative amount and what was already\n * claimed.\n */\nexport class ReadUniversalRewardsDistributor {\n public readonly contract: ReadContract<UniversalRewardsDistributorABI>;\n\n constructor(address: Address, drift: Drift = createDrift()) {\n if (!address) {\n throw new Error(\"Address is required\");\n }\n\n this.contract = drift.contract({\n abi: UniversalRewardsDistributorAbi,\n address,\n });\n }\n\n /** The active Merkle root claims are verified against. */\n root() {\n return this.contract.read(\"root\");\n }\n\n /** A submitted root still inside the timelock, if any. */\n pendingRoot() {\n return this.contract.read(\"pendingRoot\");\n }\n\n /** The cumulative amount `account` has already claimed of `reward`. */\n claimed(account: Address, reward: Address) {\n return this.contract.read(\"claimed\", {\n _account: account,\n _reward: reward,\n });\n }\n}\n\nexport class ReadWriteUniversalRewardsDistributor extends ReadUniversalRewardsDistributor {\n declare contract: ReadWriteContract<UniversalRewardsDistributorABI>;\n\n constructor(\n address: Address,\n drift: Drift<ReadWriteAdapter> = createDrift()\n ) {\n super(address, drift);\n }\n\n /**\n * Claims the outstanding balance for an account. Anyone can submit; the\n * payout always goes to `account`.\n * @param params.account - The holder being claimed for\n * @param params.reward - The reward token (USDC on Arc)\n * @param params.claimable - The CUMULATIVE entitlement from the API ledger\n * @param params.proof - The Merkle proof from the API ledger\n */\n claim(params: {\n account: Address;\n reward: Address;\n claimable: bigint;\n proof: Hex[];\n }) {\n return this.contract.write(\"claim\", {\n _account: params.account,\n _reward: params.reward,\n _claimable: params.claimable,\n _proof: params.proof,\n });\n }\n}\n","// Generated from TreasuryManagerFactory.\n// Source artifact: TreasuryManagerFactory.sol/TreasuryManagerFactory.json (FOUNDRY_PROFILE=arc forge build). Do not hand-edit;\n// regenerate from the contracts repo when the deployed bytecode changes.\nexport const TreasuryManagerFactoryAbi = [\n {\n \"type\": \"constructor\",\n \"inputs\": [\n {\n \"name\": \"_protocolOwner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_feeEscrow\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"DEFAULT_ADMIN_ROLE\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"approveManager\",\n \"inputs\": [\n {\n \"name\": \"_managerImplementation\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"approvedManagerImplementation\",\n \"inputs\": [\n {\n \"name\": \"_managerImplementation\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"_approved\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"cancelOwnershipHandover\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"payable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"completeOwnershipHandover\",\n \"inputs\": [\n {\n \"name\": \"pendingOwner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"payable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"deployAndInitializeManager\",\n \"inputs\": [\n {\n \"name\": \"_managerImplementation\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_owner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_data\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"manager_\",\n \"type\": \"address\",\n \"internalType\": \"address payable\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"deployManager\",\n \"inputs\": [\n {\n \"name\": \"_managerImplementation\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"manager_\",\n \"type\": \"address\",\n \"internalType\": \"address payable\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"feeEscrow\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"contract IFeeEscrow\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getRoleAdmin\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"grantRole\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"hasRole\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"managerImplementation\",\n \"inputs\": [\n {\n \"name\": \"_manager\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"_managerImplementation\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"owner\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"result\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"ownershipHandoverExpiresAt\",\n \"inputs\": [\n {\n \"name\": \"pendingOwner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"result\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"renounceOwnership\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"payable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"renounceRole\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"callerConfirmation\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"requestOwnershipHandover\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"payable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"revokeRole\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"supportsInterface\",\n \"inputs\": [\n {\n \"name\": \"interfaceId\",\n \"type\": \"bytes4\",\n \"internalType\": \"bytes4\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transferOwnership\",\n \"inputs\": [\n {\n \"name\": \"newOwner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"payable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"unapproveManager\",\n \"inputs\": [\n {\n \"name\": \"_managerImplementation\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"event\",\n \"name\": \"ManagerDeployed\",\n \"inputs\": [\n {\n \"name\": \"_manager\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_managerImplementation\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"ManagerImplementationApproved\",\n \"inputs\": [\n {\n \"name\": \"_managerImplementation\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"ManagerImplementationUnapproved\",\n \"inputs\": [\n {\n \"name\": \"_managerImplementation\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OwnershipHandoverCanceled\",\n \"inputs\": [\n {\n \"name\": \"pendingOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OwnershipHandoverRequested\",\n \"inputs\": [\n {\n \"name\": \"pendingOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OwnershipTransferred\",\n \"inputs\": [\n {\n \"name\": \"oldOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"newOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"RoleAdminChanged\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"previousAdminRole\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"newAdminRole\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"RoleGranted\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"sender\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"RoleRevoked\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"sender\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"AccessControlBadConfirmation\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"AccessControlUnauthorizedAccount\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"neededRole\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"AlreadyInitialized\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NewOwnerIsZeroAddress\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NoHandoverRequest\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"Unauthorized\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"UnknownManagerImplemention\",\n \"inputs\": []\n }\n] as const;\n","import {\n type ReadContract,\n type Address,\n type Drift,\n type EventLog,\n type ReadWriteContract,\n type ReadWriteAdapter,\n type HexString,\n createDrift,\n} from \"@delvtech/drift\";\nimport {\n createPublicClient,\n type PublicClient,\n encodeAbiParameters,\n http,\n parseEventLogs,\n} from \"viem\";\nimport { TreasuryManagerFactoryAbi } from \"../abi/TreasuryManagerFactory\";\nimport { chainIdToChain } from \"../helpers/chainIdToChain\";\n\nexport type TreasuryManagerFactoryABI = typeof TreasuryManagerFactoryAbi;\n\nexport class ReadTreasuryManagerFactory {\n chainId: number;\n public readonly contract: ReadContract<TreasuryManagerFactoryABI>;\n public readonly publicClient: PublicClient | undefined;\n\n constructor(\n chainId: number,\n address: Address,\n drift: Drift = createDrift(),\n publicClient?: PublicClient\n ) {\n if (!address) {\n throw new Error(\"Address is required\");\n }\n this.contract = drift.contract({\n abi: TreasuryManagerFactoryAbi,\n address,\n });\n this.chainId = chainId;\n this.publicClient = publicClient;\n }\n\n async getManagerDeployedAddressFromTx(hash: HexString) {\n // Wait for transaction receipt\n if (!this.publicClient) {\n throw new Error(\"Public client is required\");\n }\n\n const receipt = await this.publicClient.waitForTransactionReceipt({ hash });\n\n // Parse the ManagerDeployed event from receipt logs\n const parsedLogs = parseEventLogs({\n abi: TreasuryManagerFactoryAbi,\n eventName: \"ManagerDeployed\",\n logs: receipt.logs,\n });\n\n // Find the event from our transaction\n const event = parsedLogs.find(\n (log) => log.address.toLowerCase() === this.contract.address.toLowerCase()\n );\n if (!event) {\n throw new Error(\"ManagerDeployed event not found in transaction logs\");\n }\n\n return event.args._manager as Address;\n }\n}\n\nexport class ReadWriteTreasuryManagerFactory extends ReadTreasuryManagerFactory {\n declare contract: ReadWriteContract<TreasuryManagerFactoryABI>;\n\n constructor(\n chainId: number,\n address: Address,\n drift: Drift = createDrift(),\n publicClient?: PublicClient\n ) {\n super(chainId, address, drift, publicClient);\n }\n}\n","// Generated from TreasuryManager (abstract base of AddressFeeSplitManager).\n// Source artifact: TreasuryManager.sol/TreasuryManager.json (FOUNDRY_PROFILE=arc forge build). Do not hand-edit;\n// regenerate from the contracts repo when the deployed bytecode changes.\nexport const TreasuryManagerAbi = [\n {\n \"type\": \"receive\",\n \"stateMutability\": \"payable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"balances\",\n \"inputs\": [\n {\n \"name\": \"_recipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"amount_\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"claim\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"amount_\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"deposit\",\n \"inputs\": [\n {\n \"name\": \"_flaunchToken\",\n \"type\": \"tuple\",\n \"internalType\": \"struct ITreasuryManager.FlaunchToken\",\n \"components\": [\n {\n \"name\": \"flaunch\",\n \"type\": \"address\",\n \"internalType\": \"contract Flaunch\"\n },\n {\n \"name\": \"tokenId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"name\": \"_creator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_data\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"feeEscrowRegistry\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"contract IFeeEscrowRegistry\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"initialize\",\n \"inputs\": [\n {\n \"name\": \"_owner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_data\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"initialized\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"isValidCreator\",\n \"inputs\": [\n {\n \"name\": \"_creator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_data\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"managerOwner\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"permissions\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"contract IManagerPermissions\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"rescue\",\n \"inputs\": [\n {\n \"name\": \"_flaunchToken\",\n \"type\": \"tuple\",\n \"internalType\": \"struct ITreasuryManager.FlaunchToken\",\n \"components\": [\n {\n \"name\": \"flaunch\",\n \"type\": \"address\",\n \"internalType\": \"contract Flaunch\"\n },\n {\n \"name\": \"tokenId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"name\": \"_recipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setPermissions\",\n \"inputs\": [\n {\n \"name\": \"_permissions\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"tokenTimelock\",\n \"inputs\": [\n {\n \"name\": \"_flaunch\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_tokenId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"_unlockedAt\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transferManagerOwnership\",\n \"inputs\": [\n {\n \"name\": \"_newManagerOwner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"treasuryManagerFactory\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"contract TreasuryManagerFactory\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"event\",\n \"name\": \"ManagerOwnershipTransferred\",\n \"inputs\": [\n {\n \"name\": \"_previousOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_newOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"PermissionsUpdated\",\n \"inputs\": [\n {\n \"name\": \"_permissions\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"TreasuryEscrowed\",\n \"inputs\": [\n {\n \"name\": \"_flaunch\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_tokenId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"_owner\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_sender\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"TreasuryReclaimed\",\n \"inputs\": [\n {\n \"name\": \"_flaunch\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_tokenId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"_sender\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_recipient\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"TreasuryTimelocked\",\n \"inputs\": [\n {\n \"name\": \"_flaunch\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_tokenId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"_unlockedAt\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"AlreadyInitialized\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"FlaunchContractNotValid\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidCreator\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotInitialized\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotManagerOwner\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TokenTimelocked\",\n \"inputs\": [\n {\n \"name\": \"_unlockedAt\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"UnknownFlaunchToken\",\n \"inputs\": []\n }\n] as const;\n","import {\n type ReadContract,\n type Address,\n type Drift,\n type ReadWriteContract,\n type ReadWriteAdapter,\n createDrift,\n} from \"@delvtech/drift\";\nimport { TreasuryManagerAbi } from \"../abi/TreasuryManager\";\n\nexport type TreasuryManagerABI = typeof TreasuryManagerAbi;\n\nexport type FlaunchToken = {\n flaunch: Address;\n tokenId: bigint;\n};\n\n/**\n * Client for interacting with the TreasuryManager contract in read-only mode\n * Provides methods to query permissions and manager owner\n */\nexport class ReadTreasuryManager {\n public readonly contract: ReadContract<TreasuryManagerABI>;\n\n /**\n * Creates a new ReadTreasuryManager instance\n * @param address - The address of the TreasuryManager contract\n * @param drift - Optional drift instance for contract interactions (creates new instance if not provided)\n * @throws Error if address is not provided\n */\n constructor(address: Address, drift: Drift = createDrift()) {\n if (!address) {\n throw new Error(\"Address is required\");\n }\n\n this.contract = drift.contract({\n abi: TreasuryManagerAbi,\n address,\n });\n }\n\n /**\n * Gets the permissions contract address\n * @returns Promise<Address> - The address of the permissions contract\n */\n permissions() {\n return this.contract.read(\"permissions\");\n }\n\n /**\n * Gets the manager owner address\n * @returns Promise<Address> - The address of the manager owner\n */\n managerOwner() {\n return this.contract.read(\"managerOwner\");\n }\n\n /**\n * Gets a recipient's claimable USDC balance inside this manager (e.g. a\n * split recipient's accrued share)\n * @param recipient - The address to check\n * @returns Promise<bigint> - The claimable balance (USDC, 6 decimals)\n */\n balances(recipient: Address) {\n return this.contract.read(\"balances\", {\n _recipient: recipient,\n });\n }\n}\n\n/**\n * Extended client for interacting with the TreasuryManager contract with write capabilities\n * Provides methods to deposit tokens, set permissions, and transfer ownership\n */\nexport class ReadWriteTreasuryManager extends ReadTreasuryManager {\n declare contract: ReadWriteContract<TreasuryManagerABI>;\n\n constructor(\n address: Address,\n drift: Drift<ReadWriteAdapter> = createDrift()\n ) {\n super(address, drift);\n }\n\n /**\n * Deposits a flaunch token to the treasury\n * @param flaunchToken - The flaunch token to deposit\n * @param creator - The address of the creator\n * @param data - Additional data for the deposit\n * @returns Promise<void>\n */\n deposit(flaunchToken: FlaunchToken, creator: Address, data: `0x${string}`) {\n return this.contract.write(\"deposit\", {\n _flaunchToken: flaunchToken,\n _creator: creator,\n _data: data,\n });\n }\n\n /**\n * Sets the permissions contract address\n * @param permissions - The address of the new permissions contract\n * @returns Promise<void>\n */\n setPermissions(permissions: Address) {\n return this.contract.write(\"setPermissions\", {\n _permissions: permissions,\n });\n }\n\n /**\n * Transfers the manager ownership to a new address\n * @param newManagerOwner - The address of the new manager owner\n * @returns Promise<void>\n */\n transferManagerOwnership(newManagerOwner: Address) {\n return this.contract.write(\"transferManagerOwnership\", {\n _newManagerOwner: newManagerOwner,\n });\n }\n\n /**\n * Claims the caller's accrued share from this manager, paid out as USDC\n * @returns Transaction response\n */\n claim() {\n return this.contract.write(\"claim\");\n }\n}\n","export const MulticallAbi = [\n {\n inputs: [\n {\n components: [\n {\n internalType: \"address\",\n name: \"target\",\n type: \"address\",\n },\n {\n internalType: \"bytes\",\n name: \"callData\",\n type: \"bytes\",\n },\n ],\n internalType: \"struct Multicall3.Call[]\",\n name: \"calls\",\n type: \"tuple[]\",\n },\n ],\n name: \"aggregate\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"blockNumber\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes[]\",\n name: \"returnData\",\n type: \"bytes[]\",\n },\n ],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n {\n internalType: \"address\",\n name: \"target\",\n type: \"address\",\n },\n {\n internalType: \"bool\",\n name: \"allowFailure\",\n type: \"bool\",\n },\n {\n internalType: \"bytes\",\n name: \"callData\",\n type: \"bytes\",\n },\n ],\n internalType: \"struct Multicall3.Call3[]\",\n name: \"calls\",\n type: \"tuple[]\",\n },\n ],\n name: \"aggregate3\",\n outputs: [\n {\n components: [\n {\n internalType: \"bool\",\n name: \"success\",\n type: \"bool\",\n },\n {\n internalType: \"bytes\",\n name: \"returnData\",\n type: \"bytes\",\n },\n ],\n internalType: \"struct Multicall3.Result[]\",\n name: \"returnData\",\n type: \"tuple[]\",\n },\n ],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n {\n internalType: \"address\",\n name: \"target\",\n type: \"address\",\n },\n {\n internalType: \"bool\",\n name: \"allowFailure\",\n type: \"bool\",\n },\n {\n internalType: \"uint256\",\n name: \"value\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes\",\n name: \"callData\",\n type: \"bytes\",\n },\n ],\n internalType: \"struct Multicall3.Call3Value[]\",\n name: \"calls\",\n type: \"tuple[]\",\n },\n ],\n name: \"aggregate3Value\",\n outputs: [\n {\n components: [\n {\n internalType: \"bool\",\n name: \"success\",\n type: \"bool\",\n },\n {\n internalType: \"bytes\",\n name: \"returnData\",\n type: \"bytes\",\n },\n ],\n internalType: \"struct Multicall3.Result[]\",\n name: \"returnData\",\n type: \"tuple[]\",\n },\n ],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n {\n internalType: \"address\",\n name: \"target\",\n type: \"address\",\n },\n {\n internalType: \"bytes\",\n name: \"callData\",\n type: \"bytes\",\n },\n ],\n internalType: \"struct Multicall3.Call[]\",\n name: \"calls\",\n type: \"tuple[]\",\n },\n ],\n name: \"blockAndAggregate\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"blockNumber\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes32\",\n name: \"blockHash\",\n type: \"bytes32\",\n },\n {\n components: [\n {\n internalType: \"bool\",\n name: \"success\",\n type: \"bool\",\n },\n {\n internalType: \"bytes\",\n name: \"returnData\",\n type: \"bytes\",\n },\n ],\n internalType: \"struct Multicall3.Result[]\",\n name: \"returnData\",\n type: \"tuple[]\",\n },\n ],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"getBasefee\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"basefee\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"blockNumber\",\n type: \"uint256\",\n },\n ],\n name: \"getBlockHash\",\n outputs: [\n {\n internalType: \"bytes32\",\n name: \"blockHash\",\n type: \"bytes32\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"getBlockNumber\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"blockNumber\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"getChainId\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"chainid\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"getCurrentBlockCoinbase\",\n outputs: [\n {\n internalType: \"address\",\n name: \"coinbase\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"getCurrentBlockDifficulty\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"difficulty\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"getCurrentBlockGasLimit\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"gaslimit\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"getCurrentBlockTimestamp\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"timestamp\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"addr\",\n type: \"address\",\n },\n ],\n name: \"getEthBalance\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"balance\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"getLastBlockHash\",\n outputs: [\n {\n internalType: \"bytes32\",\n name: \"blockHash\",\n type: \"bytes32\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bool\",\n name: \"requireSuccess\",\n type: \"bool\",\n },\n {\n components: [\n {\n internalType: \"address\",\n name: \"target\",\n type: \"address\",\n },\n {\n internalType: \"bytes\",\n name: \"callData\",\n type: \"bytes\",\n },\n ],\n internalType: \"struct Multicall3.Call[]\",\n name: \"calls\",\n type: \"tuple[]\",\n },\n ],\n name: \"tryAggregate\",\n outputs: [\n {\n components: [\n {\n internalType: \"bool\",\n name: \"success\",\n type: \"bool\",\n },\n {\n internalType: \"bytes\",\n name: \"returnData\",\n type: \"bytes\",\n },\n ],\n internalType: \"struct Multicall3.Result[]\",\n name: \"returnData\",\n type: \"tuple[]\",\n },\n ],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bool\",\n name: \"requireSuccess\",\n type: \"bool\",\n },\n {\n components: [\n {\n internalType: \"address\",\n name: \"target\",\n type: \"address\",\n },\n {\n internalType: \"bytes\",\n name: \"callData\",\n type: \"bytes\",\n },\n ],\n internalType: \"struct Multicall3.Call[]\",\n name: \"calls\",\n type: \"tuple[]\",\n },\n ],\n name: \"tryBlockAndAggregate\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"blockNumber\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes32\",\n name: \"blockHash\",\n type: \"bytes32\",\n },\n {\n components: [\n {\n internalType: \"bool\",\n name: \"success\",\n type: \"bool\",\n },\n {\n internalType: \"bytes\",\n name: \"returnData\",\n type: \"bytes\",\n },\n ],\n internalType: \"struct Multicall3.Result[]\",\n name: \"returnData\",\n type: \"tuple[]\",\n },\n ],\n stateMutability: \"payable\",\n type: \"function\",\n },\n] as const;\n","import {\n type ReadContract,\n type Address,\n type Drift,\n type EventLog,\n type ReadWriteContract,\n type ReadWriteAdapter,\n type HexString,\n createDrift,\n} from \"@delvtech/drift\";\nimport { MulticallAbi } from \"../abi/Multicall\";\n\nexport type MulticallABI = typeof MulticallAbi;\n\nexport class ReadMulticall {\n // same address across all chains\n public readonly address: Address =\n \"0xcA11bde05977b3631167028862bE2a173976CA11\";\n\n public readonly contract: ReadContract<MulticallABI>;\n\n constructor(drift: Drift) {\n this.contract = drift.contract({\n abi: MulticallAbi,\n address: this.address,\n });\n }\n\n aggregate3(calls: { target: Address; callData: HexString }[]) {\n return this.contract.simulateWrite(\"aggregate3\", {\n calls: calls.map((call) => ({\n target: call.target,\n allowFailure: true,\n callData: call.callData,\n })),\n });\n }\n}\n","// Generated from AddressFeeSplitManager (approved earnings-split implementation).\n// Source artifact: AddressFeeSplitManager.sol/AddressFeeSplitManager.json (FOUNDRY_PROFILE=arc forge build). Do not hand-edit;\n// regenerate from the contracts repo when the deployed bytecode changes.\nexport const AddressFeeSplitManagerAbi = [\n {\n \"type\": \"constructor\",\n \"inputs\": [\n {\n \"name\": \"_treasuryManagerFactory\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_feeEscrowRegistry\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"receive\",\n \"stateMutability\": \"payable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"MAX_CREATOR_SHARE\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"MAX_OWNER_SHARE\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"VALID_SHARE_TOTAL\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"amountClaimed\",\n \"inputs\": [\n {\n \"name\": \"_recipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"_claimed\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"balances\",\n \"inputs\": [\n {\n \"name\": \"_recipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"balance_\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"claim\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"claimableOwnerFees\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"creator\",\n \"inputs\": [\n {\n \"name\": \"_flaunch\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_tokenId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"_creator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"creatorFees\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"creatorShare\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"creatorTotalClaimed\",\n \"inputs\": [\n {\n \"name\": \"_creator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"_claimed\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"deposit\",\n \"inputs\": [\n {\n \"name\": \"_flaunchToken\",\n \"type\": \"tuple\",\n \"internalType\": \"struct ITreasuryManager.FlaunchToken\",\n \"components\": [\n {\n \"name\": \"flaunch\",\n \"type\": \"address\",\n \"internalType\": \"contract Flaunch\"\n },\n {\n \"name\": \"tokenId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"name\": \"_creator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_data\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"feeEscrowRegistry\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"contract IFeeEscrowRegistry\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"flaunchTokenInternalIds\",\n \"inputs\": [\n {\n \"name\": \"_flaunch\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_tokenId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"_internalId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getCreatorFee\",\n \"inputs\": [\n {\n \"name\": \"_amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"creatorFee_\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getOwnerFee\",\n \"inputs\": [\n {\n \"name\": \"_amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"ownerFee_\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getPoolId\",\n \"inputs\": [\n {\n \"name\": \"_flaunchToken\",\n \"type\": \"tuple\",\n \"internalType\": \"struct ITreasuryManager.FlaunchToken\",\n \"components\": [\n {\n \"name\": \"flaunch\",\n \"type\": \"address\",\n \"internalType\": \"contract Flaunch\"\n },\n {\n \"name\": \"tokenId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n }\n ],\n \"outputs\": [\n {\n \"name\": \"poolId_\",\n \"type\": \"bytes32\",\n \"internalType\": \"PoolId\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"initialize\",\n \"inputs\": [\n {\n \"name\": \"_owner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_data\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"initialized\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"internalIds\",\n \"inputs\": [\n {\n \"name\": \"_internalId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"flaunch\",\n \"type\": \"address\",\n \"internalType\": \"contract Flaunch\"\n },\n {\n \"name\": \"tokenId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"isValidCreator\",\n \"inputs\": [\n {\n \"name\": \"_creator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_data\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"isValidRecipient\",\n \"inputs\": [\n {\n \"name\": \"_recipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_data\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"managerFees\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"managerOwner\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"nextInternalId\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"ownerFees\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"ownerShare\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"pendingCreatorFees\",\n \"inputs\": [\n {\n \"name\": \"_recipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"balance_\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"pendingOwnerFees\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"permissions\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"contract IManagerPermissions\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"recipientShare\",\n \"inputs\": [\n {\n \"name\": \"_recipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_data\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"rescue\",\n \"inputs\": [\n {\n \"name\": \"_flaunchToken\",\n \"type\": \"tuple\",\n \"internalType\": \"struct ITreasuryManager.FlaunchToken\",\n \"components\": [\n {\n \"name\": \"flaunch\",\n \"type\": \"address\",\n \"internalType\": \"contract Flaunch\"\n },\n {\n \"name\": \"tokenId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"name\": \"_recipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setCreator\",\n \"inputs\": [\n {\n \"name\": \"_flaunchToken\",\n \"type\": \"tuple\",\n \"internalType\": \"struct ITreasuryManager.FlaunchToken\",\n \"components\": [\n {\n \"name\": \"flaunch\",\n \"type\": \"address\",\n \"internalType\": \"contract Flaunch\"\n },\n {\n \"name\": \"tokenId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"name\": \"_creator\",\n \"type\": \"address\",\n \"internalType\": \"address payable\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setPermissions\",\n \"inputs\": [\n {\n \"name\": \"_permissions\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"splitFees\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"tokenPoolId\",\n \"inputs\": [\n {\n \"name\": \"_internalId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"_poolId\",\n \"type\": \"bytes32\",\n \"internalType\": \"PoolId\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"tokenTimelock\",\n \"inputs\": [\n {\n \"name\": \"_flaunch\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_tokenId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"_unlockedAt\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"tokenTotalClaimed\",\n \"inputs\": [\n {\n \"name\": \"_flaunch\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_tokenId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"_claimed\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"tokens\",\n \"inputs\": [\n {\n \"name\": \"_creator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"flaunchTokens_\",\n \"type\": \"tuple[]\",\n \"internalType\": \"struct ITreasuryManager.FlaunchToken[]\",\n \"components\": [\n {\n \"name\": \"flaunch\",\n \"type\": \"address\",\n \"internalType\": \"contract Flaunch\"\n },\n {\n \"name\": \"tokenId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transferManagerOwnership\",\n \"inputs\": [\n {\n \"name\": \"_newManagerOwner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transferRecipientShare\",\n \"inputs\": [\n {\n \"name\": \"_newRecipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"treasuryManagerFactory\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"contract TreasuryManagerFactory\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"event\",\n \"name\": \"CreatorShareInitialized\",\n \"inputs\": [\n {\n \"name\": \"_creatorShare\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"CreatorUpdated\",\n \"inputs\": [\n {\n \"name\": \"_flaunch\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_tokenId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"_creator\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"ETHReceivedFromUnknownSource\",\n \"inputs\": [\n {\n \"name\": \"_sender\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_amount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"ManagerInitialized\",\n \"inputs\": [\n {\n \"name\": \"_owner\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_params\",\n \"type\": \"tuple\",\n \"indexed\": false,\n \"internalType\": \"struct AddressFeeSplitManager.InitializeParams\",\n \"components\": [\n {\n \"name\": \"creatorShare\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"ownerShare\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"recipientShares\",\n \"type\": \"tuple[]\",\n \"internalType\": \"struct AddressFeeSplitManager.RecipientShare[]\",\n \"components\": [\n {\n \"name\": \"recipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"share\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n }\n ]\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"ManagerOwnershipTransferred\",\n \"inputs\": [\n {\n \"name\": \"_previousOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_newOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OwnerShareInitialized\",\n \"inputs\": [\n {\n \"name\": \"_ownerShare\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"PermissionsUpdated\",\n \"inputs\": [\n {\n \"name\": \"_permissions\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"RecipientAdded\",\n \"inputs\": [\n {\n \"name\": \"_recipient\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_share\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"RecipientShareTransferred\",\n \"inputs\": [\n {\n \"name\": \"_oldRecipient\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_newRecipient\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_share\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"RevenueClaimed\",\n \"inputs\": [\n {\n \"name\": \"_recipient\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_amountClaimed\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"TreasuryEscrowed\",\n \"inputs\": [\n {\n \"name\": \"_flaunch\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_tokenId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"_owner\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_sender\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"TreasuryReclaimed\",\n \"inputs\": [\n {\n \"name\": \"_flaunch\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_tokenId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"_sender\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_recipient\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"TreasuryTimelocked\",\n \"inputs\": [\n {\n \"name\": \"_flaunch\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_tokenId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"_unlockedAt\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"AlreadyInitialized\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"CreatorShareAlreadyInitialized\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"FlaunchContractNotValid\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InsufficientSharesToTransfer\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidClaimer\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidCreator\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidCreatorAddress\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidCreatorShare\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidOwnerShare\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidRecipient\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidRecipientShareTotal\",\n \"inputs\": [\n {\n \"name\": \"_share\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"_validShare\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidShareTotal\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidShareTransferRecipient\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotInitialized\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotManagerOwner\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OwnerShareAlreadyInitialized\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"Reentrancy\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TokenTimelocked\",\n \"inputs\": [\n {\n \"name\": \"_unlockedAt\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"UnableToSendRevenue\",\n \"inputs\": [\n {\n \"name\": \"_reason\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"UnknownFlaunchToken\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"UnknownPoolId\",\n \"inputs\": []\n }\n] as const;\n","import {\n createDrift,\n Drift,\n ReadWriteAdapter,\n type Address,\n} from \"@delvtech/drift\";\nimport {\n type PublicClient,\n Hex,\n encodeAbiParameters,\n parseUnits,\n erc721Abi,\n formatUnits,\n decodeEventLog,\n} from \"viem\";\nimport axios from \"axios\";\nimport {\n FlaunchPositionManagerAddress,\n PoolManagerAddress,\n NativeTokenAddress,\n USDC_ADDRESS,\n FairLaunchAddress,\n FlaunchZapAddress,\n FlaunchAddress,\n BidWallAddress,\n QuoterAddress,\n PoolSwapAddress,\n TreasuryManagerFactoryAddress,\n FeeEscrowAddress,\n ReferralEscrowAddress,\n XHandleClaimsAddress,\n UniversalRewardsDistributorAddress,\n ApiBaseUrl,\n} from \"../addresses\";\nimport {\n ReadFlaunchPositionManager,\n WatchPoolCreatedParams,\n WatchPoolSwapParams as WatchPoolSwapParamsPositionManager,\n BuySwapLog,\n SellSwapLog,\n BaseSwapLog,\n} from \"../clients/FlaunchPositionManagerClient\";\nimport {\n ReadPoolManager,\n PositionInfoParams,\n} from \"../clients/PoolManagerClient\";\nimport { ReadFairLaunch } from \"../clients/FairLaunchClient\";\nimport { ReadBidWall } from \"../clients/BidWallClient\";\nimport {\n ReadFlaunchZap,\n ReadWriteFlaunchZap,\n FlaunchParams,\n FlaunchIPFSParams,\n FlaunchWithSplitManagerParams,\n FlaunchWithSplitManagerIPFSParams,\n} from \"../clients/FlaunchZapClient\";\nimport { ReadFlaunch } from \"../clients/FlaunchClient\";\nimport { ReadMemecoin, ReadWriteMemecoin } from \"../clients/MemecoinClient\";\nimport { ReadQuoter } from \"../clients/QuoterClient\";\nimport { ReadFeeEscrow, ReadWriteFeeEscrow } from \"../clients/FeeEscrowClient\";\nimport {\n ReadReferralEscrow,\n ReadWriteReferralEscrow,\n} from \"../clients/ReferralEscrowClient\";\nimport { ReadWritePoolSwap } from \"../clients/PoolSwapClient\";\nimport {\n ReadXHandleClaims,\n ReadWriteXHandleClaims,\n} from \"../clients/XHandleClaimsClient\";\nimport {\n ReadUniversalRewardsDistributor,\n ReadWriteUniversalRewardsDistributor,\n} from \"../clients/UniversalRewardsDistributorClient\";\nimport { ReadWriteTreasuryManagerFactory } from \"../clients/TreasuryManagerFactoryClient\";\nimport {\n ReadTreasuryManager,\n ReadWriteTreasuryManager,\n} from \"../clients/TreasuryManagerClient\";\nimport { FlaunchPositionManagerAbi } from \"../abi/FlaunchPositionManager\";\nimport { CoinMetadata, PoolCreatedEventData } from \"../types\";\nimport {\n getPoolId,\n getValidTick,\n calculateUnderlyingTokenBalances,\n TickFinder,\n TICK_SPACING,\n} from \"../utils/univ4\";\nimport {\n coinPoolKey,\n usdcIsCurrencyZero,\n swapDirection,\n sqrtPriceLimit,\n expectedEndSqrtPriceX96,\n} from \"../utils/swap\";\nimport {\n resolveIPFS as defaultResolveIPFS,\n resolveIPFSCandidates,\n fetchTokenUriMetadataWithFallback,\n} from \"../helpers/ipfs\";\nimport { ReadMulticall } from \"../clients/MulticallClient\";\nimport { MemecoinAbi } from \"../abi\";\n\n// Re-export PoolCreatedEventData so it's available as part of the SDK module\nexport type { PoolCreatedEventData } from \"../types\";\n\ntype WatchPoolSwapParams = Omit<\n WatchPoolSwapParamsPositionManager<boolean>,\n \"usdcIsCurrencyZero\"\n> & {\n filterByCoin?: Address;\n};\n\n/** USDC (the cash side) has 6 decimals; every coin has 18. */\nconst USDC_DECIMALS = 6;\nconst COIN_DECIMALS = 18;\n\n/** An address's daily holder pool entitlement as served by the ubi.fun API. */\nexport interface UbiEntitlement {\n account?: string;\n /** CUMULATIVE lifetime entitlement in USDC wei (6 decimals). */\n cumulativeWei?: string;\n proof?: Hex[];\n status?: string;\n /** The ledger root this entitlement belongs to. */\n root?: string;\n [key: string]: unknown;\n}\n\n/**\n * Base class for interacting with the ubi.fun protocol in read-only mode\n */\nexport class ReadFlaunchSDK {\n public readonly drift: Drift;\n public readonly chainId: number;\n public readonly publicClient: PublicClient | undefined;\n public readonly TICK_SPACING = TICK_SPACING;\n public readonly readPositionManager: ReadFlaunchPositionManager;\n public readonly readFeeEscrow: ReadFeeEscrow;\n public readonly readReferralEscrow: ReadReferralEscrow;\n public readonly readFlaunchZap: ReadFlaunchZap;\n public readonly readPoolManager: ReadPoolManager;\n public readonly readFairLaunch: ReadFairLaunch;\n public readonly readBidWall: ReadBidWall;\n public readonly readFlaunch: ReadFlaunch;\n public readonly readQuoter: ReadQuoter;\n public readonly readXHandleClaims: ReadXHandleClaims;\n public readonly readUbiPool: ReadUniversalRewardsDistributor;\n\n public resolveIPFS: (value: string) => string;\n\n constructor(\n chainId: number,\n drift: Drift = createDrift(),\n publicClient?: PublicClient\n ) {\n this.chainId = chainId;\n this.drift = drift;\n this.publicClient = publicClient;\n this.resolveIPFS = defaultResolveIPFS;\n this.readPositionManager = new ReadFlaunchPositionManager(\n FlaunchPositionManagerAddress[this.chainId],\n drift\n );\n this.readFeeEscrow = new ReadFeeEscrow(\n FeeEscrowAddress[this.chainId],\n drift\n );\n this.readReferralEscrow = new ReadReferralEscrow(\n ReferralEscrowAddress[this.chainId],\n drift\n );\n this.readFlaunchZap = new ReadFlaunchZap(\n this.chainId,\n FlaunchZapAddress[this.chainId],\n drift\n );\n this.readPoolManager = new ReadPoolManager(\n PoolManagerAddress[this.chainId],\n drift\n );\n this.readFairLaunch = new ReadFairLaunch(\n FairLaunchAddress[this.chainId],\n drift\n );\n this.readBidWall = new ReadBidWall(BidWallAddress[this.chainId], drift);\n this.readFlaunch = new ReadFlaunch(FlaunchAddress[this.chainId], drift);\n this.readQuoter = new ReadQuoter(\n this.chainId,\n QuoterAddress[this.chainId],\n drift\n );\n this.readXHandleClaims = new ReadXHandleClaims(\n XHandleClaimsAddress[this.chainId],\n drift\n );\n this.readUbiPool = new ReadUniversalRewardsDistributor(\n UniversalRewardsDistributorAddress[this.chainId],\n drift\n );\n }\n\n /**\n * Checks if a given coin address is a valid ubi.fun coin\n * @param coinAddress - The address of the coin to check\n * @returns Promise<boolean> - True if the coin is valid, false otherwise\n */\n isValidCoin(coinAddress: Address) {\n return this.readPositionManager.isValidCoin(coinAddress);\n }\n\n getPositionManagerAddress() {\n return this.readPositionManager.contract.address;\n }\n\n getFlaunchAddress() {\n return this.readFlaunch.contract.address;\n }\n\n getFairLaunchAddress() {\n return this.readFairLaunch.contract.address;\n }\n\n getBidWallAddress() {\n return this.readBidWall.contract.address;\n }\n\n /**\n * Gets the Flaunch NFT token ID for a memecoin (the NFT IS the revenue claim)\n * @param coinAddress - The address of the memecoin\n * @returns Promise<{ flaunchAddress: Address; tokenId: bigint }>\n */\n async getFlaunchTokenIdForMemecoin(\n coinAddress: Address\n ): Promise<{ flaunchAddress: Address; tokenId: bigint }> {\n const tokenId = await this.readFlaunch.tokenId(coinAddress);\n\n return {\n flaunchAddress: this.getFlaunchAddress(),\n tokenId,\n };\n }\n\n /**\n * URLs to try for a tokenURI, in order. With the default resolver an\n * ipfs:// URI fans out to every known public gateway; a custom resolver\n * from `setIPFSResolver` stays authoritative and yields exactly one URL.\n */\n private tokenUriCandidates(tokenURI: string): string[] {\n return this.resolveIPFS === defaultResolveIPFS\n ? resolveIPFSCandidates(tokenURI)\n : [this.resolveIPFS(tokenURI)];\n }\n\n /**\n * Retrieves metadata for a given coin\n * @param coinAddress - The address of the coin\n * @returns Promise<CoinMetadata & { symbol: string }> - The coin's metadata including name, symbol, description, and social links\n */\n async getCoinMetadata(\n coinAddress: Address\n ): Promise<CoinMetadata & { symbol: string }> {\n const memecoin = new ReadMemecoin(coinAddress, this.drift);\n const name = await memecoin.name();\n const symbol = await memecoin.symbol();\n const tokenURI = await memecoin.tokenURI();\n\n // get metadata from tokenURI\n const metadata = await fetchTokenUriMetadataWithFallback(\n this.tokenUriCandidates(tokenURI)\n );\n\n return {\n name,\n symbol,\n description: metadata.description ?? \"\",\n image: metadata.image ? this.resolveIPFS(metadata.image) : \"\",\n external_link: metadata.websiteUrl ?? metadata.website ?? \"\",\n collaborators: metadata.collaborators ?? [],\n discordUrl: metadata.discordUrl ?? \"\",\n twitterUrl: metadata.twitterUrl ?? metadata.twitter ?? \"\",\n telegramUrl: metadata.telegramUrl ?? metadata.telegram ?? \"\",\n };\n }\n\n /**\n * Retrieves metadata for a given coin using its token ID\n * @param flaunch - The address of the Flaunch contract\n * @param tokenId - The token ID of the coin\n * @returns The coin's metadata including name, symbol, description, and social links\n */\n async getCoinMetadataFromTokenId(\n flaunch: Address,\n tokenId: bigint\n ): Promise<CoinMetadata & { symbol: string }> {\n const _flaunch = new ReadFlaunch(flaunch, this.drift);\n const coinAddress = await _flaunch.memecoin(tokenId);\n return this.getCoinMetadata(coinAddress);\n }\n\n /**\n * Retrieves metadata for multiple coins using their token IDs\n * @param params - An array of objects containing flaunch contract address and token ID\n * @param batchSize - Optional, the number of ipfs requests to process in each batch\n * @param batchDelay - Optional, the delay in milliseconds between batches\n * @returns An array of objects containing coin address, name, symbol, description, and social links\n */\n async getCoinMetadataFromTokenIds(\n params: {\n flaunch: Address;\n tokenId: bigint;\n }[],\n batchSize: number = 9,\n batchDelay: number = 500\n ): Promise<\n {\n coinAddress: Address;\n name: string;\n symbol: string;\n description: any;\n image: string;\n external_link: any;\n collaborators: any;\n discordUrl: any;\n twitterUrl: any;\n telegramUrl: any;\n }[]\n > {\n if (!Number.isInteger(batchSize) || batchSize < 1) {\n throw new Error(`batchSize must be a positive integer, got ${batchSize}`);\n }\n if (!Number.isFinite(batchDelay) || batchDelay < 0) {\n throw new Error(`batchDelay must be >= 0, got ${batchDelay}`);\n }\n\n const multicall = new ReadMulticall(this.drift);\n\n // get coin addresses via multicall\n const coinAddresses_calldata = params.map((p) =>\n this.readFlaunch.contract.encodeFunctionData(\"memecoin\", {\n _tokenId: p.tokenId,\n })\n );\n const coinAddresses_result = await multicall.aggregate3(\n coinAddresses_calldata.map((calldata, i) => ({\n target: params[i].flaunch,\n callData: calldata,\n }))\n );\n const coinAddresses = coinAddresses_result.map((r) =>\n this.readFlaunch.contract.decodeFunctionReturn(\"memecoin\", r.returnData)\n );\n\n /// get coin metadata for each coin address via multicall\n const coinMetadata_calldata: Hex[] = [];\n // name, symbol, tokenURI for each coin\n coinAddresses.forEach(() => {\n coinMetadata_calldata.push(\n this.drift.adapter.encodeFunctionData({\n abi: MemecoinAbi,\n fn: \"name\",\n })\n );\n coinMetadata_calldata.push(\n this.drift.adapter.encodeFunctionData({\n abi: MemecoinAbi,\n fn: \"symbol\",\n })\n );\n coinMetadata_calldata.push(\n this.drift.adapter.encodeFunctionData({\n abi: MemecoinAbi,\n fn: \"tokenURI\",\n })\n );\n });\n const coinMetadata_result = await multicall.aggregate3(\n coinMetadata_calldata.map((calldata, i) => ({\n target: coinAddresses[Math.floor(i / 3)],\n callData: calldata,\n }))\n );\n\n // First decode all the results\n const results = [];\n for (let i = 0; i < coinAddresses.length; i++) {\n const name = this.drift.adapter.decodeFunctionReturn({\n abi: MemecoinAbi,\n fn: \"name\",\n data: coinMetadata_result[i * 3].returnData,\n });\n const symbol = this.drift.adapter.decodeFunctionReturn({\n abi: MemecoinAbi,\n fn: \"symbol\",\n data: coinMetadata_result[i * 3 + 1].returnData,\n });\n const tokenURI = this.drift.adapter.decodeFunctionReturn({\n abi: MemecoinAbi,\n fn: \"tokenURI\",\n data: coinMetadata_result[i * 3 + 2].returnData,\n });\n\n results.push({ name, symbol, tokenURI, coinAddress: coinAddresses[i] });\n }\n\n // Process IPFS requests in batches to avoid rate limiting\n const processedResults = [];\n for (let i = 0; i < results.length; i += batchSize) {\n const batch = results.slice(i, i + batchSize);\n const batchResults = await Promise.all(\n batch.map(async ({ name, symbol, tokenURI, coinAddress }) => {\n const metadata = await fetchTokenUriMetadataWithFallback(\n this.tokenUriCandidates(tokenURI)\n );\n\n return {\n coinAddress,\n name,\n symbol,\n description: metadata.description ?? \"\",\n image: metadata.image ? this.resolveIPFS(metadata.image) : \"\",\n external_link: metadata.websiteUrl ?? metadata.website ?? \"\",\n collaborators: metadata.collaborators ?? [],\n discordUrl: metadata.discordUrl ?? \"\",\n twitterUrl: metadata.twitterUrl ?? metadata.twitter ?? \"\",\n telegramUrl: metadata.telegramUrl ?? metadata.telegram ?? \"\",\n };\n })\n );\n processedResults.push(...batchResults);\n\n // Add a small delay between batches to avoid rate limiting\n if (i + batchSize < results.length) {\n await new Promise((resolve) => setTimeout(resolve, batchDelay));\n }\n }\n\n return processedResults;\n }\n\n /**\n * Watches for pool creation events\n * @param params - Parameters for watching pool creation\n * @returns Subscription to pool creation events\n */\n watchPoolCreated(params: WatchPoolCreatedParams) {\n return this.readPositionManager.watchPoolCreated(params);\n }\n\n /**\n * Parses a transaction to extract PoolCreated event data\n * @param txHash - The transaction hash to parse\n * @returns PoolCreated event parameters or null if not found\n */\n async getPoolCreatedFromTx(\n txHash: Hex\n ): Promise<PoolCreatedEventData | null> {\n if (!this.publicClient) {\n throw new Error(\"Public client is required to fetch transaction data\");\n }\n\n // Get transaction receipt\n const receipt = await this.publicClient.getTransactionReceipt({\n hash: txHash,\n });\n\n if (!receipt) {\n throw new Error(`Transaction not found: ${txHash}`);\n }\n\n // Find PoolCreated event in logs by trying to decode each log\n for (const log of receipt.logs) {\n try {\n const decodedLog = decodeEventLog({\n abi: FlaunchPositionManagerAbi,\n data: log.data,\n topics: log.topics,\n });\n\n if (decodedLog.eventName === \"PoolCreated\") {\n return {\n poolId: decodedLog.args._poolId as Hex,\n memecoin: decodedLog.args._memecoin as Address,\n memecoinTreasury: decodedLog.args._memecoinTreasury as Address,\n tokenId: decodedLog.args._tokenId as bigint,\n currencyFlipped: decodedLog.args._currencyFlipped as boolean,\n flaunchFee: decodedLog.args._flaunchFee as bigint,\n params: decodedLog.args._params as any,\n };\n }\n } catch (error) {\n // Not a PoolCreated event or decoding failed, continue to next log\n continue;\n }\n }\n\n return null;\n }\n\n /**\n * Watches for pool swap events\n * @param params - Parameters for watching pool swaps including optional coin filter\n * @returns Subscription to pool swap events\n */\n async watchPoolSwap(params: WatchPoolSwapParams) {\n return this.readPositionManager.watchPoolSwap<boolean>({\n ...params,\n filterByPoolId: params.filterByCoin\n ? await this.poolId(params.filterByCoin)\n : undefined,\n usdcIsCurrencyZero: params.filterByCoin\n ? this.usdcIsCurrencyZero(params.filterByCoin)\n : undefined,\n });\n }\n\n /**\n * Gets information about a liquidity position (read via PoolManager extsload)\n * @param params - Parameters for querying position info\n * @returns Position information\n */\n positionInfo(params: PositionInfoParams) {\n return this.readPoolManager.positionInfo(params);\n }\n\n /**\n * Gets the current tick for a given coin's pool\n * @param coinAddress - The address of the coin\n * @returns Promise<number> - The current tick of the pool\n */\n async currentTick(coinAddress: Address) {\n const poolId = await this.poolId(coinAddress);\n\n const poolState = await this.readPoolManager.poolSlot0({ poolId });\n return poolState.tick;\n }\n\n /**\n * Gets the current sqrt price for a given coin's pool\n * @param coinAddress - The address of the coin\n * @returns Promise<bigint> - sqrtPriceX96, zero if the pool has no price yet\n */\n async currentSqrtPriceX96(coinAddress: Address) {\n const poolId = await this.poolId(coinAddress);\n\n const poolState = await this.readPoolManager.poolSlot0({ poolId });\n return poolState.sqrtPriceX96;\n }\n\n /**\n * Calculates the coin price in USDC based on the current tick. The pool\n * pairs an 18-decimal coin against 6-decimal USDC, so the raw tick price is\n * scaled by 1e12 to get a human dollar price.\n * @param coinAddress - The address of the coin\n * @returns Promise<string> - The price of one coin in USDC (18 decimal string)\n */\n async coinPriceInUSDC(coinAddress: Address) {\n const isUSDCZero = this.usdcIsCurrencyZero(coinAddress);\n const currentTick = await this.currentTick(coinAddress);\n\n // raw price = currency1 per currency0 in wei terms\n const price = Math.pow(1.0001, currentTick);\n\n const usdcRawPerCoinRaw = isUSDCZero ? 1 / price : price;\n const usdcPerCoin =\n usdcRawPerCoinRaw * Math.pow(10, COIN_DECIMALS - USDC_DECIMALS);\n\n return usdcPerCoin.toFixed(18);\n }\n\n /**\n * Calculates the coin's market cap in USDC (price x the fixed 100 Billion supply)\n * @param coinAddress - The address of the coin\n * @returns Promise<string> - The market cap in USDC with 2 decimal precision\n */\n async coinMarketCapInUSDC(coinAddress: Address) {\n const totalSupply = 100_000_000_000; // 100 Billion tokens\n const priceInUSDC = await this.coinPriceInUSDC(coinAddress);\n return (parseFloat(priceInUSDC) * totalSupply).toFixed(2);\n }\n\n async fairLaunchInfo(coinAddress: Address) {\n const poolId = await this.poolId(coinAddress);\n return this.readFairLaunch.fairLaunchInfo({ poolId });\n }\n\n /**\n * Checks if a fair launch is currently active for a given coin\n * @param coinAddress - The address of the coin\n * @returns Promise<boolean> - True if fair launch is active, false otherwise\n */\n async isFairLaunchActive(coinAddress: Address) {\n const poolId = await this.poolId(coinAddress);\n return this.readFairLaunch.isFairLaunchActive({ poolId });\n }\n\n /** The fair launch window length in seconds for a coin (chosen at launch). */\n async fairLaunchDuration(coinAddress: Address) {\n const poolId = await this.poolId(coinAddress);\n return this.readFairLaunch.fairLaunchDuration({ poolId });\n }\n\n /**\n * Gets the initial tick for a fair launch\n * @param coinAddress - The address of the coin\n * @returns Promise<number> - The initial tick value\n */\n async initialTick(coinAddress: Address) {\n const poolId = await this.poolId(coinAddress);\n\n const fairLaunchInfo = await this.readFairLaunch.fairLaunchInfo({\n poolId,\n });\n return fairLaunchInfo.initialTick;\n }\n\n /**\n * Gets the USDC-only position in a fair launch (the side selling at the\n * fixed fair launch price)\n * @param coinAddress - The address of the coin\n * @returns Promise<{usdcAmount, coinAmount, tickLower, tickUpper}>\n */\n async fairLaunchUSDCOnlyPosition(coinAddress: Address) {\n const poolId = await this.poolId(coinAddress);\n const initialTick = await this.initialTick(coinAddress);\n const currentTick = await this.currentTick(coinAddress);\n const isUSDCZero = this.usdcIsCurrencyZero(coinAddress);\n\n let tickLower: number;\n let tickUpper: number;\n\n if (isUSDCZero) {\n tickLower = getValidTick({\n tick: initialTick + 1,\n roundDown: false,\n tickSpacing: this.TICK_SPACING,\n });\n tickUpper = tickLower + this.TICK_SPACING;\n } else {\n tickUpper = getValidTick({\n tick: initialTick - 1,\n roundDown: true,\n tickSpacing: this.TICK_SPACING,\n });\n tickLower = tickUpper - this.TICK_SPACING;\n }\n\n const { liquidity } = await this.readPoolManager.positionInfo({\n poolId,\n owner: this.getFairLaunchAddress(),\n tickLower,\n tickUpper,\n salt: \"\",\n });\n\n const { amount0, amount1 } = calculateUnderlyingTokenBalances(\n liquidity,\n tickLower,\n tickUpper,\n currentTick\n );\n\n const [usdcAmount, coinAmount] = isUSDCZero\n ? [amount0, amount1]\n : [amount1, amount0];\n\n return {\n usdcAmount,\n coinAmount,\n tickLower,\n tickUpper,\n };\n }\n\n /**\n * Gets the coin-only position in a fair launch\n * @param coinAddress - The address of the coin\n * @returns Promise<{usdcAmount, coinAmount, tickLower, tickUpper}>\n */\n async fairLaunchCoinOnlyPosition(coinAddress: Address) {\n const poolId = await this.poolId(coinAddress);\n const initialTick = await this.initialTick(coinAddress);\n const currentTick = await this.currentTick(coinAddress);\n const isUSDCZero = this.usdcIsCurrencyZero(coinAddress);\n\n let tickLower: number;\n let tickUpper: number;\n\n if (isUSDCZero) {\n tickLower = TickFinder.MIN_TICK;\n tickUpper = getValidTick({\n tick: initialTick - 1,\n roundDown: true,\n tickSpacing: this.TICK_SPACING,\n });\n } else {\n tickLower = getValidTick({\n tick: initialTick + 1,\n roundDown: false,\n tickSpacing: this.TICK_SPACING,\n });\n tickUpper = TickFinder.MAX_TICK;\n }\n\n const { liquidity } = await this.readPoolManager.positionInfo({\n poolId,\n owner: this.getFairLaunchAddress(),\n tickLower,\n tickUpper,\n salt: \"\",\n });\n\n const { amount0, amount1 } = calculateUnderlyingTokenBalances(\n liquidity,\n tickLower,\n tickUpper,\n currentTick\n );\n\n const [usdcAmount, coinAmount] = isUSDCZero\n ? [amount0, amount1]\n : [amount1, amount0];\n\n return {\n usdcAmount,\n coinAmount,\n tickLower,\n tickUpper,\n };\n }\n\n /**\n * Gets the bid wall (progressive floor) position for a coin\n * @param coinAddress - The address of the coin\n * @returns Promise<{usdcAmount, coinAmount, pendingUsdc, tickLower, tickUpper}>\n */\n async bidWallPosition(coinAddress: Address) {\n const poolId = await this.poolId(coinAddress);\n const isUSDCZero = this.usdcIsCurrencyZero(coinAddress);\n\n const {\n amount0_: amount0,\n amount1_: amount1,\n pendingEth_: pendingUsdc,\n } = await this.readBidWall.position({ poolId });\n const { tickLower, tickUpper } = await this.readBidWall.poolInfo({\n poolId,\n });\n\n const [usdcAmount, coinAmount] = isUSDCZero\n ? [amount0, amount1]\n : [amount1, amount0];\n\n return {\n usdcAmount,\n coinAmount,\n pendingUsdc,\n tickLower,\n tickUpper,\n };\n }\n\n /**\n * Gets the USDC balance the creator (or split manager) can claim from the\n * FeeEscrow\n * @param creator - The address to check\n * @returns Promise<bigint> - The claimable balance (USDC, 6 decimals)\n */\n creatorRevenue(creator: Address) {\n return this.readFeeEscrow.balances(creator);\n }\n\n /**\n * Gets the referral escrow balance of a recipient for a given token.\n * Referral rewards accrue in the OUTPUT token of each swap: buys accrue the\n * coin, sells accrue USDC.\n * @param recipient - The address of the recipient to check\n * @param token - The token to check (a coin address or USDC)\n * @returns Promise<bigint> - The balance of the recipient\n */\n referralBalance(recipient: Address, token: Address) {\n return this.readReferralEscrow.allocations(recipient, token);\n }\n\n /**\n * Gets a recipient's claimable share inside an earnings-split manager\n * @param managerAddress - The AddressFeeSplitManager instance\n * @param recipient - The recipient to check\n * @returns Promise<bigint> - The claimable balance (USDC, 6 decimals)\n */\n splitBalance(managerAddress: Address, recipient: Address) {\n const readTreasuryManager = new ReadTreasuryManager(\n managerAddress,\n this.drift\n );\n return readTreasuryManager.balances(recipient);\n }\n\n async treasuryManagerInfo(treasuryManagerAddress: Address) {\n const readTreasuryManager = new ReadTreasuryManager(\n treasuryManagerAddress,\n this.drift\n );\n\n const [managerOwner, permissions] = await Promise.all([\n readTreasuryManager.managerOwner(),\n readTreasuryManager.permissions(),\n ]);\n\n return {\n managerOwner,\n permissions,\n };\n }\n\n /**\n * Fetches an address's daily holder pool entitlement from the ubi.fun API.\n * The returned cumulativeWei/proof pair is what the on-chain claim takes.\n * @param account - The holder address\n */\n async getUbiEntitlement(account: Address): Promise<UbiEntitlement> {\n const apiUrl = ApiBaseUrl[this.chainId];\n if (!apiUrl) {\n throw new Error(`No ubi.fun API for chain ${this.chainId}`);\n }\n const response = await axios.get(\n `${apiUrl}/ubi/${account.toLowerCase()}`\n );\n return response.data as UbiEntitlement;\n }\n\n /**\n * An address's claimable holder pool balance right now: the API entitlement\n * minus what was already claimed on-chain. Returns zero while the\n * entitlement's ledger root is still pending the URD timelock (a claim\n * against it would revert).\n * @param account - The holder address\n */\n async claimableUbi(account: Address): Promise<{\n claimable: bigint;\n entitlement: UbiEntitlement;\n }> {\n const entitlement = await this.getUbiEntitlement(account);\n if (!entitlement.cumulativeWei || !entitlement.proof) {\n return { claimable: 0n, entitlement };\n }\n\n if (entitlement.root) {\n const onChainRoot = await this.readUbiPool.root();\n if (entitlement.root.toLowerCase() !== onChainRoot.toLowerCase()) {\n // Root still inside the URD timelock; retry once it activates.\n return { claimable: 0n, entitlement };\n }\n }\n\n const cumulative = BigInt(entitlement.cumulativeWei);\n const claimed = await this.readUbiPool.claimed(account, USDC_ADDRESS);\n return {\n claimable: cumulative > claimed ? cumulative - claimed : 0n,\n entitlement,\n };\n }\n\n /**\n * Gets the pool ID for a given coin\n * @param coinAddress - The address of the coin\n * @returns Promise<string> - The pool ID\n */\n async poolId(coinAddress: Address) {\n return getPoolId(\n coinPoolKey(coinAddress, this.getPositionManagerAddress())\n );\n }\n\n /**\n * Gets the flaunching fee for a given initial price, in native units\n * (msg.value; USDC at 18 decimals on Arc). Zero at the $10k minimum market\n * cap.\n * @param params.sender - The address of the sender\n * @param params.initialMarketCapUSD - The initial market cap in USD\n * @param params.slippagePercent - The slippage percent\n * @returns Promise<bigint> - The flaunching fee\n */\n getFlaunchingFee(params: {\n sender: Address;\n initialMarketCapUSD: number;\n slippagePercent?: number;\n }) {\n const initialMCapInUSDCWei = parseUnits(\n params.initialMarketCapUSD.toString(),\n 6\n );\n const initialPriceParams = encodeAbiParameters(\n [\n {\n type: \"uint256\",\n },\n ],\n [initialMCapInUSDCWei]\n );\n\n return this.readPositionManager.getFlaunchingFee({\n sender: params.sender,\n initialPriceParams,\n slippagePercent: params.slippagePercent,\n });\n }\n\n /**\n * Calculates the msg.value required to flaunch a token: the premine cost (if\n * any) plus the flaunching fee. Native units (USDC at 18 decimals on Arc).\n * @param params.premineAmount - The amount of coins to be premined\n * @param params.initialMarketCapUSD - The initial market cap in USD\n * @param params.slippagePercent - The slippage percent\n * @returns Promise<bigint> - The value required to flaunch\n */\n valueRequiredToFlaunch(params: {\n premineAmount: bigint;\n initialMarketCapUSD: number;\n slippagePercent?: number;\n }) {\n const initialMCapInUSDCWei = parseUnits(\n params.initialMarketCapUSD.toString(),\n 6\n );\n const initialPriceParams = encodeAbiParameters(\n [\n {\n type: \"uint256\",\n },\n ],\n [initialMCapInUSDCWei]\n );\n\n return this.readFlaunchZap.valueRequiredToFlaunch({\n premineAmount: params.premineAmount,\n initialPriceParams,\n slippagePercent: params.slippagePercent,\n });\n }\n\n /**\n * Gets a quote for selling an exact amount of a coin for USDC\n * @param coinAddress - The address of the coin to sell\n * @param amountIn - The exact amount of coins to sell (18 decimals)\n * @param referrer - Optional referrer; must match the referrer used to swap\n * @returns Promise<bigint> - The expected USDC out (6 decimals)\n */\n getSellQuoteExactInput({\n coinAddress,\n amountIn,\n referrer,\n }: {\n coinAddress: Address;\n amountIn: bigint;\n referrer?: Address;\n }) {\n return this.readQuoter.getSellQuoteExactInput({\n coinAddress,\n amountIn,\n positionManagerAddress: this.getPositionManagerAddress(),\n referrer,\n });\n }\n\n /**\n * Gets a quote for buying a coin with an exact amount of USDC\n * @param coinAddress - The address of the coin to buy\n * @param amountIn - The exact amount of USDC to spend (6 decimals)\n * @param referrer - Optional referrer; must match the referrer used to swap\n * @returns Promise<bigint> - The expected coins out (18 decimals)\n */\n getBuyQuoteExactInput({\n coinAddress,\n amountIn,\n referrer,\n }: {\n coinAddress: Address;\n amountIn: bigint;\n referrer?: Address;\n }) {\n return this.readQuoter.getBuyQuoteExactInput({\n coinAddress,\n amountIn,\n positionManagerAddress: this.getPositionManagerAddress(),\n referrer,\n });\n }\n\n /**\n * Gets a quote for buying an exact amount of a coin, answering the USDC in\n * @param coinAddress - The address of the coin to buy\n * @param amountOut - The exact amount of coins to receive (18 decimals)\n * @param referrer - Optional referrer; must match the referrer used to swap\n * @returns Promise<bigint> - The required USDC in (6 decimals)\n */\n getBuyQuoteExactOutput({\n coinAddress,\n amountOut,\n referrer,\n }: {\n coinAddress: Address;\n amountOut: bigint;\n referrer?: Address;\n }) {\n return this.readQuoter.getBuyQuoteExactOutput({\n coinAddress,\n coinOut: amountOut,\n positionManagerAddress: this.getPositionManagerAddress(),\n referrer,\n });\n }\n\n /**\n * Determines if USDC is currency0 in the coin's pool\n * @param coinAddress - The address of the coin\n * @returns boolean - True if USDC is currency0, false otherwise\n */\n usdcIsCurrencyZero(coinAddress: Address) {\n return usdcIsCurrencyZero(coinAddress);\n }\n\n /**\n * Sets a custom IPFS resolver function\n * @dev this is used to resolve IPFS hash to a gateway URL\n * eg: input: Qabc, output: https://ipfs.io/ipfs/Qabc\n * @param resolverFn - Custom function to resolve IPFS URIs\n */\n setIPFSResolver(resolverFn: (ipfsHash: string) => string): void {\n this.resolveIPFS = resolverFn;\n }\n\n /**\n * Parses a transaction hash to extract PoolSwap events and return parsed swap data\n * @param params.txHash - The transaction hash to parse\n * @param params.usdcIsCurrencyZero - Whether USDC is currency0 in the pool (optional;\n * when provided, returns typed BUY/SELL data)\n * @returns Parsed swap log or undefined if no PoolSwap event found\n */\n async parseSwapTx<T extends boolean | undefined = undefined>(params: {\n txHash: Hex;\n usdcIsCurrencyZero?: T;\n }): Promise<\n T extends boolean\n ? BuySwapLog | SellSwapLog | undefined\n : BaseSwapLog | undefined\n > {\n return this.readPositionManager.parseSwapTx(\n params.txHash,\n params.usdcIsCurrencyZero\n ) as any;\n }\n\n async getCoinInfo(coinAddress: Address): Promise<{\n totalSupply: bigint;\n decimals: number;\n formattedTotalSupplyInDecimals: number;\n }> {\n const memecoin = new ReadMemecoin(coinAddress, this.drift);\n const [totalSupply, decimals] = await Promise.all([\n memecoin.totalSupply(),\n memecoin.decimals(),\n ]);\n const formattedTotalSupplyInDecimals = parseFloat(\n formatUnits(totalSupply, decimals)\n );\n return { totalSupply, decimals, formattedTotalSupplyInDecimals };\n }\n\n isFlaunchTokenApprovedForAll(owner: Address, operator: Address) {\n return this.drift.read({\n abi: erc721Abi,\n address: this.getFlaunchAddress(),\n fn: \"isApprovedForAll\",\n args: { owner, operator },\n });\n }\n}\n\nexport class ReadWriteFlaunchSDK extends ReadFlaunchSDK {\n declare drift: Drift<ReadWriteAdapter>;\n public readonly readWriteFeeEscrow: ReadWriteFeeEscrow;\n public readonly readWriteReferralEscrow: ReadWriteReferralEscrow;\n public readonly readWriteFlaunchZap: ReadWriteFlaunchZap;\n public readonly readWritePoolSwap: ReadWritePoolSwap;\n public readonly readWriteXHandleClaims: ReadWriteXHandleClaims;\n public readonly readWriteUbiPool: ReadWriteUniversalRewardsDistributor;\n public readonly readWriteTreasuryManagerFactory: ReadWriteTreasuryManagerFactory;\n\n constructor(\n chainId: number,\n drift: Drift<ReadWriteAdapter> = createDrift(),\n publicClient?: PublicClient\n ) {\n super(chainId, drift, publicClient);\n this.readWriteFeeEscrow = new ReadWriteFeeEscrow(\n FeeEscrowAddress[this.chainId],\n drift\n );\n this.readWriteReferralEscrow = new ReadWriteReferralEscrow(\n ReferralEscrowAddress[this.chainId],\n drift\n );\n this.readWriteFlaunchZap = new ReadWriteFlaunchZap(\n this.chainId,\n FlaunchZapAddress[this.chainId],\n drift\n );\n this.readWritePoolSwap = new ReadWritePoolSwap(\n PoolSwapAddress[this.chainId],\n drift\n );\n this.readWriteXHandleClaims = new ReadWriteXHandleClaims(\n XHandleClaimsAddress[this.chainId],\n drift\n );\n this.readWriteUbiPool = new ReadWriteUniversalRewardsDistributor(\n UniversalRewardsDistributorAddress[this.chainId],\n drift\n );\n this.readWriteTreasuryManagerFactory = new ReadWriteTreasuryManagerFactory(\n this.chainId,\n TreasuryManagerFactoryAddress[this.chainId],\n drift,\n this.publicClient\n );\n }\n\n /**\n * Launches a new coin through the FlaunchZap\n * @param params - Parameters for the launch\n * @returns Transaction response\n */\n flaunch(params: FlaunchParams) {\n return this.readWriteFlaunchZap.flaunch(params);\n }\n\n /**\n * Launches a new coin, pinning the image + metadata first to produce the tokenUri\n * @param params - Parameters for the launch with IPFS data\n * @returns Transaction response\n */\n flaunchIPFS(params: FlaunchIPFSParams) {\n return this.readWriteFlaunchZap.flaunchIPFS(params);\n }\n\n flaunchWithSplitManager(params: FlaunchWithSplitManagerParams) {\n return this.readWriteFlaunchZap.flaunchWithSplitManager(params);\n }\n\n /**\n * Launches a new coin that splits the creator revenue between the creator and a\n * list of recipients, storing the token metadata on IPFS\n * @param params - Parameters including all IPFS metadata\n * @returns Transaction response\n */\n flaunchIPFSWithSplitManager(params: FlaunchWithSplitManagerIPFSParams) {\n return this.readWriteFlaunchZap.flaunchIPFSWithSplitManager(params);\n }\n\n /** ubi.fun-branded alias of {@link flaunch}. */\n createUBI(params: FlaunchParams) {\n return this.flaunch(params);\n }\n\n /** ubi.fun-branded alias of {@link flaunchIPFS}. */\n createUBIIPFS(params: FlaunchIPFSParams) {\n return this.flaunchIPFS(params);\n }\n\n /** ubi.fun-branded alias of {@link flaunchWithSplitManager}. */\n createUBIWithSplitManager(params: FlaunchWithSplitManagerParams) {\n return this.flaunchWithSplitManager(params);\n }\n\n /** ubi.fun-branded alias of {@link flaunchIPFSWithSplitManager}. */\n createUBIIPFSWithSplitManager(params: FlaunchWithSplitManagerIPFSParams) {\n return this.flaunchIPFSWithSplitManager(params);\n }\n\n async coinBalance(coinAddress: Address) {\n const user = await this.drift.getSignerAddress();\n const memecoin = new ReadMemecoin(coinAddress, this.drift);\n await memecoin.contract.cache.clear();\n return memecoin.balanceOf(user);\n }\n\n /** The connected wallet's USDC (6 decimals) balance. */\n async usdcBalance() {\n const user = await this.drift.getSignerAddress();\n const usdc = new ReadMemecoin(USDC_ADDRESS, this.drift);\n await usdc.contract.cache.clear();\n return usdc.balanceOf(user);\n }\n\n /**\n * The connected wallet's allowance of `token` to PoolSwap. Pass USDC_ADDRESS\n * before a buy, the coin address before a sell.\n */\n async swapAllowance(token: Address) {\n const owner = await this.drift.getSignerAddress();\n const erc20 = new ReadMemecoin(token, this.drift);\n await erc20.contract.cache.clear();\n return erc20.allowance(owner, this.readWritePoolSwap.contract.address);\n }\n\n /**\n * Approves `amount` of `token` to PoolSwap. Pass USDC_ADDRESS before a buy,\n * the coin address before a sell.\n * @returns Transaction response\n */\n approveSwapInput(token: Address, amount: bigint) {\n const erc20 = new ReadWriteMemecoin(token, this.drift);\n return erc20.approve(this.readWritePoolSwap.contract.address, amount);\n }\n\n /**\n * Buys a coin with USDC through PoolSwap. Requires a prior USDC approval to\n * PoolSwap (see approveSwapInput); throws before sending if the allowance is\n * short.\n * @param params.coinAddress - The coin to buy\n * @param params.amountIn - Exact USDC to spend (6 decimals)\n * @param params.slippagePercent - Max price movement beyond the quoted fill, default 5 (%)\n * @param params.referrer - Optional referrer credited with 5% of the swap fee\n * @returns Transaction response\n */\n async buyCoin(params: {\n coinAddress: Address;\n amountIn: bigint;\n slippagePercent?: number;\n referrer?: Address;\n }) {\n return this.executeSwap({\n coinAddress: params.coinAddress,\n side: \"buy\",\n amountIn: params.amountIn,\n slippagePercent: params.slippagePercent,\n referrer: params.referrer,\n });\n }\n\n /**\n * Sells a coin for USDC through PoolSwap. Requires a prior coin approval to\n * PoolSwap (see approveSwapInput); throws before sending if the allowance is\n * short.\n * @param params.coinAddress - The coin to sell\n * @param params.amountIn - Exact coins to sell (18 decimals)\n * @param params.slippagePercent - Max price movement beyond the quoted fill, default 5 (%)\n * @param params.referrer - Optional referrer credited with 5% of the swap fee\n * @returns Transaction response\n */\n async sellCoin(params: {\n coinAddress: Address;\n amountIn: bigint;\n slippagePercent?: number;\n referrer?: Address;\n }) {\n return this.executeSwap({\n coinAddress: params.coinAddress,\n side: \"sell\",\n amountIn: params.amountIn,\n slippagePercent: params.slippagePercent,\n referrer: params.referrer,\n });\n }\n\n private async executeSwap(params: {\n coinAddress: Address;\n side: \"buy\" | \"sell\";\n amountIn: bigint;\n slippagePercent?: number;\n referrer?: Address;\n }) {\n const inputToken =\n params.side === \"buy\" ? USDC_ADDRESS : params.coinAddress;\n\n const allowance = await this.swapAllowance(inputToken);\n if (allowance < params.amountIn) {\n throw new Error(\n `Insufficient ${params.side === \"buy\" ? \"USDC\" : \"coin\"} allowance to PoolSwap: ` +\n `have ${allowance}, need ${params.amountIn}. Call approveSwapInput first.`\n );\n }\n\n const sqrtPriceX96 = await this.currentSqrtPriceX96(params.coinAddress);\n if (sqrtPriceX96 === 0n) {\n throw new Error(\n \"Pool has no observed price yet; try again after the first swap\"\n );\n }\n\n const quotedAmountOut =\n params.side === \"buy\"\n ? await this.getBuyQuoteExactInput({\n coinAddress: params.coinAddress,\n amountIn: params.amountIn,\n referrer: params.referrer,\n })\n : await this.getSellQuoteExactInput({\n coinAddress: params.coinAddress,\n amountIn: params.amountIn,\n referrer: params.referrer,\n });\n\n const zeroForOne = swapDirection(params.side, params.coinAddress);\n\n return this.readWritePoolSwap.swap({\n poolKey: coinPoolKey(\n params.coinAddress,\n this.getPositionManagerAddress()\n ),\n zeroForOne,\n // Exact-in is negative amountSpecified in v4 semantics.\n amountSpecified: -params.amountIn,\n // Anchor the bound on the quoted end price, not spot: a large trade's\n // own impact must not consume the slippage budget, or PoolSwap would\n // stop at the limit and settle a partial fill.\n sqrtPriceLimitX96: sqrtPriceLimit({\n current: expectedEndSqrtPriceX96({\n current: sqrtPriceX96,\n zeroForOne,\n amountIn: params.amountIn,\n amountOut: quotedAmountOut,\n }),\n zeroForOne,\n slippageBps: Math.round((params.slippagePercent ?? 5) * 100),\n }),\n referrer: params.referrer,\n });\n }\n\n /**\n * Withdraws the connected creator's accrued revenue from the FeeEscrow as\n * USDC\n * @param recipient - Optional recipient; defaults to the connected wallet\n * @returns Transaction response\n */\n async withdrawCreatorRevenue(params?: { recipient?: Address }) {\n const recipient =\n params?.recipient ?? (await this.drift.getSignerAddress());\n return this.readWriteFeeEscrow.withdrawFees(recipient);\n }\n\n /**\n * Claims the referral balance for a given recipient\n * @param tokens - The tokens to claim (coin addresses and/or USDC)\n * @param recipient - The address to receive the claimed tokens\n * @returns Transaction response\n */\n claimReferralBalance(tokens: Address[], recipient: Address) {\n return this.readWriteReferralEscrow.claimTokens(tokens, recipient);\n }\n\n /**\n * Claims the connected wallet's share from an earnings-split manager (paid\n * as USDC)\n * @param managerAddress - The AddressFeeSplitManager instance\n * @returns Transaction response\n */\n claimSplitEarnings(managerAddress: Address) {\n const readWriteTreasuryManager = new ReadWriteTreasuryManager(\n managerAddress,\n this.drift\n );\n return readWriteTreasuryManager.claim();\n }\n\n /**\n * Claims an address's outstanding daily holder pool balance from the\n * UniversalRewardsDistributor. Fetches the entitlement + proof from the\n * ubi.fun API; throws if nothing is claimable (including while the ledger\n * root is timelocked).\n * @param account - Optional holder; defaults to the connected wallet\n * @returns Transaction response\n */\n async claimUbi(account?: Address) {\n const holder = account ?? (await this.drift.getSignerAddress());\n const { claimable, entitlement } = await this.claimableUbi(holder);\n if (claimable === 0n || !entitlement.cumulativeWei || !entitlement.proof) {\n throw new Error(\"Nothing claimable for this address right now\");\n }\n\n return this.readWriteUbiPool.claim({\n account: holder,\n reward: USDC_ADDRESS,\n claimable: BigInt(entitlement.cumulativeWei),\n proof: entitlement.proof,\n });\n }\n\n treasuryManagerSetPermissions(\n treasuryManagerAddress: Address,\n permissionsAddress: Address\n ) {\n const readWriteTreasuryManager = new ReadWriteTreasuryManager(\n treasuryManagerAddress,\n this.drift\n );\n return readWriteTreasuryManager.setPermissions(permissionsAddress);\n }\n\n /**\n * Transfers the ownership of a treasury manager to a new address\n * @param treasuryManagerAddress - The address of the treasury manager\n * @param newManagerOwner - The address of the new manager owner\n * @returns Transaction response\n */\n treasuryManagerTransferOwnership(\n treasuryManagerAddress: Address,\n newManagerOwner: Address\n ) {\n const readWriteTreasuryManager = new ReadWriteTreasuryManager(\n treasuryManagerAddress,\n this.drift\n );\n return readWriteTreasuryManager.transferManagerOwnership(newManagerOwner);\n }\n\n /**\n * Sets approval for all Flaunch NFTs to an operator\n * @param operator - The operator address to approve/revoke\n * @param approved - Whether to approve or revoke approval\n * @returns Transaction response\n */\n setFlaunchTokenApprovalForAll(operator: Address, approved: boolean) {\n return this.drift.write({\n abi: erc721Abi,\n address: this.getFlaunchAddress(),\n fn: \"setApprovalForAll\",\n args: { operator, approved },\n });\n }\n\n /**\n * Adds an existing Flaunch NFT to a treasury manager. NFT approval must be\n * given prior to calling this function.\n * @param treasuryManagerAddress - The address of the treasury manager\n * @param tokenId - The token ID to deposit\n * @param creator - Optional creator address. If not provided, uses the connected wallet address\n * @param data - Optional additional data for the deposit (defaults to empty bytes)\n * @returns Transaction response\n */\n async addToTreasuryManager(\n treasuryManagerAddress: Address,\n tokenId: bigint,\n creator?: Address,\n data: `0x${string}` = \"0x\"\n ) {\n const readWriteTreasuryManager = new ReadWriteTreasuryManager(\n treasuryManagerAddress,\n this.drift\n );\n\n const flaunchToken = {\n flaunch: this.getFlaunchAddress(),\n tokenId,\n };\n\n const creatorAddress = creator ?? (await this.drift.getSignerAddress());\n\n return readWriteTreasuryManager.deposit(flaunchToken, creatorAddress, data);\n }\n}\n","import { Chain, defineChain } from \"viem\";\nimport { ARC_MAINNET_CHAIN_ID, ARC_TESTNET_CHAIN_ID } from \"../addresses\";\n\n/**\n * Arc (Circle) chain definitions for viem. Gas is paid in USDC: msg.value is\n * 18-decimal native USDC while the ERC20 interface at 0x3600... is the same\n * asset at 6 decimals.\n *\n * Arc mainnet is in its private phase: provider endpoints (including this\n * default) reject public traffic until Circle opens access, so pass your own\n * transport url. Once the network opens, public RPCs will be plentiful.\n */\nexport const arc = defineChain({\n id: ARC_MAINNET_CHAIN_ID,\n name: \"Arc\",\n nativeCurrency: {\n name: \"USD Coin\",\n symbol: \"USDC\",\n decimals: 18,\n },\n rpcUrls: {\n default: {\n http: [\"https://rpc.blockdaemon.mainnet.arc.io\"],\n },\n },\n blockExplorers: {\n default: {\n name: \"Arc Explorer\",\n url: \"https://explorer.arc.io\",\n },\n },\n});\n\nexport const arcTestnet = defineChain({\n id: ARC_TESTNET_CHAIN_ID,\n name: \"Arc Testnet\",\n testnet: true,\n nativeCurrency: {\n name: \"USD Coin\",\n symbol: \"USDC\",\n decimals: 18,\n },\n rpcUrls: {\n default: {\n http: [\"https://arc-testnet.drpc.org\", \"https://rpc.testnet.arc.network\"],\n },\n },\n blockExplorers: {\n default: {\n name: \"Arcscan\",\n url: \"https://testnet.arcscan.app\",\n },\n },\n});\n\nexport const chainIdToChain: {\n [key: number]: Chain;\n} = {\n [arc.id]: arc,\n [arcTestnet.id]: arcTestnet,\n};\n","import {\n createDrift as createDriftOriginal,\n Drift,\n ReadWriteAdapter,\n} from \"@delvtech/drift\";\nimport { viemAdapter } from \"@delvtech/drift-viem\";\nimport type { PublicClient, WalletClient } from \"viem\";\n\nexport type CreateDriftParams = {\n publicClient: PublicClient;\n walletClient?: WalletClient;\n};\n\n/**\n * Creates a read-only Drift instance with only public client\n * @param params - Parameters with only publicClient\n * @returns Drift instance for read-only operations\n * @throws Error if publicClient.chain is not configured\n */\nexport function createDrift(\n params: Omit<CreateDriftParams, \"walletClient\">\n): Drift;\n/**\n * Creates a read-write Drift instance with both public and wallet clients\n * @param params - Parameters with both publicClient and walletClient\n * @returns Drift instance for read and write operations\n * @throws Error if publicClient.chain is not configured\n */\nexport function createDrift(\n params: Required<CreateDriftParams>\n): Drift<ReadWriteAdapter>;\n\n/**\n * Creates a Drift instance with the provided clients\n * @param params - Parameters for creating the Drift instance\n * @returns Drift instance configured with the appropriate clients\n * @throws Error if publicClient.chain is not configured\n */\nexport function createDrift(\n params: CreateDriftParams\n): Drift | Drift<ReadWriteAdapter> {\n const { publicClient, walletClient } = params;\n\n if (!publicClient.chain) {\n throw new Error(\"publicClient must be configured with a chain\");\n }\n\n return walletClient\n ? createDriftOriginal({\n adapter: viemAdapter({ publicClient, walletClient }),\n })\n : createDriftOriginal({\n adapter: viemAdapter({ publicClient }),\n });\n}\n","import { createDrift } from \"./drift\";\nimport { viemAdapter } from \"@delvtech/drift-viem\";\nimport type { PublicClient, WalletClient } from \"viem\";\nimport { ReadFlaunchSDK, ReadWriteFlaunchSDK } from \"./FlaunchSDK\";\n\nexport type CreateFlaunchParams = {\n publicClient: PublicClient;\n walletClient?: WalletClient;\n};\n\n/**\n * Creates a read-only Flaunch SDK instance with only public client\n * @param params - Parameters with only publicClient\n * @returns ReadFlaunchSDK for read-only operations\n * @throws Error if publicClient.chain is not configured\n */\nexport function createFlaunch(\n params: Omit<CreateFlaunchParams, \"walletClient\">\n): ReadFlaunchSDK;\n/**\n * Creates a read-write Flaunch SDK instance with both public and wallet clients\n * @param params - Parameters with both publicClient and walletClient\n * @returns ReadWriteFlaunchSDK for read and write operations\n * @throws Error if publicClient.chain is not configured\n */\nexport function createFlaunch(\n params: Required<CreateFlaunchParams>\n): ReadWriteFlaunchSDK;\n\n/**\n * Creates a Flaunch SDK instance with the provided clients\n * @param params - Parameters for creating the SDK\n * @returns ReadFlaunchSDK if only publicClient is provided, ReadWriteFlaunchSDK if walletClient is also provided\n * @throws Error if publicClient.chain is not configured\n */\nexport function createFlaunch(params: CreateFlaunchParams) {\n const { publicClient, walletClient } = params;\n\n if (!publicClient.chain) {\n throw new Error(\"publicClient must be configured with a chain\");\n }\n\n const chainId = publicClient.chain.id;\n\n // Return appropriate SDK type based on whether walletClient is provided\n return walletClient\n ? new ReadWriteFlaunchSDK(\n chainId,\n createDrift({ publicClient, walletClient }),\n publicClient\n )\n : new ReadFlaunchSDK(chainId, createDrift({ publicClient }), publicClient);\n}\n","import {\n createWalletClient,\n http,\n encodeFunctionData,\n decodeFunctionData,\n parseAbi,\n type PublicClient,\n type WalletClient,\n type Address,\n type Hex,\n} from \"viem\";\nimport { createDrift } from \"./drift\";\nimport { ReadFlaunchSDK, ReadWriteFlaunchSDK } from \"./FlaunchSDK\";\n\n// ABI for encoding the call data\nexport const encodedCallAbi = parseAbi([\n \"function call(address to, uint256 value, bytes data)\",\n]);\n\nexport interface CallData {\n to: Address;\n value: bigint;\n data: Hex;\n}\n\nexport type CreateFlaunchCalldataParams = {\n publicClient: PublicClient;\n walletAddress?: Address;\n};\n\n/**\n * Creates a custom wallet client that returns encoded calldata instead of broadcasting transactions\n */\nexport function createCallDataWalletClient(\n publicClient: PublicClient,\n walletAddress: Address\n): WalletClient {\n if (!publicClient.chain) {\n throw new Error(\"publicClient must be configured with a chain\");\n }\n\n // Create a base wallet client with the chain configuration\n const baseWalletClient = createWalletClient({\n chain: publicClient.chain,\n transport: http(),\n });\n\n // Override the wallet client methods to return encoded calldata\n const callDataWalletClient = baseWalletClient.extend((client) => ({\n // Override the account-related methods to return the provided walletAddress\n get account() {\n return {\n address: walletAddress,\n type: \"json-rpc\" as const,\n } as any;\n },\n\n async getAddresses() {\n return [walletAddress];\n },\n\n async requestAddresses() {\n return [walletAddress];\n },\n\n // Override writeContract to return encoded calldata instead of broadcasting\n async writeContract(args: any) {\n const to = args.address as Address;\n const value = (args.value ?? 0n) as bigint;\n\n // Encode the function call data\n const calldata = encodeFunctionData({\n abi: args.abi,\n functionName: args.functionName,\n args: args.args,\n }) as Hex;\n\n // Encode the call using the standard call format\n const encodedCall = encodeFunctionData({\n abi: encodedCallAbi,\n functionName: \"call\",\n args: [to, value, calldata],\n }) as Hex;\n\n return encodedCall;\n },\n\n // Override sendTransaction to return encoded calldata instead of broadcasting\n async sendTransaction(args: any) {\n const to = args.to as Address;\n const value = (args.value ?? 0n) as bigint;\n const data = (args.data ?? \"0x\") as Hex;\n\n // Encode the call using the standard call format\n const encodedCall = encodeFunctionData({\n abi: encodedCallAbi,\n functionName: \"call\",\n args: [to, value, data],\n }) as Hex;\n\n return encodedCall;\n },\n\n // Override signTransaction to return encoded calldata (for consistency)\n async signTransaction(args: any) {\n const to = args.to as Address;\n const value = (args.value ?? 0n) as bigint;\n const data = (args.data ?? \"0x\") as Hex;\n\n const encodedCall = encodeFunctionData({\n abi: encodedCallAbi,\n functionName: \"call\",\n args: [to, value, data],\n }) as Hex;\n\n return encodedCall;\n },\n }));\n\n return callDataWalletClient;\n}\n\n/**\n * Creates a read-only Flaunch SDK instance with only public client\n * @param params - Parameters with only publicClient\n * @returns ReadFlaunchSDK for read-only operations\n * @throws Error if publicClient.chain is not configured\n */\nexport function createFlaunchCalldata(\n params: Omit<CreateFlaunchCalldataParams, \"walletAddress\">\n): ReadFlaunchSDK;\n/**\n * Creates a read-write Flaunch SDK instance that returns encoded calldata instead of broadcasting transactions\n * @param params - Parameters containing publicClient and walletAddress\n * @returns ReadWriteFlaunchSDK instance configured for calldata generation\n * @throws Error if publicClient.chain is not configured\n */\nexport function createFlaunchCalldata(\n params: Required<CreateFlaunchCalldataParams>\n): ReadWriteFlaunchSDK;\n\n/**\n * Creates a Flaunch SDK instance that returns encoded calldata instead of broadcasting transactions\n * @param params - Parameters containing publicClient and optionally walletAddress\n * @returns ReadFlaunchSDK if only publicClient is provided, ReadWriteFlaunchSDK if walletAddress is also provided\n * @throws Error if publicClient.chain is not configured\n */\nexport function createFlaunchCalldata(params: CreateFlaunchCalldataParams) {\n const { publicClient, walletAddress } = params;\n\n if (!publicClient.chain) {\n throw new Error(\"publicClient must be configured with a chain\");\n }\n\n const chainId = publicClient.chain.id;\n\n // Return appropriate SDK type based on whether walletAddress is provided\n if (walletAddress) {\n // Create custom wallet client that returns calldata\n const callDataWalletClient = createCallDataWalletClient(\n publicClient,\n walletAddress\n );\n\n // Create Drift with the custom wallet client\n const drift = createDrift({\n publicClient,\n walletClient: callDataWalletClient,\n });\n\n return new ReadWriteFlaunchSDK(chainId, drift);\n } else {\n // Create read-only SDK with only public client\n const drift = createDrift({ publicClient });\n return new ReadFlaunchSDK(chainId, drift);\n }\n}\n\n/**\n * Decodes the result from SDK methods into transaction object\n * @param encodedCall - The result returned by SDK methods\n * @returns Call data containing to, value, and data\n */\nexport function decodeCallData(encodedCall: Hex): CallData {\n const decodedCall = decodeFunctionData({\n abi: encodedCallAbi,\n data: encodedCall,\n });\n\n return {\n to: decodedCall.args[0] as Address,\n value: decodedCall.args[1] as bigint,\n data: decodedCall.args[2] as Hex,\n };\n}\n\n/**\n * Convenience function to call an SDK method and automatically parse the result as transaction object\n * @param sdkMethod - A function that returns a Promise<Hex> (encoded calldata)\n * @returns Promise<CallData> with decoded transaction parameters\n */\nexport async function parseCall<T extends (...args: any[]) => Promise<Hex>>(\n sdkMethod: T\n): Promise<CallData> {\n const encodedCall = await sdkMethod();\n return decodeCallData(encodedCall);\n}\n\n/**\n * Type helper for SDK methods that return encoded calldata\n */\nexport type CallDataMethod<T extends any[] = any[]> = (\n ...args: T\n) => Promise<Hex>;\n\n/**\n * Type helper for the result of a calldata operation\n */\nexport type CallDataResult = Promise<CallData>;\n","import { ReadFlaunchSDK, ReadWriteFlaunchSDK } from \"./sdk/FlaunchSDK\";\n\nexport * from \"./abi\";\nexport * from \"./addresses\";\nexport * from \"./helpers\";\nexport * from \"./utils/univ4\";\nexport * from \"./utils/parseSwap\";\nexport * from \"./utils/slippage\";\nexport * from \"./utils/swap\";\nexport * from \"./types\";\n\nexport type {\n BuySwapLog,\n SellSwapLog,\n BaseSwapLog,\n PoolCreatedLogs,\n PoolSwapLog,\n} from \"./clients/FlaunchPositionManagerClient\";\n\nexport {\n handleHashOf,\n normalizeHandle,\n HANDLE_RE,\n} from \"./clients/XHandleClaimsClient\";\n\nexport type { UbiEntitlement } from \"./sdk/FlaunchSDK\";\n\nexport { ReadFlaunchSDK, ReadWriteFlaunchSDK };\nexport { createFlaunch } from \"./sdk/factory\";\nexport type { CreateFlaunchParams } from \"./sdk/factory\";\nexport { createDrift } from \"./sdk/drift\";\n\n// Calldata generation exports\nexport {\n createFlaunchCalldata,\n decodeCallData,\n parseCall,\n createCallDataWalletClient,\n encodedCallAbi,\n} from \"./sdk/calldata\";\nexport type {\n CreateFlaunchCalldataParams,\n CallData,\n CallDataMethod,\n CallDataResult,\n} from \"./sdk/calldata\";\n\nexport const FlaunchSDK = {\n ReadFlaunchSDK,\n ReadWriteFlaunchSDK,\n};\n\n// ubi.fun-branded aliases. Internals keep the upstream Flaunch names so they\n// match the deployed contract ABIs and stay diffable against flaunch-sdk.\nexport {\n ReadFlaunchSDK as ReadUbiSDK,\n ReadWriteFlaunchSDK as ReadWriteUbiSDK,\n};\nexport { createFlaunch as createUbiSDK } from \"./sdk/factory\";\nexport type { CreateFlaunchParams as CreateUbiSDKParams } from \"./sdk/factory\";\nexport { createFlaunchCalldata as createUBICalldata } from \"./sdk/calldata\";\nexport type { CreateFlaunchCalldataParams as CreateUBICalldataParams } from \"./sdk/calldata\";\n\nexport const UbiSDK = {\n ReadUbiSDK: ReadFlaunchSDK,\n ReadWriteUbiSDK: ReadWriteFlaunchSDK,\n};\n"],"names":["createDrift","Q96","defaultResolveIPFS","createDriftOriginal"],"mappings":"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"}
|