@sign-global/tokentable-core 1.14.2 → 2.0.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/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/constants/chain-config.ts","../src/constants/network.ts","../src/constants/index.ts","../src/common/projectDataForTon.ts","../src/common/index.ts","../src/contracts/evm/contracts/abis/AirdropV3.json","../src/contracts/evm/contracts/ContractBaseClient.ts","../src/contracts/evm/contracts/AirdropV3Client.ts","../src/contracts/evm/contracts/abis/FeeCollector.json","../src/contracts/evm/contracts/FeeCollectorClient.ts","../src/contracts/evm/contracts/abis/Deployer.json","../src/contracts/evm/contracts/DeployClient.ts","../src/contracts/evm/contracts/abis/AirdropV3_Fee.json","../src/contracts/evm/contracts/AirdropV3FeeClient.ts","../src/contracts/evm/contracts/abis/CustomFeeNativeAirdropV4.json","../src/contracts/evm/contracts/AirdropV4Client.ts","../src/contracts/evm/AirdropService.ts","../src/contracts/evm/contracts/abis/KycHook.json","../src/contracts/evm/contracts/KycClient.ts","../src/types/index.ts","../src/utils/web3.ts","../src/utils/utils.ts","../src/utils/api-client.ts","../src/utils/math.ts","../src/utils/biz.ts","../src/contracts/evm/contracts/abis/FungibleTokenECDSADistributor.json","../src/contracts/evm/contracts/AirdropSignatureClient.ts","../src/contracts/evm/contracts/abis/FungibleTokenWithFeesECDSADistributor.json","../src/contracts/evm/contracts/AirdropSignatureFeeClient.ts","../src/contracts/evm/SignatureAirdropService.ts","../src/contracts/solana/MerkleDistributorClient.ts","../src/contracts/solana/SolanaContractClient.ts","../src/contracts/solana/merkle_token_distributor_solana.json","../src/contracts/solana/fee_collector.json","../src/contracts/solana/FeeCollectorClient.ts","../src/contracts/solana/AirdropService.ts","../src/contracts/solana/AirdropSignatureClient.ts","../src/contracts/solana/eddsa_token_with_fees_distributor_solana.json","../src/contracts/solana/SignatureAirdropService.ts","../src/contracts/ton/TonContractBaseClient.ts","../src/services/wallets/ton/WalletService.ts","../src/services/airdrop/index.ts","../src/contracts/ton/AirdropClientV1.ts","../src/contracts/ton/v1/wrappers/Leaf.ts","../src/contracts/ton/v1/utils/date.utils.ts","../src/contracts/ton/v1/utils/ton.utils.ts","../src/contracts/ton/v1/wrappers/MerkleTokenDistributor.ts","../src/contracts/ton/v1/build/Leaf.compiled.json","../src/contracts/ton/v2/wrappers/Leaf.ts","../src/contracts/ton/v2/utils/date.utils.ts","../src/contracts/ton/v2/utils/ton.utils.ts","../src/contracts/ton/v2/wrappers/MerkleTokenDistributor.ts","../src/contracts/ton/AirdropClientV2.ts","../src/contracts/ton/v2/build/Leaf.compiled.json","../src/contracts/ton/v3/wrappers/Leaf.ts","../src/contracts/ton/v3/utils/date.utils.ts","../src/contracts/ton/v3/utils/ton.utils.ts","../src/contracts/ton/v3/wrappers/MerkleTokenDistributor.ts","../src/contracts/ton/AirdropClientV3.ts","../src/contracts/ton/v3/build/Leaf.compiled.json","../src/contracts/ton/AirdropService.ts","../src/contracts/ton/v21/wrappers/Leaf.ts","../src/contracts/ton/v21/utils/date.utils.ts","../src/contracts/ton/v21/utils/ton.utils.ts","../src/contracts/ton/v21/wrappers/MerkleTokenDistributor.ts","../src/contracts/ton/AirdropClientV21.ts","../src/contracts/ton/v21/build/Leaf.compiled.json","../src/contracts/sui/SuiContractClient.ts","../src/contracts/sui/BaseDistributorClient.ts","../src/contracts/sui/DistributorWithFeeClient.ts","../src/contracts/sui/SignatureAirdropService.ts","../src/contracts/aptos/AptosContractClient.ts","../src/contracts/aptos/AptosAirdropClient.ts","../src/contracts/aptos/AptosBaseDistributorClient.ts","../src/contracts/aptos/AirdropService.ts"],"sourcesContent":["export * from './common';\nexport * from './constants';\nexport * from './contracts';\nexport * from './services';\nexport * from './types';\nexport * from './utils';\n","import {\n base,\n baseSepolia,\n cyber,\n mainnet,\n polygonMumbai,\n polygonAmoy,\n sepolia,\n zetachain,\n zetachainAthensTestnet,\n bsc,\n berachainTestnet,\n arbitrum,\n sonic,\n xLayer,\n megaethTestnet,\n monadTestnet,\n monad,\n memecore,\n cronos\n} from 'viem/chains';\nimport {\n aptosTestNet,\n hyperEVM,\n megaeth,\n mevmDevNet,\n signBrBTestnet,\n solanaDevNet,\n solanaMainNet,\n suiMainNet,\n suiTestNet,\n tonMainNet,\n tonTestNet\n} from './network';\nimport { CHAIN } from '@tonconnect/sdk';\n\nexport const SupportedChains = [\n mainnet,\n bsc,\n base,\n cyber,\n zetachain,\n arbitrum,\n monad,\n cronos,\n memecore,\n megaeth,\n tonTestNet,\n tonMainNet,\n signBrBTestnet,\n sonic,\n xLayer,\n hyperEVM,\n sepolia,\n baseSepolia,\n zetachainAthensTestnet,\n berachainTestnet,\n polygonMumbai,\n polygonAmoy,\n mevmDevNet,\n megaethTestnet,\n monadTestnet\n] as const;\n\nexport type SupportedChainIds = (typeof SupportedChains)[number]['id'];\ntype ChainConfigItem = { contractAddress: string; rpcUrl: string } & Record<string, unknown>;\n\nexport const ChainConfig: Record<SupportedChainIds, ChainConfigItem> = {\n [mainnet.id]: {\n contractAddress: '0x0993Dd5384BcD116A3543889BC6ffA6C98948631',\n rpcUrl: 'https://eth-mainnet.g.alchemy.com/v2/udrqNPSB6i5n5L6QSM31Ng72h_hFOrVT'\n },\n [bsc.id]: {\n contractAddress: '0x6c241FF6d5c3f074b49aC10872770529d9e27BA4',\n rpcUrl: 'https://bnb-mainnet.g.alchemy.com/v2/udrqNPSB6i5n5L6QSM31Ng72h_hFOrVT'\n },\n [base.id]: {\n contractAddress: '0x3d1abcD56d53f7C8b04A753C6AF397903DC0f0F2',\n rpcUrl: 'https://base-mainnet.g.alchemy.com/v2/udrqNPSB6i5n5L6QSM31Ng72h_hFOrVT'\n },\n [monad.id]: {\n contractAddress: '0xa6A2d42E16a690E03bDe181319fDD085880F2605',\n rpcUrl: monad.rpcUrls.default.http[0]\n },\n [cronos.id]: {\n contractAddress: '0xa6A2d42E16a690E03bDe181319fDD085880F2605',\n rpcUrl: cronos.rpcUrls.default.http[0]\n },\n [memecore.id]: {\n contractAddress: '0xa6A2d42E16a690E03bDe181319fDD085880F2605',\n rpcUrl: memecore.rpcUrls.default.http[0]\n },\n [megaeth.id]: {\n contractAddress: '0xa6A2d42E16a690E03bDe181319fDD085880F2605',\n rpcUrl: megaeth.rpcUrls.default.http[0]\n },\n [cyber.id]: {\n contractAddress: '0x7915dA247674E430b2a4Dcf01e4471f709428Bc0',\n rpcUrl: cyber.rpcUrls.default.http[0]\n },\n [sepolia.id]: {\n contractAddress: '0xf3f5243B35376c6dea04169983A8c853c8BE6d69',\n rpcUrl: 'https://eth-sepolia.g.alchemy.com/v2/1tmk0FrhwTJHXh0XIyae7_SXw1lDCjgs'\n },\n [baseSepolia.id]: {\n contractAddress: '0x66c9fe5c76672B06Bf497eFfdaAfDf897D1e68d8',\n rpcUrl: baseSepolia.rpcUrls.default.http[0]\n },\n [zetachainAthensTestnet.id]: {\n contractAddress: '0x63aE2f2260DEfc11932d22410B976Ec29F54498B',\n rpcUrl: zetachainAthensTestnet.rpcUrls.default.http[0]\n },\n [zetachain.id]: {\n contractAddress: '0x00aFD4466E4Afa4F43cCd414b1BC65e574ACA2f5',\n rpcUrl: 'https://zetachain-mainnet.g.alchemy.com/v2/1tmk0FrhwTJHXh0XIyae7_SXw1lDCjgs'\n },\n [arbitrum.id]: {\n contractAddress: '0xeD09c23677D02f4f486E55f0f081cfc114EEa53b',\n rpcUrl: 'https://arb-mainnet.g.alchemy.com/v2/udrqNPSB6i5n5L6QSM31Ng72h_hFOrVT'\n },\n [hyperEVM.id]: {\n contractAddress: '0xeD09c23677D02f4f486E55f0f081cfc114EEa53b',\n rpcUrl: hyperEVM.rpcUrls.default.http[0]\n },\n [megaethTestnet.id]: {\n contractAddress: '0xa6A2d42E16a690E03bDe181319fDD085880F2605',\n rpcUrl: megaethTestnet.rpcUrls.default.http[0]\n },\n [monadTestnet.id]: {\n contractAddress: '0xa6A2d42E16a690E03bDe181319fDD085880F2605',\n rpcUrl: monadTestnet.rpcUrls.default.http[0]\n },\n [berachainTestnet.id]: {\n contractAddress: '',\n rpcUrl: '',\n availableSolutions: []\n },\n [polygonMumbai.id]: {\n contractAddress: '',\n rpcUrl: '',\n availableSolutions: []\n },\n [polygonAmoy.id]: {\n contractAddress: '',\n rpcUrl: '',\n availableSolutions: []\n },\n [mevmDevNet.id]: {\n contractAddress: '0x8D92827CdB67A503e9FB21B28a58F9dAb36B4973',\n rpcUrl: mevmDevNet.rpcUrls.default.http[0]\n },\n [signBrBTestnet.id]: {\n contractAddress: '0xeD09c23677D02f4f486E55f0f081cfc114EEa53b', // add default fee\n rpcUrl: signBrBTestnet.rpcUrls.default.http[0]\n },\n [sonic.id]: {\n contractAddress: '0xa6A2d42E16a690E03bDe181319fDD085880F2605',\n rpcUrl: sonic.rpcUrls.default.http[0]\n },\n [xLayer.id]: {\n contractAddress: '0xa6a2d42e16a690e03bde181319fdd085880f2605',\n rpcUrl: 'https://xlayerrpc.okx.com'\n },\n [CHAIN.TESTNET]: {\n name: 'TestNet',\n contractAddress: '',\n rpcUrl: 'https://testnet.toncenter.com/api/v2/jsonRPC', //https://toncenter.com/api/v2/jsonRPC\n tonApiPrefix: 'https://testnet.tonapi.io',\n blockExplorer: 'https://testnet.tonviewer.com'\n },\n [CHAIN.MAINNET]: {\n name: 'MainNet',\n contractAddress: '',\n rpcUrl: 'https://toncenter.com/api/v2/jsonRPC',\n tonApiPrefix: 'https://tonapi.io',\n blockExplorer: 'https://tonviewer.com'\n },\n [solanaDevNet.id]: {\n contractAddress: '',\n rpcUrl: solanaDevNet.rpcUrls.default.http[0]\n },\n [solanaMainNet.id]: {\n contractAddress: '',\n rpcUrl: solanaMainNet.rpcUrls.default.http[0]\n },\n [suiTestNet.id]: {\n contractAddress: '0xeb9691cd945745a89fd497746d30fb1a1e936865c6c514817d913fadef66df44',\n rpcUrl: suiTestNet.rpcUrls.default.http[0]\n },\n [suiMainNet.id]: {\n contractAddress: '0x3f73ec78d3e8a99277496edb6183d6075490983c2a29542a1c3f709aa31169b5',\n rpcUrl: suiMainNet.rpcUrls.default.http[0]\n },\n [aptosTestNet.id]: {\n contractAddress: '0x0ee860c2c1dc9e6d7c013cfc78cecfc226dfffa403b0ca212b38d958bc1048c9',\n rpcUrl: aptosTestNet.rpcUrls.default.http[0]\n }\n};\n","import { getFullnodeUrl } from '@mysten/sui/client';\nimport { CHAIN } from '@tonconnect/sdk';\nimport { defineChain } from 'viem';\n\nexport const mevmDevNet = defineChain({\n id: 30732,\n name: 'Movement M1 Devnet',\n network: 'mevm',\n nativeCurrency: { name: 'Move', symbol: 'MOVE', decimals: 18 },\n rpcUrls: {\n default: {\n http: ['https://mevm.devnet.imola.movementlabs.xyz']\n },\n public: {\n http: ['https://mevm.devnet.imola.movementlabs.xyz']\n }\n },\n blockExplorers: {\n etherscan: { name: 'Arbiscan', url: 'https://explorer.devnet.imola.movementlabs.xyz/' },\n default: { name: 'Arbiscan', url: 'https://explorer.devnet.imola.movementlabs.xyz/' }\n },\n contracts: {\n multicall3: {\n address: '0xD67Eca381AAbd0c049554f5714E7d8C21864c560',\n blockCreated: 500\n }\n }\n});\n\nexport const tonTestNet = {\n id: CHAIN.TESTNET,\n name: 'TON Testnet',\n network: 'TON_TESTNET',\n nativeCurrency: {\n decimals: 9,\n name: 'TON',\n symbol: 'TON'\n },\n rpcUrls: {\n public: {\n http: []\n },\n default: {\n http: []\n }\n },\n blockExplorers: {\n default: {\n name: 'tonviewer',\n url: 'https://testnet.tonviewer.com'\n }\n },\n testnet: true\n};\n\nexport const tonMainNet = {\n id: CHAIN.MAINNET,\n name: 'TON Mainnet',\n network: 'TON_MAINNET',\n nativeCurrency: {\n decimals: 9,\n name: 'TON',\n symbol: 'TON'\n },\n rpcUrls: {\n public: {\n http: []\n },\n default: {\n http: []\n }\n },\n blockExplorers: {\n default: {\n name: 'tonviwer',\n url: 'https://tonviewer.com'\n }\n }\n};\n\nexport const solanaDevNet = {\n id: 'devnet',\n name: 'Solana Devnet',\n network: 'Sol_DEVNET',\n nativeCurrency: {\n decimals: 9,\n name: 'SOL',\n symbol: 'SOL'\n },\n rpcUrls: {\n public: {\n http: ['https://serene-empty-film.solana-devnet.quiknode.pro/7fcc62232b14dc8a6a154597ee028ebf00e0c195']\n },\n default: {\n http: ['https://serene-empty-film.solana-devnet.quiknode.pro/7fcc62232b14dc8a6a154597ee028ebf00e0c195']\n }\n },\n blockExplorers: {\n default: {\n name: 'solscan',\n url: 'https://solscan.io/'\n }\n },\n testnet: true\n};\n\nexport const solanaMainNet = {\n id: 'mainnet-beta',\n name: 'Solana Mainnet',\n network: 'Sol_MAINNET',\n nativeCurrency: {\n decimals: 9,\n name: 'SOL',\n symbol: 'SOL'\n },\n rpcUrls: {\n public: {\n http: ['https://serene-empty-film.solana-mainnet.quiknode.pro/7fcc62232b14dc8a6a154597ee028ebf00e0c195']\n },\n default: {\n http: ['https://serene-empty-film.solana-mainnet.quiknode.pro/7fcc62232b14dc8a6a154597ee028ebf00e0c195']\n }\n },\n blockExplorers: {\n default: {\n name: 'solscan',\n url: 'https://solscan.io/'\n }\n },\n testnet: false\n};\n\nexport const signBrBTestnet = /*#__PURE__*/ defineChain({\n id: 74460002,\n name: 'Sign Brb Testnet',\n network: 'Sign Brb Testnet',\n nativeCurrency: {\n decimals: 18,\n name: 'BNB Token',\n symbol: 'BNB'\n },\n rpcUrls: {\n default: { http: ['https://brb-testnet-rpc-0.bk.sign.global/'] },\n public: { http: ['https://brb-testnet-rpc-0.bk.sign.global/'] }\n },\n blockExplorers: {\n default: {\n name: 'Sign Brb Testnet Explorer',\n url: 'https://explorer-testnet.bk.sign.global/'\n }\n },\n testnet: true\n});\n\nexport const suiTestNet = {\n id: 'testnet',\n name: 'Sui Testnet',\n network: 'Sui Testnet',\n nativeCurrency: {\n decimals: 9,\n name: 'Sui',\n symbol: 'SUI'\n },\n rpcUrls: {\n public: {\n http: [getFullnodeUrl('testnet')]\n },\n default: {\n http: [getFullnodeUrl('testnet')]\n }\n },\n blockExplorers: {\n default: {\n name: 'sui scan',\n url: 'https://testnet.suivision.xyz/'\n }\n },\n testnet: true\n};\n\nexport const suiMainNet = {\n id: 'mainnet',\n name: 'Sui Mainnet',\n network: 'Sui Mainnet',\n nativeCurrency: {\n decimals: 9,\n name: 'Sui',\n symbol: 'SUI'\n },\n rpcUrls: {\n public: {\n http: [getFullnodeUrl('mainnet')]\n },\n default: {\n http: [getFullnodeUrl('mainnet')]\n }\n },\n blockExplorers: {\n default: {\n name: 'sui scan',\n url: 'https://suivision.xyz/'\n }\n },\n testnet: false\n};\n\nexport const aptosTestNet = {\n id: 2,\n name: 'Aptos Testnet',\n network: 'Aptos Testnet',\n nativeCurrency: {\n decimals: 8,\n name: 'Aptos',\n symbol: 'APT'\n },\n rpcUrls: {\n public: {\n http: ['https://api.testnet.aptoslabs.com/v1']\n },\n default: {\n http: ['https://api.testnet.aptoslabs.com/v1']\n }\n },\n blockExplorers: {\n default: {\n name: 'aptos scan',\n url: 'hhttps://explorer.aptoslabs.com/'\n }\n },\n testnet: true\n};\n\nexport const hyperEVM = defineChain({\n id: 999,\n name: 'HyperEVM',\n nativeCurrency: {\n name: 'HYPE',\n symbol: 'HYPE',\n decimals: 18\n },\n rpcUrls: {\n default: { http: ['https://rpc.hyperliquid.xyz/evm'] }\n },\n blockExplorers: {\n default: {\n name: 'HyperEVMScan',\n url: 'https://hyperevmscan.io/'\n }\n },\n contracts: {\n multicall3: {\n address: '0xcA11bde05977b3631167028862bE2a173976CA11',\n blockCreated: 13051\n }\n }\n});\n\nexport const megaeth = /*#__PURE__*/ defineChain({\n id: 4326,\n blockTime: 1_000,\n name: 'MegaETH',\n nativeCurrency: {\n name: 'Ether',\n symbol: 'ETH',\n decimals: 18\n },\n rpcUrls: {\n default: {\n http: ['https://mainnet.megaeth.com/rpc'],\n webSocket: ['wss://mainnet.megaeth.com/ws']\n }\n },\n blockExplorers: {\n default: {\n name: 'Blockscout',\n url: 'https://megaeth.blockscout.com',\n apiUrl: 'https://megaeth.blockscout.com/api'\n }\n },\n contracts: {\n multicall3: {\n address: '0xcA11bde05977b3631167028862bE2a173976CA11'\n }\n }\n});\n","// 基础常量\nexport const ZERO_ADDRESS = '0x0000000000000000000000000000000000000000';\n\nexport const CONST = {\n TWITTER_AUTH_SUCCESS: 'twitter:auth:success',\n DISCORD_AUTH_SUCCESS: 'discord:auth:success',\n GOOGLE_AUTH_SUCCESS: 'google:auth:success',\n WELCOME_SIGNATURE_STATEMENT: 'Welcome to TokenTable!'\n} as const;\n\n// 链配置\nexport * from './chain-config';\nexport * from './network';\n\nexport { ChainConfig, SupportedChains } from './chain-config';\n","export const projectDataForTon = {\n ava: {\n '12345': 'AD_18uwEPKbTXZo',\n '67890': 'AD_XOPhRRGggtjK',\n abcABC: 'AD_qKwG21hnimAB',\n defDEF: 'AD_CfAV1GNekDAQ',\n ghiGHI: 'AD_uwipChWywF4V',\n jklJKL: 'AD_d3tai5RtikM2',\n mnoMNO: 'AD_dMEF8ToRIqzY',\n pqrPQR: 'AD_vdx6P5QHc1ES',\n stuSTU: 'AD_2k77RlCRD1ds',\n vwxVWX: 'AD_hiXx1hLsIkBM',\n 'yz-_YZ': 'AD_cj99f5rdUU8C'\n },\n dogs: {\n '12': 'AD_P2ipWbDVrtSE',\n '34': 'AD_cXW3IFfYHfa5',\n '56': 'AD_NG5bNpQOHuqI',\n '78': 'AD_KvnQeG76AgYs',\n '90': 'AD_xlv2JO3PQdtR',\n aA: 'AD_kc0CJE8RPvJy',\n bB: 'AD_yRFzJyPoAOY4',\n cC: 'AD_yN14YHi4F29p',\n dD: 'AD_jWsTmtfnbzVn',\n eE: 'AD_ZfFnjr06dhp7',\n fF: 'AD_s58jwEK3EggA',\n gG: 'AD_qKszLFxv5PDy',\n hH: 'AD_RzefaG1fi44A',\n iI: 'AD_LItldBE09QRn',\n jJ: 'AD_SzKbQmVOz0S1',\n kK: 'AD_rNrYIzCzye0W',\n lL: 'AD_IbtlhoM0M6SZ',\n mM: 'AD_m2NUNiwCgFES',\n nN: 'AD_3mb6NTcYPw5y',\n oO: 'AD_kVrO6qmmZDUK',\n pP: 'AD_cV9g8YMQZ0iB',\n qQ: 'AD_esdFer2shKO3',\n rR: 'AD_BqZmJzFKapu0',\n sS: 'AD_iOU6Rnltj3sx',\n tT: 'AD_M8J1QU64Yuzi',\n uU: 'AD_es9ceiuC8TXq',\n vV: 'AD_7DXSpRcGivjO',\n wW: 'AD_0uI9R6Sc6jY4',\n xX: 'AD_FyrRNdtrgqKj',\n yY: 'AD_JR0ktPVqVriT',\n zZ: 'AD_bb9I2XdIqM6W',\n '_-': 'AD_qaLi6r8K9BAv'\n },\n ava2: {\n '1234567890_': 'AD_EZFWfhs641YQ',\n 'aAbBcCdDeE-': 'AD_jCVjsDT9g6h3',\n fFgGhHiIjJ: 'AD_7nF9gncQeVW3',\n kKlLmMnNoO: 'AD_RmoPsyKeIah0',\n pPqQrRsStTZ: 'AD_zrK1RVGQ2Ogl',\n uUvVwWxXyYz: 'AD_fKN6IcxEIdIA'\n },\n wat: {\n '1234': 'AD_sMtwhyrqUFiZ',\n '5678': 'AD_CMZVOHQjeVBp',\n aAbB: 'AD_sdmcLLcDS59f',\n cCdD: 'AD_M9Zyy7VaLuR1',\n eEfF: 'AD_K4WWeUvk7aMj',\n gGhH: 'AD_AmCnivdzxToB',\n iIjJ: 'AD_2NgsKs5nyJhe',\n kKlL: 'AD_IOPluo9KRSM9',\n mMnN: 'AD_FMOlFAIOycQw',\n oOpP: 'AD_NCW9yZdOTPQ9',\n qQrR: 'AD_JjOkeBs0Jfsb',\n sStT: 'AD_hUkWbwWMWUvp',\n uUvV: 'AD_w9UAKxCxU84P',\n wWxX: 'AD_Vwa41VRRXjpP',\n yYzZ: 'AD_XQbS0ksJGDrB',\n '90_-': 'AD_LhssByVDm8Q1'\n },\n roolz: {\n abcdefghijklmnopqrstuvwxyz12345_: 'AD_3ZoF8wq7leAI',\n 'ABCDEFGHIJKLMNOPQRSTUVWXYZ67890-': 'AD_HMFs2ubSrC1K'\n }\n};\n","import { ChainConfig, SupportedChains } from '../constants';\nimport { ChainId } from '../types';\nimport { projectDataForTon } from './projectDataForTon';\n\nexport type SupportedChainType = (typeof SupportedChains)[number];\n\nexport function getChainById(chainId: ChainId): SupportedChainType {\n const chain = SupportedChains.find((chain) => chain.id === chainId);\n\n if (!chain) {\n throw new Error(`ChainId ${chainId} not supported.`);\n }\n\n return chain;\n}\n\nexport function getChainConfig(chainId: ChainId) {\n return ChainConfig[chainId];\n}\n\nexport function getChainRpc(chainId: ChainId): string {\n const config = getChainConfig(chainId as any);\n\n if (!config) {\n throw new Error(`ChainId ${chainId} not supported.`);\n }\n\n return config?.rpcUrl;\n}\n\nexport const getTonProjectIdByAddress = ({\n address,\n slug,\n data\n}: {\n address?: string;\n slug: string;\n data: Record<string, string>;\n}): string | undefined => {\n let project: Record<string, string> = projectDataForTon[slug as keyof typeof projectDataForTon];\n if (!project) {\n project = data;\n }\n\n if (!address) {\n const firstProject = Object.values(project)[0];\n return firstProject;\n }\n const lastText = address[address.length - 1];\n\n const group = Object.keys(project || {}).find((key) => key.includes(lastText));\n\n const projectId = group ? project[group as keyof typeof project] : undefined;\n\n return projectId;\n};\n","[\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"target\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"AddressEmptyCode\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"AddressInsufficientBalance\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"implementation\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"ERC1967InvalidImplementation\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ERC1967NonPayable\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"FailedInnerCall\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"IncorrectFees\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidInitialization\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidProof\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"LeafUsed\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"NotInitializing\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"OutsideClaimableTimeRange\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"OwnableInvalidOwner\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"OwnableUnauthorizedAccount\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ReentrancyGuardReentrantCall\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"SafeERC20FailedOperation\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"TimeInactive\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"UUPSUnauthorizedCallContext\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"slot\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"UUPSUnsupportedProxiableUUID\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"UnsupportedOperation\",\n \"type\": \"error\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"delegate\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"ClaimDelegateSet\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"recipient\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bytes32\",\n \"name\": \"group\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bytes\",\n \"name\": \"data\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"Claimed\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"uint64\",\n \"name\": \"version\",\n \"type\": \"uint64\"\n }\n ],\n \"name\": \"Initialized\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"string\",\n \"name\": \"projectId\",\n \"type\": \"string\"\n }\n ],\n \"name\": \"Initialized\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"previousOwner\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"newOwner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"OwnershipTransferred\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"implementation\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"Upgraded\",\n \"type\": \"event\"\n },\n {\n \"inputs\": [],\n \"name\": \"UPGRADE_INTERFACE_VERSION\",\n \"outputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address[]\",\n \"name\": \"\",\n \"type\": \"address[]\"\n },\n {\n \"internalType\": \"bytes32[][]\",\n \"name\": \"\",\n \"type\": \"bytes32[][]\"\n },\n {\n \"internalType\": \"bytes32[]\",\n \"name\": \"\",\n \"type\": \"bytes32[]\"\n },\n {\n \"internalType\": \"bytes[]\",\n \"name\": \"\",\n \"type\": \"bytes[]\"\n }\n ],\n \"name\": \"batchDelegateClaim\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32[]\",\n \"name\": \"proof\",\n \"type\": \"bytes32[]\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"group\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"data\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"claim\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes\",\n \"name\": \"\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"decodeLeafData\",\n \"outputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"index\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"claimableTimestamp\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"claimableAmount\",\n \"type\": \"uint256\"\n }\n ],\n \"internalType\": \"struct TokenTableMerkleDistributorData\",\n \"name\": \"\",\n \"type\": \"tuple\"\n }\n ],\n \"stateMutability\": \"pure\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes\",\n \"name\": \"data\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"decodeMOCALeafData\",\n \"outputs\": [\n {\n \"components\": [\n {\n \"components\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"index\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"claimableTimestamp\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"claimableAmount\",\n \"type\": \"uint256\"\n }\n ],\n \"internalType\": \"struct TokenTableMerkleDistributorData\",\n \"name\": \"base\",\n \"type\": \"tuple\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"expiryTimestamp\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"nftTokenId\",\n \"type\": \"uint256\"\n }\n ],\n \"internalType\": \"struct MOCAMerkleDistributorData\",\n \"name\": \"\",\n \"type\": \"tuple\"\n }\n ],\n \"stateMutability\": \"pure\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes32[]\",\n \"name\": \"\",\n \"type\": \"bytes32[]\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"delegateClaim\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"user\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"group\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"data\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"encodeLeaf\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"externalDelegateRegistry\",\n \"outputs\": [\n {\n \"internalType\": \"contract IDelegateRegistry\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"getClaimDelegate\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"getDeployer\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"getNFT\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"getRoot\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"getTime\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"getToken\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"projectId\",\n \"type\": \"string\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"owner_\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"initialize\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"leaf\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"isLeafUsed\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"owner\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"proxiableUUID\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"renounceOwnership\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"startTime\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"endTime\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"root\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"setBaseParams\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"setClaimDelegate\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"nft\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"setNFT\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"newOwner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"transferOwnership\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"newImplementation\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"data\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"upgradeToAndCall\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32[]\",\n \"name\": \"proof\",\n \"type\": \"bytes32[]\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"leaf\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"verify\",\n \"outputs\": [],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"version\",\n \"outputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"pure\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes\",\n \"name\": \"\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"withdraw\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n }\n]","import {\n Chain,\n createPublicClient,\n http,\n PublicClient,\n WalletClient,\n createWalletClient,\n MulticallParameters\n} from 'viem';\nimport { ChainId } from '../../../types';\n\nexport class ContractBaseClient {\n contractAddress: string;\n chainId: ChainId;\n connector?: WalletClient;\n abi: any;\n chain: Chain;\n chainRpc: string;\n private _publicClient?: PublicClient;\n private _walletClient?: WalletClient;\n\n constructor({\n contractAddress,\n chainId,\n walletClient,\n abi,\n chainRpc,\n chain\n }: {\n contractAddress: string;\n chainId: ChainId;\n walletClient?: WalletClient;\n abi: any;\n chainRpc: string;\n chain: Chain;\n }) {\n this.contractAddress = contractAddress;\n this.chainId = chainId;\n this.connector = walletClient;\n this.abi = abi;\n this.chain = chain;\n this.chainRpc = chainRpc;\n }\n\n protected get publicClient(): PublicClient {\n if (!this._publicClient) {\n this._publicClient = createPublicClient({\n chain: this.chain,\n transport: http(this.chainRpc)\n }) as PublicClient;\n }\n return this._publicClient as PublicClient;\n }\n\n protected get walletClient(): WalletClient {\n if (!this._walletClient) {\n this._walletClient =\n this.connector ||\n createWalletClient({\n chain: this.chain,\n transport: http(this.chainRpc)\n });\n }\n return this._walletClient;\n }\n\n async readContract({ functionName, args }: { functionName: string; args?: any }) {\n const result = await this.publicClient.readContract({\n abi: this.abi,\n address: this.contractAddress as `0x${string}`,\n functionName: functionName,\n args: args\n });\n\n return result;\n }\n\n async writeContract({ functionName, args, value }: { functionName: string; args?: any; value?: bigint }) {\n const { request } = await this.publicClient.simulateContract({\n abi: this.abi,\n address: this.contractAddress as `0x${string}`,\n functionName: functionName,\n args: args,\n account: this.walletClient?.account,\n value: value\n });\n const result = await this.walletClient.writeContract(request);\n\n return result;\n }\n\n async multiCall(parameters: MulticallParameters<any[], boolean>) {\n return await this.publicClient.multicall(parameters);\n }\n}\n","import { EvmContractClientOption } from '../../../types';\nimport AirdropAbi from './abis/AirdropV3.json';\nimport { ContractBaseClient } from './ContractBaseClient';\n\nexport class AirdropV3Client extends ContractBaseClient {\n constructor(options: EvmContractClientOption) {\n super({\n ...options,\n abi: options.abi || AirdropAbi\n });\n }\n\n async isLeafUsed(leaf: string) {\n return this.readContract({ functionName: 'isLeafUsed', args: ['0x' + leaf] });\n }\n\n async claim({ proof, group, data, value }: { proof: string[]; group: string; data: string; value?: bigint }) {\n return this.writeContract({\n functionName: 'claim',\n args: [proof, group, data],\n value: value || 0n\n });\n }\n\n async batchFetchClaimed(leafs: string[]) {\n return this.multiCall({\n contracts: leafs?.map((leaf) => {\n return {\n address: this.contractAddress,\n abi: this.abi,\n functionName: 'isLeafUsed',\n args: ['0x' + leaf]\n };\n })\n });\n }\n\n async getNFT() {\n return this.readContract({ functionName: 'getNFT' });\n }\n\n async version() {\n return this.readContract({ functionName: 'version' }) as Promise<string>;\n }\n\n async getDeployer() {\n return this.readContract({ functionName: 'getDeployer' }) as Promise<string>;\n }\n}\n","[\n {\n \"inputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"constructor\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"target\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"AddressEmptyCode\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"AddressInsufficientBalance\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"FailedInnerCall\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"FeesTooHigh\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"OwnableInvalidOwner\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"OwnableUnauthorizedAccount\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"SafeERC20FailedOperation\",\n \"type\": \"error\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"unlockerAddress\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"bips\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"CustomFeeSetBips\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"unlockerAddress\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"fixedFee\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"CustomFeeSetFixed\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"bips\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"DefaultFeeSetBips\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"previousOwner\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"newOwner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"OwnershipTransferred\",\n \"type\": \"event\"\n },\n {\n \"inputs\": [],\n \"name\": \"BIPS_PRECISION\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"MAX_FEE_BIPS\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"defaultFeesBips\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"unlockerAddress\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"tokenTransferred\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"getFee\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"tokensCollected\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"owner\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"renounceOwnership\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"unlockerAddress\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"bips\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"setCustomFeeBips\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"unlockerAddress\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"fixedFee\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"setCustomFeeFixed\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"bips\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"setDefaultFeeBips\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"newOwner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"transferOwnership\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"version\",\n \"outputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"pure\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"contract IERC20\",\n \"name\": \"token\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"withdrawFee\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"stateMutability\": \"payable\",\n \"type\": \"receive\"\n }\n]","import { EvmContractClientOption } from '../../../types';\nimport FeeCollectorABI from './abis/FeeCollector.json';\nimport { ContractBaseClient } from './ContractBaseClient';\n\nexport class FeeCollectorClient extends ContractBaseClient {\n constructor(options: EvmContractClientOption) {\n const address = options.contractAddress;\n if (!address) {\n throw new Error(`FeeCollectorService address not found on chain ${options.chainId}`);\n }\n super({\n ...options,\n contractAddress: address,\n abi: FeeCollectorABI\n });\n }\n\n async getFee(address: string, tokenTransferred: bigint): Promise<bigint> {\n return (await this.readContract({ functionName: 'getFee', args: [address, tokenTransferred] })) as bigint;\n }\n}\n","{\n \"abi\": [\n {\n \"inputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"constructor\"\n },\n {\n \"inputs\": [],\n \"name\": \"ERC1167FailedCreateClone\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"OwnableInvalidOwner\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"OwnableUnauthorizedAccount\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"UnsupportedOperation\",\n \"type\": \"error\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"previousOwner\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"newOwner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"OwnershipTransferred\",\n \"type\": \"event\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"enum MDType\",\n \"name\": \"mdType\",\n \"type\": \"uint8\"\n },\n {\n \"internalType\": \"string\",\n \"name\": \"projectId\",\n \"type\": \"string\"\n }\n ],\n \"name\": \"deploy\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"instance\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"projectId\",\n \"type\": \"string\"\n }\n ],\n \"name\": \"deployments\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"deployment\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"deployment\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"feeCollectors\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"feeCollectors\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"deployment\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"feeTokens\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"feeTokens\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"enum MDType\",\n \"name\": \"mdType\",\n \"type\": \"uint8\"\n }\n ],\n \"name\": \"implementations\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"implementation\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"owner\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"renounceOwnership\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"deployment\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"feeToken\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"feeCollector\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"setDeploymentFeeParams\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"enum MDType\",\n \"name\": \"mdType\",\n \"type\": \"uint8\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"implementation\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"setImplementation\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"enum MDType\",\n \"name\": \"mdType\",\n \"type\": \"uint8\"\n },\n {\n \"internalType\": \"string\",\n \"name\": \"projectId\",\n \"type\": \"string\"\n }\n ],\n \"name\": \"simulateDeploy\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"newOwner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"transferOwnership\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"version\",\n \"outputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"pure\",\n \"type\": \"function\"\n }\n ]\n}","import { EvmContractClientOption } from '../../../types';\nimport TTUDeployerContractABI from './abis/Deployer.json';\nimport { ContractBaseClient } from './ContractBaseClient';\n\nexport class DeployerClient extends ContractBaseClient {\n constructor(options: EvmContractClientOption) {\n const address = options.contractAddress;\n\n if (!address) {\n throw new Error(`TTDeployerContract address not found on chain ${options.chainId}`);\n }\n super({\n abi: TTUDeployerContractABI.abi,\n contractAddress: address,\n chainId: options.chainId,\n walletClient: options.walletClient,\n chainRpc: options.chainRpc,\n chain: options.chain\n });\n }\n\n async feeCollectors(address: string) {\n const result = await this.readContract({\n functionName: 'feeCollectors',\n args: [address]\n });\n return result;\n }\n\n async feeTokens(address: string) {\n const result = await this.readContract({\n functionName: 'feeTokens',\n args: [address]\n });\n return result;\n }\n}\n","[\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"target\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"AddressEmptyCode\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"AddressInsufficientBalance\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"implementation\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"ERC1967InvalidImplementation\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ERC1967NonPayable\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"FailedInnerCall\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"IncorrectFees\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidInitialization\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidProof\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"LeafUsed\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"NotInitializing\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"OutsideClaimableTimeRange\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"OwnableInvalidOwner\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"OwnableUnauthorizedAccount\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ReentrancyGuardReentrantCall\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"SafeERC20FailedOperation\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"TimeInactive\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"UUPSUnauthorizedCallContext\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"slot\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"UUPSUnsupportedProxiableUUID\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"UnsupportedOperation\",\n \"type\": \"error\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"delegate\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"ClaimDelegateSet\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"recipient\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bytes32\",\n \"name\": \"group\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bytes\",\n \"name\": \"data\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"Claimed\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"uint64\",\n \"name\": \"version\",\n \"type\": \"uint64\"\n }\n ],\n \"name\": \"Initialized\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"string\",\n \"name\": \"projectId\",\n \"type\": \"string\"\n }\n ],\n \"name\": \"Initialized\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"previousOwner\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"newOwner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"OwnershipTransferred\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"implementation\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"Upgraded\",\n \"type\": \"event\"\n },\n {\n \"inputs\": [],\n \"name\": \"UPGRADE_INTERFACE_VERSION\",\n \"outputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address[]\",\n \"name\": \"recipients\",\n \"type\": \"address[]\"\n },\n {\n \"internalType\": \"bytes32[][]\",\n \"name\": \"proofs\",\n \"type\": \"bytes32[][]\"\n },\n {\n \"internalType\": \"bytes32[]\",\n \"name\": \"groups\",\n \"type\": \"bytes32[]\"\n },\n {\n \"internalType\": \"bytes[]\",\n \"name\": \"datas\",\n \"type\": \"bytes[]\"\n }\n ],\n \"name\": \"batchDelegateClaim\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32[]\",\n \"name\": \"proof\",\n \"type\": \"bytes32[]\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"group\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"data\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"claim\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes\",\n \"name\": \"data\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"decodeLeafData\",\n \"outputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"index\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"claimableTimestamp\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"claimableAmount\",\n \"type\": \"uint256\"\n }\n ],\n \"internalType\": \"struct TokenTableMerkleDistributorData\",\n \"name\": \"\",\n \"type\": \"tuple\"\n }\n ],\n \"stateMutability\": \"pure\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"recipient\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes32[]\",\n \"name\": \"proof\",\n \"type\": \"bytes32[]\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"group\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"data\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"delegateClaim\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"user\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"group\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"data\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"encodeLeaf\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"getClaimDelegate\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"getDeployer\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"getFeelessThreshold\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"getRoot\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"getTime\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"getToken\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"projectId\",\n \"type\": \"string\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"owner_\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"initialize\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"leaf\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"isLeafUsed\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"owner\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"proxiableUUID\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"renounceOwnership\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"startTime\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"endTime\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"root\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"setBaseParams\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"delegate\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"setClaimDelegate\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"feelessThreshold\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"setFeelessThreshold\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"newOwner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"transferOwnership\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"newImplementation\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"data\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"upgradeToAndCall\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32[]\",\n \"name\": \"proof\",\n \"type\": \"bytes32[]\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"leaf\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"verify\",\n \"outputs\": [],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"version\",\n \"outputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"pure\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes\",\n \"name\": \"\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"withdraw\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"stateMutability\": \"payable\",\n \"type\": \"receive\"\n }\n]","import { EvmContractClientOption } from '../../../types';\nimport AirdropAbi from './abis/AirdropV3_Fee.json';\nimport { ContractBaseClient } from './ContractBaseClient';\n\nexport class AirdropV3FeeClient extends ContractBaseClient {\n constructor(options: EvmContractClientOption) {\n super({\n ...options,\n abi: options.abi || AirdropAbi\n });\n }\n\n async getFeelessThreshold() {\n return this.readContract({ functionName: 'getFeelessThreshold' });\n }\n}\n","[\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"target\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"AddressEmptyCode\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"AddressInsufficientBalance\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"implementation\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"ERC1967InvalidImplementation\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ERC1967NonPayable\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"FailedInnerCall\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"IncorrectFees\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidInitialization\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidProof\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"LeafUsed\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"NotInitializing\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"OutsideClaimableTimeRange\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"OwnableInvalidOwner\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"OwnableUnauthorizedAccount\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ReentrancyGuardReentrantCall\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"SafeERC20FailedOperation\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"TimeInactive\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"UUPSUnauthorizedCallContext\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"slot\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"UUPSUnsupportedProxiableUUID\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"UnsupportedOperation\",\n \"type\": \"error\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"delegate\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"ClaimDelegateSet\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"recipient\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bytes32\",\n \"name\": \"group\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bytes\",\n \"name\": \"data\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"Claimed\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"uint64\",\n \"name\": \"version\",\n \"type\": \"uint64\"\n }\n ],\n \"name\": \"Initialized\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"previousOwner\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"newOwner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"OwnershipTransferred\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"implementation\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"Upgraded\",\n \"type\": \"event\"\n },\n {\n \"inputs\": [],\n \"name\": \"UPGRADE_INTERFACE_VERSION\",\n \"outputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address[]\",\n \"name\": \"recipients\",\n \"type\": \"address[]\"\n },\n {\n \"internalType\": \"bytes32[][]\",\n \"name\": \"proofs\",\n \"type\": \"bytes32[][]\"\n },\n {\n \"internalType\": \"bytes32[]\",\n \"name\": \"groups\",\n \"type\": \"bytes32[]\"\n },\n {\n \"internalType\": \"bytes[]\",\n \"name\": \"datas\",\n \"type\": \"bytes[]\"\n },\n {\n \"internalType\": \"bytes[]\",\n \"name\": \"extraDatas\",\n \"type\": \"bytes[]\"\n }\n ],\n \"name\": \"batchDelegateClaim\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32[]\",\n \"name\": \"proof\",\n \"type\": \"bytes32[]\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"group\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"data\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"extraData\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"claim\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes\",\n \"name\": \"data\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"decodeLeafData\",\n \"outputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"index\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"claimableTimestamp\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"claimableAmount\",\n \"type\": \"uint256\"\n }\n ],\n \"internalType\": \"struct TokenTableMerkleDistributorData\",\n \"name\": \"\",\n \"type\": \"tuple\"\n }\n ],\n \"stateMutability\": \"pure\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"recipient\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes32[]\",\n \"name\": \"proof\",\n \"type\": \"bytes32[]\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"group\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"data\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"extraData\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"delegateClaim\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"user\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"group\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"data\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"encodeLeaf\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"getClaimDelegate\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"getClaimHook\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"getDeployer\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"getFeelessThreshold\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"getRoot\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"getTime\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"getToken\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"owner_\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"initialize\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"leaf\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"isLeafUsed\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"owner\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"proxiableUUID\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"renounceOwnership\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"startTime\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"endTime\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"root\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"setBaseParams\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"delegate\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"setClaimDelegate\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"hook\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"setClaimHook\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"feelessThreshold\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"setFeelessThreshold\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"newOwner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"transferOwnership\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"newImplementation\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"data\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"upgradeToAndCall\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32[]\",\n \"name\": \"proof\",\n \"type\": \"bytes32[]\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"leaf\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"verify\",\n \"outputs\": [],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"version\",\n \"outputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"pure\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes\",\n \"name\": \"\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"withdraw\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"stateMutability\": \"payable\",\n \"type\": \"receive\"\n }\n]","import { EvmContractClientOption } from '../../../types';\nimport AirdropAbi from './abis/CustomFeeNativeAirdropV4.json';\nimport { AirdropV3Client } from './AirdropV3Client';\n\nexport class AirdropV4Client extends AirdropV3Client {\n constructor(options: EvmContractClientOption) {\n super({\n ...options,\n abi: options.abi || AirdropAbi\n });\n }\n\n async claim({\n proof,\n group,\n data,\n value,\n extraData\n }: {\n proof: string[];\n group: string;\n data: string;\n value?: bigint;\n extraData?: string;\n }) {\n return this.writeContract({\n functionName: 'claim',\n args: [proof, group, data, extraData],\n value: value || 0n\n });\n }\n\n async getClaimHook() {\n return this.readContract({ functionName: 'getClaimHook' }) as Promise<string>;\n }\n}\n","import { AirdropV3Client } from './contracts/AirdropV3Client';\nimport { FeeCollectorClient } from './contracts/FeeCollectorClient';\nimport { DeployerClient } from './contracts/DeployClient';\nimport { AirdropV3FeeClient } from './contracts/AirdropV3FeeClient';\nimport { AirdropV4Client } from './contracts/AirdropV4Client';\nimport { encodeAbiParameters } from 'viem';\nimport { KycClientClient } from './contracts/KycClient';\nimport { ZERO_ADDRESS } from '../../constants';\nimport { EvmAirdropVersionEnum as AirdropVersionEnum, ChainId, EvmContractClientOption } from '../../types';\nimport { getChainById } from '../../common';\nimport { isGreaterThan } from '../../utils';\n\nexport class AirdropService {\n options: EvmContractClientOption;\n constructor(options: Omit<EvmContractClientOption, 'chain'>) {\n this.options = {\n ...options,\n chain: getChainById(options.chainId) as any\n };\n }\n\n private get airdropV3Client(): AirdropV3Client {\n if (!this.options) {\n throw new Error('options is empty');\n }\n\n return new AirdropV3Client(this.options);\n }\n\n private get airdropV3FeeClient(): AirdropV3FeeClient {\n if (!this.options) {\n throw new Error('options is empty');\n }\n\n return new AirdropV3FeeClient(this.options);\n }\n\n private get airdropV4Client(): AirdropV4Client {\n if (!this.options) {\n throw new Error('options is empty');\n }\n\n return new AirdropV4Client(this.options);\n }\n\n async getDeployerClient(): Promise<DeployerClient> {\n const deployer = await this.getDeployer();\n return new DeployerClient({\n ...this.options,\n contractAddress: deployer\n });\n }\n\n private getFeeClient(address: string): FeeCollectorClient {\n if (!this.options) {\n throw new Error('options is empty');\n }\n\n return new FeeCollectorClient({\n ...this.options,\n chainId: this.options.chainId as ChainId,\n contractAddress: address\n });\n }\n\n async getKycClient() {\n const claimHook = await this.airdropV4Client.getClaimHook();\n\n return new KycClientClient({\n ...this.options,\n contractAddress: claimHook\n });\n }\n\n async isLeafUsed(leaf: string): Promise<boolean> {\n return this.airdropV3Client.isLeafUsed(leaf) as Promise<boolean>;\n }\n\n async batchFetchClaimed(leafs: string[]) {\n return this.airdropV3Client.batchFetchClaimed(leafs) as Promise<{ result: boolean; status: string }[]>;\n }\n\n async claim({\n proof,\n group,\n data,\n value,\n extraData\n }: {\n proof: string[];\n group: string;\n data: string;\n value?: bigint;\n extraData?: {\n isLegacy: boolean;\n attestationId: bigint;\n };\n }) {\n const version = await this.getVersion();\n\n if (version === AirdropVersionEnum.V4 || version.startsWith('0.4.')) {\n const encodeData = encodeAbiParameters(\n [\n {\n type: 'tuple',\n components: [\n {\n name: 'isLegacy',\n type: 'bool'\n },\n {\n name: 'attestationId',\n type: 'uint'\n }\n ]\n }\n ],\n [extraData!]\n );\n return this.airdropV4Client.claim({\n proof,\n group,\n data,\n value,\n extraData: encodeData\n });\n }\n return this.airdropV3Client.claim({\n proof,\n group,\n data,\n value\n });\n }\n\n async getNFT() {\n return this.airdropV3Client.getNFT();\n }\n\n async getVersion() {\n return this.airdropV3Client.version();\n }\n\n async getDeployer() {\n return this.airdropV3Client.getDeployer();\n }\n\n feeCollectors = async (address: string) => {\n const deployerClient = await this.getDeployerClient();\n return await deployerClient.feeCollectors(address);\n };\n\n feeTokens = async (address: string) => {\n const deployerClient = await this.getDeployerClient();\n return await deployerClient.feeTokens(address);\n };\n\n async getFeelessThreshold() {\n return this.airdropV3FeeClient.getFeelessThreshold();\n }\n\n async getClaimFee(address: string, amount: bigint): Promise<bigint | undefined> {\n try {\n const feeCollector = await this.feeCollectors(this.options.contractAddress as string);\n if (!feeCollector || feeCollector === ZERO_ADDRESS) {\n return undefined;\n }\n const feeClient = this.getFeeClient(feeCollector as string);\n const fee = await feeClient.getFee(address, amount);\n const version = await this.getVersion();\n if (version === AirdropVersionEnum.V3) {\n const threshold = await this.getFeelessThreshold();\n if (isGreaterThan(Number(amount), Number(threshold))) {\n return fee;\n } else {\n return undefined;\n }\n }\n return fee;\n } catch (error) {\n console.error('Failed to get claim fee:', error);\n throw new Error(`Failed to calculate claim fee: ${error instanceof Error ? error.message : 'Unknown error'}`);\n }\n }\n\n async getKycThreshold() {\n const kycClient = await this.getKycClient();\n return kycClient.kycThreshold();\n }\n}\n","[\n {\n \"inputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"constructor\"\n },\n {\n \"inputs\": [],\n \"name\": \"KYCFailed\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"OwnableInvalidOwner\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"OwnableUnauthorizedAccount\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"Unsupported\",\n \"type\": \"error\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"previousOwner\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"newOwner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"OwnershipTransferred\",\n \"type\": \"event\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"spInstance\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"schemaId\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"attester\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"acceptedSchemasAndAttesters\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"approved\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"recipient\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes32[]\",\n \"name\": \"\",\n \"type\": \"bytes32[]\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"claimedAmount\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"extraData\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"afterClaim\",\n \"outputs\": [],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes32[]\",\n \"name\": \"\",\n \"type\": \"bytes32[]\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"beforeClaim\",\n \"outputs\": [],\n \"stateMutability\": \"pure\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"kycThreshold\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"legacySPInstance\",\n \"outputs\": [\n {\n \"internalType\": \"contract LegacyISP\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"owner\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"renounceOwnership\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"instance\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"schemaId\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"attester\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bool\",\n \"name\": \"approved\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"setAcceptedSchemaAndAttester\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"threshold\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"setKYCThreshold\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"legacySP\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"sp\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"setSPInstance\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"spInstance\",\n \"outputs\": [\n {\n \"internalType\": \"contract ISP\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"newOwner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"transferOwnership\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"version\",\n \"outputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"pure\",\n \"type\": \"function\"\n }\n]","import { EvmContractClientOption } from '../../../types';\nimport KycHookABI from './abis/KycHook.json';\nimport { ContractBaseClient } from './ContractBaseClient';\n\nexport class KycClientClient extends ContractBaseClient {\n constructor(options: EvmContractClientOption) {\n const address = options.contractAddress;\n if (!address) {\n throw new Error(`Kyc Client address not found on chain ${options.chainId}`);\n }\n super({\n ...options,\n contractAddress: address,\n abi: KycHookABI\n });\n }\n\n async kycThreshold(): Promise<bigint> {\n return (await this.readContract({ functionName: 'kycThreshold' })) as bigint;\n }\n}\n","import { TonConnectUI as TonWalletClient } from '@tonconnect/ui-react';\nimport { TonAirdropService, EvmAirdropService } from '../contracts';\nimport { ChainConfig } from '../constants';\nimport { Chain, WalletClient as ViemWalletClient } from 'viem';\nimport { WalletContextState as SolanaWalletState } from '@solana/wallet-adapter-react';\nimport { Wallet as SuiWalletClient } from '@mysten/wallet-standard';\nimport { useWallet } from '@aptos-labs/wallet-adapter-react';\n\nexport type ChainId = keyof typeof ChainConfig;\n\nexport interface EvmContractClientOption {\n chainId: ChainId;\n walletClient?: ViemWalletClient;\n contractAddress: string;\n abi?: any;\n chainRpc: string;\n chain: Chain;\n}\n\nexport enum ChainType {\n Evm = 'evm',\n Ton = 'ton',\n Solana = 'solana',\n Sui = 'sui',\n Aptos = 'aptos',\n Cosmos = 'cosmos'\n}\n\nexport type ThemeConfig = {\n logo?: string;\n title?: string;\n description?: string;\n coverImage?: string;\n subTitle?: string;\n primaryColor?: string;\n secondaryColor?: string;\n buttonPrimaryHover?: string;\n buttonSecondaryHover?: string;\n buttonPrimaryForeground?: string;\n buttonSecondaryForeground?: string;\n welcomeModalText?: string;\n welcomeModalTitle?: string;\n isShowWelcomeModal?: boolean;\n blockCountries?: string;\n termsOfUse?: string;\n successModalPrimaryBtnText?: string;\n successModalUrl?: string;\n successModalTitle?: string;\n successModalDesc?: string;\n successModalShareTexts?: string;\n isUnAvailable?: boolean;\n privacyPolicy?: string;\n};\n\nexport interface IProject {\n id: string;\n name: string;\n chainId: string;\n chainType: ChainType;\n tokenAddress: string;\n tokenType: string;\n startTime: number;\n endTime: number;\n contractAddress: string;\n recipientType: string;\n merkleRoot: string;\n ownerAddress: string;\n blockCountries: Record<string, string>;\n themeConf: ThemeConfig | null;\n version: string;\n extra?: IProjectExtra;\n identities: Identity[];\n projectTag: string;\n}\n\nexport interface Identity {\n identityType: string;\n authorizeUrl?: string;\n}\n\nexport enum AirdropSigIdentityTypeEnum {\n Twitter = 'X Account',\n SolanaWallet = 'Solana Wallet',\n EVMWallet = 'EVM Wallet',\n TONWallet = 'TON Wallet',\n CosmosWallet = 'Cosmos Wallet',\n SuiWallet = 'Sui Wallet',\n Google = 'Google Account',\n Discord = 'Discord Account'\n}\n\nexport interface IProjectExtra {\n kyc: boolean;\n tag: string;\n seed: number;\n signer: string;\n identities: string[];\n}\n\nexport enum ETokenType {\n Erc20 = 'ERC20',\n Native = 'NATIVE_TOKEN',\n NFT = 'ERC721'\n}\n\nexport type IAirdropClaim = {\n index: number;\n recipient: string;\n proof: string[];\n amount: string;\n unlockingAt: number;\n group: string;\n data: string;\n leaf: string;\n claimed?: boolean;\n fees: string;\n\n claimId?: string;\n\n // ton\n claimable?: boolean;\n proofHash: string;\n ownerAddress: string;\n proofBoc: string;\n expiryTimestamp: number;\n expired?: boolean;\n project: IProject;\n};\n\nexport interface IExtraData {\n isLegacy: boolean;\n attestationId: bigint;\n}\n\nexport interface IAirdropClaimData extends IAirdropClaim {\n extraData?: IExtraData;\n value?: bigint | string;\n}\n\nexport type IAirdropSignatureClaim = {\n percent: number;\n unlockingAt: number;\n claimDeadline: number;\n value: string;\n recipient: string;\n recipientType: string;\n claimId: string;\n data?: {\n claimableTimestamp: string;\n claimableAmount: string;\n };\n signature?: string;\n claimed?: boolean;\n note: string;\n fees: string;\n};\n\nexport interface ISignatureClaimData {\n recipient: string;\n data:\n | string\n | {\n claimableTimestamp: string;\n claimableAmount: string;\n };\n claimId: string;\n signature: string;\n extraData?: string;\n unlockingAt: number;\n value: string;\n fees: string;\n hash: string;\n}\n\nexport interface IAirdropSignatureIdentity {\n type: AirdropSigIdentityTypeEnum;\n value: string;\n displayName: string;\n}\n\nexport interface IAirdropData {\n claims: IAirdropClaim[];\n}\n\nexport interface IAirdropSignatureData {\n claims: IAirdropSignatureClaim[];\n identities: IAirdropSignatureIdentity[];\n}\n\nexport interface IClaimSignature {\n claimId: string;\n data: string;\n signature: string;\n hash: string;\n fees: string;\n}\n\nexport enum TonAirdropVersionEnum {\n V1 = '1.0.0',\n V2 = '2.0.0',\n LiteV1 = '11.0.0',\n NativeV1 = '21.0.0'\n}\n\nexport enum EvmAirdropVersionEnum {\n V0 = '0.0.2', // 兼容btc减半 airdrop\n V3 = '0.3.0', // zeta 收费\n V4 = '0.4.0' // zeta kyc、kyc threshold\n}\n\ntype AptosWalletClient = ReturnType<typeof useWallet>;\n\nexport type IWalletClient =\n | TonWalletClient\n | ViemWalletClient\n | SolanaWalletState\n | SuiWalletClient\n | AptosWalletClient;\n\nexport type { TonWalletClient, ViemWalletClient, SolanaWalletState, SuiWalletClient, AptosWalletClient };\nexport type IAirdropService = TonAirdropService | EvmAirdropService;\n\ntype BaseAirdropOptions = {\n endpoint?: string;\n project?: IProject;\n chainRpc?: string;\n};\n\ntype ProjectIdOptions = BaseAirdropOptions & {\n projectId: string;\n slug?: never;\n};\n\ntype SlugOptions = BaseAirdropOptions & {\n slug: string;\n projectId?: never;\n};\n\nexport type IAirdropOptions = ProjectIdOptions | SlugOptions;\n\nexport interface IContractConfig {\n version?: string | null;\n paused: boolean | null;\n claimFee?: string | null;\n}\n\nexport enum ErrorCode {\n // 'Wallet already connected'\n WALLET_ALREADY_CONNECTED = 'Wallet already connected'\n}\n","import TonWeb from 'tonweb';\nimport {\n ASSOCIATED_TOKEN_PROGRAM_ID,\n getAssociatedTokenAddress,\n getAccount,\n createAssociatedTokenAccountInstruction,\n TokenAccountNotFoundError,\n TokenInvalidAccountOwnerError,\n TokenInvalidMintError,\n TokenInvalidOwnerError,\n TOKEN_PROGRAM_ID,\n TOKEN_2022_PROGRAM_ID\n} from '@solana/spl-token';\nimport { Cluster, Commitment, Connection, ParsedAccountData, PublicKey, Transaction } from '@solana/web3.js';\nimport { solanaDevNet, solanaMainNet } from '../constants';\n\nexport function flipAddressType(address: string) {\n if (!address) return '';\n return address.includes(':')\n ? new TonWeb.utils.Address(address).toString(true, true, true)\n : new TonWeb.utils.Address(address).toString(false, false, true);\n}\n\nexport function hexStrToU8Array(hexStr: string): number[] {\n // 移除 \"0x\" 前缀(如果存在)\n hexStr = hexStr.startsWith('0x') ? hexStr.slice(2) : hexStr;\n\n // 确保 hexStr 长度正确(64 个字符,即 32 字节)\n // if (hexStr.length !== 64) {\n // throw new Error('Invalid hex string length. Expected 64 characters (32 bytes).');\n // }\n\n // 将 16 进制字符串转换为 Uint8Array\n const bytes = [];\n for (let i = 0; i < hexStr.length / 2; i++) {\n bytes[i] = parseInt(hexStr.substring(i * 2, i * 2 + 2), 16);\n }\n\n return bytes;\n}\n\nexport async function getOrCreateAssociatedTokenAccount({\n connection,\n payer,\n mint,\n owner,\n signTransaction,\n allowOwnerOffCurve = false,\n commitment,\n programId = TOKEN_PROGRAM_ID,\n associatedTokenProgramId = ASSOCIATED_TOKEN_PROGRAM_ID\n}: {\n connection: Connection;\n payer: PublicKey;\n mint: PublicKey;\n owner: PublicKey;\n allowOwnerOffCurve?: boolean;\n commitment?: Commitment;\n programId?: PublicKey;\n associatedTokenProgramId?: PublicKey;\n signTransaction: (signature: Transaction) => Promise<Transaction>;\n}) {\n const associatedToken = await getAssociatedTokenAddress(\n mint,\n owner,\n allowOwnerOffCurve,\n programId,\n associatedTokenProgramId\n );\n // This is the optimal logic, considering TX fee, client-side computation, RPC roundtrips and guaranteed idempotent.\n // Sadly we can't do this atomically.\n let account;\n try {\n account = await getAccount(connection, associatedToken, commitment, programId);\n } catch (error) {\n // TokenAccountNotFoundError can be possible if the associated address has already received some lamports,\n // becoming a system account. Assuming program derived addressing is safe, this is the only case for the\n // TokenInvalidAccountOwnerError in this code path.\n if (error instanceof TokenAccountNotFoundError || error instanceof TokenInvalidAccountOwnerError) {\n // As this isn't atomic, it's possible others can create associated accounts meanwhile.\n try {\n const transaction = new Transaction().add(\n createAssociatedTokenAccountInstruction(\n payer,\n associatedToken,\n owner,\n mint,\n programId,\n associatedTokenProgramId\n )\n );\n const { blockhash } = await connection.getLatestBlockhash();\n\n console.log(blockhash, 'blockhash');\n transaction.feePayer = await payer;\n transaction.recentBlockhash = blockhash;\n const signed = await signTransaction(transaction);\n\n const signature = await connection.sendRawTransaction(signed.serialize());\n\n // await connection.confirmTransaction(signature, 'finalized');\n\n const latestBlockhash = await connection.getLatestBlockhash();\n await connection.confirmTransaction(\n {\n signature: signature,\n blockhash: latestBlockhash.blockhash,\n lastValidBlockHeight: latestBlockhash.lastValidBlockHeight\n },\n 'finalized'\n );\n } catch (error) {\n console.log(error);\n // Ignore all errors; for now there is no API-compatible way to selectively ignore the expected\n // instruction error if the associated account exists already.\n }\n // Now this should always succeed\n account = await getAccount(connection, associatedToken, commitment, programId);\n } else {\n throw error;\n }\n }\n if (!account.mint.equals(mint)) throw new TokenInvalidMintError();\n if (!account.owner.equals(owner)) throw new TokenInvalidOwnerError();\n return account;\n}\n\nexport enum SplTokenVersion {\n SplToken = 'spl-token',\n SplToken2022 = 'spl-token-2022'\n}\n\nexport type FetchTokenVersionOptions = {\n clusterOrEndpoint?: Cluster | string;\n};\n\nexport type FetchTokenMetadataOptions = FetchTokenVersionOptions & {\n fetchOffchainMetadata?: boolean;\n};\n\nasync function _getTokenProgramAndParsedAccountData(conn: Connection, tokenAddress: string) {\n const tokenMintAddress = new PublicKey(tokenAddress);\n const parsedMintAccountInfo = await conn.getParsedAccountInfo(tokenMintAddress);\n const parsedMintAccountData = parsedMintAccountInfo.value?.data as ParsedAccountData;\n if (parsedMintAccountData?.program === SplTokenVersion.SplToken) {\n return {\n name: SplTokenVersion.SplToken,\n programId: TOKEN_PROGRAM_ID,\n parsedMintAccountData\n };\n } else if (parsedMintAccountData?.program === SplTokenVersion.SplToken2022) {\n return {\n name: SplTokenVersion.SplToken2022,\n programId: TOKEN_2022_PROGRAM_ID,\n parsedMintAccountData\n };\n }\n return null;\n}\n\nfunction _getConnection(clusterOrEndpoint: Cluster | string) {\n let endpoint: string;\n try {\n endpoint = clusterApiUrl((clusterOrEndpoint as Cluster) ?? 'mainnet-beta');\n } catch {\n endpoint = clusterOrEndpoint as string;\n }\n\n const conn = new Connection(endpoint);\n return conn;\n}\n\nexport async function fetchTokenVersion(tokenAddress: string, options: FetchTokenMetadataOptions) {\n const conn = _getConnection(options.clusterOrEndpoint!);\n const data = await _getTokenProgramAndParsedAccountData(conn, tokenAddress);\n return data ? { name: data.name, programId: data.programId } : null;\n}\n\nexport const clusterApiUrl = (cluster?: Cluster) => {\n if (cluster === 'devnet') {\n return solanaDevNet.rpcUrls.default.http[0];\n }\n return solanaMainNet.rpcUrls.default.http[0];\n};\n","import dayjs from 'dayjs';\nimport { customAlphabet } from 'nanoid';\n\nexport const getCustomNaNoId = (): string => {\n const nanoid = customAlphabet('1234567890abcdefghijklmnopqrstuvwxyz', 10);\n return nanoid();\n};\n\nexport const safeParseJSON = <T = any>(str: string | null | undefined, defaultValue: T = {} as T): T => {\n if (!str || typeof str !== 'string') {\n return defaultValue;\n }\n try {\n const parsed = JSON.parse(str);\n return parsed !== null && parsed !== undefined ? parsed : defaultValue;\n } catch (error) {\n console.warn('Failed to parse JSON:', error);\n return defaultValue;\n }\n};\n\nexport const isBeforeByUnix = (unix: number) => {\n return dayjs(new Date()).isBefore(dayjs.unix(unix), 'millisecond');\n};\n\nexport const delay = (ms: number): Promise<unknown> => new Promise((res) => setTimeout(res, ms));\n\nexport async function retry<T>(fn: () => Promise<T>, options: { retries: number; delay: number }): Promise<T> {\n let lastError: Error | undefined;\n for (let i = 0; i < options.retries; i++) {\n try {\n return await fn();\n } catch (e) {\n if (e instanceof Error) {\n lastError = e;\n }\n await new Promise((resolve) => setTimeout(resolve, options.delay));\n }\n }\n throw lastError;\n}\n\nexport const isMobile = () => {\n if (typeof window === 'undefined') {\n return false;\n }\n return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\n};\n\nexport const cleanUrlParams = (paramsToRemove: string[]) => {\n if (typeof window !== 'undefined') {\n const url = new URL(window.location.href);\n paramsToRemove.forEach((param) => {\n url.searchParams.delete(param);\n });\n\n window.history.replaceState({}, document.title, url.toString());\n }\n};\n","export type ApiClientOptions = {\n baseURL?: string;\n};\n\nexport type ApiRequestOptions = {\n params?: Record<string, string | number>;\n skipHandleError?: boolean;\n headers?: Record<string, string>;\n};\n\ntype ApiResponse = {\n message: string;\n statusCode: number;\n data: unknown;\n success: boolean;\n};\n\nexport class ApiClient {\n constructor(private options?: ApiClientOptions) { }\n\n extend(options: ApiClientOptions): ApiClient {\n return new ApiClient({\n ...this.options,\n ...options\n });\n }\n\n async get<TRes>(url: string, options?: ApiRequestOptions): Promise<TRes> {\n return this.request('GET', url, null, options) as TRes;\n }\n\n async post<TRes, TReq = unknown>(url: string, data?: TReq, options?: ApiRequestOptions): Promise<TRes> {\n return this.request('POST', url, data, options) as TRes;\n }\n\n async put<TRes, TReq = unknown>(url: string, data?: TReq, options?: ApiRequestOptions): Promise<TRes> {\n return this.request('PUT', url, data, options) as TRes;\n }\n\n async delete<TRes>(url: string, options?: ApiRequestOptions): Promise<TRes> {\n return this.request('DELETE', url, null, options) as TRes;\n }\n\n private async request(\n method: 'GET' | 'POST' | 'PUT' | 'DELETE',\n url: string,\n data: unknown,\n options?: ApiRequestOptions\n ): Promise<unknown> {\n const finalUrl = (this.options?.baseURL || '') + url;\n\n const init: RequestInit = { method, headers: options?.headers || {} };\n if (data instanceof FormData) {\n init.body = data;\n } else {\n init.headers = { 'content-type': 'application/json', ...init.headers };\n init.body = data ? JSON.stringify(data) : void 0;\n }\n\n const res = await fetch(finalUrl, init);\n const [status, resData]: [number, ApiResponse] = await Promise.all([res.status, res.json() as any]);\n if (status < 200 || status >= 300 || resData?.success !== true) {\n return Promise.reject(resData);\n }\n return resData.data;\n }\n}\n\nexport const apiClient = new ApiClient({ baseURL: 'https://claim.tokentable.xyz/api' });\n","import { BigNumber } from 'bignumber.js';\n\nBigNumber.config({ DECIMAL_PLACES: 50, EXPONENTIAL_AT: 1e9 });\n\nexport function safePlus(val1: string | number, val2: string | number): string {\n return new BigNumber(val1).plus(val2).toString() as string;\n}\n\nexport function isGreaterThan(val1: string | number, val2: string | number): boolean {\n return new BigNumber(val1).gt(new BigNumber(val2));\n}\n","import { EvmSignatureAirdropService } from '../contracts';\nimport { getChainRpc } from '../common';\nimport { safePlus } from './math';\n\nexport const batchCheckClaimedForSignature = async ({\n contractAddress,\n chainId,\n chainRpc,\n claimIds\n}: {\n contractAddress: string;\n chainId: number;\n chainRpc?: string;\n claimIds: string[];\n}): Promise<boolean[]> => {\n if (!claimIds.length) {\n return [];\n }\n\n const service = new EvmSignatureAirdropService({\n chainId: chainId as any,\n contractAddress: contractAddress,\n chainRpc: chainRpc || getChainRpc(chainId as any)\n });\n\n try {\n return await service.batchFetchClaimed(claimIds);\n } catch (error: any) {\n throw new Error(`Failed to check claim status: ${error.message}`);\n }\n};\n\nexport const getAvailableClaimAmountForSignature = async ({\n contractAddress,\n chainId,\n claims\n}: {\n contractAddress: string;\n chainId: number;\n chainRpc?: string;\n claims: { claimId: string; formatedValue: string }[];\n}) => {\n if (!claims.length) return 0;\n const service = new EvmSignatureAirdropService({\n chainId: chainId as any,\n contractAddress: contractAddress,\n chainRpc: getChainRpc(chainId as any)\n });\n\n const claimIds = claims.map((claim) => claim.claimId);\n const claimedData = await service.batchFetchClaimed(claimIds);\n const availableClaims = claims.filter((_, index) => !claimedData[index]);\n\n const claimAmount = availableClaims.reduce((acc, claim) => {\n return safePlus(acc, claim.formatedValue);\n }, '0');\n\n return claimAmount;\n};\n","[\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"target\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"AddressEmptyCode\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"implementation\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"ERC1967InvalidImplementation\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ERC1967NonPayable\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"EnforcedPause\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ExpectedPause\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"FailedCall\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"IncorrectFees\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidInitialization\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidSignature\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"NotInitializing\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"OutsideClaimableTimeRange\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"OwnableInvalidOwner\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"OwnableUnauthorizedAccount\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ReentrancyGuardReentrantCall\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"SafeERC20FailedOperation\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"TimeInactive\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"UUPSUnauthorizedCallContext\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"slot\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"UUPSUnsupportedProxiableUUID\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"UnsupportedOperation\",\n \"type\": \"error\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"uint64\",\n \"name\": \"version\",\n \"type\": \"uint64\"\n }\n ],\n \"name\": \"Initialized\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"previousOwner\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"newOwner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"OwnershipTransferred\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"Paused\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"Unpaused\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"implementation\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"Upgraded\",\n \"type\": \"event\"\n },\n {\n \"inputs\": [],\n \"name\": \"UPGRADE_INTERFACE_VERSION\",\n \"outputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address[]\",\n \"name\": \"recipients\",\n \"type\": \"address[]\"\n },\n {\n \"internalType\": \"bytes32[]\",\n \"name\": \"userClaimIds\",\n \"type\": \"bytes32[]\"\n },\n {\n \"internalType\": \"bytes[]\",\n \"name\": \"datas\",\n \"type\": \"bytes[]\"\n },\n {\n \"internalType\": \"bytes[]\",\n \"name\": \"signatures\",\n \"type\": \"bytes[]\"\n },\n {\n \"internalType\": \"bytes[]\",\n \"name\": \"extraDatas\",\n \"type\": \"bytes[]\"\n }\n ],\n \"name\": \"claim\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes\",\n \"name\": \"userClaimData\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"decodeUserClaimData\",\n \"outputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"claimableTimestamp\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"claimableAmount\",\n \"type\": \"uint256\"\n }\n ],\n \"internalType\": \"struct FungibleTokenECDSADistributorData\",\n \"name\": \"\",\n \"type\": \"tuple\"\n }\n ],\n \"stateMutability\": \"pure\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"userClaimId\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"userClaimData\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"encodeHashToBeSigned\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32[]\",\n \"name\": \"userClaimIds\",\n \"type\": \"bytes32[]\"\n }\n ],\n \"name\": \"getClaimStatus\",\n \"outputs\": [\n {\n \"internalType\": \"bool[]\",\n \"name\": \"\",\n \"type\": \"bool[]\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"getStorage\",\n \"outputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"version_\",\n \"type\": \"string\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bool\",\n \"name\": \"paused\",\n \"type\": \"bool\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"deployer\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"authorizedSigner\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"claimHook\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"startTime\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"endTime\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"owner_\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"initialize\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"owner\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"paused\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"proxiableUUID\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"renounceOwnership\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"startTime\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"endTime\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"authorizedSigner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"setBaseParams\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"hook\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"setClaimHook\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"togglePause\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"newOwner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"transferOwnership\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"newImplementation\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"data\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"upgradeToAndCall\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"signer\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"hash\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"signature\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"verify\",\n \"outputs\": [],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"version\",\n \"outputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"pure\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes\",\n \"name\": \"\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"withdraw\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n }\n]\n","import { EvmContractClientOption } from '../../../types';\nimport ABI from './abis/FungibleTokenECDSADistributor.json';\nimport { ContractBaseClient } from './ContractBaseClient';\n\nexport class AirdropSignatureClient extends ContractBaseClient {\n constructor(options: EvmContractClientOption) {\n super({\n ...options,\n abi: ABI\n });\n }\n\n async getClaimStatus(userClaimId: string) {\n return this.readContract({ functionName: 'getClaimStatus', args: [userClaimId] });\n }\n\n async claim(\n data: {\n recipient: string;\n data: string;\n claimId: string;\n signature: string;\n extraData?: string;\n }[],\n value?: bigint\n ) {\n const [recipients = [], userClaimIds = [], datas = [], signatures = [], extraDatas = []] = [\n 'recipient',\n 'claimId',\n 'data',\n 'signature',\n 'extraData'\n ].map((key) => data.map((item) => item[key as keyof (typeof data)[0]] || ''));\n\n return this.writeContract({\n functionName: 'claim',\n args: [recipients, userClaimIds, datas, signatures, extraDatas],\n value: value || 0n\n });\n }\n\n async batchFetchClaimed(userClaimIds: string[]) {\n const res = (await this.readContract({ functionName: 'getClaimStatus', args: [userClaimIds] })) as boolean[];\n return res;\n }\n\n async getDeployer() {\n const res = (await this.readContract({ functionName: 'getStorage' })) as any[];\n return res?.[3] as string;\n }\n\n async getVersion() {\n const res = (await this.readContract({ functionName: 'getStorage' })) as any[];\n return res?.[0];\n }\n\n async getPaused() {\n const res = (await this.readContract({ functionName: 'getStorage' })) as any[];\n return res?.[2] as boolean;\n }\n}\n","[\n {\n \"inputs\": [{ \"internalType\": \"address\", \"name\": \"target\", \"type\": \"address\" }],\n \"name\": \"AddressEmptyCode\",\n \"type\": \"error\"\n },\n { \"inputs\": [], \"name\": \"ClaimClaimed\", \"type\": \"error\" },\n {\n \"inputs\": [{ \"internalType\": \"address\", \"name\": \"implementation\", \"type\": \"address\" }],\n \"name\": \"ERC1967InvalidImplementation\",\n \"type\": \"error\"\n },\n { \"inputs\": [], \"name\": \"ERC1967NonPayable\", \"type\": \"error\" },\n { \"inputs\": [], \"name\": \"EnforcedPause\", \"type\": \"error\" },\n { \"inputs\": [], \"name\": \"ExpectedPause\", \"type\": \"error\" },\n { \"inputs\": [], \"name\": \"FailedCall\", \"type\": \"error\" },\n { \"inputs\": [], \"name\": \"IncorrectFees\", \"type\": \"error\" },\n { \"inputs\": [], \"name\": \"InvalidInitialization\", \"type\": \"error\" },\n { \"inputs\": [], \"name\": \"InvalidSignature\", \"type\": \"error\" },\n { \"inputs\": [], \"name\": \"NotInitializing\", \"type\": \"error\" },\n { \"inputs\": [], \"name\": \"OutsideClaimableTimeRange\", \"type\": \"error\" },\n {\n \"inputs\": [{ \"internalType\": \"address\", \"name\": \"owner\", \"type\": \"address\" }],\n \"name\": \"OwnableInvalidOwner\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [{ \"internalType\": \"address\", \"name\": \"account\", \"type\": \"address\" }],\n \"name\": \"OwnableUnauthorizedAccount\",\n \"type\": \"error\"\n },\n { \"inputs\": [], \"name\": \"ReentrancyGuardReentrantCall\", \"type\": \"error\" },\n {\n \"inputs\": [{ \"internalType\": \"address\", \"name\": \"token\", \"type\": \"address\" }],\n \"name\": \"SafeERC20FailedOperation\",\n \"type\": \"error\"\n },\n { \"inputs\": [], \"name\": \"TimeInactive\", \"type\": \"error\" },\n { \"inputs\": [], \"name\": \"UUPSUnauthorizedCallContext\", \"type\": \"error\" },\n {\n \"inputs\": [{ \"internalType\": \"bytes32\", \"name\": \"slot\", \"type\": \"bytes32\" }],\n \"name\": \"UUPSUnsupportedProxiableUUID\",\n \"type\": \"error\"\n },\n { \"inputs\": [], \"name\": \"UnsupportedOperation\", \"type\": \"error\" },\n {\n \"anonymous\": false,\n \"inputs\": [{ \"indexed\": false, \"internalType\": \"uint64\", \"name\": \"version\", \"type\": \"uint64\" }],\n \"name\": \"Initialized\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n { \"indexed\": true, \"internalType\": \"address\", \"name\": \"previousOwner\", \"type\": \"address\" },\n { \"indexed\": true, \"internalType\": \"address\", \"name\": \"newOwner\", \"type\": \"address\" }\n ],\n \"name\": \"OwnershipTransferred\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [{ \"indexed\": false, \"internalType\": \"address\", \"name\": \"account\", \"type\": \"address\" }],\n \"name\": \"Paused\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [{ \"indexed\": false, \"internalType\": \"address\", \"name\": \"account\", \"type\": \"address\" }],\n \"name\": \"Unpaused\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [{ \"indexed\": true, \"internalType\": \"address\", \"name\": \"implementation\", \"type\": \"address\" }],\n \"name\": \"Upgraded\",\n \"type\": \"event\"\n },\n {\n \"inputs\": [],\n \"name\": \"UPGRADE_INTERFACE_VERSION\",\n \"outputs\": [{ \"internalType\": \"string\", \"name\": \"\", \"type\": \"string\" }],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"address[]\", \"name\": \"recipients\", \"type\": \"address[]\" },\n { \"internalType\": \"bytes32[]\", \"name\": \"userClaimIds\", \"type\": \"bytes32[]\" },\n { \"internalType\": \"bytes[]\", \"name\": \"datas\", \"type\": \"bytes[]\" },\n { \"internalType\": \"bytes[]\", \"name\": \"signatures\", \"type\": \"bytes[]\" },\n { \"internalType\": \"bytes[]\", \"name\": \"extraDatas\", \"type\": \"bytes[]\" }\n ],\n \"name\": \"claim\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [{ \"internalType\": \"bytes\", \"name\": \"\", \"type\": \"bytes\" }],\n \"name\": \"decodeUserClaimData\",\n \"outputs\": [\n {\n \"components\": [\n { \"internalType\": \"uint256\", \"name\": \"claimableTimestamp\", \"type\": \"uint256\" },\n { \"internalType\": \"uint256\", \"name\": \"claimableAmount\", \"type\": \"uint256\" }\n ],\n \"internalType\": \"struct FungibleTokenECDSADistributorData\",\n \"name\": \"\",\n \"type\": \"tuple\"\n }\n ],\n \"stateMutability\": \"pure\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [{ \"internalType\": \"bytes\", \"name\": \"userClaimData\", \"type\": \"bytes\" }],\n \"name\": \"decodeUserClaimDataWithFees\",\n \"outputs\": [\n {\n \"components\": [\n { \"internalType\": \"uint256\", \"name\": \"claimableTimestamp\", \"type\": \"uint256\" },\n { \"internalType\": \"uint256\", \"name\": \"claimableAmount\", \"type\": \"uint256\" },\n { \"internalType\": \"uint256\", \"name\": \"fees\", \"type\": \"uint256\" }\n ],\n \"internalType\": \"struct FungibleTokenWithFeesECDSADistributorData\",\n \"name\": \"\",\n \"type\": \"tuple\"\n }\n ],\n \"stateMutability\": \"pure\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"bytes32\", \"name\": \"userClaimId\", \"type\": \"bytes32\" },\n { \"internalType\": \"bytes\", \"name\": \"userClaimData\", \"type\": \"bytes\" }\n ],\n \"name\": \"encodeHashToBeSigned\",\n \"outputs\": [{ \"internalType\": \"bytes32\", \"name\": \"\", \"type\": \"bytes32\" }],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [{ \"internalType\": \"bytes32[]\", \"name\": \"userClaimIds\", \"type\": \"bytes32[]\" }],\n \"name\": \"getClaimStatus\",\n \"outputs\": [{ \"internalType\": \"bool[]\", \"name\": \"\", \"type\": \"bool[]\" }],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"getStorage\",\n \"outputs\": [\n { \"internalType\": \"string\", \"name\": \"version_\", \"type\": \"string\" },\n { \"internalType\": \"address\", \"name\": \"owner\", \"type\": \"address\" },\n { \"internalType\": \"bool\", \"name\": \"paused\", \"type\": \"bool\" },\n { \"internalType\": \"address\", \"name\": \"deployer\", \"type\": \"address\" },\n { \"internalType\": \"address\", \"name\": \"authorizedSigner\", \"type\": \"address\" },\n { \"internalType\": \"address\", \"name\": \"token\", \"type\": \"address\" },\n { \"internalType\": \"address\", \"name\": \"claimHook\", \"type\": \"address\" },\n { \"internalType\": \"uint256\", \"name\": \"startTime\", \"type\": \"uint256\" },\n { \"internalType\": \"uint256\", \"name\": \"endTime\", \"type\": \"uint256\" }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [{ \"internalType\": \"address\", \"name\": \"owner_\", \"type\": \"address\" }],\n \"name\": \"initialize\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"owner\",\n \"outputs\": [{ \"internalType\": \"address\", \"name\": \"\", \"type\": \"address\" }],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"paused\",\n \"outputs\": [{ \"internalType\": \"bool\", \"name\": \"\", \"type\": \"bool\" }],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"proxiableUUID\",\n \"outputs\": [{ \"internalType\": \"bytes32\", \"name\": \"\", \"type\": \"bytes32\" }],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n { \"inputs\": [], \"name\": \"renounceOwnership\", \"outputs\": [], \"stateMutability\": \"nonpayable\", \"type\": \"function\" },\n {\n \"inputs\": [\n { \"internalType\": \"address\", \"name\": \"token\", \"type\": \"address\" },\n { \"internalType\": \"uint256\", \"name\": \"startTime\", \"type\": \"uint256\" },\n { \"internalType\": \"uint256\", \"name\": \"endTime\", \"type\": \"uint256\" },\n { \"internalType\": \"address\", \"name\": \"authorizedSigner\", \"type\": \"address\" }\n ],\n \"name\": \"setBaseParams\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [{ \"internalType\": \"address\", \"name\": \"hook\", \"type\": \"address\" }],\n \"name\": \"setClaimHook\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n { \"inputs\": [], \"name\": \"togglePause\", \"outputs\": [], \"stateMutability\": \"nonpayable\", \"type\": \"function\" },\n {\n \"inputs\": [{ \"internalType\": \"address\", \"name\": \"newOwner\", \"type\": \"address\" }],\n \"name\": \"transferOwnership\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"address\", \"name\": \"newImplementation\", \"type\": \"address\" },\n { \"internalType\": \"bytes\", \"name\": \"data\", \"type\": \"bytes\" }\n ],\n \"name\": \"upgradeToAndCall\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"address\", \"name\": \"signer\", \"type\": \"address\" },\n { \"internalType\": \"bytes32\", \"name\": \"hash\", \"type\": \"bytes32\" },\n { \"internalType\": \"bytes\", \"name\": \"signature\", \"type\": \"bytes\" }\n ],\n \"name\": \"verify\",\n \"outputs\": [],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"version\",\n \"outputs\": [{ \"internalType\": \"string\", \"name\": \"\", \"type\": \"string\" }],\n \"stateMutability\": \"pure\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [{ \"internalType\": \"bytes\", \"name\": \"\", \"type\": \"bytes\" }],\n \"name\": \"withdraw\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n { \"stateMutability\": \"payable\", \"type\": \"receive\" }\n]\n","import { EvmContractClientOption } from '../../../types';\nimport ABI from './abis/FungibleTokenWithFeesECDSADistributor.json';\nimport { ContractBaseClient } from './ContractBaseClient';\n\nexport class AirdropSignatureFeeClient extends ContractBaseClient {\n constructor(options: EvmContractClientOption) {\n super({\n ...options,\n abi: ABI\n });\n }\n\n async getClaimStatus(userClaimId: string) {\n return this.readContract({ functionName: 'getClaimStatus', args: [userClaimId] });\n }\n\n async claim(\n data: {\n recipient: string;\n data: string;\n claimId: string;\n signature: string;\n extraData?: string;\n }[],\n value?: bigint\n ) {\n const [recipients = [], userClaimIds = [], datas = [], signatures = [], extraDatas = []] = [\n 'recipient',\n 'claimId',\n 'data',\n 'signature',\n 'extraData'\n ].map((key) => data.map((item) => item[key as keyof (typeof data)[0]] || ''));\n\n return this.writeContract({\n functionName: 'claim',\n args: [recipients, userClaimIds, datas, signatures, extraDatas],\n value: value || 0n\n });\n }\n\n async batchFetchClaimed(userClaimIds: string[]) {\n const res = (await this.readContract({ functionName: 'getClaimStatus', args: [userClaimIds] })) as boolean[];\n return res;\n }\n\n async getDeployer() {\n const res = (await this.readContract({ functionName: 'getStorage' })) as any[];\n return res?.[3] as string;\n }\n\n async getVersion() {\n const res = (await this.readContract({ functionName: 'getStorage' })) as any[];\n return res?.[0];\n }\n\n async getPaused() {\n const res = (await this.readContract({ functionName: 'getStorage' })) as any[];\n return res?.[2] as boolean;\n }\n}\n","import { ChainId, EvmContractClientOption } from '../../types';\nimport { ZERO_ADDRESS } from '../../constants';\nimport { getChainById } from '../../common';\nimport { AirdropSignatureClient } from './contracts/AirdropSignatureClient';\nimport { DeployerClient } from './contracts/DeployClient';\nimport { FeeCollectorClient } from './contracts/FeeCollectorClient';\nimport { AirdropSignatureFeeClient } from './contracts/AirdropSignatureFeeClient';\nimport { getAddress } from 'viem';\n\nexport class SignatureAirdropService {\n options: EvmContractClientOption;\n constructor(options: Omit<EvmContractClientOption, 'chain'>) {\n this.options = {\n ...options,\n chain: getChainById(options.chainId) as any\n };\n }\n\n private get airdropClient(): AirdropSignatureClient {\n if (!this.options) {\n throw new Error('options is empty');\n }\n\n return new AirdropSignatureClient(this.options);\n }\n private get airdropWithFeeClient(): AirdropSignatureFeeClient {\n if (!this.options) {\n throw new Error('options is empty');\n }\n\n return new AirdropSignatureFeeClient(this.options);\n }\n\n async getDeployerClient(): Promise<DeployerClient> {\n const deployer = await this.getDeployer();\n return new DeployerClient({\n ...this.options,\n contractAddress: deployer\n });\n }\n\n private getFeeClient(address: string): FeeCollectorClient {\n if (!this.options) {\n throw new Error('options is empty');\n }\n\n return new FeeCollectorClient({\n ...this.options,\n chainId: this.options.chainId as ChainId,\n contractAddress: address\n });\n }\n\n async getDeployer() {\n return this.airdropClient.getDeployer();\n }\n\n async getVersion() {\n return this.airdropClient.getVersion();\n }\n\n feeCollectors = async (address: string) => {\n const deployerClient = await this.getDeployerClient();\n return await deployerClient.feeCollectors(address);\n };\n\n feeTokens = async (address: string) => {\n const deployerClient = await this.getDeployerClient();\n return await deployerClient.feeTokens(address);\n };\n\n async getFeelessThreshold() {\n // return this.airdropClient.getFeelessThreshold();\n }\n\n async getClaimFee(address: string, amount: bigint): Promise<bigint | undefined> {\n const feeCollector = await this.feeCollectors(this.options.contractAddress as string);\n if (!feeCollector || feeCollector === ZERO_ADDRESS) {\n return undefined;\n }\n const feeClient = this.getFeeClient(feeCollector as string);\n const fee = (await feeClient.getFee(address, amount)) as bigint;\n return fee;\n }\n\n async batchFetchClaimed(userClaimIds: string[]): Promise<boolean[]> {\n const res = await this.airdropClient.batchFetchClaimed(userClaimIds);\n return res;\n }\n\n async getPaused() {\n return this.airdropClient.getPaused();\n }\n\n async claim(\n data: {\n recipient: string;\n claimId: string;\n data: string;\n signature: string;\n fees?: string;\n extraData?: string;\n }[],\n recipient?: string\n ) {\n const version = await this.getVersion();\n\n if (version.includes('FungibleTokenWithFeesECDSADistributor')) {\n const totalFees = data.map((item) => BigInt(item.fees || '0')).reduce((sum, fee) => sum + fee, BigInt(0));\n return this.airdropWithFeeClient.claim(data, totalFees);\n }\n const defaultRecipient = this.options.walletClient?.account?.address;\n const delegateMode = recipient ? getAddress(recipient) !== defaultRecipient : false;\n const feeData = (await this.getClaimFee(this.options.contractAddress, 1n)) || 0n;\n const value = delegateMode ? feeData * BigInt(data.length) : feeData;\n return this.airdropClient.claim(data, value);\n }\n}\n","import { PublicKey } from '@solana/web3.js';\nimport { SolanaContractClientBase, SolanaContractInfo } from './SolanaContractClient';\nimport IDL from './merkle_token_distributor_solana.json';\nimport * as anchor from '@coral-xyz/anchor';\nimport { TOKEN_PROGRAM_ID } from '@solana/spl-token';\nimport { MerkleTokenDistributorSolana } from './merkle_token_distributor_solana';\nimport { FeeCollectorClient } from './FeeCollectorClient';\nimport { fetchTokenVersion } from '../../utils';\nimport { IAirdropClaimData } from '../../types';\n\nexport class MerkleTokenDistributorClient extends SolanaContractClientBase<MerkleTokenDistributorSolana> {\n projectId: string;\n constructor(options: SolanaContractInfo) {\n super({\n ...options,\n idl: IDL\n });\n this.projectId = options.projectId;\n }\n\n get FeeCollector() {\n return new FeeCollectorClient({\n projectId: this.projectId,\n walletClient: this.wallet,\n chainId: this.chainId,\n chainRpc: this.chainRpc\n });\n }\n\n async getStoragePDA(): Promise<PublicKey> {\n const [storagePDA] = await this.findProgramAddress([\n anchor.utils.bytes.utf8.encode('storage'),\n anchor.utils.bytes.utf8.encode(this.projectId)\n ]);\n\n return storagePDA;\n }\n\n async getAirdropPDA(): Promise<PublicKey> {\n const [airdropPDA] = await this.findProgramAddress([\n anchor.utils.bytes.utf8.encode('airdrop'),\n anchor.utils.bytes.utf8.encode(this.projectId)\n ]);\n\n return airdropPDA;\n }\n\n async getConfigPDA(): Promise<PublicKey> {\n const [configPDA] = await this.findProgramAddress([anchor.utils.bytes.utf8.encode('config')]);\n\n return configPDA;\n }\n\n async getVersionPDA(): Promise<PublicKey> {\n const [versionPDA] = await this.findProgramAddress([anchor.utils.bytes.utf8.encode('version')]);\n\n return versionPDA;\n }\n\n async getVaultPDA(): Promise<PublicKey> {\n const airdropPDA = await this.getAirdropPDA();\n const [vaultPDA] = await this.findProgramAddress([anchor.utils.bytes.utf8.encode('vault'), airdropPDA.toBuffer()]);\n\n return vaultPDA;\n }\n\n async getContractInfo() {\n const airdropPDA = await this.getAirdropPDA();\n const config = await this.fetchAccountData('merkleAirdrop', airdropPDA);\n const versionPDA = await this.getVersionPDA();\n const versionData = await this.fetchAccountData('version', versionPDA);\n return {\n version: versionData.version as string,\n token: config.projectToken.toString() as string,\n startTime: Number(config.startTime),\n endTime: Number(config.endTime),\n paused: config.paused as boolean,\n root: Buffer.from(config.root).toString('hex') as string,\n owner: config.owner.toString() as string\n };\n }\n\n async getVersion() {\n const versionPDA = await this.getVersionPDA();\n const versionData = await this.fetchAccountData('version', versionPDA);\n return versionData.version;\n }\n\n async getPaused() {\n const config = await this.getContractInfo();\n return config.paused;\n }\n\n async getClaimFee(amount: bigint) {\n return this.FeeCollector.getClaimFee(this.programId, amount.toString());\n }\n\n async getFeeInfo() {\n const airdropPDA = await this.getAirdropPDA();\n const config = await this.fetchAccountData('merkleAirdrop', airdropPDA);\n return {\n feeToken: config.feeToken.toString(),\n feeCollector: config.feeCollector.toString()\n };\n }\n\n async deploy() {\n return this.invokeInstruction(\n 'deploy',\n {\n feeCollector: this.FeeCollector.programId,\n authority: this.wallet.publicKey\n },\n [new PublicKey(this.FeeCollector.programId)]\n );\n }\n\n async getAirdropAddress() {\n try {\n const airdropPDA = await this.getAirdropPDA();\n await this.fetchAccountData('merkleAirdrop', airdropPDA);\n return airdropPDA.toString();\n } catch (error) {\n return '';\n }\n }\n\n async initialize({ projectId, token }: { projectId: string; token: string }): Promise<string> {\n await this.FeeCollector.initProjectFee();\n const owner = this.wallet.publicKey;\n const airdropPDA = await this.getAirdropPDA();\n const projectFeePDA = await this.FeeCollector.getProjectFeePDA(this.programId);\n const feeCollectorStorage = await this.FeeCollector.getStoragePDA();\n console.log(airdropPDA.toString(), 'airdropPDA');\n console.log(projectFeePDA.toString(), 'projectFeePDA', feeCollectorStorage.toString(), 'feeCollectorStorage');\n const tx = await this.program.methods\n .initialize(projectId, new PublicKey(token), owner, true)\n .accountsPartial({\n feeCollector: this.FeeCollector.programId,\n feeCollectorStorage: feeCollectorStorage,\n fee: projectFeePDA\n })\n .rpc();\n await this.confirmTransaction(tx);\n try {\n const versionPDA = await this.getVersionPDA();\n await this.fetchAccountData('version', versionPDA);\n } catch (err) {\n // init version only once\n await this.invokeInstruction('version', {}, []);\n }\n const airdropAddress = await this.getAirdropAddress();\n return airdropAddress;\n }\n\n async setBaseParams(tokenAddress: string, startTime: number, endTime: number, root: string) {\n const start = new anchor.BN(startTime),\n end = new anchor.BN(endTime);\n await this.invokeInstruction(\n 'setBaseParams',\n {\n // airdrop: airdropPDA,\n authority: this.wallet.publicKey\n },\n [this.projectId, new PublicKey(tokenAddress), start, end, Array.from(Buffer.from(root, 'hex')), '']\n );\n }\n\n async togglePause() {\n await this.invokeInstruction('togglePause', {}, [this.projectId]);\n }\n\n async setFeeCollector(feeCollector: string) {\n await this.invokeInstruction('setFeeCollector', {}, [this.projectId, new PublicKey(feeCollector)]);\n }\n\n async setFeeParams(feeCollector: string, feeToken: string) {\n const tx = new anchor.web3.Transaction()\n .add(\n await this.program.methods\n .setFeeCollector(this.projectId, new PublicKey(feeCollector), true)\n .accountsPartial({\n feeCollectorStorage: null,\n fee: null\n })\n .transaction()\n )\n .add(await this.program.methods.setFeeToken(this.projectId, new PublicKey(feeToken)).transaction());\n return await this.program.provider.sendAndConfirm?.(tx, [], { commitment: 'finalized' });\n }\n\n async transferOwnership(newOwner: string) {\n const tx = await this.program.methods\n .transferOwnership(this.projectId, new PublicKey(newOwner))\n .accountsPartial({\n authority: this.wallet.publicKey\n })\n .rpc();\n await this.confirmTransaction?.(tx);\n }\n\n async getUsedLeafPDA(leaf: string) {\n const [usedLeafPDA] = await this.findProgramAddress([\n anchor.utils.bytes.utf8.encode('usedLeaf'),\n Buffer.from(leaf, 'hex')\n ]);\n\n return usedLeafPDA;\n }\n\n async isLeafUsed(leaf: string) {\n const usedLeafPDA = await this.getUsedLeafPDA(leaf);\n const usedLeafInfo = await this.program.account['usedLeaf'].fetch(usedLeafPDA);\n return usedLeafInfo?.used || false;\n }\n\n async batchFetchClaimed(leafs: string[]) {\n const usedLeafPDAs = await Promise.all(leafs.map((leaf) => this.getUsedLeafPDA(leaf)));\n const usedLeafInfo = await this.program.account['usedLeaf'].fetchMultiple(usedLeafPDAs);\n return usedLeafInfo.map((info) => ({\n result: info?.used || false,\n status: 'success'\n }));\n }\n\n async claim({ leaf, proof, index, unlockingAt, amount }: IAirdropClaimData) {\n const config = await this.getContractInfo();\n const feeCollectorStoragePDA = await this.FeeCollector.getStoragePDA();\n const feePDA = await this.FeeCollector.getProjectFeePDA(this.programId);\n const tokenVersion = await fetchTokenVersion(config.token, {\n clusterOrEndpoint: this.chainId\n });\n return this.program.methods\n .claim(\n this.projectId,\n Array.from(Buffer.from(leaf, 'hex')),\n proof.map((p) => Array.from(Buffer.from(p, 'hex'))),\n [],\n {\n claimableTimestamp: new anchor.BN(unlockingAt),\n claimableAmount: new anchor.BN(amount),\n index: new anchor.BN(index)\n }\n )\n .accounts({\n recipient: this.wallet.publicKey,\n tokenMint: new PublicKey(config.token),\n feeCollector: this.FeeCollector.programId,\n feeCollectorStorage: feeCollectorStoragePDA,\n feeCollectorVault: null,\n feeTokenMint: null,\n fee: feePDA,\n authorityFeeAta: null,\n tokenProgram: tokenVersion?.programId || TOKEN_PROGRAM_ID,\n feeTokenProgram: null\n })\n .rpc();\n }\n}\n","import { Program, AnchorProvider, setProvider, Wallet, Idl } from '@coral-xyz/anchor';\nimport {\n AllAccountsMap,\n AllInstructions,\n IdlAccounts,\n MakeMethodsNamespace\n} from '@coral-xyz/anchor/dist/cjs/program/namespace/types';\nimport { Cluster, Commitment, Connection, PublicKey, Signer } from '@solana/web3.js';\nimport { clusterApiUrl } from '../../utils';\n\nexport interface SolanaContractInfo {\n projectId: string;\n chainId?: string;\n idl?: any;\n token?: string;\n walletClient: Wallet;\n chainRpc: string;\n}\n\nexport abstract class SolanaContractClientBase<T extends Idl = Idl> {\n protected program: Program<T>;\n protected connection: Connection;\n protected wallet: Wallet;\n protected chainId: string;\n chainRpc: string;\n\n constructor(contractInfo: SolanaContractInfo) {\n const { idl, walletClient, chainId, chainRpc } = contractInfo;\n this.chainId = chainId || 'mainnet-beta';\n\n this.connection = this.getConnection(chainId);\n this.wallet = walletClient;\n this.chainRpc = chainRpc;\n\n const provider = new AnchorProvider(this.connection as any, this.wallet, { commitment: 'confirmed' });\n setProvider(provider);\n\n this.program = new Program(idl, provider);\n }\n\n get programId(): PublicKey {\n return this.program.programId;\n }\n\n getConnection(endpoint?: string) {\n const rpcUrl = this.chainRpc ? this.chainRpc : clusterApiUrl((endpoint as Cluster) ?? 'mainnet-beta');\n\n const conn = new Connection(rpcUrl);\n return conn;\n }\n\n protected async findProgramAddress(\n seeds: Array<Buffer | Uint8Array>,\n programId?: PublicKey\n ): Promise<[PublicKey, number]> {\n return await PublicKey.findProgramAddressSync(seeds, programId || new PublicKey(this.program.idl.address));\n }\n\n async fetchAccountData<A extends keyof AllAccountsMap<T>>(\n accountName: A,\n address: PublicKey | string,\n commitment?: Commitment\n ): Promise<IdlAccounts<T>[A]> {\n try {\n if (!this.program.account[accountName]) {\n throw new Error(`Account ${String(accountName)} not found in program`);\n }\n\n const account = await this.program.account[accountName].fetch(address, commitment);\n return account as IdlAccounts<T>[A];\n } catch (error) {\n console.error(`Error fetching account ${String(accountName)}:`, error);\n throw error;\n }\n }\n\n async invokeView<M extends keyof MakeMethodsNamespace<T, AllInstructions<T>>>(\n methodName: M,\n args: Parameters<MakeMethodsNamespace<T, AllInstructions<T>>[M]>\n ): Promise<any> {\n try {\n if (!this.program.methods[methodName]) {\n throw new Error(`Method ${methodName} not found in program`);\n }\n\n const result = await this.program.methods[methodName](...args).view();\n\n return result;\n } catch (error) {\n console.error(`Error invoking view method ${methodName}:`, error);\n throw error;\n }\n }\n\n async invokeInstruction<M extends keyof MakeMethodsNamespace<T, AllInstructions<T>>>(\n methodName: M,\n accounts: any,\n args: any,\n options?: { signers?: Signer[] }\n ): Promise<string> {\n if (!this.program.methods[methodName]) {\n throw new Error(`Method ${methodName} not found in program`);\n }\n let instruction = this.program.methods[methodName](...args).accounts(accounts);\n\n if (options?.signers?.length) {\n instruction = instruction.signers(options.signers);\n }\n\n const tx = await instruction.rpc();\n\n await this.confirmTransaction(tx);\n console.log(tx);\n\n return tx;\n }\n\n async confirmTransaction(tx: string): Promise<string> {\n const latestBlockhash = await this.connection.getLatestBlockhash();\n await this.connection.confirmTransaction(\n {\n signature: tx,\n blockhash: latestBlockhash.blockhash,\n lastValidBlockHeight: latestBlockhash.lastValidBlockHeight\n },\n 'finalized'\n );\n return tx;\n }\n}\n","{\n \"address\": \"BSYRcLiYQTiB1am7vGbx4xavoo97PMY2C1hdafdT7oyj\",\n \"metadata\": {\n \"name\": \"merkle_token_distributor_solana\",\n \"version\": \"0.1.0\",\n \"spec\": \"0.1.0\",\n \"description\": \"Created with Anchor\"\n },\n \"instructions\": [\n {\n \"name\": \"claim\",\n \"discriminator\": [\n 62,\n 198,\n 214,\n 193,\n 213,\n 159,\n 108,\n 210\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"airdrop\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 105,\n 114,\n 100,\n 114,\n 111,\n 112\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"_project_id\"\n }\n ]\n }\n },\n {\n \"name\": \"vault\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 118,\n 97,\n 117,\n 108,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"airdrop\"\n }\n ]\n }\n },\n {\n \"name\": \"recipient\"\n },\n {\n \"name\": \"recipient_ata\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"recipient\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"token_program\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"token_mint\"\n }\n ],\n \"program\": {\n \"kind\": \"const\",\n \"value\": [\n 140,\n 151,\n 37,\n 143,\n 78,\n 36,\n 137,\n 241,\n 187,\n 61,\n 16,\n 41,\n 20,\n 142,\n 13,\n 131,\n 11,\n 90,\n 19,\n 153,\n 218,\n 255,\n 16,\n 132,\n 4,\n 142,\n 123,\n 216,\n 219,\n 233,\n 248,\n 89\n ]\n }\n }\n },\n {\n \"name\": \"authority_fee_ata\",\n \"writable\": true,\n \"optional\": true\n },\n {\n \"name\": \"used_leaf\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 117,\n 115,\n 101,\n 100,\n 76,\n 101,\n 97,\n 102\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"_leaf\"\n }\n ]\n }\n },\n {\n \"name\": \"token_mint\"\n },\n {\n \"name\": \"fee_collector_storage\",\n \"writable\": true,\n \"optional\": true\n },\n {\n \"name\": \"fee_collector_vault\",\n \"writable\": true,\n \"optional\": true\n },\n {\n \"name\": \"fee_collector\"\n },\n {\n \"name\": \"fee_token_mint\",\n \"writable\": true,\n \"optional\": true\n },\n {\n \"name\": \"fee\",\n \"writable\": true\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n },\n {\n \"name\": \"token_program\"\n },\n {\n \"name\": \"fee_token_program\",\n \"optional\": true\n },\n {\n \"name\": \"associated_token_program\",\n \"address\": \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\"\n }\n ],\n \"args\": [\n {\n \"name\": \"project_id\",\n \"type\": \"string\"\n },\n {\n \"name\": \"leaf\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"proof\",\n \"type\": {\n \"vec\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n }\n },\n {\n \"name\": \"group\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"data\",\n \"type\": {\n \"defined\": {\n \"name\": \"TokenTableMerkleDistributorData\"\n }\n }\n }\n ]\n },\n {\n \"name\": \"deploy\",\n \"discriminator\": [\n 67,\n 36,\n 143,\n 118,\n 36,\n 164,\n 92,\n 217\n ],\n \"accounts\": [\n {\n \"name\": \"config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"fee_collector\"\n },\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"default_fee_collector\",\n \"type\": \"pubkey\"\n }\n ]\n },\n {\n \"name\": \"deposit\",\n \"discriminator\": [\n 242,\n 35,\n 198,\n 137,\n 82,\n 225,\n 242,\n 182\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"airdrop\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 105,\n 114,\n 100,\n 114,\n 111,\n 112\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"_project_id\"\n }\n ]\n }\n },\n {\n \"name\": \"vault\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 118,\n 97,\n 117,\n 108,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"airdrop\"\n }\n ]\n }\n },\n {\n \"name\": \"authority_ata\",\n \"writable\": true\n },\n {\n \"name\": \"token_mint\"\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n },\n {\n \"name\": \"token_program\"\n },\n {\n \"name\": \"associated_token_program\",\n \"address\": \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\"\n }\n ],\n \"args\": [\n {\n \"name\": \"project_id\",\n \"type\": \"string\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"encode_leaf\",\n \"discriminator\": [\n 84,\n 101,\n 187,\n 185,\n 39,\n 73,\n 231,\n 150\n ],\n \"accounts\": [],\n \"args\": [\n {\n \"name\": \"storage\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"user\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"group\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"data\",\n \"type\": {\n \"defined\": {\n \"name\": \"TokenTableMerkleDistributorData\"\n }\n }\n }\n ],\n \"returns\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"initialize\",\n \"discriminator\": [\n 175,\n 175,\n 109,\n 31,\n 13,\n 152,\n 155,\n 237\n ],\n \"accounts\": [\n {\n \"name\": \"airdrop\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 105,\n 114,\n 100,\n 114,\n 111,\n 112\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"_project_id\"\n }\n ]\n }\n },\n {\n \"name\": \"config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"fee_collector\",\n \"optional\": true\n },\n {\n \"name\": \"fee_collector_storage\",\n \"optional\": true\n },\n {\n \"name\": \"fee\",\n \"writable\": true,\n \"optional\": true\n },\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"project_id\",\n \"type\": \"string\"\n },\n {\n \"name\": \"project_token\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"init_fee_account\",\n \"type\": \"bool\"\n }\n ]\n },\n {\n \"name\": \"receive_program_admin\",\n \"discriminator\": [\n 238,\n 172,\n 61,\n 197,\n 23,\n 72,\n 249,\n 87\n ],\n \"accounts\": [\n {\n \"name\": \"config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"set_base_params\",\n \"discriminator\": [\n 53,\n 16,\n 151,\n 65,\n 155,\n 108,\n 105,\n 229\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"airdrop\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 105,\n 114,\n 100,\n 114,\n 111,\n 112\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"_project_id\"\n }\n ]\n }\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"project_id\",\n \"type\": \"string\"\n },\n {\n \"name\": \"start_time\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"end_time\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"root\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"uri\",\n \"type\": \"string\"\n }\n ]\n },\n {\n \"name\": \"set_claim_delegate\",\n \"discriminator\": [\n 227,\n 191,\n 177,\n 221,\n 167,\n 40,\n 47,\n 138\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"airdrop\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 105,\n 114,\n 100,\n 114,\n 111,\n 112\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"_project_id\"\n }\n ]\n }\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"project_id\",\n \"type\": \"string\"\n },\n {\n \"name\": \"delegate\",\n \"type\": \"pubkey\"\n }\n ]\n },\n {\n \"name\": \"set_default_fee_collector\",\n \"discriminator\": [\n 250,\n 25,\n 136,\n 29,\n 77,\n 231,\n 26,\n 141\n ],\n \"accounts\": [\n {\n \"name\": \"config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"fee_collector\"\n },\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"default_fee_collector\",\n \"type\": \"pubkey\"\n }\n ]\n },\n {\n \"name\": \"set_fee_collector\",\n \"discriminator\": [\n 143,\n 46,\n 10,\n 113,\n 121,\n 157,\n 245,\n 166\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"config\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"airdrop\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 105,\n 114,\n 100,\n 114,\n 111,\n 112\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"_project_id\"\n }\n ]\n }\n },\n {\n \"name\": \"fee_collector\"\n },\n {\n \"name\": \"fee_collector_storage\",\n \"optional\": true\n },\n {\n \"name\": \"fee\",\n \"writable\": true,\n \"optional\": true\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"project_id\",\n \"type\": \"string\"\n },\n {\n \"name\": \"fee_collector\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"init_fee_account\",\n \"type\": \"bool\"\n }\n ]\n },\n {\n \"name\": \"set_fee_token\",\n \"discriminator\": [\n 52,\n 90,\n 163,\n 123,\n 220,\n 202,\n 90,\n 217\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"config\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"airdrop\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 105,\n 114,\n 100,\n 114,\n 111,\n 112\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"_project_id\"\n }\n ]\n }\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"project_id\",\n \"type\": \"string\"\n },\n {\n \"name\": \"fee_token\",\n \"type\": \"pubkey\"\n }\n ]\n },\n {\n \"name\": \"toggle_pause\",\n \"discriminator\": [\n 238,\n 237,\n 206,\n 27,\n 255,\n 95,\n 123,\n 229\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"airdrop\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 105,\n 114,\n 100,\n 114,\n 111,\n 112\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"_project_id\"\n }\n ]\n }\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"project_id\",\n \"type\": \"string\"\n }\n ]\n },\n {\n \"name\": \"transfer_ownership\",\n \"discriminator\": [\n 65,\n 177,\n 215,\n 73,\n 53,\n 45,\n 99,\n 47\n ],\n \"accounts\": [\n {\n \"name\": \"airdrop\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 105,\n 114,\n 100,\n 114,\n 111,\n 112\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"_project_id\"\n }\n ]\n }\n },\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"project_id\",\n \"type\": \"string\"\n },\n {\n \"name\": \"new_owner\",\n \"type\": \"pubkey\"\n }\n ]\n },\n {\n \"name\": \"transfer_program_admin\",\n \"discriminator\": [\n 47,\n 201,\n 152,\n 248,\n 132,\n 27,\n 33,\n 139\n ],\n \"accounts\": [\n {\n \"name\": \"config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"new_admin\",\n \"writable\": true,\n \"signer\": true,\n \"optional\": true\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"new_admin\",\n \"type\": \"pubkey\"\n }\n ]\n },\n {\n \"name\": \"version\",\n \"discriminator\": [\n 118,\n 65,\n 195,\n 198,\n 129,\n 216,\n 252,\n 192\n ],\n \"accounts\": [\n {\n \"name\": \"version\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 118,\n 101,\n 114,\n 115,\n 105,\n 111,\n 110\n ]\n }\n ]\n }\n },\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"withdraw\",\n \"discriminator\": [\n 183,\n 18,\n 70,\n 156,\n 148,\n 109,\n 161,\n 34\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"airdrop\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 105,\n 114,\n 100,\n 114,\n 111,\n 112\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"_project_id\"\n }\n ]\n }\n },\n {\n \"name\": \"vault\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 118,\n 97,\n 117,\n 108,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"airdrop\"\n }\n ]\n }\n },\n {\n \"name\": \"authority_ata\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"authority\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"token_program\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"token_mint\"\n }\n ],\n \"program\": {\n \"kind\": \"const\",\n \"value\": [\n 140,\n 151,\n 37,\n 143,\n 78,\n 36,\n 137,\n 241,\n 187,\n 61,\n 16,\n 41,\n 20,\n 142,\n 13,\n 131,\n 11,\n 90,\n 19,\n 153,\n 218,\n 255,\n 16,\n 132,\n 4,\n 142,\n 123,\n 216,\n 219,\n 233,\n 248,\n 89\n ]\n }\n }\n },\n {\n \"name\": \"token_mint\"\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n },\n {\n \"name\": \"token_program\"\n },\n {\n \"name\": \"associated_token_program\",\n \"address\": \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\"\n }\n ],\n \"args\": [\n {\n \"name\": \"project_id\",\n \"type\": \"string\"\n }\n ]\n }\n ],\n \"accounts\": [\n {\n \"name\": \"Config\",\n \"discriminator\": [\n 155,\n 12,\n 170,\n 224,\n 30,\n 250,\n 204,\n 130\n ]\n },\n {\n \"name\": \"MerkleAirdrop\",\n \"discriminator\": [\n 86,\n 93,\n 215,\n 62,\n 159,\n 242,\n 77,\n 220\n ]\n },\n {\n \"name\": \"UsedLeaf\",\n \"discriminator\": [\n 164,\n 55,\n 142,\n 33,\n 246,\n 150,\n 42,\n 179\n ]\n },\n {\n \"name\": \"Version\",\n \"discriminator\": [\n 234,\n 4,\n 254,\n 42,\n 242,\n 196,\n 136,\n 199\n ]\n }\n ],\n \"events\": [\n {\n \"name\": \"ClaimDelegateSet\",\n \"discriminator\": [\n 82,\n 153,\n 121,\n 138,\n 224,\n 132,\n 71,\n 59\n ]\n },\n {\n \"name\": \"Claimed\",\n \"discriminator\": [\n 217,\n 192,\n 123,\n 72,\n 108,\n 150,\n 248,\n 33\n ]\n },\n {\n \"name\": \"Deployed\",\n \"discriminator\": [\n 50,\n 145,\n 94,\n 59,\n 169,\n 255,\n 159,\n 186\n ]\n },\n {\n \"name\": \"Initialized\",\n \"discriminator\": [\n 208,\n 213,\n 115,\n 98,\n 115,\n 82,\n 201,\n 209\n ]\n }\n ],\n \"errors\": [\n {\n \"code\": 6000,\n \"name\": \"AlreadyDeployed\",\n \"msg\": \"AlreadyDeployed\"\n },\n {\n \"code\": 6001,\n \"name\": \"UnsupportedOperation\",\n \"msg\": \"UnsupportedOperation\"\n },\n {\n \"code\": 6002,\n \"name\": \"TimeInactive\",\n \"msg\": \"TimeInactive\"\n },\n {\n \"code\": 6003,\n \"name\": \"InvalidProof\",\n \"msg\": \"InvalidProof\"\n },\n {\n \"code\": 6004,\n \"name\": \"LeafUsed\",\n \"msg\": \"LeafUsed\"\n },\n {\n \"code\": 6005,\n \"name\": \"IncorrectFees\",\n \"msg\": \"IncorrectFees\"\n },\n {\n \"code\": 6006,\n \"name\": \"OutsideClaimableTimeRange\",\n \"msg\": \"OutsideClaimableTimeRange\"\n },\n {\n \"code\": 6007,\n \"name\": \"AlreadyInitialized\",\n \"msg\": \"AlreadyInitialized\"\n },\n {\n \"code\": 6008,\n \"name\": \"NotOwner\",\n \"msg\": \"NotOwner\"\n },\n {\n \"code\": 6009,\n \"name\": \"NotProgramAdmin\",\n \"msg\": \"NotProgramAdmin\"\n },\n {\n \"code\": 6010,\n \"name\": \"OwnableUnauthorizedAccount\",\n \"msg\": \"OwnableUnauthorizedAccount\"\n },\n {\n \"code\": 6011,\n \"name\": \"NotPermissioned\",\n \"msg\": \"NotPermissioned\"\n },\n {\n \"code\": 6012,\n \"name\": \"InvalidFeeCollector\",\n \"msg\": \"InvalidFeeCollector\"\n },\n {\n \"code\": 6013,\n \"name\": \"Paused\",\n \"msg\": \"Paused\"\n }\n ],\n \"types\": [\n {\n \"name\": \"ClaimDelegateSet\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"delegate\",\n \"type\": \"pubkey\"\n }\n ]\n }\n },\n {\n \"name\": \"Claimed\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"recipient\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"group\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"data\",\n \"type\": {\n \"defined\": {\n \"name\": \"TokenTableMerkleDistributorData\"\n }\n }\n }\n ]\n }\n },\n {\n \"name\": \"Config\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"admin\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"new_admin\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"default_fee_collector\",\n \"type\": \"pubkey\"\n }\n ]\n }\n },\n {\n \"name\": \"Deployed\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": []\n }\n },\n {\n \"name\": \"Initialized\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"project_id\",\n \"type\": \"string\"\n }\n ]\n }\n },\n {\n \"name\": \"MerkleAirdrop\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"owner\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"root\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"project_token\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"claim_delegate\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"start_time\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"end_time\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"fee_collector\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"fee_token\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"paused\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"uri\",\n \"type\": \"string\"\n }\n ]\n }\n },\n {\n \"name\": \"TokenTableMerkleDistributorData\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"index\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"claimable_timestamp\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"claimable_amount\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"UsedLeaf\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"used\",\n \"type\": \"bool\"\n }\n ]\n }\n },\n {\n \"name\": \"Version\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"version\",\n \"type\": \"string\"\n }\n ]\n }\n }\n ]\n}","{\n \"address\": \"81oZDfqqbWkPbCx26A1mAwZmEDDZoeyxqmHuVtf4o7KB\",\n \"metadata\": {\n \"name\": \"fee_collector\",\n \"version\": \"0.1.0\",\n \"spec\": \"0.1.0\",\n \"description\": \"Created with Anchor\"\n },\n \"instructions\": [\n {\n \"name\": \"collect_fee\",\n \"discriminator\": [\n 60,\n 173,\n 247,\n 103,\n 4,\n 93,\n 130,\n 48\n ],\n \"accounts\": [\n {\n \"name\": \"storage\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 115,\n 116,\n 111,\n 114,\n 97,\n 103,\n 101\n ]\n }\n ]\n }\n },\n {\n \"name\": \"fee_token_mint\",\n \"writable\": true,\n \"optional\": true\n },\n {\n \"name\": \"vault\",\n \"writable\": true,\n \"optional\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 118,\n 97,\n 117,\n 108,\n 116\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"_fee_token\"\n }\n ]\n }\n },\n {\n \"name\": \"fee\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 102,\n 101,\n 101\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"_distributor\"\n },\n {\n \"kind\": \"arg\",\n \"path\": \"_project_id\"\n }\n ]\n }\n },\n {\n \"name\": \"source_ata\",\n \"writable\": true,\n \"optional\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"authority\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"token_program\"\n },\n {\n \"kind\": \"arg\",\n \"path\": \"_fee_token\"\n }\n ],\n \"program\": {\n \"kind\": \"const\",\n \"value\": [\n 140,\n 151,\n 37,\n 143,\n 78,\n 36,\n 137,\n 241,\n 187,\n 61,\n 16,\n 41,\n 20,\n 142,\n 13,\n 131,\n 11,\n 90,\n 19,\n 153,\n 218,\n 255,\n 16,\n 132,\n 4,\n 142,\n 123,\n 216,\n 219,\n 233,\n 248,\n 89\n ]\n }\n }\n },\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n },\n {\n \"name\": \"token_program\",\n \"optional\": true\n },\n {\n \"name\": \"associated_token_program\",\n \"address\": \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\"\n }\n ],\n \"args\": [\n {\n \"name\": \"fee_token\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"distributor\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"project_id\",\n \"type\": \"string\"\n },\n {\n \"name\": \"token_transferred\",\n \"type\": \"u64\"\n }\n ],\n \"returns\": \"u64\"\n },\n {\n \"name\": \"collect_fee_amount\",\n \"discriminator\": [\n 119,\n 58,\n 206,\n 40,\n 52,\n 201,\n 202,\n 81\n ],\n \"accounts\": [\n {\n \"name\": \"storage\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 115,\n 116,\n 111,\n 114,\n 97,\n 103,\n 101\n ]\n }\n ]\n }\n },\n {\n \"name\": \"fee_token_mint\",\n \"writable\": true,\n \"optional\": true\n },\n {\n \"name\": \"vault\",\n \"writable\": true,\n \"optional\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 118,\n 97,\n 117,\n 108,\n 116\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"_fee_token\"\n }\n ]\n }\n },\n {\n \"name\": \"source_ata\",\n \"writable\": true,\n \"optional\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"authority\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"token_program\"\n },\n {\n \"kind\": \"arg\",\n \"path\": \"_fee_token\"\n }\n ],\n \"program\": {\n \"kind\": \"const\",\n \"value\": [\n 140,\n 151,\n 37,\n 143,\n 78,\n 36,\n 137,\n 241,\n 187,\n 61,\n 16,\n 41,\n 20,\n 142,\n 13,\n 131,\n 11,\n 90,\n 19,\n 153,\n 218,\n 255,\n 16,\n 132,\n 4,\n 142,\n 123,\n 216,\n 219,\n 233,\n 248,\n 89\n ]\n }\n }\n },\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n },\n {\n \"name\": \"token_program\",\n \"optional\": true\n },\n {\n \"name\": \"associated_token_program\",\n \"address\": \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\"\n }\n ],\n \"args\": [\n {\n \"name\": \"fee_token\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"fee_amount\",\n \"type\": \"u64\"\n }\n ],\n \"returns\": \"u64\"\n },\n {\n \"name\": \"get_fee\",\n \"discriminator\": [\n 115,\n 195,\n 235,\n 161,\n 25,\n 219,\n 60,\n 29\n ],\n \"accounts\": [\n {\n \"name\": \"storage\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 115,\n 116,\n 111,\n 114,\n 97,\n 103,\n 101\n ]\n }\n ]\n }\n },\n {\n \"name\": \"fee\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 102,\n 101,\n 101\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"_distributor\"\n },\n {\n \"kind\": \"arg\",\n \"path\": \"_project_id\"\n }\n ]\n }\n }\n ],\n \"args\": [\n {\n \"name\": \"distributor\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"project_id\",\n \"type\": \"string\"\n },\n {\n \"name\": \"token_transferred\",\n \"type\": \"u64\"\n }\n ],\n \"returns\": \"u64\"\n },\n {\n \"name\": \"init_fee_token\",\n \"discriminator\": [\n 29,\n 135,\n 230,\n 71,\n 198,\n 116,\n 59,\n 38\n ],\n \"accounts\": [\n {\n \"name\": \"storage\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 115,\n 116,\n 111,\n 114,\n 97,\n 103,\n 101\n ]\n }\n ]\n }\n },\n {\n \"name\": \"vault\",\n \"writable\": true,\n \"optional\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 118,\n 97,\n 117,\n 108,\n 116\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"fee_token\"\n }\n ]\n }\n },\n {\n \"name\": \"token_mint\",\n \"optional\": true\n },\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"token_program\"\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"fee_token\",\n \"type\": \"pubkey\"\n }\n ]\n },\n {\n \"name\": \"init_project_fee\",\n \"discriminator\": [\n 21,\n 68,\n 31,\n 251,\n 143,\n 139,\n 107,\n 64\n ],\n \"accounts\": [\n {\n \"name\": \"storage\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 115,\n 116,\n 111,\n 114,\n 97,\n 103,\n 101\n ]\n }\n ]\n }\n },\n {\n \"name\": \"fee\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 102,\n 101,\n 101\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"_distributor\"\n },\n {\n \"kind\": \"arg\",\n \"path\": \"_project_id\"\n }\n ]\n }\n },\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"distributor\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"project_id\",\n \"type\": \"string\"\n }\n ]\n },\n {\n \"name\": \"initialize\",\n \"discriminator\": [\n 175,\n 175,\n 109,\n 31,\n 13,\n 152,\n 155,\n 237\n ],\n \"accounts\": [\n {\n \"name\": \"storage\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 115,\n 116,\n 111,\n 114,\n 97,\n 103,\n 101\n ]\n }\n ]\n }\n },\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"receive_ownership\",\n \"discriminator\": [\n 156,\n 163,\n 211,\n 191,\n 160,\n 158,\n 61,\n 55\n ],\n \"accounts\": [\n {\n \"name\": \"storage\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 115,\n 116,\n 111,\n 114,\n 97,\n 103,\n 101\n ]\n }\n ]\n }\n },\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"set_custom_fee_bips\",\n \"discriminator\": [\n 97,\n 137,\n 188,\n 218,\n 237,\n 225,\n 78,\n 39\n ],\n \"accounts\": [\n {\n \"name\": \"storage\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 115,\n 116,\n 111,\n 114,\n 97,\n 103,\n 101\n ]\n }\n ]\n }\n },\n {\n \"name\": \"fee\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 102,\n 101,\n 101\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"_distributor\"\n },\n {\n \"kind\": \"arg\",\n \"path\": \"_project_id\"\n }\n ]\n }\n },\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"distributor\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"project_id\",\n \"type\": \"string\"\n },\n {\n \"name\": \"bips\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"set_custom_fee_fixed\",\n \"discriminator\": [\n 105,\n 246,\n 45,\n 208,\n 238,\n 7,\n 174,\n 190\n ],\n \"accounts\": [\n {\n \"name\": \"storage\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 115,\n 116,\n 111,\n 114,\n 97,\n 103,\n 101\n ]\n }\n ]\n }\n },\n {\n \"name\": \"fee\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 102,\n 101,\n 101\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"_distributor\"\n },\n {\n \"kind\": \"arg\",\n \"path\": \"_project_id\"\n }\n ]\n }\n },\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"distributor\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"project_id\",\n \"type\": \"string\"\n },\n {\n \"name\": \"fixed_fee\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"set_default_fee\",\n \"discriminator\": [\n 150,\n 137,\n 197,\n 111,\n 176,\n 227,\n 201,\n 110\n ],\n \"accounts\": [\n {\n \"name\": \"storage\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 115,\n 116,\n 111,\n 114,\n 97,\n 103,\n 101\n ]\n }\n ]\n }\n },\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"bips\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"transfer_ownership\",\n \"discriminator\": [\n 65,\n 177,\n 215,\n 73,\n 53,\n 45,\n 99,\n 47\n ],\n \"accounts\": [\n {\n \"name\": \"storage\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 115,\n 116,\n 111,\n 114,\n 97,\n 103,\n 101\n ]\n }\n ]\n }\n },\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"new_owner\",\n \"writable\": true,\n \"signer\": true,\n \"optional\": true\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"new_owner\",\n \"type\": \"pubkey\"\n }\n ]\n },\n {\n \"name\": \"withdraw\",\n \"discriminator\": [\n 183,\n 18,\n 70,\n 156,\n 148,\n 109,\n 161,\n 34\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"storage\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 115,\n 116,\n 111,\n 114,\n 97,\n 103,\n 101\n ]\n }\n ]\n }\n },\n {\n \"name\": \"vault\",\n \"writable\": true,\n \"optional\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 118,\n 97,\n 117,\n 108,\n 116\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"fee_token\"\n }\n ]\n }\n },\n {\n \"name\": \"authority_ata\",\n \"writable\": true,\n \"optional\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"authority\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"token_program\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"token_mint\"\n }\n ],\n \"program\": {\n \"kind\": \"const\",\n \"value\": [\n 140,\n 151,\n 37,\n 143,\n 78,\n 36,\n 137,\n 241,\n 187,\n 61,\n 16,\n 41,\n 20,\n 142,\n 13,\n 131,\n 11,\n 90,\n 19,\n 153,\n 218,\n 255,\n 16,\n 132,\n 4,\n 142,\n 123,\n 216,\n 219,\n 233,\n 248,\n 89\n ]\n }\n }\n },\n {\n \"name\": \"token_mint\",\n \"optional\": true\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n },\n {\n \"name\": \"token_program\"\n },\n {\n \"name\": \"associated_token_program\",\n \"address\": \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\"\n }\n ],\n \"args\": [\n {\n \"name\": \"fee_token\",\n \"type\": \"pubkey\"\n }\n ]\n }\n ],\n \"accounts\": [\n {\n \"name\": \"Fee\",\n \"discriminator\": [\n 24,\n 55,\n 150,\n 250,\n 168,\n 27,\n 101,\n 178\n ]\n },\n {\n \"name\": \"FeeCollectorStorage\",\n \"discriminator\": [\n 204,\n 100,\n 40,\n 33,\n 80,\n 124,\n 161,\n 126\n ]\n }\n ],\n \"events\": [\n {\n \"name\": \"CustomFeeSetBips\",\n \"discriminator\": [\n 143,\n 98,\n 8,\n 161,\n 227,\n 53,\n 220,\n 12\n ]\n },\n {\n \"name\": \"CustomFeeSetFixed\",\n \"discriminator\": [\n 85,\n 168,\n 106,\n 241,\n 69,\n 235,\n 220,\n 95\n ]\n },\n {\n \"name\": \"DefaultFeeSet\",\n \"discriminator\": [\n 6,\n 114,\n 243,\n 225,\n 246,\n 24,\n 178,\n 87\n ]\n }\n ],\n \"errors\": [\n {\n \"code\": 6000,\n \"name\": \"AlreadyInitialized\",\n \"msg\": \"AlreadyInitialized\"\n },\n {\n \"code\": 6001,\n \"name\": \"NotOwner\",\n \"msg\": \"NotOwner\"\n },\n {\n \"code\": 6002,\n \"name\": \"NotPermissioned\",\n \"msg\": \"NotPermissioned\"\n },\n {\n \"code\": 6003,\n \"name\": \"FeesTooHigh\",\n \"msg\": \"FeesTooHigh\"\n },\n {\n \"code\": 6004,\n \"name\": \"InvalidCallData\",\n \"msg\": \"InvalidCallData\"\n }\n ],\n \"types\": [\n {\n \"name\": \"CustomFeeSetBips\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"distributor\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"bips\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"project_id\",\n \"type\": \"string\"\n }\n ]\n }\n },\n {\n \"name\": \"CustomFeeSetFixed\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"distributor\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"fixed_fee\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"project_id\",\n \"type\": \"string\"\n }\n ]\n }\n },\n {\n \"name\": \"DefaultFeeSet\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"bips\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"Fee\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"default\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"bips\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"fixed\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"FeeCollectorStorage\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"owner\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"new_owner\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"default_fees_bips\",\n \"type\": \"u64\"\n }\n ]\n }\n }\n ]\n}","import { FeeCollector } from './fee_collector';\nimport { SolanaContractClientBase, SolanaContractInfo } from './SolanaContractClient';\nimport IDL from './fee_collector.json';\nimport { PublicKey } from '@solana/web3.js';\nimport * as anchor from '@coral-xyz/anchor';\n\nexport class FeeCollectorClient extends SolanaContractClientBase<FeeCollector> {\n projectId: string;\n constructor(options: SolanaContractInfo) {\n super({\n ...options,\n idl: IDL\n });\n this.projectId = options.projectId;\n }\n\n async getStoragePDA(): Promise<PublicKey> {\n const [storagePDA] = await this.findProgramAddress([anchor.utils.bytes.utf8.encode('storage')]);\n\n return storagePDA;\n }\n\n async getProjectFeePDA(programId: PublicKey): Promise<PublicKey> {\n const [projectFeePDA] = await this.findProgramAddress([\n anchor.utils.bytes.utf8.encode('fee'),\n programId.toBuffer(),\n anchor.utils.bytes.utf8.encode(this.projectId)\n ]);\n return projectFeePDA;\n }\n\n async setDefaultFee(fee: string) {\n return this.invokeInstruction('setDefaultFee', {}, [new anchor.BN(fee)]);\n }\n\n async initProjectFee() {\n return this.invokeInstruction('initProjectFee', {}, [this.programId, this.projectId]);\n }\n\n async getClaimFee(programId: PublicKey, tokenAmount: string): Promise<bigint> {\n try {\n const fee = await this.invokeView('getFee', [programId, this.projectId, new anchor.BN(tokenAmount)]);\n return BigInt(fee);\n } catch (error) {\n return BigInt(0);\n }\n }\n}\n","import { IAirdropClaimData } from '../../types';\nimport { MerkleTokenDistributorClient } from './MerkleDistributorClient';\nimport { SolanaContractInfo } from './SolanaContractClient';\n\nexport class AirdropService {\n options: SolanaContractInfo;\n constructor(options: SolanaContractInfo) {\n this.options = options;\n }\n\n private get airdropClient(): MerkleTokenDistributorClient {\n if (!this.options) {\n throw new Error('options is empty');\n }\n\n return new MerkleTokenDistributorClient(this.options);\n }\n\n async getVersion() {\n return this.airdropClient.getVersion();\n }\n\n async getClaimFee(address: string, amount: bigint): Promise<bigint> {\n const fee = await this.airdropClient.getClaimFee(amount);\n return fee;\n }\n\n async batchFetchClaimed(leafs: string[]): Promise<{ result: boolean; status: string }[]> {\n const res = await this.airdropClient.batchFetchClaimed(leafs);\n return res;\n }\n\n async isLeafUsed(leaf: string) {\n return this.airdropClient.isLeafUsed(leaf);\n }\n\n async getPaused() {\n return this.airdropClient.getPaused();\n }\n\n async claim(data: IAirdropClaimData) {\n return this.airdropClient.claim(data);\n }\n}\n","import { PublicKey } from '@solana/web3.js';\nimport { SolanaContractClientBase, SolanaContractInfo } from './SolanaContractClient';\nimport IDL from './eddsa_token_with_fees_distributor_solana.json';\nimport * as anchor from '@coral-xyz/anchor';\nimport { EddsaTokenWithFeesDistributorSolana } from './eddsa_token_with_fees_distributor_solana';\nimport { TOKEN_2022_PROGRAM_ID } from '@solana/spl-token';\nimport { FeeCollectorClient } from './FeeCollectorClient';\nimport { fetchTokenVersion, getOrCreateAssociatedTokenAccount, hexStrToU8Array } from '../../utils';\nimport { ISignatureClaimData } from '../../types';\n\nexport class AirdropSignatureClient extends SolanaContractClientBase<EddsaTokenWithFeesDistributorSolana> {\n projectId: string;\n constructor(options: SolanaContractInfo) {\n super({\n ...options,\n idl: IDL\n });\n this.projectId = options.projectId;\n }\n\n async getVersionPDA(): Promise<PublicKey> {\n const [versionPDA] = await this.findProgramAddress([anchor.utils.bytes.utf8.encode('version')]);\n\n return versionPDA;\n }\n\n async getVersion() {\n const versionPDA = await this.getVersionPDA();\n const versionData = await this.fetchAccountData('version', versionPDA);\n return versionData.version;\n }\n\n get FeeCollector() {\n return new FeeCollectorClient({\n projectId: this.projectId,\n walletClient: this.wallet,\n chainId: this.chainId,\n chainRpc: this.chainRpc\n });\n }\n\n async getClaimFee(amount: bigint) {\n return this.FeeCollector.getClaimFee(this.programId, amount.toString());\n }\n\n async getStoragePDA(): Promise<PublicKey> {\n const [storagePDA] = await this.findProgramAddress([\n anchor.utils.bytes.utf8.encode('storage'),\n anchor.utils.bytes.utf8.encode(this.projectId)\n ]);\n\n return storagePDA;\n }\n\n async getAirdropPDA(): Promise<PublicKey> {\n const [airdropPDA] = await this.findProgramAddress([\n anchor.utils.bytes.utf8.encode('airdrop'),\n anchor.utils.bytes.utf8.encode(this.projectId)\n ]);\n\n return airdropPDA;\n }\n\n async getVaultPDA(): Promise<PublicKey> {\n const airdropPDA = await this.getAirdropPDA();\n const [vaultPDA] = await this.findProgramAddress([anchor.utils.bytes.utf8.encode('vault'), airdropPDA.toBuffer()]);\n\n return vaultPDA;\n }\n\n async getClaimPDA(claimId: string): Promise<PublicKey> {\n const airdropPDA = await this.getAirdropPDA();\n const [claimPDA] = await this.findProgramAddress([\n anchor.utils.bytes.utf8.encode('claim'),\n airdropPDA.toBuffer(),\n new Uint8Array(hexStrToU8Array(claimId))\n ]);\n return claimPDA;\n }\n\n async getContractInfo() {\n const airdropPDA = await this.getAirdropPDA();\n const config: any = await this.fetchAccountData('airdrop', airdropPDA);\n\n const version = await this.getVersion();\n return {\n version: version,\n token: config.token.toString() as string,\n startTime: Number(config.startTime),\n endTime: Number(config.endTime),\n paused: config.paused as boolean,\n signer: config.authorizedSigner.toString() as string,\n owner: config.owner.toString() as string\n };\n }\n\n async getPaused() {\n const config = await this.getContractInfo();\n return config.paused;\n }\n\n async checkClaim(id: string) {\n const claimPDA = await this.getClaimPDA(id);\n try {\n const claimData = await this.fetchAccountData('claim', claimPDA);\n return claimData?.used;\n } catch (error) {\n return false;\n }\n }\n\n async batchFetchClaimed(userClaimIds: string[]): Promise<boolean[]> {\n const res = await Promise.all(userClaimIds.map((id) => this.checkClaim(id)));\n return res;\n }\n\n async initialize(projectId: string, feeCollector?: PublicKey): Promise<string> {\n try {\n const airdropPDA = await this.getAirdropPDA();\n console.log(airdropPDA);\n const config = await this.getContractInfo();\n console.log(config);\n return airdropPDA.toString();\n } catch (error) {\n const owner = this.wallet.publicKey;\n const res = await this.invokeInstruction(\n 'initialize',\n {\n // storage: storagePDA,\n // authority: this.wallet.publicKey\n },\n [projectId, owner, feeCollector || PublicKey.default]\n );\n console.log(res);\n const airdropPDA = await this.getAirdropPDA();\n return airdropPDA.toString();\n }\n }\n\n async setBaseParams(tokenAddress: string, startTime: number, endTime: number, signer: string) {\n const start = new anchor.BN(startTime),\n end = new anchor.BN(endTime);\n console.log(start, end, tokenAddress, signer);\n await this.invokeInstruction('setBaseParams', {}, [new PublicKey(tokenAddress), start, end, new PublicKey(signer)]);\n }\n\n async togglePause() {\n await this.invokeInstruction('togglePause', {}, [this.projectId]);\n }\n\n async getFeeInfo() {\n const airdropPDA = await this.getAirdropPDA();\n const config = await this.fetchAccountData('airdrop', airdropPDA);\n return {\n feeToken: config.feeToken.toString(),\n feeCollector: config.feeCollector.toString()\n };\n }\n\n async claim(data: ISignatureClaimData[]) {\n const config = await this.getContractInfo();\n const feeCollectorStoragePDA = await this.FeeCollector.getStoragePDA();\n const feePDA = await this.FeeCollector.getProjectFeePDA(this.programId);\n const tokenVersion = await fetchTokenVersion(config.token, {\n clusterOrEndpoint: this.chainId\n });\n\n const authorityATA = await getOrCreateAssociatedTokenAccount({\n connection: this.connection,\n payer: this.wallet.publicKey,\n mint: new PublicKey(config.token),\n owner: new PublicKey(this.wallet.publicKey),\n signTransaction: (this.wallet as any).signTransaction,\n programId: tokenVersion?.programId || TOKEN_2022_PROGRAM_ID\n });\n\n let lastHash = '';\n // solana max transaction size of 1232\n for (const claim of data) {\n const tx = new anchor.web3.Transaction();\n tx.add(\n anchor.web3.Ed25519Program.createInstructionWithPublicKey({\n publicKey: new PublicKey(config.signer).toBytes(),\n message: Uint8Array.from(hexStrToU8Array(claim.hash)),\n signature: new Uint8Array(hexStrToU8Array(claim.signature))\n })\n );\n\n const claimPDA = await this.getClaimPDA(claim.claimId);\n\n const decodedData = {\n claimableTimestamp: new anchor.BN(claim.unlockingAt),\n claimableAmount: new anchor.BN(claim.value),\n fees: new anchor.BN(claim.fees)\n };\n\n tx.add(\n await this.program.methods\n .claim(\n this.projectId,\n this.wallet.publicKey,\n new Uint8Array(hexStrToU8Array(claim.claimId)),\n [],\n decodedData,\n Buffer.from(hexStrToU8Array(claim.signature))\n )\n .accountsPartial({\n authority: this.wallet.publicKey,\n recipient: this.wallet.publicKey,\n recipientAta: authorityATA.address,\n claim: claimPDA,\n tokenMint: new PublicKey(config.token),\n feeCollector: this.FeeCollector.programId,\n feeCollectorStorage: feeCollectorStoragePDA,\n feeCollectorVault: null,\n feeTokenMint: null,\n fee: feePDA,\n authorityFeeAta: null,\n tokenProgram: tokenVersion?.programId || TOKEN_2022_PROGRAM_ID,\n feeTokenProgram: null\n })\n .transaction()\n );\n\n const hash = await this.program.provider.sendAndConfirm?.(tx, [], {\n commitment: 'finalized'\n });\n\n lastHash = hash!;\n }\n\n return lastHash;\n }\n}\n","{\n \"address\": \"CwjcZKhYZ69bEL7jkotHtmAqhNBNmxyZCLUdVwsK3fWV\",\n \"metadata\": {\n \"name\": \"eddsa_token_with_fees_distributor_solana\",\n \"version\": \"0.1.0\",\n \"spec\": \"0.1.0\",\n \"description\": \"Created with Anchor\"\n },\n \"instructions\": [\n {\n \"name\": \"claim\",\n \"discriminator\": [\n 62,\n 198,\n 214,\n 193,\n 213,\n 159,\n 108,\n 210\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"airdrop\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 105,\n 114,\n 100,\n 114,\n 111,\n 112\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"_project_id\"\n }\n ]\n }\n },\n {\n \"name\": \"vault\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 118,\n 97,\n 117,\n 108,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"airdrop\"\n }\n ]\n }\n },\n {\n \"name\": \"recipient\"\n },\n {\n \"name\": \"recipient_ata\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"recipient\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"token_program\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"token_mint\"\n }\n ],\n \"program\": {\n \"kind\": \"const\",\n \"value\": [\n 140,\n 151,\n 37,\n 143,\n 78,\n 36,\n 137,\n 241,\n 187,\n 61,\n 16,\n 41,\n 20,\n 142,\n 13,\n 131,\n 11,\n 90,\n 19,\n 153,\n 218,\n 255,\n 16,\n 132,\n 4,\n 142,\n 123,\n 216,\n 219,\n 233,\n 248,\n 89\n ]\n }\n }\n },\n {\n \"name\": \"authority_fee_ata\",\n \"writable\": true,\n \"optional\": true\n },\n {\n \"name\": \"claim\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 108,\n 97,\n 105,\n 109\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"airdrop\"\n },\n {\n \"kind\": \"arg\",\n \"path\": \"_claim_id\"\n }\n ]\n }\n },\n {\n \"name\": \"token_mint\"\n },\n {\n \"name\": \"fee_collector_storage\",\n \"writable\": true,\n \"optional\": true\n },\n {\n \"name\": \"fee_collector_vault\",\n \"writable\": true,\n \"optional\": true\n },\n {\n \"name\": \"fee_collector\"\n },\n {\n \"name\": \"fee_token_mint\",\n \"writable\": true,\n \"optional\": true\n },\n {\n \"name\": \"fee\",\n \"writable\": true\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n },\n {\n \"name\": \"token_program\"\n },\n {\n \"name\": \"fee_token_program\",\n \"optional\": true\n },\n {\n \"name\": \"associated_token_program\",\n \"address\": \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\"\n },\n {\n \"name\": \"ix_sysvar\",\n \"docs\": [\n \"the supplied Sysvar could be anything else.\",\n \"The Instruction Sysvar has not been implemented\",\n \"in the Anchor framework yet, so this is the safe approach.\"\n ],\n \"address\": \"Sysvar1nstructions1111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"project_id\",\n \"type\": \"string\"\n },\n {\n \"name\": \"recipient\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"user_claim_id\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"group\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"user_claim_data\",\n \"type\": {\n \"defined\": {\n \"name\": \"EDDSADistributorData\"\n }\n }\n },\n {\n \"name\": \"signature\",\n \"type\": \"bytes\"\n }\n ]\n },\n {\n \"name\": \"deploy\",\n \"discriminator\": [\n 67,\n 36,\n 143,\n 118,\n 36,\n 164,\n 92,\n 217\n ],\n \"accounts\": [\n {\n \"name\": \"config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"fee_collector\"\n },\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"default_fee_collector\",\n \"type\": \"pubkey\"\n }\n ]\n },\n {\n \"name\": \"deposit\",\n \"discriminator\": [\n 242,\n 35,\n 198,\n 137,\n 82,\n 225,\n 242,\n 182\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"airdrop\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 105,\n 114,\n 100,\n 114,\n 111,\n 112\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"_project_id\"\n }\n ]\n }\n },\n {\n \"name\": \"vault\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 118,\n 97,\n 117,\n 108,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"airdrop\"\n }\n ]\n }\n },\n {\n \"name\": \"authority_ata\",\n \"writable\": true\n },\n {\n \"name\": \"token_mint\"\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n },\n {\n \"name\": \"token_program\"\n },\n {\n \"name\": \"associated_token_program\",\n \"address\": \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\"\n }\n ],\n \"args\": [\n {\n \"name\": \"project_id\",\n \"type\": \"string\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"encode_hash_to_be_signed\",\n \"discriminator\": [\n 15,\n 245,\n 227,\n 180,\n 152,\n 94,\n 134,\n 20\n ],\n \"accounts\": [],\n \"args\": [\n {\n \"name\": \"recipient\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"user_claim_id\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"user_claim_data\",\n \"type\": {\n \"defined\": {\n \"name\": \"EDDSADistributorData\"\n }\n }\n },\n {\n \"name\": \"airdrop\",\n \"type\": \"pubkey\"\n }\n ],\n \"returns\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"initialize\",\n \"discriminator\": [\n 175,\n 175,\n 109,\n 31,\n 13,\n 152,\n 155,\n 237\n ],\n \"accounts\": [\n {\n \"name\": \"airdrop\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 105,\n 114,\n 100,\n 114,\n 111,\n 112\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"_project_id\"\n }\n ]\n }\n },\n {\n \"name\": \"config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"fee_collector\",\n \"optional\": true\n },\n {\n \"name\": \"fee_collector_storage\",\n \"optional\": true\n },\n {\n \"name\": \"fee\",\n \"writable\": true,\n \"optional\": true\n },\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"project_id\",\n \"type\": \"string\"\n },\n {\n \"name\": \"project_token\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"init_fee_account\",\n \"type\": \"bool\"\n }\n ]\n },\n {\n \"name\": \"receive_program_admin\",\n \"discriminator\": [\n 238,\n 172,\n 61,\n 197,\n 23,\n 72,\n 249,\n 87\n ],\n \"accounts\": [\n {\n \"name\": \"config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"set_base_params\",\n \"discriminator\": [\n 53,\n 16,\n 151,\n 65,\n 155,\n 108,\n 105,\n 229\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"airdrop\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 105,\n 114,\n 100,\n 114,\n 111,\n 112\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"_project_id\"\n }\n ]\n }\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"project_id\",\n \"type\": \"string\"\n },\n {\n \"name\": \"start_time\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"end_time\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"authorized_signer\",\n \"type\": \"pubkey\"\n }\n ]\n },\n {\n \"name\": \"set_default_fee_collector\",\n \"discriminator\": [\n 250,\n 25,\n 136,\n 29,\n 77,\n 231,\n 26,\n 141\n ],\n \"accounts\": [\n {\n \"name\": \"config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"fee_collector\"\n },\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"default_fee_collector\",\n \"type\": \"pubkey\"\n }\n ]\n },\n {\n \"name\": \"set_fee_collector\",\n \"discriminator\": [\n 143,\n 46,\n 10,\n 113,\n 121,\n 157,\n 245,\n 166\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"config\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"airdrop\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 105,\n 114,\n 100,\n 114,\n 111,\n 112\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"_project_id\"\n }\n ]\n }\n },\n {\n \"name\": \"fee_collector\"\n },\n {\n \"name\": \"fee_collector_storage\",\n \"optional\": true\n },\n {\n \"name\": \"fee\",\n \"writable\": true,\n \"optional\": true\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"project_id\",\n \"type\": \"string\"\n },\n {\n \"name\": \"fee_collector\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"init_fee_account\",\n \"type\": \"bool\"\n }\n ]\n },\n {\n \"name\": \"set_fee_token\",\n \"discriminator\": [\n 52,\n 90,\n 163,\n 123,\n 220,\n 202,\n 90,\n 217\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"config\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"airdrop\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 105,\n 114,\n 100,\n 114,\n 111,\n 112\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"_project_id\"\n }\n ]\n }\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"project_id\",\n \"type\": \"string\"\n },\n {\n \"name\": \"fee_token\",\n \"type\": \"pubkey\"\n }\n ]\n },\n {\n \"name\": \"toggle_pause\",\n \"discriminator\": [\n 238,\n 237,\n 206,\n 27,\n 255,\n 95,\n 123,\n 229\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"airdrop\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 105,\n 114,\n 100,\n 114,\n 111,\n 112\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"_project_id\"\n }\n ]\n }\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"project_id\",\n \"type\": \"string\"\n }\n ]\n },\n {\n \"name\": \"transfer_ownership\",\n \"discriminator\": [\n 65,\n 177,\n 215,\n 73,\n 53,\n 45,\n 99,\n 47\n ],\n \"accounts\": [\n {\n \"name\": \"airdrop\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 105,\n 114,\n 100,\n 114,\n 111,\n 112\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"_project_id\"\n }\n ]\n }\n },\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"project_id\",\n \"type\": \"string\"\n },\n {\n \"name\": \"new_owner\",\n \"type\": \"pubkey\"\n }\n ]\n },\n {\n \"name\": \"transfer_program_admin\",\n \"discriminator\": [\n 47,\n 201,\n 152,\n 248,\n 132,\n 27,\n 33,\n 139\n ],\n \"accounts\": [\n {\n \"name\": \"config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"new_admin\",\n \"writable\": true,\n \"signer\": true,\n \"optional\": true\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"new_admin\",\n \"type\": \"pubkey\"\n }\n ]\n },\n {\n \"name\": \"verify\",\n \"discriminator\": [\n 133,\n 161,\n 141,\n 48,\n 120,\n 198,\n 88,\n 150\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n },\n {\n \"name\": \"ix_sysvar\",\n \"docs\": [\n \"the supplied Sysvar could be anything else.\",\n \"The Instruction Sysvar has not been implemented\",\n \"in the Anchor framework yet, so this is the safe approach.\"\n ],\n \"address\": \"Sysvar1nstructions1111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"signer\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"hash\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"signature\",\n \"type\": \"bytes\"\n }\n ]\n },\n {\n \"name\": \"version\",\n \"discriminator\": [\n 118,\n 65,\n 195,\n 198,\n 129,\n 216,\n 252,\n 192\n ],\n \"accounts\": [\n {\n \"name\": \"version\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 118,\n 101,\n 114,\n 115,\n 105,\n 111,\n 110\n ]\n }\n ]\n }\n },\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"withdraw\",\n \"discriminator\": [\n 183,\n 18,\n 70,\n 156,\n 148,\n 109,\n 161,\n 34\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"airdrop\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 105,\n 114,\n 100,\n 114,\n 111,\n 112\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"_project_id\"\n }\n ]\n }\n },\n {\n \"name\": \"vault\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 118,\n 97,\n 117,\n 108,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"airdrop\"\n }\n ]\n }\n },\n {\n \"name\": \"authority_ata\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"authority\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"token_program\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"token_mint\"\n }\n ],\n \"program\": {\n \"kind\": \"const\",\n \"value\": [\n 140,\n 151,\n 37,\n 143,\n 78,\n 36,\n 137,\n 241,\n 187,\n 61,\n 16,\n 41,\n 20,\n 142,\n 13,\n 131,\n 11,\n 90,\n 19,\n 153,\n 218,\n 255,\n 16,\n 132,\n 4,\n 142,\n 123,\n 216,\n 219,\n 233,\n 248,\n 89\n ]\n }\n }\n },\n {\n \"name\": \"token_mint\"\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n },\n {\n \"name\": \"token_program\"\n },\n {\n \"name\": \"associated_token_program\",\n \"address\": \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\"\n }\n ],\n \"args\": [\n {\n \"name\": \"project_id\",\n \"type\": \"string\"\n }\n ]\n }\n ],\n \"accounts\": [\n {\n \"name\": \"Airdrop\",\n \"discriminator\": [\n 31,\n 112,\n 159,\n 158,\n 124,\n 237,\n 9,\n 241\n ]\n },\n {\n \"name\": \"Claim\",\n \"discriminator\": [\n 155,\n 70,\n 22,\n 176,\n 123,\n 215,\n 246,\n 102\n ]\n },\n {\n \"name\": \"Config\",\n \"discriminator\": [\n 155,\n 12,\n 170,\n 224,\n 30,\n 250,\n 204,\n 130\n ]\n },\n {\n \"name\": \"Version\",\n \"discriminator\": [\n 234,\n 4,\n 254,\n 42,\n 242,\n 196,\n 136,\n 199\n ]\n }\n ],\n \"events\": [\n {\n \"name\": \"ClaimDelegateSet\",\n \"discriminator\": [\n 82,\n 153,\n 121,\n 138,\n 224,\n 132,\n 71,\n 59\n ]\n },\n {\n \"name\": \"Claimed\",\n \"discriminator\": [\n 217,\n 192,\n 123,\n 72,\n 108,\n 150,\n 248,\n 33\n ]\n },\n {\n \"name\": \"Deployed\",\n \"discriminator\": [\n 50,\n 145,\n 94,\n 59,\n 169,\n 255,\n 159,\n 186\n ]\n },\n {\n \"name\": \"Initialized\",\n \"discriminator\": [\n 208,\n 213,\n 115,\n 98,\n 115,\n 82,\n 201,\n 209\n ]\n }\n ],\n \"errors\": [\n {\n \"code\": 6000,\n \"name\": \"AlreadyDeployed\",\n \"msg\": \"AlreadyDeployed\"\n },\n {\n \"code\": 6001,\n \"name\": \"UnsupportedOperation\",\n \"msg\": \"UnsupportedOperation\"\n },\n {\n \"code\": 6002,\n \"name\": \"TimeInactive\",\n \"msg\": \"TimeInactive\"\n },\n {\n \"code\": 6003,\n \"name\": \"InvalidSignature\",\n \"msg\": \"InvalidSignature\"\n },\n {\n \"code\": 6004,\n \"name\": \"IncorrectFees\",\n \"msg\": \"IncorrectFees\"\n },\n {\n \"code\": 6005,\n \"name\": \"OutsideClaimableTimeRange\",\n \"msg\": \"OutsideClaimableTimeRange\"\n },\n {\n \"code\": 6006,\n \"name\": \"AlreadyInitialized\",\n \"msg\": \"AlreadyInitialized\"\n },\n {\n \"code\": 6007,\n \"name\": \"NotOwner\",\n \"msg\": \"NotOwner\"\n },\n {\n \"code\": 6008,\n \"name\": \"NotProgramAdmin\",\n \"msg\": \"NotProgramAdmin\"\n },\n {\n \"code\": 6009,\n \"name\": \"NotPermissioned\",\n \"msg\": \"NotPermissioned\"\n },\n {\n \"code\": 6010,\n \"name\": \"OwnableUnauthorizedAccount\",\n \"msg\": \"OwnableUnauthorizedAccount\"\n },\n {\n \"code\": 6011,\n \"name\": \"InvalidFeeCollector\",\n \"msg\": \"InvalidFeeCollector\"\n },\n {\n \"code\": 6012,\n \"name\": \"Paused\",\n \"msg\": \"Paused\"\n }\n ],\n \"types\": [\n {\n \"name\": \"Airdrop\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"owner\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"authorized_signer\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"token\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"start_time\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"end_time\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"fee_collector\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"fee_token\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"paused\",\n \"type\": \"bool\"\n }\n ]\n }\n },\n {\n \"name\": \"Claim\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"used\",\n \"type\": \"bool\"\n }\n ]\n }\n },\n {\n \"name\": \"ClaimDelegateSet\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"delegate\",\n \"type\": \"pubkey\"\n }\n ]\n }\n },\n {\n \"name\": \"Claimed\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"recipient\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"group\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"data\",\n \"type\": {\n \"defined\": {\n \"name\": \"EDDSADistributorData\"\n }\n }\n }\n ]\n }\n },\n {\n \"name\": \"Config\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"admin\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"new_admin\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"default_fee_collector\",\n \"type\": \"pubkey\"\n }\n ]\n }\n },\n {\n \"name\": \"Deployed\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": []\n }\n },\n {\n \"name\": \"EDDSADistributorData\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"claimable_timestamp\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"claimable_amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"fees\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"Initialized\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"project_id\",\n \"type\": \"string\"\n }\n ]\n }\n },\n {\n \"name\": \"Version\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"version\",\n \"type\": \"string\"\n }\n ]\n }\n }\n ]\n}","import { ISignatureClaimData } from '../../types';\nimport { AirdropSignatureClient } from './AirdropSignatureClient';\nimport { SolanaContractInfo } from './SolanaContractClient';\n\nexport class SignatureAirdropService {\n options: SolanaContractInfo;\n constructor(options: SolanaContractInfo) {\n this.options = options;\n }\n\n private get airdropClient(): AirdropSignatureClient {\n if (!this.options) {\n throw new Error('options is empty');\n }\n\n return new AirdropSignatureClient(this.options);\n }\n\n async getVersion() {\n return this.airdropClient.getVersion();\n }\n\n async getClaimFee(address: string, amount: bigint): Promise<bigint> {\n const fee = await this.airdropClient.getClaimFee(amount);\n return fee;\n }\n\n async batchFetchClaimed(userClaimIds: string[]): Promise<boolean[]> {\n const res = await this.airdropClient.batchFetchClaimed(userClaimIds);\n return res;\n }\n\n async getPaused() {\n return this.airdropClient.getPaused();\n }\n\n async claim(data: ISignatureClaimData[], recipient?: string) {\n return this.airdropClient.claim(data);\n }\n}\n","import { TonClient } from '@ton/ton';\nimport { Sender, SenderArguments, beginCell, storeStateInit, Address, Cell, storeMessage } from '@ton/core';\nimport { CHAIN, TonConnectUI } from '@tonconnect/ui-react';\nimport { EventEmitter } from 'events';\nimport { TonWalletService } from '../../services';\nimport { retry } from '../../utils';\nimport { Event } from 'tonapi-sdk-js';\nimport { getHttpEndpoint } from '@orbs-network/ton-access';\n\nexport interface IAirdropOption {\n chainId: string;\n address: string;\n walletClient?: TonConnectUI;\n tonClient?: TonClient;\n version?: string;\n}\n\nlet cachedTonClient: TonClient | null = null;\n\nexport class TonContractBaseClient {\n chainId: string;\n address: string;\n walletClient?: TonConnectUI;\n private eventBus: EventEmitter;\n private counter: number = 0;\n tonClient?: TonClient;\n\n constructor({ chainId, address, walletClient, tonClient }: IAirdropOption) {\n this.chainId = chainId;\n this.address = address;\n this.walletClient = walletClient;\n this.eventBus = new EventEmitter();\n this.tonClient = tonClient;\n }\n\n waitForContractDeployment = async (provider: TonClient, contractAddress: Address): Promise<Address> => {\n return new Promise((resolve, reject) => {\n const checkDeployment = async () => {\n try {\n const isDeployed = await provider.isContractDeployed(contractAddress);\n if (isDeployed) {\n resolve(contractAddress);\n } else {\n // 每3秒检查一次\n setTimeout(checkDeployment, 3000);\n }\n } catch (error) {\n reject(error);\n }\n };\n\n checkDeployment();\n });\n };\n\n async getTonClient() {\n if (cachedTonClient) {\n return cachedTonClient;\n }\n if (this.tonClient) {\n cachedTonClient = this.tonClient;\n } else {\n const endpoint = await getHttpEndpoint({ network: this.chainId === CHAIN.TESTNET ? 'testnet' : 'mainnet' });\n cachedTonClient = new TonClient({ endpoint });\n }\n return cachedTonClient;\n }\n\n getTxByBOC = ({ boc: exBoc, userAddress }: { boc: string; userAddress: string }): Promise<string> => {\n const myAddress = Address.parse(userAddress);\n\n return retry(\n async () => {\n const client = await this.getTonClient();\n const transactions = await client.getTransactions(myAddress, {\n limit: 5\n });\n for (const tx of transactions) {\n const inMsg = tx.inMessage;\n if (inMsg?.info.type === 'external-in') {\n const inBOC = inMsg?.body;\n if (typeof inBOC === 'undefined') {\n throw new Error('Invalid external');\n continue;\n }\n const extHash = Cell.fromBase64(exBoc).hash().toString('hex');\n const inHash = beginCell().store(storeMessage(inMsg)).endCell().hash().toString('hex');\n\n console.log(' hash BOC', extHash);\n console.log('inMsg hash', inHash);\n console.log('checking the tx', tx, tx.hash().toString('hex'));\n\n // Assuming `inBOC.hash()` is synchronous and returns a hash object with a `toString` method\n if (extHash === inHash) {\n console.log('Tx match');\n const txHash = tx.hash().toString('hex');\n console.log(`Transaction Hash: ${txHash}`);\n console.log(`Transaction LT: ${tx.lt}`);\n return txHash;\n }\n }\n }\n throw new Error('Transaction not found');\n },\n { retries: 30, delay: 1000 }\n );\n };\n\n waitForTransaction = async (onLoading?: () => void): Promise<Event | null> => {\n const TonConnectUI = this.walletClient;\n const boc = await this.onTransactionHash();\n console.log(boc, 'boc');\n\n if (!TonConnectUI) {\n throw new Error('TonConnectUI is not initialized');\n }\n\n // 兼容bybit web3钱包,boc为对象\n if (typeof boc !== 'string') {\n return null;\n }\n\n onLoading?.();\n\n let receipt: Event | null = null;\n try {\n const hash = await this.getTxByBOC({\n boc,\n userAddress: TonConnectUI.account!.address\n });\n console.log(hash, 'hash');\n receipt = await TonWalletService?.waitForTransaction({\n hash,\n chainId: this.chainId,\n address: TonConnectUI.account!.address\n });\n } catch (e) {\n console.log(e, 'err');\n const hash = Cell.fromBase64(boc).hash().toString('hex');\n console.log(hash, 'hash');\n receipt = await TonWalletService?.waitForTransactionLegacy({\n hash,\n chainId: this.chainId,\n contractAddress: this!.address,\n address: TonConnectUI.account!.address\n });\n }\n console.log(receipt, 'tt');\n return receipt;\n };\n\n waitForTransactionForLegacy = async (): Promise<Event | null> => {\n // 兼容ios Transaction was not sent\n const TonConnectUI = this.walletClient;\n if (!TonConnectUI) {\n throw new Error('TonConnectUI is not initialized');\n }\n\n const receipt = await TonWalletService?.waitForTransactionLegacy({\n hash: '',\n chainId: this.chainId,\n // contractAddress: this!.address,\n address: TonConnectUI.account!.address\n });\n console.log(receipt, 'tt');\n return receipt;\n };\n\n onTransactionHash(): Promise<string> {\n this.counter++;\n return new Promise((resolve, reject) => {\n console.log(this.counter, 'once counter');\n this.eventBus.once(`transactionHash_${this.counter}`, (boc: string) => {\n if (boc) {\n resolve(boc);\n } else {\n reject('error');\n }\n });\n });\n }\n\n get connection(): { sender: Sender; senderDeploy: Sender; connected: boolean } {\n const TonConnectUI = this.walletClient;\n if (!TonConnectUI) {\n throw new Error('TonConnectUI is not initialized');\n }\n if (!TonConnectUI.connected) {\n throw new Error('wallet is not connected, please logout and login again');\n }\n return {\n senderDeploy: {\n send: async (args: SenderArguments) => {\n console.log(args, 'args');\n const res = await TonConnectUI.sendTransaction({\n messages: [\n {\n address: args.to.toString(),\n amount: args.value.toString(),\n payload: args.body?.toBoc().toString('base64') || '',\n stateInit: args.init\n ? beginCell().storeWritable(storeStateInit(args.init)).endCell().toBoc().toString('base64')\n : undefined\n }\n ],\n validUntil: Date.now() + 5 * 60 * 1000\n });\n console.log(res, this.counter, 'emit');\n this.eventBus.emit(`transactionHash_${this.counter}`, res.boc);\n }\n },\n sender: {\n send: async (args: SenderArguments) => {\n console.log(args, TonConnectUI, 'aa');\n try {\n const res = await TonConnectUI.sendTransaction({\n messages: [\n {\n address: args.to.toString(),\n amount: args.value.toString(),\n payload: args.body?.toBoc().toString('base64')\n }\n ],\n validUntil: Date.now() + 6 * 60 * 1000 // 5 minutes\n });\n this.eventBus.emit(`transactionHash_${this.counter}`, res.boc);\n console.log(res, 'transaction res');\n } catch (e) {\n console.log(e, 'err');\n }\n }\n },\n connected: TonConnectUI.connected\n };\n }\n}\n","import { Address } from '@ton/core';\nimport { JettonMaster, TonClient } from '@ton/ton';\nimport { delay, flipAddressType } from '../../../utils';\n\nimport { Api, HttpClient, Event } from 'tonapi-sdk-js';\nimport { ChainConfig } from '../../../constants';\nimport { getJettonInfo } from '../../index';\nimport { CHAIN } from '@tonconnect/sdk';\n// import { getHttpEndpoint } from '@orbs-network/ton-access';\n\ninterface WaitForTransactionOptions {\n address: string;\n hash: string;\n refetchInterval?: number;\n refetchLimit?: number;\n chainId: string;\n contractAddress?: string;\n}\n\nexport abstract class TonWalletService {\n // static walletClient = tonStore.walletClient;\n\n static disconnect() {\n //\n }\n\n static async getTonClient(chainId: string) {\n const endpoint = ChainConfig[chainId as keyof typeof ChainConfig].rpcUrl;\n // const endpoint = await getHttpEndpoint({ network: chainId === CHAIN.TESTNET ? 'testnet' : 'mainnet' });\n return new TonClient({\n endpoint: endpoint\n });\n }\n\n static getTonApiClient(chainId: string) {\n const { tonApiPrefix } = ChainConfig[chainId as keyof typeof ChainConfig] as any;\n\n const httpClient = new HttpClient({\n baseUrl: tonApiPrefix\n // baseApiParams: {\n // headers: {\n // Authorization: `Bearer ${tonApiKey}`,\n // 'Content-type': 'application/json'\n // }\n // }\n });\n\n const client = new Api(httpClient);\n return client;\n }\n\n static waitForTransactionByClient = async (options: WaitForTransactionOptions): Promise<Event | null> => {\n const { hash, refetchInterval = 3000, refetchLimit, chainId } = options;\n\n return new Promise((resolve) => {\n let refetches = 0;\n const interval = setInterval(async () => {\n refetches += 1;\n\n console.log(hash, 'waiting transaction...');\n const tonApi = this.getTonApiClient(chainId);\n const events = await tonApi.events.getEvent(hash);\n console.log(events, 'traceData');\n if (!events.in_progress) {\n await delay(3000);\n clearInterval(interval);\n resolve(events);\n }\n if (refetchLimit && refetches >= refetchLimit) {\n clearInterval(interval);\n resolve(null);\n }\n }, refetchInterval);\n });\n };\n\n static waitForTransactionLegacy = async (options: WaitForTransactionOptions): Promise<Event | null> => {\n const { refetchInterval = 3000, refetchLimit, chainId, address, contractAddress } = options;\n\n const tonApi = this.getTonApiClient(chainId);\n const tonClient = await this.getTonClient(chainId);\n const walletAddress = Address.parse(address);\n\n return new Promise((resolve) => {\n let refetches = 0;\n const interval = setInterval(async () => {\n refetches += 1;\n\n console.log('waiting transaction...');\n\n let hash;\n\n if (contractAddress) {\n const res = await tonApi.accounts.getAccountEvents(address, {\n limit: 5\n });\n const targetTransaction = res.events.find((it) => {\n return (\n it.actions.length &&\n it.actions.find((action) => {\n return action.simple_preview.accounts.find((ac) => {\n return Address.parse(ac.address).toRawString() === Address.parse(contractAddress).toRawString();\n });\n })\n );\n });\n console.log(targetTransaction, 'res');\n if (targetTransaction) {\n hash = targetTransaction.event_id;\n }\n } else {\n const state = await tonClient.getContractState(walletAddress);\n console.log(state, 'state');\n hash = state.lastTransaction?.hash;\n }\n if (hash) {\n const events = await tonApi.events.getEvent(hash);\n console.log(events, 'events');\n if (!events.in_progress) {\n clearInterval(interval);\n resolve(events);\n }\n }\n if (refetchLimit && refetches >= refetchLimit) {\n clearInterval(interval);\n resolve(null);\n }\n }, refetchInterval);\n });\n };\n\n static async waitForTransaction({\n hash,\n chainId,\n address,\n contractAddress\n }: {\n hash: string;\n chainId: string;\n address: string;\n contractAddress?: string;\n }) {\n return this.waitForTransactionByClient({ hash, address, chainId, contractAddress });\n }\n\n static async fetchBalance(args: { chainId: string; address: string; token?: string }) {\n try {\n const config = ChainConfig[args.chainId as keyof typeof ChainConfig] as any;\n const options = { method: 'GET' };\n const rawAddress = flipAddressType(args.address);\n\n const url = args.token\n ? `${config.tonApiPrefix}/v2/accounts/${rawAddress}/jettons?currencies=usd`\n : `${config.tonApiPrefix}/v2/blockchain/accounts/${rawAddress}`;\n\n const response = await fetch(url, options);\n const responseJSON: any = await response.json();\n const current = args.token\n ? responseJSON.balances.find((it: any) => it.jetton.address === flipAddressType(args.token!))\n : { balance: responseJSON.balance / 1000000000 };\n\n return {\n value: current?.balance || 0\n };\n } catch {\n return {\n value: 0\n };\n }\n }\n\n static async fetchToken(args: { chainId: string; address: string }) {\n return getJettonInfo({\n address: args.address,\n isTestnet: args.chainId === CHAIN.TESTNET ? 'true' : 'false'\n });\n // const client = this.getTonApiClient(args.chainId as string);\n // const data: any = await client.jettons.getJettonInfo(args.address);\n // const { metadata, total_supply } = data;\n // return {\n // ...metadata,\n // totalSupply: {\n // value: total_supply,\n // formatted: fromNano(total_supply)\n // }\n // };\n }\n\n static async signMessage() {}\n\n static async addChain() {}\n\n static async fetchEnsAddress() {\n return '';\n }\n\n static validateAddress(address: string) {\n try {\n Address.parse(address);\n return true;\n } catch (e) {\n return false;\n }\n }\n\n static isSameAddress(address1: string, address2: string) {\n return Address.parse(address1).toRawString() === Address.parse(address2).toRawString();\n }\n\n static getJettonAddress = async ({\n chainId,\n address,\n token\n }: {\n chainId: string;\n address: string;\n token: string;\n }) => {\n const client = await this.getTonClient(chainId);\n const jettonWallet = client.open(JettonMaster.create(Address.parse(token)));\n\n return jettonWallet.getWalletAddress(Address.parse(address));\n };\n}\n","import { apiClient, safeParseJSON } from '../../utils';\nimport {\n AirdropSigIdentityTypeEnum,\n IAirdropData,\n IAirdropSignatureData,\n IClaimSignature,\n IContractConfig,\n IProject\n} from '../../types';\n\nconst createApiClient = (baseURL?: string) => {\n return baseURL ? apiClient.extend({ baseURL }) : apiClient;\n};\n\nexport const getAirdropProject = async (projectId: string, baseURL?: string): Promise<IProject> => {\n const client = createApiClient(baseURL);\n const res = await client.get<any>(`/airdrop-open/projects/${projectId}`);\n if (!res) {\n throw new Error(`Project not found: ${projectId}`);\n }\n const projectConfig = res?.themeConf;\n const blockCountries = safeParseJSON(projectConfig?.blockCountries);\n return {\n ...res,\n blockCountries\n };\n};\n\nexport const getAirdropProjectId = async (\n data: {\n recipient: string;\n slug: string;\n },\n baseURL?: string\n): Promise<{ recipient: string; projectIds: string[] }> => {\n const client = createApiClient(baseURL);\n return client.post(`/airdrop-open/query-pid`, data);\n};\n\nexport const getAirdropPro = async (\n slug: string,\n baseURL?: string\n): Promise<{\n slug: string;\n childProjectMapping: Record<string, string>;\n}> => {\n const client = createApiClient(baseURL);\n return client.get(`/airdrop-open/airdrop-pro/${slug}`);\n};\n\nexport const getAirdropQuery = async (\n data: {\n recipient: string;\n projectId: string;\n recipientType: string;\n },\n baseURL?: string\n): Promise<IAirdropData> => {\n const client = createApiClient(baseURL);\n return client.post(`/airdrop-open/query`, data);\n};\n\nexport const getAirdropContractConfig = async (\n data: { chainId: string; chainType: string; contractAddress: string },\n baseURL?: string\n): Promise<IContractConfig> => {\n const client = createApiClient(baseURL);\n return client.post(`/airdrop-open/contract/config`, data);\n};\n\nexport const getJettonInfo = async (\n data: { address: string; isTestnet: 'true' | 'false' },\n baseURL?: string\n): Promise<any> => {\n const client = createApiClient(baseURL);\n return client.get(`/airdrop-open/jetton/${data.address}?isTestnet=${data.isTestnet}`);\n};\n\ninterface SidResponse {\n sid: string;\n}\n\ninterface SocialConnectParams {\n code: string;\n projectId: string;\n}\n\ninterface WalletBindParams {\n projectId: string;\n key: string;\n signature: string;\n message: string;\n timestamp: number;\n recipientType: string;\n address: string;\n encodedMessage?: string;\n}\n\nconst getSidHeader = (projectId: string) => {\n if (typeof window === 'undefined') {\n throw new Error('getSidHeader must be called in a browser environment');\n }\n\n return {\n sid: window.localStorage.getItem(`sid_${projectId}`) || ''\n };\n};\n\nexport const connectTwitter = async (data: SocialConnectParams, baseURL?: string): Promise<SidResponse> => {\n const client = createApiClient(baseURL);\n return client.post('/airdrop-open/connect-twitter', data, {\n headers: getSidHeader(data.projectId)\n });\n};\n\nexport const connectGoogleApi = async (data: SocialConnectParams, baseURL?: string): Promise<SidResponse> => {\n const client = createApiClient(baseURL);\n return client.post('/airdrop-open/connect-google', data, {\n headers: getSidHeader(data.projectId)\n });\n};\n\nexport const connectDiscordApi = async (data: SocialConnectParams, baseURL?: string): Promise<SidResponse> => {\n const client = createApiClient(baseURL);\n return client.post('/airdrop-open/connect-discord', data, {\n headers: getSidHeader(data.projectId)\n });\n};\n\nexport const checkEligibility = async (\n data: { projectId: string },\n baseURL?: string\n): Promise<IAirdropSignatureData> => {\n const headers = getSidHeader(data.projectId);\n if (!headers.sid)\n return {\n claims: [],\n identities: []\n };\n const client = createApiClient(baseURL);\n\n return client.post('/airdrop-open/check-eligibility', data, {\n headers: headers\n });\n};\n\nexport const bindWallet = async (data: WalletBindParams, baseURL?: string): Promise<SidResponse> => {\n const client = createApiClient(baseURL);\n return client.post('/airdrop-open/connect-wallet', data, {\n headers: getSidHeader(data.projectId)\n });\n};\n\ninterface DisconnectParams {\n projectId: string;\n recipientType: AirdropSigIdentityTypeEnum;\n recipient?: string;\n}\n\nexport const disconnectRecipient = async (data: DisconnectParams, baseURL?: string): Promise<void> => {\n const client = createApiClient(baseURL);\n return client.post('/airdrop-open/disconnect', data, {\n headers: getSidHeader(data.projectId)\n });\n};\n\nexport const checkGetSignatures = async (\n data: {\n projectId: string;\n claimIds: string[];\n recipient: string;\n strategy?: string;\n },\n baseURL?: string\n): Promise<{ signatures: IClaimSignature[] }> => {\n const client = createApiClient(baseURL);\n return client.post('/airdrop-open/check-get-signatures', data, {\n headers: getSidHeader(data.projectId)\n });\n};\n","import { IAirdropOption, TonContractBaseClient } from './TonContractBaseClient';\nimport { Address, Cell } from '@ton/core';\nimport { Leaf, leafConfigToCell, MerkleTokenDistributor } from './v1/wrappers';\nimport LeafCode from './v1/build/Leaf.compiled.json';\nimport { IAirdropClaim } from '../../types';\nimport { TonWalletService } from '../../services';\n\nexport class TonAirdropClientV1 extends TonContractBaseClient {\n version = '1.0.0';\n\n constructor(option: IAirdropOption) {\n super(option);\n }\n\n async getVersion() {\n const airDropContract = await this.getAirdropContract();\n const version = await airDropContract.getVersion();\n this.version = version;\n return version;\n }\n\n getAirdropContract = async () => {\n const provider = await this.getTonClient();\n const contract = new MerkleTokenDistributor(Address.parse(this.address));\n return provider.open(contract);\n };\n\n async getBaseParams() {\n const airDropContract = await this.getAirdropContract();\n const [startTime, endTime] = await airDropContract!.getTime();\n const token = await airDropContract?.getToken();\n const root = await airDropContract?.getRoot();\n const deployer = await airDropContract.getDeployer();\n\n const owner = Address.parse(deployer?.toString()).toString({ bounceable: false });\n\n const version = this.version || (await airDropContract.getVersion());\n return {\n startTime: startTime ? String(startTime?.valueOf() / 1000) : '',\n endTime: endTime ? String(endTime?.valueOf() / 1000) : '',\n token: token?.toString(),\n root: root?.toString(),\n owner: owner,\n version\n };\n }\n\n async getFeeInfo() {\n const airDropContract = await this.getAirdropContract();\n const claimFee = await airDropContract.getClaimFee();\n const claimFeeReceiver = await airDropContract.getClaimFeeAddress();\n return {\n claimFee,\n claimFeeReceiver\n };\n }\n\n claim = async (claimData: any) => {\n const provider = await this.getTonClient();\n const airdropContract = await this.getAirdropContract();\n const proof = Cell.fromBase64(claimData.proofBoc);\n\n const index = BigInt(claimData.index);\n const leafAddress = await airdropContract!.getLeafAddress(index);\n const leaf = provider.open(Leaf.createFromAddress(leafAddress));\n const leafCode = Cell.fromBoc(Buffer.from(LeafCode.hex, 'hex'))[0];\n\n const isDeployed = await provider.isContractDeployed(leafAddress);\n\n let leafBalanceValue = 1;\n\n if (isDeployed) {\n const leafBalance = await TonWalletService.fetchBalance({\n address: leafAddress.toString(),\n chainId: this.chainId\n });\n leafBalanceValue = Number(leafBalance?.value) || 0;\n }\n\n if (!isDeployed || leafBalanceValue <= 0) {\n const claimFee = await airdropContract!.getClaimFee();\n leaf.sendLeafFees(\n this.connection.senderDeploy,\n claimFee,\n leafCode,\n leafConfigToCell({\n distributor: airdropContract!.address,\n index\n })\n );\n await this.waitForTransaction();\n await this.waitForContractDeployment(provider, leafAddress);\n }\n\n const queryId = await leaf.getSeqno();\n await leaf.sendClaim(proof, index, queryId);\n return null;\n };\n\n checkClaimed = async (claimData: IAirdropClaim) => {\n try {\n const provider = await this.getTonClient();\n const airdropContract = await this.getAirdropContract();\n\n const index = BigInt(claimData.index);\n\n const leafAddress = await airdropContract.getLeafAddress(index);\n\n const isDeployed = await provider.isContractDeployed(leafAddress);\n\n if (!isDeployed) return false;\n\n const leaf = new Leaf(leafAddress);\n const leafContract = provider.open(leaf);\n const isUsed = await leafContract?.getIsUsed();\n\n return isUsed;\n } catch (e: any) {\n return false;\n }\n };\n}\n","import { Address, beginCell, Cell, Contract, contractAddress, ContractProvider, Sender, toNano } from '@ton/core';\nimport { OpCode } from '../utils';\n\nexport type LeafConfig = {\n used?: boolean;\n distributor: Address;\n index: bigint;\n};\n\nexport const MIN_CLAIM_FEE = toNano('0.11');\n\nexport function leafConfigToCell(config: LeafConfig): Cell {\n const { distributor, index } = config;\n\n const initState = beginCell()\n .storeBit(false)\n .storeAddress(distributor)\n .storeUint(index, 256)\n .storeUint(0, 64)\n .endCell();\n\n return initState;\n}\n\nexport class Leaf implements Contract {\n constructor(readonly address: Address, readonly init?: { code: Cell; data: Cell }) {}\n\n static createFromAddress(address: Address) {\n return new Leaf(address);\n }\n\n static createFromConfig(config: LeafConfig, code: Cell, workchain = 0) {\n const data = leafConfigToCell(config);\n const init = { code, data };\n return new Leaf(contractAddress(workchain, init), init);\n }\n\n async getSeqno(provider: ContractProvider): Promise<number> {\n const result = await provider.get('get_seqno', []);\n\n return result.stack.readNumber();\n }\n\n async getIsUsed(provider: ContractProvider): Promise<boolean> {\n const result = await provider.get('get_is_used', []);\n const isUsed = result.stack.readNumber();\n\n return !!isUsed;\n }\n\n async getLeafData(provider: ContractProvider): Promise<LeafConfig> {\n const result = await provider.get('get_leaf_data', []);\n const cellHash = result.stack.readCell().beginParse();\n\n const isUsed = cellHash.loadUint(1);\n const distributor = cellHash.loadAddress();\n const index = cellHash.loadUint(256);\n\n return {\n used: !!isUsed,\n index: BigInt(index),\n distributor\n };\n }\n\n async sendLeafFees(_provider: ContractProvider, via: Sender, claimFee: bigint, code: Cell, data: Cell) {\n await via.send({\n bounce: false,\n to: this.address,\n value: MIN_CLAIM_FEE + claimFee,\n init: {\n code,\n data\n },\n body: beginCell().endCell()\n });\n }\n\n async sendClaim(provider: ContractProvider, proof: Cell, index: bigint, queryId = 0) {\n const messageBody = beginCell()\n .storeUint(OpCode.Claim, 32)\n .storeUint(queryId, 64)\n .storeRef(proof)\n .storeUint(index, 256)\n .endCell();\n await provider.external(messageBody);\n }\n}\n","export function dateToUnixTimestamp(date: Date): number {\n return Math.floor(date.getTime() / 1000);\n}\n\nexport function unixTimestampToDate(timestamp: number): Date {\n return new Date(timestamp * 1000);\n}\n\nexport function addOneHour(date: Date): Date {\n return new Date(date.getTime() + 60 * 60 * 1000);\n}\n","import { Address, BitString, Cell, Slice, beginCell, contractAddress, crc32c, toNano } from '@ton/core';\n\nexport function stringToSlice(str: string): Slice {\n return beginCell().storeStringTail(str).endCell().asSlice();\n}\n\nexport function sliceToString(slice: Slice): string {\n const cell = beginCell().storeSlice(slice).endCell();\n return cell.beginParse().loadStringTail();\n}\n\nexport function stringToInt(str: string): number {\n return str ? parseInt(Buffer.from(str).toString('hex'), 16) : 0;\n}\n\nexport function intToString(int: number): string {\n return Buffer.from(int.toString(16), 'hex').toString('utf-8');\n}\n\nexport function bufferToInt(buf: Buffer): number {\n return buf.readUInt32BE(0);\n}\n\nexport function intToBuffer(int: number): Buffer {\n return Buffer.from(int.toString(16), 'hex');\n}\n\nexport function sliceToAddress(slice: Slice): Address {\n const cell = beginCell().storeSlice(slice).endCell();\n return cell.beginParse().loadAddress();\n}\n\nexport function addressToSlice(address: Address): Slice {\n return beginCell().storeAddress(address).endCell().asSlice();\n}\n\nexport function stringToBitString(str: string): BitString {\n return new BitString(Buffer.from(str), 0, str.length * 8);\n}\n\nexport function bitStringToString(bits: BitString, len: number): string {\n const decoder = new TextDecoder();\n const subBuffer = bits.subbuffer(0, len);\n\n return subBuffer ? decoder.decode(subBuffer) : '';\n}\n\nexport function stringToCell(str: string): Cell {\n return beginCell().storeStringTail(str).endCell();\n}\n\nexport function cellToString(cell: Cell): string {\n return cell.beginParse().loadStringTail();\n}\n\nexport function stringToCrc32(str: string): number {\n return crc32c(Buffer.from(str)).readUint32BE();\n}\n\nexport function getContractAddress(code: Cell, data: Cell): Address {\n return contractAddress(0, { code, data });\n}\n\nexport function arraysToCell(arrays: (Slice | Cell | Address | number)[], bits = 32): Cell {\n const cell = beginCell();\n\n arrays.forEach((item) => {\n if (item instanceof Slice) {\n cell.storeSlice(item);\n } else if (item instanceof Cell) {\n cell.storeRef(item);\n } else if (item instanceof Address) {\n cell.storeAddress(item);\n } else if (typeof item === 'number') {\n cell.storeUint(item, bits);\n }\n });\n\n return cell.endCell();\n}\n\nexport function coinsToSlice(coins: string): Slice {\n return beginCell().storeCoins(toNano(coins)).endCell().asSlice();\n}\n","import {\n Address,\n beginCell,\n Builder,\n Cell,\n Contract,\n contractAddress,\n ContractProvider,\n Dictionary,\n Sender,\n SendMode,\n Slice,\n toNano,\n TupleItem\n} from '@ton/core';\nimport { CodeType, dateToUnixTimestamp, intToString, OpCode, stringToInt, unixTimestampToDate } from '../utils';\n\nexport type MerkleTokenDistributorConfig = {\n version: string;\n adminAddress: Address;\n root: bigint;\n deployer: Address;\n token?: Address;\n startTime: Date;\n endTime: Date;\n leafCode: Cell;\n claimFee: bigint;\n claimFeeAddress: Address;\n paused?: boolean;\n};\n\nexport function tokenDistributorConfigToCell(config: MerkleTokenDistributorConfig): Cell {\n const {\n version,\n adminAddress,\n deployer,\n endTime,\n leafCode,\n root,\n startTime,\n token,\n claimFee,\n claimFeeAddress,\n paused = false\n } = config;\n const c2 = beginCell()\n .storeCoins(claimFee)\n .storeAddress(claimFeeAddress)\n .storeUint(paused ? 1 : 0, 1)\n .endCell();\n\n const c1 = beginCell()\n .storeAddress(deployer)\n .storeAddress(token)\n .storeUint(dateToUnixTimestamp(startTime), 32)\n .storeUint(dateToUnixTimestamp(endTime), 32)\n .storeRef(leafCode)\n .endCell();\n\n return beginCell()\n .storeUint(stringToInt(version), 64)\n .storeAddress(adminAddress)\n .storeUint(root, 256)\n .storeRef(c1)\n .storeRef(c2)\n .endCell();\n}\n\nexport type TokenDistributorEntry = {\n address: Address;\n claimableAmount: bigint;\n claimableTimestamp: number;\n};\n\nexport const tokenDistributorEntryValue = {\n serialize: (src: TokenDistributorEntry, buidler: Builder) => {\n buidler.storeAddress(src.address).storeCoins(src.claimableAmount).storeUint(src.claimableTimestamp, 32);\n },\n parse: (src: Slice) => {\n return {\n address: src.loadAddress(),\n claimableAmount: src.loadCoins(),\n claimableTimestamp: src.loadUint(32)\n };\n }\n};\n\nexport function generateEntriesDictionary(entries: TokenDistributorEntry[]): Dictionary<bigint, TokenDistributorEntry> {\n const dict: Dictionary<bigint, TokenDistributorEntry> = Dictionary.empty(\n Dictionary.Keys.BigUint(256),\n tokenDistributorEntryValue\n );\n\n for (let i = 0; i < entries.length; i++) {\n dict.set(BigInt(i), entries[i]);\n }\n\n return dict;\n}\n\nexport class MerkleTokenDistributor implements Contract {\n constructor(readonly address: Address, readonly init?: { code: Cell; data: Cell }) {}\n\n static createFromAddress(address: Address) {\n return new MerkleTokenDistributor(address);\n }\n\n static createFromConfig(config: MerkleTokenDistributorConfig, code: Cell, workchain = 0) {\n const data = tokenDistributorConfigToCell(config);\n const init = { code, data };\n return new MerkleTokenDistributor(contractAddress(workchain, init), init);\n }\n\n async sendDeploy(provider: ContractProvider, via: Sender, value: bigint) {\n await provider.internal(via, {\n value,\n sendMode: SendMode.PAY_GAS_SEPARATELY,\n body: beginCell().endCell()\n });\n }\n\n async getVersion(provider: ContractProvider): Promise<string> {\n const result = await provider.get('get_version', []);\n\n return intToString(Number(result.stack.readBigNumber()));\n }\n\n async getLeafAddress(provider: ContractProvider, index: bigint): Promise<Address> {\n const arg: TupleItem = {\n value: index,\n type: 'int'\n };\n const result = await provider.get('get_leaf_address', [arg]);\n\n return result.stack.readAddress();\n }\n\n async getRoot(provider: ContractProvider): Promise<bigint> {\n const result = await provider.get('get_root', []);\n\n return result.stack.readBigNumber();\n }\n\n async getTime(provider: ContractProvider): Promise<[Date, Date] | [null, null]> {\n const result = await provider.get('get_time', []);\n const stack = result.stack;\n\n try {\n return [unixTimestampToDate(stack.readNumber()), unixTimestampToDate(stack.readNumber())];\n } catch (e) {\n return [null, null];\n }\n }\n\n async getToken(provider: ContractProvider): Promise<Address | null> {\n const result = await provider.get('get_token', []);\n\n try {\n return result.stack.readAddress();\n } catch (e) {\n return null;\n }\n }\n\n async getDeployer(provider: ContractProvider): Promise<Address> {\n const result = await provider.get('get_deployer', []);\n\n return result.stack.readAddress();\n }\n\n async getClaimFee(provider: ContractProvider): Promise<bigint> {\n const result = await provider.get('get_claim_fee', []);\n\n return result.stack.readBigNumber();\n }\n\n async getClaimFeeAddress(provider: ContractProvider): Promise<Address> {\n const result = await provider.get('get_claim_fee_address', []);\n\n return result.stack.readAddress();\n }\n\n async getPaused(provider: ContractProvider): Promise<boolean> {\n const result = await provider.get('get_paused', []);\n\n return result.stack.readNumber() === 1;\n }\n\n async sendChangeAdmin(provider: ContractProvider, via: Sender, newAdmin: Address) {\n const messageBody = beginCell().storeUint(OpCode.ChangeAdmin, 32).storeUint(0, 64).storeAddress(newAdmin).endCell();\n const result = await provider.internal(via, {\n value: '0.01',\n body: messageBody\n });\n\n return result;\n }\n\n async sendChangeCode(provider: ContractProvider, via: Sender, codeType: CodeType, newCode: Cell) {\n const messageBody = beginCell()\n .storeUint(OpCode.ChangeCode, 32)\n .storeUint(0, 64)\n .storeUint(codeType, 32)\n .storeRef(newCode)\n .endCell();\n const result = await provider.internal(via, {\n value: '0.01',\n body: messageBody\n });\n\n return result;\n }\n\n async sendChangeVersion(provider: ContractProvider, via: Sender, version: string) {\n const messageBody = beginCell()\n .storeUint(OpCode.ChangeVersion, 32)\n .storeUint(0, 64)\n .storeUint(stringToInt(version), 64)\n .endCell();\n const result = await provider.internal(via, {\n value: '0.01',\n body: messageBody\n });\n\n return result;\n }\n\n async sendWithdraw(provider: ContractProvider, via: Sender, amount: string) {\n const messageBody = beginCell()\n .storeUint(OpCode.Withdraw, 32)\n .storeUint(0, 64)\n .storeCoins(toNano(amount))\n .endCell();\n const result = await provider.internal(via, {\n value: '0.01',\n body: messageBody\n });\n\n return result;\n }\n\n async sendWithdrawTokens(provider: ContractProvider, via: Sender, amount: string) {\n const messageBody = beginCell()\n .storeUint(OpCode.WithdrawTokens, 32)\n .storeUint(0, 64)\n .storeCoins(toNano(amount))\n .endCell();\n const result = await provider.internal(via, {\n value: '0.1',\n body: messageBody\n });\n\n return result;\n }\n\n async sendSetBaseParams(\n provider: ContractProvider,\n via: Sender,\n startTime: Date,\n endTime: Date,\n root: bigint,\n token: Address\n ) {\n const messageBody = beginCell()\n .storeUint(OpCode.SetBaseParams, 32)\n .storeUint(0, 64)\n .storeAddress(token)\n .storeUint(dateToUnixTimestamp(startTime), 32)\n .storeUint(dateToUnixTimestamp(endTime), 32)\n .storeUint(root, 256)\n .endCell();\n const result = await provider.internal(via, {\n value: '0.01',\n body: messageBody\n });\n\n return result;\n }\n\n async sendSetClaimFee(provider: ContractProvider, via: Sender, claimFee: bigint) {\n const messageBody = beginCell().storeUint(OpCode.SetClaimFee, 32).storeUint(0, 64).storeCoins(claimFee).endCell();\n const result = await provider.internal(via, {\n value: '0.01',\n body: messageBody\n });\n\n return result;\n }\n\n async sendSetClaimFeeAddress(provider: ContractProvider, via: Sender, claimFeeAddress: Address) {\n const messageBody = beginCell()\n .storeUint(OpCode.SetClaimFee, 32)\n .storeUint(0, 64)\n .storeAddress(claimFeeAddress)\n .endCell();\n const result = await provider.internal(via, {\n value: '0.01',\n body: messageBody\n });\n\n return result;\n }\n\n async sendSetPaused(provider: ContractProvider, via: Sender, paused: boolean) {\n const messageBody = beginCell()\n .storeUint(OpCode.SetPaused, 32)\n .storeUint(0, 64)\n .storeUint(paused ? 1 : 0, 1)\n .endCell();\n const result = await provider.internal(via, {\n value: '0.01',\n body: messageBody\n });\n\n return result;\n }\n}\n","{\"hex\":\"b5ee9c7241022e010008a0000114ff00f4a413f4bcf2c80b0102012006020128f2d31fd33f028210503d1c97bae3025b840ff2f00302fef057f84521baf2a4f8276f22308210042c1d80bef2b0f842c001f26801d4d3ff30f864885210f90001f900baf26420d739f2aad30701c003f2ab21d765aa00a6025220f9415f03f84401d4308307f40e6fa131f2adf80071f843f844f845a4f058f842c8cb00c9f8448210d0d5f405c8cb1f14cb3f12cc12cbffccc971801005040024c8cb05f843cf1670fa02cb6accc98306fb0000000201480c070201200b080201200a090025bbc01f057f844f842c8cb00f843cf16cbffc98000dbaf13f057f8428000dbd817f82bfc22c0202c91f0d020148130e020120100f001dd81e465802c678b65ffe59fe4f6aa40201201211002ff76a268698000fc317d2000fc31e9ff80fc32699f987c32c00276be401c1cb232c072c004b2c1f2fff2743e900c20103a3c01404f62082300de0b6b3a7640000ba9b30823025b946ebc0b36173e08200c354218235c702bd3a30fc0000be228238070c1cc73b00c80000bbb0f2f420c1008e1282300de0b6b3a76400005202a3f04712a984e020821b782dace9d9aa18bee30f01a7648238056bc75e2d6310000021822056bc75e2d631aa18bee300211e1d1c1502f4822056bc75e2d631aa17be8e2701822056bc75e2d631aa17a101824adf0ab5a80a22c61ab5a7008238056bc75e2d63100000a984de21822056bc75e2d631aa16be8e2601822056bc75e2d631aa16a10182403f1fce3da636ea5cf8508238056bc75e2d63100000a984de21823815af1d78b58c400000bee300211b1602f482380ad78ebc5ac6200000be8e260182380ad78ebc5ac6200000a1018238280e60114edb805d038238056bc75e2d63100000a984de218238056bc75e2d63100000be8e26018238056bc75e2d63100000a10182380ebc5fb417461211108238056bc75e2d63100000a984de218232b5e3af16b1880000bee300211a1701ec82315af1d78b58c40000be8e250182315af1d78b58c40000a101823806f5f17757889379378238056bc75e2d63100000a984de218238056bc75e2d6310000021a0511382380ad78ebc5ac6200000a98466a0511382381043561a8829300000a98466a05113823815af1d78b58c400000a98466a051131801ea82381b1ae4d6e2ef500000a98466a0511382382086ac351052600000a98466a05113823825f273933db5700000a98466a05113822056bc75e2d631aa16a98466a05113823830ca024f987b900000a98466a0511382383635c9adc5dea00000a98466a0511382383ba1910bf341b00000a98466a0031900428238410d586a20a4c00000a98412a08238056bc75e2d63100000a984018064a984004a018232b5e3af16b1880000a101823808f00f760a4b2db55d8238056bc75e2d63100000a984004c01823815af1d78b58c400000a101823927fa27722cc06cc5e28238056bc75e2d63100000a984003830822056bc75e2d631aa18a18261855144814a7ff805980ff0084000005020821b782dace9d9aa17be8e18821b782dace9d9aa17a182501425982cf597cd205cef73809171e20042821b782dace9d9aa18a18288195e54c5dd42177f53a27172fa9ec630262827aa230201202b200103aee02101f62082300de0b6b3a7640000b98e1182300de0b6b3a76400005202a984f03ba3e0702182b05803bcc5cb9634ba4cfb2213f784019318ed4dcb6017880faa35be8e23308288195e54c5dd42177f53a27172fa9ec630262827aa23a904821b782dace9d9aa18de2182708bcc0026baae9e45e470190267a230cfaa18be2202ea8e1c0182501425982cf597cd205cef7380a90401821b782dace9d9aa17a0dea76401a764208261855144814a7ff805980ff0084000be8e2a8238056bc75e2d631000008261855144814a7ff805980ff0084000a98401822056bc75e2d631aa18a001de20824adf0ab5a80a22c61ab5a700bee300202a2302f882403f1fce3da636ea5cf850be8e268238056bc75e2d6310000082403f1fce3da636ea5cf850a98401822056bc75e2d631aa16a001de20823927fa27722cc06cc5e2be8e268238056bc75e2d63100000823927fa27722cc06cc5e2a98401823815af1d78b58c400000a001de208238280e60114edb805d03bee30020292402f482380ebc5fb41746121110be8e268238056bc75e2d6310000082380ebc5fb41746121110a984018238056bc75e2d63100000a001de20823808f00f760a4b2db55dbe8e258238056bc75e2d63100000823808f00f760a4b2db55da984018232b5e3af16b1880000a001de20823806f5f1775788937937bee30020282501ec823806248f33704b286603be8e258238056bc75e2d63100000823806248f33704b286603a984018230ad78ebc5ac620000a001de20823805c548670b9510e7acbe8e258238056bc75e2d63100000823805c548670b9510e7aca98401823056bc75e2d6310000a001de208238056bc75e2d63100000a12601fe8238056bc75e2d631000005122a012a98453008238056bc75e2d63100000a9845c8238056bc75e2d63100000a9842073a90413a051218238056bc75e2d63100000a9842075a90413a051218238056bc75e2d63100000a9842077a90413a051218238056bc75e2d63100000a9842079a90413a0598238056bc75e2d6310000027001ca984800ba904a0aa00a08064a904004a8238056bc75e2d63100000823806f5f1775788937937a9840182315af1d78b58c40000a001004c8238056bc75e2d631000008238280e60114edb805d03a9840182380ad78ebc5ac6200000a001004e8238056bc75e2d63100000824adf0ab5a80a22c61ab5a700a98401822056bc75e2d631aa17a0010201202d2c0063a46410e0804c45896c678b00d180ef381038c70a023d5486531812d40950025503815210e0002298731819d5016780e4e840008bd1b088831c02456f8007434c0c05c6c2456f83e900c0074c7f4cfcc40608426871dda6ea386bc15fe10c4b1c17ca8f4ffcc3e112ebcabdc3e10fe113e117c163816e103fcbc223e50a66\"}","import { Address, beginCell, Cell, Contract, contractAddress, ContractProvider, Sender, toNano } from '@ton/core';\nimport { OpCode } from '../utils';\n\nexport const MIN_CLAIM_FEE = toNano('0.17');\n\nexport type LeafConfig = {\n used?: boolean;\n distributor: Address;\n index: bigint;\n};\n\nexport function leafConfigToCell(config: LeafConfig): Cell {\n const { distributor, index } = config;\n\n const initState = beginCell().storeBit(false).storeAddress(distributor).storeUint(index, 64).endCell();\n\n return initState;\n}\n\nexport class Leaf implements Contract {\n constructor(readonly address: Address, readonly init?: { code: Cell; data: Cell }) {}\n\n static createFromAddress(address: Address) {\n return new Leaf(address);\n }\n\n static createFromConfig(config: LeafConfig, code: Cell, workchain = 0) {\n const data = leafConfigToCell(config);\n const init = { code, data };\n return new Leaf(contractAddress(workchain, init), init);\n }\n\n async getIsUsed(provider: ContractProvider): Promise<boolean> {\n const result = await provider.get('get_is_used', []);\n const isUsed = result.stack.readNumber();\n\n return !!isUsed;\n }\n\n async getLeafData(provider: ContractProvider): Promise<LeafConfig> {\n const result = await provider.get('get_leaf_data', []);\n const cellHash = result.stack.readCell().beginParse();\n\n const isUsed = cellHash.loadUint(1);\n const distributor = cellHash.loadAddress();\n const index = cellHash.loadUint(64);\n\n return {\n used: !!isUsed,\n index: BigInt(index),\n distributor\n };\n }\n\n async sendClaim(provider: ContractProvider, via: Sender, proof: Cell, index: bigint, claimFee: bigint) {\n const messageBody = beginCell()\n .storeUint(OpCode.Claim, 32)\n .storeUint(0, 64)\n .storeRef(proof)\n .storeUint(index, 64)\n .endCell();\n const result = await provider.internal(via, {\n value: MIN_CLAIM_FEE + claimFee,\n body: messageBody\n });\n\n return result;\n }\n}\n","export function dateToUnixTimestamp(date: Date): number {\n return Math.floor(date.getTime() / 1000);\n}\n\nexport function unixTimestampToDate(timestamp: number): Date {\n return new Date(timestamp * 1000);\n}\n\nexport function addOneHour(date: Date): Date {\n return new Date(date.getTime() + 60 * 60 * 1000);\n}\n","import { Address, BitString, Cell, Slice, beginCell, contractAddress, crc32c, toNano } from '@ton/core';\n\nexport function stringToSlice(str: string): Slice {\n return beginCell().storeStringTail(str).endCell().asSlice();\n}\n\nexport function sliceToString(slice: Slice): string {\n const cell = beginCell().storeSlice(slice).endCell();\n return cell.beginParse().loadStringTail();\n}\n\nexport function hexStringToInt(str: string): number {\n if (!str.startsWith('0x')) {\n str = '0x' + str;\n }\n\n return parseInt(str, 16);\n}\n\nexport function stringToInt(str: string): number {\n return str ? parseInt(Buffer.from(str).toString('hex'), 16) : 0;\n}\n\nexport function intToString(int: number): string {\n return Buffer.from(int.toString(16), 'hex').toString('utf-8');\n}\n\nexport function intToHexString(int: number): string {\n return int.toString(16);\n}\n\nexport function bufferToInt(buf: Buffer): number {\n return buf.readUInt32BE(0);\n}\n\nexport function intToBuffer(int: number): Buffer {\n return Buffer.from(int.toString(16), 'hex');\n}\n\nexport function sliceToAddress(slice: Slice): Address {\n const cell = beginCell().storeSlice(slice).endCell();\n return cell.beginParse().loadAddress();\n}\n\nexport function addressToSlice(address: Address): Slice {\n return beginCell().storeAddress(address).endCell().asSlice();\n}\n\nexport function stringToBitString(str: string): BitString {\n return new BitString(Buffer.from(str), 0, str.length * 8);\n}\n\nexport function bitStringToString(bits: BitString, len: number): string {\n const decoder = new TextDecoder();\n const subBuffer = bits.subbuffer(0, len);\n\n return subBuffer ? decoder.decode(subBuffer) : '';\n}\n\nexport function stringToCell(str: string): Cell {\n return beginCell().storeStringTail(str).endCell();\n}\n\nexport function cellToString(cell: Cell): string {\n return cell.beginParse().loadStringTail();\n}\n\nexport function stringToCrc32(str: string): number {\n return crc32c(Buffer.from(str)).readUint32BE();\n}\n\nexport function stringToBuffer64(str: string): Buffer {\n const buff = Buffer.alloc(64);\n buff.write(str);\n return buff;\n}\n\nexport function getContractAddress(code: Cell, data: Cell): Address {\n return contractAddress(0, { code, data });\n}\n\nexport function arraysToCell(arrays: (Slice | Cell | Address | number)[], bits = 32): Cell {\n const cell = beginCell();\n\n arrays.forEach((item) => {\n if (item instanceof Slice) {\n cell.storeSlice(item);\n } else if (item instanceof Cell) {\n cell.storeRef(item);\n } else if (item instanceof Address) {\n cell.storeAddress(item);\n } else if (typeof item === 'number') {\n cell.storeUint(item, bits);\n }\n });\n\n return cell.endCell();\n}\n\nexport function coinsToSlice(coins: string): Slice {\n return beginCell().storeCoins(toNano(coins)).endCell().asSlice();\n}\n","import {\n Address,\n beginCell,\n Builder,\n Cell,\n Contract,\n contractAddress,\n ContractProvider,\n Dictionary,\n Sender,\n SendMode,\n Slice,\n toNano,\n TupleItem\n} from '@ton/core';\nimport { CodeType, dateToUnixTimestamp, intToString, OpCode, stringToInt, unixTimestampToDate } from '../utils';\n\nexport type MerkleTokenDistributorConfig = {\n version: string;\n adminAddress: Address;\n root: bigint;\n deployer: Address;\n token?: Address;\n startTime: Date;\n endTime: Date;\n leafCode: Cell;\n claimFee: bigint;\n claimFeeAddress: Address;\n paused?: boolean;\n feelessThreshold?: bigint;\n};\n\nexport function tokenDistributorConfigToCell(config: MerkleTokenDistributorConfig): Cell {\n const {\n version,\n adminAddress,\n deployer,\n endTime,\n leafCode,\n root,\n startTime,\n token,\n claimFee,\n claimFeeAddress,\n paused = false,\n feelessThreshold = 0\n } = config;\n const c2 = beginCell()\n .storeCoins(claimFee)\n .storeAddress(claimFeeAddress)\n .storeUint(paused ? 1 : 0, 1)\n .storeCoins(feelessThreshold)\n .endCell();\n\n const c1 = beginCell()\n .storeAddress(deployer)\n .storeAddress(token)\n .storeUint(dateToUnixTimestamp(startTime), 32)\n .storeUint(dateToUnixTimestamp(endTime), 32)\n .storeRef(leafCode)\n .endCell();\n\n return beginCell()\n .storeUint(stringToInt(version), 64)\n .storeAddress(adminAddress)\n .storeUint(root, 256)\n .storeRef(c1)\n .storeRef(c2)\n .endCell();\n}\n\nexport type TokenDistributorEntry = {\n address: Address;\n claimableAmount: bigint;\n claimableTimestamp: number;\n};\n\nexport const tokenDistributorEntryValue = {\n serialize: (src: TokenDistributorEntry, buidler: Builder) => {\n buidler.storeAddress(src.address).storeCoins(src.claimableAmount).storeUint(src.claimableTimestamp, 32);\n },\n parse: (src: Slice) => {\n return {\n address: src.loadAddress(),\n claimableAmount: src.loadCoins(),\n claimableTimestamp: src.loadUint(32)\n };\n }\n};\n\nexport function generateEntriesDictionary(entries: TokenDistributorEntry[]): Dictionary<bigint, TokenDistributorEntry> {\n const dict: Dictionary<bigint, TokenDistributorEntry> = Dictionary.empty(\n Dictionary.Keys.BigUint(64),\n tokenDistributorEntryValue\n );\n\n for (let i = 0; i < entries.length; i++) {\n dict.set(BigInt(i), entries[i]);\n }\n\n return dict;\n}\n\nexport class MerkleTokenDistributor implements Contract {\n constructor(readonly address: Address, readonly init?: { code: Cell; data: Cell }) {}\n\n static createFromAddress(address: Address) {\n return new MerkleTokenDistributor(address);\n }\n\n static createFromConfig(config: MerkleTokenDistributorConfig, code: Cell, workchain = 0) {\n const data = tokenDistributorConfigToCell(config);\n const init = { code, data };\n return new MerkleTokenDistributor(contractAddress(workchain, init), init);\n }\n\n async sendDeploy(provider: ContractProvider, via: Sender, value: bigint) {\n await provider.internal(via, {\n value,\n sendMode: SendMode.PAY_GAS_SEPARATELY,\n body: beginCell().endCell()\n });\n }\n\n async getVersion(provider: ContractProvider): Promise<string> {\n const result = await provider.get('get_version', []);\n\n return intToString(Number(result.stack.readBigNumber()));\n }\n\n async getLeafAddress(provider: ContractProvider, index: bigint): Promise<Address> {\n const arg: TupleItem = {\n value: index,\n type: 'int'\n };\n const result = await provider.get('get_leaf_address', [arg]);\n\n return result.stack.readAddress();\n }\n\n async getRoot(provider: ContractProvider): Promise<bigint> {\n const result = await provider.get('get_root', []);\n\n return result.stack.readBigNumber();\n }\n\n async getTime(provider: ContractProvider): Promise<[Date, Date] | [null, null]> {\n const result = await provider.get('get_time', []);\n const stack = result.stack;\n\n try {\n return [unixTimestampToDate(stack.readNumber()), unixTimestampToDate(stack.readNumber())];\n } catch (e) {\n return [null, null];\n }\n }\n\n async getToken(provider: ContractProvider): Promise<Address | null> {\n const result = await provider.get('get_token', []);\n\n try {\n return result.stack.readAddress();\n } catch (e) {\n return null;\n }\n }\n\n async getAdminAddress(provider: ContractProvider): Promise<Address> {\n const result = await provider.get('get_admin_address', []);\n\n return result.stack.readAddress();\n }\n\n async getClaimFee(provider: ContractProvider): Promise<bigint> {\n const result = await provider.get('get_claim_fee', []);\n\n return result.stack.readBigNumber();\n }\n\n async getClaimFeeAddress(provider: ContractProvider): Promise<Address> {\n const result = await provider.get('get_claim_fee_address', []);\n\n return result.stack.readAddress();\n }\n\n async getPaused(provider: ContractProvider): Promise<boolean> {\n const result = await provider.get('get_paused', []);\n\n return result.stack.readNumber() === 1;\n }\n\n async getFeelessThreshold(provider: ContractProvider): Promise<bigint> {\n const result = await provider.get('get_feeless_threshold', []);\n\n return result.stack.readBigNumber();\n }\n\n async sendChangeAdmin(provider: ContractProvider, via: Sender, newAdmin: Address) {\n const messageBody = beginCell().storeUint(OpCode.ChangeAdmin, 32).storeUint(0, 64).storeAddress(newAdmin).endCell();\n const result = await provider.internal(via, {\n value: '0.01',\n body: messageBody\n });\n\n return result;\n }\n\n async sendChangeCode(provider: ContractProvider, via: Sender, codeType: CodeType, newCode: Cell) {\n const messageBody = beginCell()\n .storeUint(OpCode.ChangeCode, 32)\n .storeUint(0, 64)\n .storeUint(codeType, 32)\n .storeRef(newCode)\n .endCell();\n const result = await provider.internal(via, {\n value: '0.01',\n body: messageBody\n });\n\n return result;\n }\n\n async sendChangeVersion(provider: ContractProvider, via: Sender, version: string) {\n const messageBody = beginCell()\n .storeUint(OpCode.ChangeVersion, 32)\n .storeUint(0, 64)\n .storeUint(stringToInt(version), 64)\n .endCell();\n const result = await provider.internal(via, {\n value: '0.01',\n body: messageBody\n });\n\n return result;\n }\n\n async sendWithdraw(provider: ContractProvider, via: Sender, amount: string) {\n const messageBody = beginCell()\n .storeUint(OpCode.Withdraw, 32)\n .storeUint(0, 64)\n .storeCoins(toNano(amount))\n .endCell();\n const result = await provider.internal(via, {\n value: '0.01',\n body: messageBody\n });\n\n return result;\n }\n\n async sendWithdrawTokens(provider: ContractProvider, via: Sender, amount: string) {\n const messageBody = beginCell()\n .storeUint(OpCode.WithdrawTokens, 32)\n .storeUint(0, 64)\n .storeCoins(toNano(amount))\n .endCell();\n const result = await provider.internal(via, {\n value: '0.1',\n body: messageBody\n });\n\n return result;\n }\n\n async sendSetBaseParams(\n provider: ContractProvider,\n via: Sender,\n startTime: Date,\n endTime: Date,\n root: bigint,\n token: Address\n ) {\n const messageBody = beginCell()\n .storeUint(OpCode.SetBaseParams, 32)\n .storeUint(0, 64)\n .storeAddress(token)\n .storeUint(dateToUnixTimestamp(startTime), 32)\n .storeUint(dateToUnixTimestamp(endTime), 32)\n .storeUint(root, 256)\n .endCell();\n const result = await provider.internal(via, {\n value: '0.01',\n body: messageBody\n });\n\n return result;\n }\n\n async sendSetClaimFee(provider: ContractProvider, via: Sender, claimFee: bigint) {\n const messageBody = beginCell().storeUint(OpCode.SetClaimFee, 32).storeUint(0, 64).storeCoins(claimFee).endCell();\n const result = await provider.internal(via, {\n value: '0.01',\n body: messageBody\n });\n\n return result;\n }\n\n async sendSetClaimFeeAddress(provider: ContractProvider, via: Sender, claimFeeAddress: Address) {\n const messageBody = beginCell()\n .storeUint(OpCode.SetClaimFee, 32)\n .storeUint(0, 64)\n .storeAddress(claimFeeAddress)\n .endCell();\n const result = await provider.internal(via, {\n value: '0.01',\n body: messageBody\n });\n\n return result;\n }\n\n async sendSetPaused(provider: ContractProvider, via: Sender, paused: boolean) {\n const messageBody = beginCell()\n .storeUint(OpCode.SetPaused, 32)\n .storeUint(0, 64)\n .storeUint(paused ? 1 : 0, 1)\n .endCell();\n const result = await provider.internal(via, {\n value: '0.01',\n body: messageBody\n });\n\n return result;\n }\n\n async sendSetFeelessThreshold(provider: ContractProvider, via: Sender, feelessThreshold: bigint) {\n const messageBody = beginCell()\n .storeUint(OpCode.SetFeelessThreshold, 32)\n .storeUint(0, 64)\n .storeCoins(feelessThreshold)\n .endCell();\n const result = await provider.internal(via, {\n value: '0.01',\n body: messageBody\n });\n\n return result;\n }\n}\n","import { TonContractBaseClient, IAirdropOption } from './TonContractBaseClient';\nimport { Leaf, MerkleTokenDistributor } from './v2/wrappers';\nimport { Address, Cell, toNano } from '@ton/core';\nimport { IAirdropClaim } from '../../types';\nimport LeafCode from './v2/build/Leaf.compiled.json';\nimport { isBeforeByUnix } from '../../utils';\n\nexport class TonAirdropClientV2 extends TonContractBaseClient {\n version = '2.0.0';\n\n constructor(option: IAirdropOption) {\n super(option);\n }\n\n async getVersion() {\n const airDropContract = await this.getAirdropContract();\n const version = await airDropContract.getVersion();\n this.version = version;\n return version;\n }\n\n getAirdropContract = async () => {\n const provider = await this.getTonClient();\n const contract = new MerkleTokenDistributor(Address.parse(this.address));\n return provider.open(contract);\n };\n\n getPaused = async () => {\n const airDropContract = await this.getAirdropContract();\n return airDropContract?.getPaused();\n };\n\n getFeelessThreshold = async () => {\n const airDropContract = await this.getAirdropContract();\n return airDropContract?.getFeelessThreshold();\n };\n\n async getBaseParams() {\n const airDropContract = await this.getAirdropContract();\n const [startTime, endTime] = await airDropContract!.getTime();\n const token = await airDropContract?.getToken();\n const root = await airDropContract?.getRoot();\n const version = this.version || (await airDropContract.getVersion());\n\n const paused = await airDropContract?.getPaused();\n\n return {\n startTime: startTime ? String(startTime?.valueOf() / 1000) : '',\n endTime: endTime ? String(endTime?.valueOf() / 1000) : '',\n token: token?.toString(),\n root: root?.toString(),\n version,\n paused\n };\n }\n\n async getFeeInfo() {\n const airDropContract = await this.getAirdropContract();\n const claimFee = await airDropContract.getClaimFee();\n const claimFeeReceiver = await airDropContract.getClaimFeeAddress();\n return {\n claimFee,\n claimFeeReceiver\n };\n }\n\n claim = async (claimData: IAirdropClaim & { value: string | null }, options?: { onLoading?: () => void }) => {\n const provider = await this.getTonClient();\n const airdropContract = await this.getAirdropContract();\n const index = BigInt(claimData.index);\n const claimFee = claimData.value ? toNano(claimData.value) : await airdropContract!.getClaimFee();\n const proof = Cell.fromBase64(claimData.proofBoc);\n\n const leafCode = Cell.fromBoc(Buffer.from(LeafCode.hex, 'hex'))[0];\n\n const leaf = provider.open(\n Leaf.createFromConfig(\n {\n distributor: airdropContract.address,\n index\n },\n leafCode\n )\n );\n\n leaf.sendClaim(this.connection.senderDeploy, proof, index, claimFee);\n const res = await this.waitForTransaction(options?.onLoading);\n if (res) {\n console.log(res, res.event_id, 'res');\n }\n return res;\n };\n\n checkClaimed = async (claimData: IAirdropClaim) => {\n try {\n if (isBeforeByUnix(claimData.unlockingAt)) return false;\n const provider = await this.getTonClient();\n const airdropContract = await this.getAirdropContract();\n\n const index = BigInt(claimData.index);\n\n const leafAddress = await airdropContract.getLeafAddress(index);\n\n const isDeployed = await provider.isContractDeployed(leafAddress);\n\n if (!isDeployed) return false;\n\n const leaf = new Leaf(leafAddress);\n const leafContract = provider.open(leaf);\n const isUsed = await leafContract?.getIsUsed();\n\n return isUsed;\n } catch (e: any) {\n console.log(e, 'check claim err');\n return false;\n }\n };\n}\n","{\"hex\":\"b5ee9c7241022901000864000114ff00f4a413f4bcf2c80b01020162050202015804030025bbc01f057f844f842c8cb00f843cf16cb3fc98000dbaf13f057f84280202c918060201480c0702012009080019d8164658000e78b659fe4f6aa40201200b0a0025f76a268698000fc317d2000fc31e99f987c32400276be401c1cb232c072c004b2c1f2fff2743e900c20103a3c00d04f62082300de0b6b3a7640000ba9b30823025b946ebc0b36173e08200c354218235c702bd3a30fc0000be228238070c1cc73b00c80000bbb0f2f420c1008e1282300de0b6b3a76400005202a3f04712a984e020821b782dace9d9aa18bee30f01a7648238056bc75e2d6310000021822056bc75e2d631aa18bee300211716150e02f4822056bc75e2d631aa17be8e2701822056bc75e2d631aa17a101824adf0ab5a80a22c61ab5a7008238056bc75e2d63100000a984de21822056bc75e2d631aa16be8e2601822056bc75e2d631aa16a10182403f1fce3da636ea5cf8508238056bc75e2d63100000a984de21823815af1d78b58c400000bee30021140f02f482380ad78ebc5ac6200000be8e260182380ad78ebc5ac6200000a1018238280e60114edb805d038238056bc75e2d63100000a984de218238056bc75e2d63100000be8e26018238056bc75e2d63100000a10182380ebc5fb417461211108238056bc75e2d63100000a984de218232b5e3af16b1880000bee30021131001ec82315af1d78b58c40000be8e250182315af1d78b58c40000a101823806f5f17757889379378238056bc75e2d63100000a984de218238056bc75e2d6310000021a0511382380ad78ebc5ac6200000a98466a0511382381043561a8829300000a98466a05113823815af1d78b58c400000a98466a051131101ea82381b1ae4d6e2ef500000a98466a0511382382086ac351052600000a98466a05113823825f273933db5700000a98466a05113822056bc75e2d631aa16a98466a05113823830ca024f987b900000a98466a0511382383635c9adc5dea00000a98466a0511382383ba1910bf341b00000a98466a0031200428238410d586a20a4c00000a98412a08238056bc75e2d63100000a984018064a984004a018232b5e3af16b1880000a101823808f00f760a4b2db55d8238056bc75e2d63100000a984004c01823815af1d78b58c400000a101823927fa27722cc06cc5e28238056bc75e2d63100000a984003830822056bc75e2d631aa18a18261855144814a7ff805980ff0084000005020821b782dace9d9aa17be8e18821b782dace9d9aa17a182501425982cf597cd205cef73809171e20042821b782dace9d9aa18a18288195e54c5dd42177f53a27172fa9ec630262827aa2302012024190103aee01a01f62082300de0b6b3a7640000b98e1182300de0b6b3a76400005202a984f03ba3e0702182b05803bcc5cb9634ba4cfb2213f784019318ed4dcb6017880faa35be8e23308288195e54c5dd42177f53a27172fa9ec630262827aa23a904821b782dace9d9aa18de2182708bcc0026baae9e45e470190267a230cfaa18be1b02ea8e1c0182501425982cf597cd205cef7380a90401821b782dace9d9aa17a0dea76401a764208261855144814a7ff805980ff0084000be8e2a8238056bc75e2d631000008261855144814a7ff805980ff0084000a98401822056bc75e2d631aa18a001de20824adf0ab5a80a22c61ab5a700bee30020231c02f882403f1fce3da636ea5cf850be8e268238056bc75e2d6310000082403f1fce3da636ea5cf850a98401822056bc75e2d631aa16a001de20823927fa27722cc06cc5e2be8e268238056bc75e2d63100000823927fa27722cc06cc5e2a98401823815af1d78b58c400000a001de208238280e60114edb805d03bee30020221d02f482380ebc5fb41746121110be8e268238056bc75e2d6310000082380ebc5fb41746121110a984018238056bc75e2d63100000a001de20823808f00f760a4b2db55dbe8e258238056bc75e2d63100000823808f00f760a4b2db55da984018232b5e3af16b1880000a001de20823806f5f1775788937937bee30020211e01ec823806248f33704b286603be8e258238056bc75e2d63100000823806248f33704b286603a984018230ad78ebc5ac620000a001de20823805c548670b9510e7acbe8e258238056bc75e2d63100000823805c548670b9510e7aca98401823056bc75e2d6310000a001de208238056bc75e2d63100000a11f01fe8238056bc75e2d631000005122a012a98453008238056bc75e2d63100000a9845c8238056bc75e2d63100000a9842073a90413a051218238056bc75e2d63100000a9842075a90413a051218238056bc75e2d63100000a9842077a90413a051218238056bc75e2d63100000a9842079a90413a0598238056bc75e2d6310000020001ca984800ba904a0aa00a08064a904004a8238056bc75e2d63100000823806f5f1775788937937a9840182315af1d78b58c40000a001004c8238056bc75e2d631000008238280e60114edb805d03a9840182380ad78ebc5ac6200000a001004e8238056bc75e2d63100000824adf0ab5a80a22c61ab5a700a98401822056bc75e2d631aa17a00102012026250063a46410e0804c45896c678b00d180ef381038c70a023d5486531812d40950025503815210e0002298731819d5016780e4e840019fd0c8871c02497c0f83434c0c05c6c2497c0f83e900c0074c7f4cfc8a08426871dda6ea3864d16fc15fe10f1c17ca8f4cfcc3e112ebcabdc3e10fe113c16380cc06084140f4725eeb8c097c0e103fcbc22701fcf057028210042c1d80bef2b0f842c001f268d4d33f30f864885210f90001f900baf26420d739f2aad30701c003f2ab21d765aa00a6025220f9415f03f84401d4308040f40e6fa131f2ad71f843f844f058f842f8448210d0d5f405c8cb1f14cb3f12cc12cb3fcb00c9718010c8cb05f843cf1670fa02cb6accc98306fb0028000030639e90\"}","import { Address, beginCell, Cell, Contract, contractAddress, ContractProvider, Sender, toNano } from '@ton/core';\nimport { OpCode } from '../utils';\n\nexport const MIN_CLAIM_FEE = toNano('0.17');\n\nexport type LeafConfig = {\n used?: boolean;\n distributor: Address;\n index: bigint;\n};\nexport function leafConfigToCell(config: LeafConfig): Cell {\n const { distributor, index } = config;\n\n const initState = beginCell().storeBit(false).storeAddress(distributor).storeUint(index, 64).endCell();\n\n return initState;\n}\n\nexport class Leaf implements Contract {\n constructor(readonly address: Address, readonly init?: { code: Cell; data: Cell }) {}\n\n static createFromAddress(address: Address) {\n return new Leaf(address);\n }\n\n static createFromConfig(config: LeafConfig, code: Cell, workchain = 0) {\n const data = leafConfigToCell(config);\n const init = { code, data };\n return new Leaf(contractAddress(workchain, init), init);\n }\n\n async getIsUsed(provider: ContractProvider): Promise<boolean> {\n const result = await provider.get('get_is_used', []);\n const isUsed = result.stack.readNumber();\n\n return !!isUsed;\n }\n\n async getLeafData(provider: ContractProvider): Promise<LeafConfig> {\n const result = await provider.get('get_leaf_data', []);\n const cellHash = result.stack.readCell().beginParse();\n\n const isUsed = cellHash.loadUint(1);\n const distributor = cellHash.loadAddress();\n const index = cellHash.loadUint(64);\n\n return {\n used: !!isUsed,\n index: BigInt(index),\n distributor\n };\n }\n\n async sendClaim(provider: ContractProvider, via: Sender, proof: Cell, index: bigint, claimFee: bigint) {\n const messageBody = beginCell()\n .storeUint(OpCode.Claim, 32)\n .storeUint(0, 64)\n .storeRef(proof)\n .storeUint(index, 64)\n .endCell();\n const result = await provider.internal(via, {\n value: MIN_CLAIM_FEE + claimFee,\n body: messageBody\n });\n\n return result;\n }\n}\n","export function dateToUnixTimestamp(date: Date): number {\n return Math.floor(date.getTime() / 1000);\n}\n\nexport function unixTimestampToDate(timestamp: number): Date {\n return new Date(timestamp * 1000);\n}\n\nexport function addOneHour(date: Date): Date {\n return new Date(date.getTime() + 60 * 60 * 1000);\n}\n","import { Address, BitString, Cell, Slice, beginCell, contractAddress, crc32c, toNano } from '@ton/core';\n\nexport function stringToSlice(str: string): Slice {\n return beginCell().storeStringTail(str).endCell().asSlice();\n}\n\nexport function sliceToString(slice: Slice): string {\n const cell = beginCell().storeSlice(slice).endCell();\n return cell.beginParse().loadStringTail();\n}\n\nexport function stringToInt(str: string): number {\n return str ? parseInt(Buffer.from(str).toString('hex'), 16) : 0;\n}\n\nexport function intToString(int: number): string {\n return Buffer.from(int.toString(16), 'hex').toString('utf-8');\n}\n\nexport function bufferToInt(buf: Buffer): number {\n return buf.readUInt32BE(0);\n}\n\nexport function intToBuffer(int: number): Buffer {\n return Buffer.from(int.toString(16), 'hex');\n}\n\nexport function sliceToAddress(slice: Slice): Address {\n const cell = beginCell().storeSlice(slice).endCell();\n return cell.beginParse().loadAddress();\n}\n\nexport function addressToSlice(address: Address): Slice {\n return beginCell().storeAddress(address).endCell().asSlice();\n}\n\nexport function stringToBitString(str: string): BitString {\n return new BitString(Buffer.from(str), 0, str.length * 8);\n}\n\nexport function bitStringToString(bits: BitString, len: number): string {\n const decoder = new TextDecoder();\n const subBuffer = bits.subbuffer(0, len);\n\n return subBuffer ? decoder.decode(subBuffer) : '';\n}\n\nexport function stringToCell(str: string): Cell {\n return beginCell().storeStringTail(str).endCell();\n}\n\nexport function cellToString(cell: Cell): string {\n return cell.beginParse().loadStringTail();\n}\n\nexport function stringToCrc32(str: string): number {\n return crc32c(Buffer.from(str)).readUint32BE();\n}\n\nexport function getContractAddress(code: Cell, data: Cell): Address {\n return contractAddress(0, { code, data });\n}\n\nexport function arraysToCell(arrays: (Slice | Cell | Address | number)[], bits = 32): Cell {\n const cell = beginCell();\n\n arrays.forEach((item) => {\n if (item instanceof Slice) {\n cell.storeSlice(item);\n } else if (item instanceof Cell) {\n cell.storeRef(item);\n } else if (item instanceof Address) {\n cell.storeAddress(item);\n } else if (typeof item === 'number') {\n cell.storeUint(item, bits);\n }\n });\n\n return cell.endCell();\n}\n\nexport function coinsToSlice(coins: string): Slice {\n return beginCell().storeCoins(toNano(coins)).endCell().asSlice();\n}\n","import {\n Address,\n beginCell,\n Builder,\n Cell,\n Contract,\n contractAddress,\n ContractProvider,\n Dictionary,\n Sender,\n SendMode,\n Slice,\n toNano,\n TupleItem\n} from '@ton/core';\nimport { CodeType, dateToUnixTimestamp, intToString, OpCode, stringToInt, unixTimestampToDate } from '../utils';\n\nexport type MerkleTokenDistributorConfig = {\n version: string;\n adminAddress: Address;\n root: bigint;\n deployer: Address;\n token?: Address;\n startTime: Date;\n endTime: Date;\n leafCode: Cell;\n claimFee: bigint;\n claimFeeAddress: Address;\n paused?: boolean;\n feelessThreshold?: bigint;\n};\n\nexport function tokenDistributorConfigToCell(config: MerkleTokenDistributorConfig): Cell {\n const {\n version,\n adminAddress,\n deployer,\n endTime,\n leafCode,\n root,\n startTime,\n token,\n claimFee,\n claimFeeAddress,\n paused = false,\n feelessThreshold = 0\n } = config;\n const c2 = beginCell()\n .storeCoins(claimFee)\n .storeAddress(claimFeeAddress)\n .storeUint(paused ? 1 : 0, 1)\n .storeCoins(feelessThreshold)\n .endCell();\n\n const c1 = beginCell()\n .storeAddress(deployer)\n .storeAddress(token)\n .storeUint(dateToUnixTimestamp(startTime), 32)\n .storeUint(dateToUnixTimestamp(endTime), 32)\n .storeRef(leafCode)\n .endCell();\n\n return beginCell()\n .storeUint(stringToInt(version), 64)\n .storeAddress(adminAddress)\n .storeUint(root, 256)\n .storeRef(c1)\n .storeRef(c2)\n .endCell();\n}\n\nexport type TokenDistributorEntry = {\n address: Address;\n claimableAmount: bigint;\n claimableTimestamp: number;\n};\n\nexport const tokenDistributorEntryValue = {\n serialize: (src: TokenDistributorEntry, buidler: Builder) => {\n buidler.storeAddress(src.address).storeCoins(src.claimableAmount).storeUint(src.claimableTimestamp, 32);\n },\n parse: (src: Slice) => {\n return {\n address: src.loadAddress(),\n claimableAmount: src.loadCoins(),\n claimableTimestamp: src.loadUint(32)\n };\n }\n};\n\nexport function generateEntriesDictionary(entries: TokenDistributorEntry[]): Dictionary<bigint, TokenDistributorEntry> {\n const dict: Dictionary<bigint, TokenDistributorEntry> = Dictionary.empty(\n Dictionary.Keys.BigUint(64),\n tokenDistributorEntryValue\n );\n\n for (let i = 0; i < entries.length; i++) {\n dict.set(BigInt(i), entries[i]);\n }\n\n return dict;\n}\n\nexport class MerkleTokenDistributor implements Contract {\n constructor(readonly address: Address, readonly init?: { code: Cell; data: Cell }) {}\n\n static createFromAddress(address: Address) {\n return new MerkleTokenDistributor(address);\n }\n\n static createFromConfig(config: MerkleTokenDistributorConfig, code: Cell, workchain = 0) {\n const data = tokenDistributorConfigToCell(config);\n const init = { code, data };\n return new MerkleTokenDistributor(contractAddress(workchain, init), init);\n }\n\n async sendDeploy(provider: ContractProvider, via: Sender, value: bigint) {\n await provider.internal(via, {\n value,\n sendMode: SendMode.PAY_GAS_SEPARATELY,\n body: beginCell().endCell()\n });\n }\n\n async getVersion(provider: ContractProvider): Promise<string> {\n const result = await provider.get('get_version', []);\n\n return intToString(Number(result.stack.readBigNumber()));\n }\n\n async getLeafAddress(provider: ContractProvider, index: bigint): Promise<Address> {\n const arg: TupleItem = {\n value: index,\n type: 'int'\n };\n const result = await provider.get('get_leaf_address', [arg]);\n\n return result.stack.readAddress();\n }\n\n async getRoot(provider: ContractProvider): Promise<bigint> {\n const result = await provider.get('get_root', []);\n\n return result.stack.readBigNumber();\n }\n\n async getTime(provider: ContractProvider): Promise<[Date, Date] | [null, null]> {\n const result = await provider.get('get_time', []);\n const stack = result.stack;\n\n try {\n return [unixTimestampToDate(stack.readNumber()), unixTimestampToDate(stack.readNumber())];\n } catch (e) {\n return [null, null];\n }\n }\n\n async getToken(provider: ContractProvider): Promise<Address | null> {\n const result = await provider.get('get_token', []);\n\n try {\n return result.stack.readAddress();\n } catch (e) {\n return null;\n }\n }\n\n async getAdminAddress(provider: ContractProvider): Promise<Address> {\n const result = await provider.get('get_admin_address', []);\n\n return result.stack.readAddress();\n }\n\n async getClaimFee(provider: ContractProvider): Promise<bigint> {\n const result = await provider.get('get_claim_fee', []);\n\n return result.stack.readBigNumber();\n }\n\n async getClaimFeeAddress(provider: ContractProvider): Promise<Address> {\n const result = await provider.get('get_claim_fee_address', []);\n\n return result.stack.readAddress();\n }\n\n async getPaused(provider: ContractProvider): Promise<boolean> {\n const result = await provider.get('get_paused', []);\n\n return result.stack.readNumber() === 1;\n }\n\n async getFeelessThreshold(provider: ContractProvider): Promise<bigint> {\n const result = await provider.get('get_feeless_threshold', []);\n\n return result.stack.readBigNumber();\n }\n\n async sendChangeAdmin(provider: ContractProvider, via: Sender, newAdmin: Address) {\n const messageBody = beginCell().storeUint(OpCode.ChangeAdmin, 32).storeUint(0, 64).storeAddress(newAdmin).endCell();\n const result = await provider.internal(via, {\n value: '0.01',\n body: messageBody\n });\n\n return result;\n }\n\n async sendChangeCode(provider: ContractProvider, via: Sender, codeType: CodeType, newCode: Cell) {\n const messageBody = beginCell()\n .storeUint(OpCode.ChangeCode, 32)\n .storeUint(0, 64)\n .storeUint(codeType, 32)\n .storeRef(newCode)\n .endCell();\n const result = await provider.internal(via, {\n value: '0.01',\n body: messageBody\n });\n\n return result;\n }\n\n async sendChangeVersion(provider: ContractProvider, via: Sender, version: string) {\n const messageBody = beginCell()\n .storeUint(OpCode.ChangeVersion, 32)\n .storeUint(0, 64)\n .storeUint(stringToInt(version), 64)\n .endCell();\n const result = await provider.internal(via, {\n value: '0.01',\n body: messageBody\n });\n\n return result;\n }\n\n async sendWithdraw(provider: ContractProvider, via: Sender, amount: string) {\n const messageBody = beginCell()\n .storeUint(OpCode.Withdraw, 32)\n .storeUint(0, 64)\n .storeCoins(toNano(amount))\n .endCell();\n const result = await provider.internal(via, {\n value: '0.01',\n body: messageBody\n });\n\n return result;\n }\n\n async sendWithdrawTokens(provider: ContractProvider, via: Sender, amount: string) {\n const messageBody = beginCell()\n .storeUint(OpCode.WithdrawTokens, 32)\n .storeUint(0, 64)\n .storeCoins(toNano(amount))\n .endCell();\n const result = await provider.internal(via, {\n value: '0.1',\n body: messageBody\n });\n\n return result;\n }\n\n async sendSetBaseParams(\n provider: ContractProvider,\n via: Sender,\n startTime: Date,\n endTime: Date,\n root: bigint,\n token: Address\n ) {\n const messageBody = beginCell()\n .storeUint(OpCode.SetBaseParams, 32)\n .storeUint(0, 64)\n .storeAddress(token)\n .storeUint(dateToUnixTimestamp(startTime), 32)\n .storeUint(dateToUnixTimestamp(endTime), 32)\n .storeUint(root, 256)\n .endCell();\n const result = await provider.internal(via, {\n value: '0.01',\n body: messageBody\n });\n\n return result;\n }\n\n async sendSetPaused(provider: ContractProvider, via: Sender, paused: boolean) {\n const messageBody = beginCell()\n .storeUint(OpCode.SetPaused, 32)\n .storeUint(0, 64)\n .storeUint(paused ? 1 : 0, 1)\n .endCell();\n const result = await provider.internal(via, {\n value: '0.01',\n body: messageBody\n });\n\n return result;\n }\n\n async sendSetFeelessThreshold(provider: ContractProvider, via: Sender, feelessThreshold: bigint) {\n const messageBody = beginCell()\n .storeUint(OpCode.SetFeelessThreshold, 32)\n .storeUint(0, 64)\n .storeCoins(feelessThreshold)\n .endCell();\n const result = await provider.internal(via, {\n value: '0.01',\n body: messageBody\n });\n\n return result;\n }\n}\n","import { TonContractBaseClient, IAirdropOption } from './TonContractBaseClient';\nimport { Leaf, MerkleTokenDistributor } from './v3/wrappers';\nimport { Address, Cell, toNano } from '@ton/core';\nimport { IAirdropClaim } from '../../types';\nimport LeafCode from './v3/build/Leaf.compiled.json';\nimport { isBeforeByUnix } from '../../utils';\n\nexport class TonAirdropClientV3 extends TonContractBaseClient {\n version = '11.0.0';\n\n constructor(option: IAirdropOption) {\n super(option);\n }\n\n async getVersion() {\n const airDropContract = await this.getAirdropContract();\n const version = await airDropContract.getVersion();\n this.version = version;\n return version;\n }\n\n getAirdropContract = async () => {\n const provider = await this.getTonClient();\n const contract = new MerkleTokenDistributor(Address.parse(this.address));\n return provider.open(contract);\n };\n\n getPaused = async () => {\n const airDropContract = await this.getAirdropContract();\n return airDropContract?.getPaused();\n };\n\n getFeelessThreshold = async () => {\n const airDropContract = await this.getAirdropContract();\n return airDropContract?.getFeelessThreshold();\n };\n\n async getBaseParams() {\n const airDropContract = await this.getAirdropContract();\n const [startTime, endTime] = await airDropContract!.getTime();\n const token = await airDropContract?.getToken();\n const root = await airDropContract?.getRoot();\n\n const version = this.version || (await airDropContract.getVersion());\n\n const paused = await airDropContract?.getPaused();\n\n return {\n startTime: startTime ? String(startTime?.valueOf() / 1000) : '',\n endTime: endTime ? String(endTime?.valueOf() / 1000) : '',\n token: token?.toString(),\n root: root?.toString(),\n version,\n paused\n };\n }\n\n async getFeeInfo() {\n const airDropContract = await this.getAirdropContract();\n const claimFee = await airDropContract.getClaimFee();\n const claimFeeReceiver = await airDropContract.getClaimFeeAddress();\n return {\n claimFee,\n claimFeeReceiver\n };\n }\n\n claim = async (claimData: IAirdropClaim & { value: string | null }, options?: { onLoading?: () => void }) => {\n // const { provider, airdropContract, claimFee, leafAddress } = prepreData;\n const provider = await this.getTonClient();\n const airdropContract = await this.getAirdropContract();\n const index = BigInt(claimData.index);\n // const leafAddress = await airdropContract!.getLeafAddress(index);\n const claimFee = claimData.value ? toNano(claimData.value) : await airdropContract!.getClaimFee();\n const proof = Cell.fromBase64(claimData.proofBoc);\n\n const leafCode = Cell.fromBoc(Buffer.from(LeafCode.hex, 'hex'))[0];\n\n const leaf = provider.open(\n Leaf.createFromConfig(\n {\n distributor: airdropContract.address,\n index\n },\n leafCode\n )\n );\n\n leaf.sendClaim(this.connection.senderDeploy, proof, index, claimFee);\n const res = await this.waitForTransaction(options?.onLoading);\n\n // while (!(await provider.isContractDeployed(leafAddress))) {\n // console.log('waiting for leaf to deploy');\n // await new Promise((resolve) => setTimeout(resolve, 1000));\n // }\n // // const res = await this.waitForTransactionForLegacy();\n if (res) {\n console.log(res, res.event_id, 'res');\n }\n return res;\n };\n\n checkClaimed = async (claimData: IAirdropClaim) => {\n try {\n if (isBeforeByUnix(claimData.unlockingAt)) return false;\n const provider = await this.getTonClient();\n const airdropContract = await this.getAirdropContract();\n\n const index = BigInt(claimData.index);\n\n const leafAddress = await airdropContract.getLeafAddress(index);\n\n const isDeployed = await provider.isContractDeployed(leafAddress);\n\n if (!isDeployed) return false;\n\n const leaf = new Leaf(leafAddress);\n const leafContract = provider.open(leaf);\n const isUsed = await leafContract?.getIsUsed();\n\n return isUsed;\n } catch (e: any) {\n console.log(e.toString(), 'check claim err');\n return false;\n }\n };\n}\n","{\"hex\":\"b5ee9c7241022a01000887000114ff00f4a413f4bcf2c80b01020162050202015804030025bbc01f057f844f842c8cb00f843cf16cb3fc98000dbaf13f057f84280202c918060201480c0702012009080019d8164658000e78b659fe4f6aa40201200b0a0025f76a268698000fc317d2000fc31e99f987c32400276be401c1cb232c072c004b2c1f2fff2743e900c20103a3c00d04f62082300de0b6b3a7640000ba9b30823025b946ebc0b36173e08200c354218235c702bd3a30fc0000be228238070c1cc73b00c80000bbb0f2f420c1008e1282300de0b6b3a76400005202a3f04712a984e020821b782dace9d9aa18bee30f01a7648238056bc75e2d6310000021822056bc75e2d631aa18bee300211716150e02f4822056bc75e2d631aa17be8e2701822056bc75e2d631aa17a101824adf0ab5a80a22c61ab5a7008238056bc75e2d63100000a984de21822056bc75e2d631aa16be8e2601822056bc75e2d631aa16a10182403f1fce3da636ea5cf8508238056bc75e2d63100000a984de21823815af1d78b58c400000bee30021140f02f482380ad78ebc5ac6200000be8e260182380ad78ebc5ac6200000a1018238280e60114edb805d038238056bc75e2d63100000a984de218238056bc75e2d63100000be8e26018238056bc75e2d63100000a10182380ebc5fb417461211108238056bc75e2d63100000a984de218232b5e3af16b1880000bee30021131001ec82315af1d78b58c40000be8e250182315af1d78b58c40000a101823806f5f17757889379378238056bc75e2d63100000a984de218238056bc75e2d6310000021a0511382380ad78ebc5ac6200000a98466a0511382381043561a8829300000a98466a05113823815af1d78b58c400000a98466a051131101ea82381b1ae4d6e2ef500000a98466a0511382382086ac351052600000a98466a05113823825f273933db5700000a98466a05113822056bc75e2d631aa16a98466a05113823830ca024f987b900000a98466a0511382383635c9adc5dea00000a98466a0511382383ba1910bf341b00000a98466a0031200428238410d586a20a4c00000a98412a08238056bc75e2d63100000a984018064a984004a018232b5e3af16b1880000a101823808f00f760a4b2db55d8238056bc75e2d63100000a984004c01823815af1d78b58c400000a101823927fa27722cc06cc5e28238056bc75e2d63100000a984003830822056bc75e2d631aa18a18261855144814a7ff805980ff0084000005020821b782dace9d9aa17be8e18821b782dace9d9aa17a182501425982cf597cd205cef73809171e20042821b782dace9d9aa18a18288195e54c5dd42177f53a27172fa9ec630262827aa2302012024190103aee01a01f62082300de0b6b3a7640000b98e1182300de0b6b3a76400005202a984f03ba3e0702182b05803bcc5cb9634ba4cfb2213f784019318ed4dcb6017880faa35be8e23308288195e54c5dd42177f53a27172fa9ec630262827aa23a904821b782dace9d9aa18de2182708bcc0026baae9e45e470190267a230cfaa18be1b02ea8e1c0182501425982cf597cd205cef7380a90401821b782dace9d9aa17a0dea76401a764208261855144814a7ff805980ff0084000be8e2a8238056bc75e2d631000008261855144814a7ff805980ff0084000a98401822056bc75e2d631aa18a001de20824adf0ab5a80a22c61ab5a700bee30020231c02f882403f1fce3da636ea5cf850be8e268238056bc75e2d6310000082403f1fce3da636ea5cf850a98401822056bc75e2d631aa16a001de20823927fa27722cc06cc5e2be8e268238056bc75e2d63100000823927fa27722cc06cc5e2a98401823815af1d78b58c400000a001de208238280e60114edb805d03bee30020221d02f482380ebc5fb41746121110be8e268238056bc75e2d6310000082380ebc5fb41746121110a984018238056bc75e2d63100000a001de20823808f00f760a4b2db55dbe8e258238056bc75e2d63100000823808f00f760a4b2db55da984018232b5e3af16b1880000a001de20823806f5f1775788937937bee30020211e01ec823806248f33704b286603be8e258238056bc75e2d63100000823806248f33704b286603a984018230ad78ebc5ac620000a001de20823805c548670b9510e7acbe8e258238056bc75e2d63100000823805c548670b9510e7aca98401823056bc75e2d6310000a001de208238056bc75e2d63100000a11f01fe8238056bc75e2d631000005122a012a98453008238056bc75e2d63100000a9845c8238056bc75e2d63100000a9842073a90413a051218238056bc75e2d63100000a9842075a90413a051218238056bc75e2d63100000a9842077a90413a051218238056bc75e2d63100000a9842079a90413a0598238056bc75e2d6310000020001ca984800ba904a0aa00a08064a904004a8238056bc75e2d63100000823806f5f1775788937937a9840182315af1d78b58c40000a001004c8238056bc75e2d631000008238280e60114edb805d03a9840182380ad78ebc5ac6200000a001004e8238056bc75e2d63100000824adf0ab5a80a22c61ab5a700a98401822056bc75e2d631aa17a00102012026250063a46410e0804c45896c678b00d180ef381038c70a023d5486531812d40950025503815210e0002298731819d5016780e4e84001d7d0c8871c02497c0f83434c0c05c6c2497c0f83e900c0074c7f4cfc8a08426871dda6ea38d8d16fc15fe10f1c17ca8f4cff4c03e1104eebcabdc3e10fe113c163000244c383e900c1c20043232c15633c5887e80b2dab260103ec03800a084140f4725eeb8c097c12103fcbc22702fcf057038210042c1d80bef2b0f842c001f268d4d33f30f864885210f90001f900baf26420d739f2aad30701c003f2ab21d765aa00a6025220f9415f03f84401d4308040f40e6fa131f2ad71f843f844f058f842f8448210d0d5f405c8cb1f15cb3f12cc13cb3f12cb0001cf16c9718010c8cb05f843cf1670fa02cb6accc9292800088306fb0000006e3bece9\"}","import { TonAirdropClientV1 } from './AirdropClientV1';\nimport type { TonConnectUI } from '@tonconnect/ui-react';\nimport { TonAirdropClientV2 } from './AirdropClientV2';\nimport { IAirdropClaim, TonAirdropVersionEnum } from '../../types';\nimport { IAirdropOption } from './TonContractBaseClient';\nimport { TonAirdropClientV3 } from './AirdropClientV3';\nimport { fromNano } from '@ton/core';\nimport { TonClient } from '@ton/ton';\nimport { TonAirdropClientV21 } from './AirdropClientV21';\n\nexport class AirdropService {\n private address: string;\n\n private walletClient?: TonConnectUI;\n\n private chainId: string;\n\n private cachedVersion: string | null = null;\n\n private tonClient?: TonClient;\n\n constructor(options: IAirdropOption) {\n const { chainId, address, walletClient, tonClient, version } = options;\n this.address = address;\n this.walletClient = walletClient;\n this.chainId = chainId;\n this.tonClient = tonClient;\n if (version) {\n this.cachedVersion = version;\n }\n }\n\n private get airdropClientV1(): TonAirdropClientV1 {\n if (!this?.address) {\n throw new Error('Contract address is empty');\n }\n\n return new TonAirdropClientV1({\n chainId: this.chainId,\n address: this.address,\n walletClient: this.walletClient,\n tonClient: this.tonClient\n });\n }\n\n private get airdropClientV2(): TonAirdropClientV2 {\n if (!this?.address) {\n throw new Error('Contract address is empty');\n }\n\n return new TonAirdropClientV2({\n chainId: this.chainId,\n address: this.address,\n walletClient: this.walletClient,\n tonClient: this.tonClient\n });\n }\n\n private get airdropClientV3(): TonAirdropClientV3 {\n if (!this?.address) {\n throw new Error('Contract address is empty');\n }\n\n return new TonAirdropClientV3({\n chainId: this.chainId,\n address: this.address,\n walletClient: this.walletClient,\n tonClient: this.tonClient\n });\n }\n\n private get airdropClientV21(): TonAirdropClientV21 {\n if (!this?.address) {\n throw new Error('Contract address is empty');\n }\n\n return new TonAirdropClientV21({\n chainId: this.chainId,\n address: this.address,\n walletClient: this.walletClient,\n tonClient: this.tonClient\n });\n }\n\n async getVersion() {\n if (this.cachedVersion !== null) {\n return this.cachedVersion;\n }\n\n this.cachedVersion = await this.airdropClientV2.getVersion();\n return this.cachedVersion;\n }\n\n private async getClient() {\n const version = await this.getVersion();\n\n if (version === TonAirdropVersionEnum.NativeV1) {\n return this.airdropClientV21;\n }\n\n if (version === TonAirdropVersionEnum.LiteV1) {\n return this.airdropClientV3;\n }\n return version === TonAirdropVersionEnum.V2 ? this.airdropClientV2 : this.airdropClientV1;\n }\n\n async getAirdropContract() {\n const client = await this.getClient();\n return client.getAirdropContract();\n }\n\n async claim(claimData: IAirdropClaim & { value: string | null }, options?: { onLoading?: () => void }) {\n const client = await this.getClient();\n return client.claim(claimData, options);\n }\n\n async checkClaimed(claimData: IAirdropClaim) {\n const client = await this.getClient();\n return client.checkClaimed(claimData);\n }\n\n async getContractInfo() {\n const client = await this.getClient();\n return client.getBaseParams();\n }\n\n async getPaused() {\n const client = await this.getClient();\n if (!(client instanceof TonAirdropClientV1)) {\n return client.getPaused();\n } else {\n return false;\n }\n }\n\n async getClaimFeeInfo() {\n const client = await this.getClient();\n const feeInfo = await client.getFeeInfo();\n return {\n claimFee: fromNano(feeInfo.claimFee),\n claimFeeReceiver: feeInfo.claimFeeReceiver?.toString({ bounceable: false })\n };\n }\n\n async getClaimFee(address: string, amount: bigint) {\n const client = await this.getClient();\n const feeInfo = await client.getFeeInfo();\n return fromNano(feeInfo.claimFee);\n }\n}\n","import { Address, beginCell, Cell, Contract, contractAddress, ContractProvider, Sender, toNano } from '@ton/core';\nimport { OpCode } from '../utils';\n\nexport const MIN_CLAIM_FEE = toNano('0.17');\n\nexport type LeafConfig = {\n used?: boolean;\n distributor: Address;\n index: bigint;\n};\n\nexport function leafConfigToCell(config: LeafConfig): Cell {\n const { distributor, index } = config;\n\n const initState = beginCell().storeBit(false).storeAddress(distributor).storeUint(index, 64).endCell();\n\n return initState;\n}\n\nexport class Leaf implements Contract {\n constructor(readonly address: Address, readonly init?: { code: Cell; data: Cell }) {}\n\n static createFromAddress(address: Address) {\n return new Leaf(address);\n }\n\n static createFromConfig(config: LeafConfig, code: Cell, workchain = 0) {\n const data = leafConfigToCell(config);\n const init = { code, data };\n return new Leaf(contractAddress(workchain, init), init);\n }\n\n async getIsUsed(provider: ContractProvider): Promise<boolean> {\n const result = await provider.get('get_is_used', []);\n const isUsed = result.stack.readNumber();\n\n return !!isUsed;\n }\n\n async getLeafData(provider: ContractProvider): Promise<LeafConfig> {\n const result = await provider.get('get_leaf_data', []);\n const cellHash = result.stack.readCell().beginParse();\n\n const isUsed = cellHash.loadUint(1);\n const distributor = cellHash.loadAddress();\n const index = cellHash.loadUint(64);\n\n return {\n used: !!isUsed,\n index: BigInt(index),\n distributor\n };\n }\n\n async sendClaim(provider: ContractProvider, via: Sender, proof: Cell, index: bigint, claimFee: bigint) {\n const messageBody = beginCell()\n .storeUint(OpCode.Claim, 32)\n .storeUint(0, 64)\n .storeRef(proof)\n .storeUint(index, 64)\n .endCell();\n const result = await provider.internal(via, {\n value: MIN_CLAIM_FEE + claimFee,\n body: messageBody\n });\n\n return result;\n }\n}\n","export function dateToUnixTimestamp(date: Date): number {\n return Math.floor(date.getTime() / 1000);\n}\n\nexport function unixTimestampToDate(timestamp: number): Date {\n return new Date(timestamp * 1000);\n}\n\nexport function addOneHour(date: Date): Date {\n return new Date(date.getTime() + 60 * 60 * 1000);\n}\n","import { Address, BitString, Cell, Slice, beginCell, contractAddress, crc32c, toNano } from '@ton/core';\n\nexport function stringToSlice(str: string): Slice {\n return beginCell().storeStringTail(str).endCell().asSlice();\n}\n\nexport function sliceToString(slice: Slice): string {\n const cell = beginCell().storeSlice(slice).endCell();\n return cell.beginParse().loadStringTail();\n}\n\nexport function stringToInt(str: string): number {\n return str ? parseInt(Buffer.from(str).toString('hex'), 16) : 0;\n}\n\nexport function intToString(int: number): string {\n return Buffer.from(int.toString(16), 'hex').toString('utf-8');\n}\n\nexport function bufferToInt(buf: Buffer): number {\n return buf.readUInt32BE(0);\n}\n\nexport function intToBuffer(int: number): Buffer {\n return Buffer.from(int.toString(16), 'hex');\n}\n\nexport function sliceToAddress(slice: Slice): Address {\n const cell = beginCell().storeSlice(slice).endCell();\n return cell.beginParse().loadAddress();\n}\n\nexport function addressToSlice(address: Address): Slice {\n return beginCell().storeAddress(address).endCell().asSlice();\n}\n\nexport function stringToBitString(str: string): BitString {\n return new BitString(Buffer.from(str), 0, str.length * 8);\n}\n\nexport function bitStringToString(bits: BitString, len: number): string {\n const decoder = new TextDecoder();\n const subBuffer = bits.subbuffer(0, len);\n\n return subBuffer ? decoder.decode(subBuffer) : '';\n}\n\nexport function stringToCell(str: string): Cell {\n return beginCell().storeStringTail(str).endCell();\n}\n\nexport function cellToString(cell: Cell): string {\n return cell.beginParse().loadStringTail();\n}\n\nexport function stringToCrc32(str: string): number {\n return crc32c(Buffer.from(str)).readUint32BE();\n}\n\nexport function getContractAddress(code: Cell, data: Cell): Address {\n return contractAddress(0, { code, data });\n}\n\nexport function arraysToCell(arrays: (Slice | Cell | Address | number)[], bits = 32): Cell {\n const cell = beginCell();\n\n arrays.forEach((item) => {\n if (item instanceof Slice) {\n cell.storeSlice(item);\n } else if (item instanceof Cell) {\n cell.storeRef(item);\n } else if (item instanceof Address) {\n cell.storeAddress(item);\n } else if (typeof item === 'number') {\n cell.storeUint(item, bits);\n }\n });\n\n return cell.endCell();\n}\n\nexport function coinsToSlice(coins: string): Slice {\n return beginCell().storeCoins(toNano(coins)).endCell().asSlice();\n}\n","import {\n Address,\n beginCell,\n Builder,\n Cell,\n Contract,\n contractAddress,\n ContractProvider,\n Dictionary,\n Sender,\n SendMode,\n Slice,\n toNano,\n TupleItem\n} from '@ton/core';\nimport { CodeType, dateToUnixTimestamp, intToString, OpCode, stringToInt, unixTimestampToDate } from '../utils';\n\nexport type MerkleTokenDistributorConfig = {\n version: string;\n adminAddress: Address;\n root: bigint;\n deployer: Address;\n startTime: Date;\n endTime: Date;\n leafCode: Cell;\n claimFee?: bigint;\n claimFeeAddress?: Address;\n paused?: boolean;\n feelessThreshold?: bigint;\n};\n\nexport function tokenDistributorConfigToCell(config: MerkleTokenDistributorConfig): Cell {\n const {\n version,\n adminAddress,\n deployer,\n endTime,\n leafCode,\n root,\n startTime,\n claimFee,\n claimFeeAddress,\n paused = false,\n feelessThreshold = 0\n } = config;\n let c2 = beginCell()\n .storeCoins(claimFee ?? 0)\n .storeUint(claimFeeAddress ? 1 : 0, 1);\n\n if (claimFeeAddress) {\n c2 = c2.storeAddress(claimFeeAddress);\n }\n\n c2 = c2\n .storeUint(paused ? 1 : 0, 1)\n .storeCoins(feelessThreshold)\n .storeCoins(0);\n\n const c1 = beginCell()\n .storeAddress(deployer)\n .storeUint(dateToUnixTimestamp(startTime), 32)\n .storeUint(dateToUnixTimestamp(endTime), 32)\n .storeRef(leafCode)\n .endCell();\n\n return beginCell()\n .storeUint(stringToInt(version), 64)\n .storeAddress(adminAddress)\n .storeUint(root, 256)\n .storeRef(c1)\n .storeRef(c2.endCell())\n .endCell();\n}\n\nexport type TokenDistributorEntry = {\n address: Address;\n claimableAmount: bigint;\n claimableTimestamp: number;\n};\n\nexport const tokenDistributorEntryValue = {\n serialize: (src: TokenDistributorEntry, buidler: Builder) => {\n buidler.storeAddress(src.address).storeCoins(src.claimableAmount).storeUint(src.claimableTimestamp, 32);\n },\n parse: (src: Slice) => {\n return {\n address: src.loadAddress(),\n claimableAmount: src.loadCoins(),\n claimableTimestamp: src.loadUint(32)\n };\n }\n};\n\nexport function generateEntriesDictionary(entries: TokenDistributorEntry[]): Dictionary<bigint, TokenDistributorEntry> {\n const dict: Dictionary<bigint, TokenDistributorEntry> = Dictionary.empty(\n Dictionary.Keys.BigUint(64),\n tokenDistributorEntryValue\n );\n\n for (let i = 0; i < entries.length; i++) {\n dict.set(BigInt(i), entries[i]);\n }\n\n return dict;\n}\n\nexport class MerkleTokenDistributor implements Contract {\n constructor(readonly address: Address, readonly init?: { code: Cell; data: Cell }) {}\n\n static createFromAddress(address: Address) {\n return new MerkleTokenDistributor(address);\n }\n\n static createFromConfig(config: MerkleTokenDistributorConfig, code: Cell, workchain = 0) {\n const data = tokenDistributorConfigToCell(config);\n const init = { code, data };\n return new MerkleTokenDistributor(contractAddress(workchain, init), init);\n }\n\n async sendDeploy(provider: ContractProvider, via: Sender, value: bigint) {\n await provider.internal(via, {\n value,\n sendMode: SendMode.PAY_GAS_SEPARATELY,\n body: beginCell().endCell()\n });\n }\n\n async getVersion(provider: ContractProvider): Promise<string> {\n const result = await provider.get('get_version', []);\n\n return intToString(Number(result.stack.readBigNumber()));\n }\n\n async getLeafAddress(provider: ContractProvider, index: bigint): Promise<Address> {\n const arg: TupleItem = {\n value: index,\n type: 'int'\n };\n const result = await provider.get('get_leaf_address', [arg]);\n\n return result.stack.readAddress();\n }\n\n async getRoot(provider: ContractProvider): Promise<bigint> {\n const result = await provider.get('get_root', []);\n\n return result.stack.readBigNumber();\n }\n\n async getTime(provider: ContractProvider): Promise<[Date, Date] | [null, null]> {\n const result = await provider.get('get_time', []);\n const stack = result.stack;\n\n try {\n return [unixTimestampToDate(stack.readNumber()), unixTimestampToDate(stack.readNumber())];\n } catch (e) {\n return [null, null];\n }\n }\n\n async getAdminAddress(provider: ContractProvider): Promise<Address> {\n const result = await provider.get('get_admin_address', []);\n\n return result.stack.readAddress();\n }\n\n async getClaimFee(provider: ContractProvider): Promise<bigint> {\n const result = await provider.get('get_claim_fee', []);\n\n return result.stack.readBigNumber();\n }\n\n async getClaimFeeAddress(provider: ContractProvider): Promise<Address | null> {\n const result = await provider.get('get_claim_fee_address', []);\n\n try {\n return result.stack.readAddress();\n } catch (e) {\n return null;\n }\n }\n\n async getPaused(provider: ContractProvider): Promise<boolean> {\n const result = await provider.get('get_paused', []);\n\n return result.stack.readNumber() === 1;\n }\n\n async getFeelessThreshold(provider: ContractProvider): Promise<bigint> {\n const result = await provider.get('get_feeless_threshold', []);\n\n return result.stack.readBigNumber();\n }\n\n async getAccumulatedFees(provider: ContractProvider): Promise<bigint> {\n const result = await provider.get('get_accumulated_fees', []);\n\n return result.stack.readBigNumber();\n }\n\n async getBalance(provider: ContractProvider): Promise<bigint> {\n const result = await provider.get('get_ton_balance', []);\n\n return result.stack.readBigNumber();\n }\n\n async sendChangeAdmin(provider: ContractProvider, via: Sender, newAdmin: Address) {\n const messageBody = beginCell().storeUint(OpCode.ChangeAdmin, 32).storeUint(0, 64).storeAddress(newAdmin).endCell();\n const result = await provider.internal(via, {\n value: '0.01',\n body: messageBody\n });\n\n return result;\n }\n\n async sendChangeCode(provider: ContractProvider, via: Sender, codeType: CodeType, newCode: Cell) {\n const messageBody = beginCell()\n .storeUint(OpCode.ChangeCode, 32)\n .storeUint(0, 64)\n .storeUint(codeType, 32)\n .storeRef(newCode)\n .endCell();\n const result = await provider.internal(via, {\n value: '0.01',\n body: messageBody\n });\n\n return result;\n }\n\n async sendChangeVersion(provider: ContractProvider, via: Sender, version: string) {\n const messageBody = beginCell()\n .storeUint(OpCode.ChangeVersion, 32)\n .storeUint(0, 64)\n .storeUint(stringToInt(version), 64)\n .endCell();\n const result = await provider.internal(via, {\n value: '0.01',\n body: messageBody\n });\n\n return result;\n }\n\n async sendWithdraw(provider: ContractProvider, via: Sender, amount: string) {\n const messageBody = beginCell()\n .storeUint(OpCode.Withdraw, 32)\n .storeUint(0, 64)\n .storeCoins(toNano(amount))\n .endCell();\n const result = await provider.internal(via, {\n value: '0.01',\n body: messageBody\n });\n\n return result;\n }\n\n async sendWithdrawFees(provider: ContractProvider, via: Sender) {\n const messageBody = beginCell().storeUint(OpCode.WithdrawFees, 32).storeUint(0, 64).endCell();\n const result = await provider.internal(via, {\n value: '0.1',\n body: messageBody\n });\n\n return result;\n }\n\n async sendSetBaseParams(provider: ContractProvider, via: Sender, startTime: Date, endTime: Date, root: bigint) {\n const messageBody = beginCell()\n .storeUint(OpCode.SetBaseParams, 32)\n .storeUint(0, 64)\n .storeUint(dateToUnixTimestamp(startTime), 32)\n .storeUint(dateToUnixTimestamp(endTime), 32)\n .storeUint(root, 256)\n .endCell();\n const result = await provider.internal(via, {\n value: '0.01',\n body: messageBody\n });\n return result;\n }\n\n async sendSetClaimFee(provider: ContractProvider, via: Sender, claimFee: bigint) {\n const messageBody = beginCell().storeUint(OpCode.SetClaimFee, 32).storeUint(0, 64).storeCoins(claimFee).endCell();\n const result = await provider.internal(via, {\n value: '0.01',\n body: messageBody\n });\n\n return result;\n }\n\n async sendSetClaimFeeAddress(provider: ContractProvider, via: Sender, claimFeeAddress: Address) {\n const messageBody = beginCell()\n .storeUint(OpCode.SetClaimFeeAddress, 32)\n .storeUint(0, 64)\n .storeAddress(claimFeeAddress)\n .endCell();\n const result = await provider.internal(via, {\n value: '0.01',\n body: messageBody\n });\n\n return result;\n }\n\n async sendSetPaused(provider: ContractProvider, via: Sender, paused: boolean) {\n const messageBody = beginCell()\n .storeUint(OpCode.SetPaused, 32)\n .storeUint(0, 64)\n .storeUint(paused ? 1 : 0, 1)\n .endCell();\n const result = await provider.internal(via, {\n value: '0.01',\n body: messageBody\n });\n\n return result;\n }\n\n async sendSetFeelessThreshold(provider: ContractProvider, via: Sender, feelessThreshold: bigint) {\n const messageBody = beginCell()\n .storeUint(OpCode.SetFeelessThreshold, 32)\n .storeUint(0, 64)\n .storeCoins(feelessThreshold)\n .endCell();\n const result = await provider.internal(via, {\n value: '0.01',\n body: messageBody\n });\n\n return result;\n }\n\n async sendClearClaimFeeAddress(provider: ContractProvider, via: Sender) {\n const messageBody = beginCell().storeUint(OpCode.ClearClaimFeeAddress, 32).storeUint(0, 64).endCell();\n const result = await provider.internal(via, {\n value: '0.01',\n body: messageBody\n });\n\n return result;\n }\n}\n","import { TonContractBaseClient, IAirdropOption } from './TonContractBaseClient';\nimport { Leaf, MerkleTokenDistributor } from './v21/wrappers';\nimport { Address, Cell, fromNano, toNano } from '@ton/core';\nimport { IAirdropClaim } from '../../types';\nimport LeafCode from './v21/build/Leaf.compiled.json';\nimport { isBeforeByUnix } from '../../utils';\n\nexport class TonAirdropClientV21 extends TonContractBaseClient {\n version = '21.0.0';\n\n constructor(option: IAirdropOption) {\n super(option);\n }\n\n async getVersion() {\n const airDropContract = await this.getAirdropContract();\n const version = await airDropContract.getVersion();\n this.version = version;\n return version;\n }\n\n getAirdropContract = async () => {\n const provider = await this.getTonClient();\n const contract = new MerkleTokenDistributor(Address.parse(this.address));\n return provider.open(contract);\n };\n\n getPaused = async () => {\n const airDropContract = await this.getAirdropContract();\n return airDropContract?.getPaused();\n };\n\n async getBaseParams() {\n const airDropContract = await this.getAirdropContract();\n const [startTime, endTime] = await airDropContract!.getTime();\n const root = await airDropContract?.getRoot();\n const adminAddress = await airDropContract?.getAdminAddress();\n\n const owner = Address.parse(adminAddress?.toString()).toString({ bounceable: false });\n\n const version = this.version || (await airDropContract.getVersion());\n\n const feelessThreshold = await airDropContract?.getFeelessThreshold();\n const paused = await airDropContract?.getPaused();\n return {\n startTime: startTime ? String(startTime?.valueOf() / 1000) : '',\n endTime: endTime ? String(endTime?.valueOf() / 1000) : '',\n root: root?.toString(),\n owner: owner,\n version,\n feelessThreshold: fromNano(feelessThreshold),\n paused\n };\n }\n\n async getFeeInfo() {\n const airDropContract = await this.getAirdropContract();\n const claimFee = await airDropContract.getClaimFee();\n const claimFeeReceiver = await airDropContract.getClaimFeeAddress();\n return {\n claimFee,\n claimFeeReceiver\n };\n }\n\n getFeelessThreshold = async () => {\n const airDropContract = await this.getAirdropContract();\n return airDropContract?.getFeelessThreshold();\n };\n\n claim = async (claimData: IAirdropClaim & { value: string | null }, options?: { onLoading?: () => void }) => {\n const provider = await this.getTonClient();\n const airdropContract = await this.getAirdropContract();\n const index = BigInt(claimData.index);\n const claimFee = claimData.value ? toNano(claimData.value) : await airdropContract!.getClaimFee();\n const proof = Cell.fromBase64(claimData.proofBoc);\n\n const leafCode = Cell.fromBoc(Buffer.from(LeafCode.hex, 'hex'))[0];\n\n const leaf = provider.open(\n Leaf.createFromConfig(\n {\n distributor: airdropContract.address,\n index\n },\n leafCode\n )\n );\n\n leaf.sendClaim(this.connection.senderDeploy, proof, index, claimFee);\n const res = await this.waitForTransaction(options?.onLoading);\n\n // while (!(await provider.isContractDeployed(leafAddress))) {\n // console.log('waiting for leaf to deploy');\n // await new Promise((resolve) => setTimeout(resolve, 1000));\n // }\n // // const res = await this.waitForTransactionForLegacy();\n if (res) {\n console.log(res, res.event_id, 'res');\n }\n return res;\n };\n\n checkClaimed = async (claimData: IAirdropClaim) => {\n try {\n if (isBeforeByUnix(claimData.unlockingAt)) return false;\n const provider = await this.getTonClient();\n const airdropContract = await this.getAirdropContract();\n\n const index = BigInt(claimData.index);\n\n const leafAddress = await airdropContract.getLeafAddress(index);\n\n const isDeployed = await provider.isContractDeployed(leafAddress);\n\n console.log(index, leafAddress.toString(), isDeployed, 'index');\n\n if (!isDeployed) return false;\n\n const leaf = new Leaf(leafAddress);\n const leafContract = provider.open(leaf);\n const isUsed = await leafContract?.getIsUsed();\n\n console.log(isUsed, leafAddress.toString(), 'use');\n return isUsed;\n } catch (e: any) {\n console.log(e, 'check claim err');\n return false;\n }\n };\n}\n","{\"hex\":\"b5ee9c7241022a01000887000114ff00f4a413f4bcf2c80b01020162050202015804030025bbc01f057f844f842c8cb00f843cf16cb3fc98000dbaf13f057f84280202c918060201480c0702012009080019d8164658000e78b659fe4f6aa40201200b0a0025f76a268698000fc317d2000fc31e99f987c32400276be401c1cb232c072c004b2c1f2fff2743e900c20103a3c00d04f62082300de0b6b3a7640000ba9b30823025b946ebc0b36173e08200c354218235c702bd3a30fc0000be228238070c1cc73b00c80000bbb0f2f420c1008e1282300de0b6b3a76400005202a3f04712a984e020821b782dace9d9aa18bee30f01a7648238056bc75e2d6310000021822056bc75e2d631aa18bee300211716150e02f4822056bc75e2d631aa17be8e2701822056bc75e2d631aa17a101824adf0ab5a80a22c61ab5a7008238056bc75e2d63100000a984de21822056bc75e2d631aa16be8e2601822056bc75e2d631aa16a10182403f1fce3da636ea5cf8508238056bc75e2d63100000a984de21823815af1d78b58c400000bee30021140f02f482380ad78ebc5ac6200000be8e260182380ad78ebc5ac6200000a1018238280e60114edb805d038238056bc75e2d63100000a984de218238056bc75e2d63100000be8e26018238056bc75e2d63100000a10182380ebc5fb417461211108238056bc75e2d63100000a984de218232b5e3af16b1880000bee30021131001ec82315af1d78b58c40000be8e250182315af1d78b58c40000a101823806f5f17757889379378238056bc75e2d63100000a984de218238056bc75e2d6310000021a0511382380ad78ebc5ac6200000a98466a0511382381043561a8829300000a98466a05113823815af1d78b58c400000a98466a051131101ea82381b1ae4d6e2ef500000a98466a0511382382086ac351052600000a98466a05113823825f273933db5700000a98466a05113822056bc75e2d631aa16a98466a05113823830ca024f987b900000a98466a0511382383635c9adc5dea00000a98466a0511382383ba1910bf341b00000a98466a0031200428238410d586a20a4c00000a98412a08238056bc75e2d63100000a984018064a984004a018232b5e3af16b1880000a101823808f00f760a4b2db55d8238056bc75e2d63100000a984004c01823815af1d78b58c400000a101823927fa27722cc06cc5e28238056bc75e2d63100000a984003830822056bc75e2d631aa18a18261855144814a7ff805980ff0084000005020821b782dace9d9aa17be8e18821b782dace9d9aa17a182501425982cf597cd205cef73809171e20042821b782dace9d9aa18a18288195e54c5dd42177f53a27172fa9ec630262827aa2302012024190103aee01a01f62082300de0b6b3a7640000b98e1182300de0b6b3a76400005202a984f03ba3e0702182b05803bcc5cb9634ba4cfb2213f784019318ed4dcb6017880faa35be8e23308288195e54c5dd42177f53a27172fa9ec630262827aa23a904821b782dace9d9aa18de2182708bcc0026baae9e45e470190267a230cfaa18be1b02ea8e1c0182501425982cf597cd205cef7380a90401821b782dace9d9aa17a0dea76401a764208261855144814a7ff805980ff0084000be8e2a8238056bc75e2d631000008261855144814a7ff805980ff0084000a98401822056bc75e2d631aa18a001de20824adf0ab5a80a22c61ab5a700bee30020231c02f882403f1fce3da636ea5cf850be8e268238056bc75e2d6310000082403f1fce3da636ea5cf850a98401822056bc75e2d631aa16a001de20823927fa27722cc06cc5e2be8e268238056bc75e2d63100000823927fa27722cc06cc5e2a98401823815af1d78b58c400000a001de208238280e60114edb805d03bee30020221d02f482380ebc5fb41746121110be8e268238056bc75e2d6310000082380ebc5fb41746121110a984018238056bc75e2d63100000a001de20823808f00f760a4b2db55dbe8e258238056bc75e2d63100000823808f00f760a4b2db55da984018232b5e3af16b1880000a001de20823806f5f1775788937937bee30020211e01ec823806248f33704b286603be8e258238056bc75e2d63100000823806248f33704b286603a984018230ad78ebc5ac620000a001de20823805c548670b9510e7acbe8e258238056bc75e2d63100000823805c548670b9510e7aca98401823056bc75e2d6310000a001de208238056bc75e2d63100000a11f01fe8238056bc75e2d631000005122a012a98453008238056bc75e2d63100000a9845c8238056bc75e2d63100000a9842073a90413a051218238056bc75e2d63100000a9842075a90413a051218238056bc75e2d63100000a9842077a90413a051218238056bc75e2d63100000a9842079a90413a0598238056bc75e2d6310000020001ca984800ba904a0aa00a08064a904004a8238056bc75e2d63100000823806f5f1775788937937a9840182315af1d78b58c40000a001004c8238056bc75e2d631000008238280e60114edb805d03a9840182380ad78ebc5ac6200000a001004e8238056bc75e2d63100000824adf0ab5a80a22c61ab5a700a98401822056bc75e2d631aa17a00102012026250063a46410e0804c45896c678b00d180ef381038c70a023d5486531812d40950025503815210e0002298731819d5016780e4e84001d7d0c8871c02497c0f83434c0c05c6c2497c0f83e900c0074c7f4cfc8a08426871dda6ea38d8d16fc15fe10f1c17ca8f4cff4c03e1104eebcabdc3e10fe113c163000244c383e900c1c20043232c15633c5887e80b2dab260103ec03800a084140f4725eeb8c097c12103fcbc22702fcf057038210042c1d80bef2b0f842c001f268d4d33f30f864885210f90001f900baf26420d739f2aad30701c003f2ab21d765aa00a6025220f9415f03f84401d4308040f40e6fa131f2ad71f843f844f058f842f8448210d0d5f405c8cb1f15cb3f12cc13cb3f12cb0001cf16c9718010c8cb05f843cf1670fa02cb6accc9292800088306fb0000006e3bece9\"}","import { SuiClient, getFullnodeUrl } from '@mysten/sui/client';\nimport { bcs } from '@mysten/sui/bcs';\nimport { Transaction } from '@mysten/sui/transactions';\nimport { signTransaction, Wallet } from '@mysten/wallet-standard';\n\nexport interface SuiContractInfo {\n packageId: string;\n chainId?: 'testnet' | 'mainnet';\n walletClient: Wallet;\n coinType: string;\n distributorId?: string;\n chainRpc?: string;\n}\n\nexport abstract class SuiContractClientBase {\n protected packageId: string;\n protected chainId: 'testnet' | 'mainnet';\n protected moduleName: string;\n protected distributorId?: string;\n protected wallet: Wallet;\n protected client: SuiClient;\n\n constructor(contractInfo: SuiContractInfo & { moduleName: string }) {\n this.packageId = contractInfo.packageId;\n this.chainId = contractInfo.chainId ? contractInfo.chainId : 'mainnet';\n this.moduleName = contractInfo.moduleName;\n this.distributorId = contractInfo.distributorId;\n this.wallet = contractInfo.walletClient;\n this.client = new SuiClient({ network: this.chainId, url: contractInfo.chainRpc || getFullnodeUrl(this.chainId) });\n }\n\n async signAndExecute(tx: Transaction) {\n if (!this.wallet) {\n throw new Error('Wallet not connected');\n }\n if (!this.wallet.features?.['sui:signTransaction'] && !this.wallet.features?.['sui:signTransactionBlock']) {\n throw new Error(\"Wallet doesn't support transaction signing\");\n }\n\n const accounts = await this.wallet.accounts;\n const client = this.client;\n if (!accounts || accounts.length === 0) {\n throw new Error('No wallet account connected');\n }\n const signerAccount = accounts[0];\n\n // 设置交易发送者\n if ('setSenderIfNotSet' in tx) {\n tx.setSenderIfNotSet(signerAccount.address);\n }\n\n console.log(\n tx,\n await tx.toJSON({\n supportedIntents: [],\n client\n })\n );\n\n // 准备链标识,匹配 hook 里的格式\n const chain = `sui:${this.chainId}` as `${string}:${string}`;\n\n // 调用 wallet-standard 的 signTransaction 来签名\n const { signature, bytes } = await signTransaction(this.wallet, {\n transaction: {\n async toJSON() {\n return typeof tx === 'string'\n ? tx\n : await tx.toJSON({\n supportedIntents: [],\n client\n });\n }\n },\n account: signerAccount,\n chain: chain\n });\n\n // 发送交易\n const result = await this.client.executeTransactionBlock({\n transactionBlock: bytes,\n signature,\n options: {\n showEffects: true,\n showEvents: true\n }\n });\n\n // 等待交易确认\n await this.waitForTx(result.digest);\n\n return result;\n }\n\n protected async waitForTx(digest: string) {\n return this.client.waitForTransaction({\n digest,\n options: { showEffects: true, showEvents: true }\n });\n }\n\n /**\n * 读取合约返回值(只读调用)\n * @param func Move function 名\n * @param typeArgs 类型参数\n * @param args Move function 参数\n */\n async readMoveFunction<T = any>(func: string, typeArgs: string[] = [], args: any[] = []): Promise<T> {\n const DEFAULT_SENDER = '0x0000000000000000000000000000000000000000000000000000000000000001';\n const sender = this.wallet?.accounts?.[0]?.address || DEFAULT_SENDER;\n if (!sender) throw new Error('No wallet account selected');\n\n // 创建 Transaction\n const tx = new Transaction();\n tx.moveCall({\n target: `${this.packageId}::${this.moduleName}::${func}`,\n typeArguments: typeArgs,\n arguments: args.map((arg) => {\n // 自动把纯数据转换成 Move 所需格式\n if (Array.isArray(arg)) return tx.pure(bcs.vector(bcs.vector(bcs.u8())).serialize(arg)); // vector<u8>\n if (typeof arg === 'string' && arg.startsWith('0x')) return tx.object(arg); // object ID\n return tx.pure(arg); // 纯量 u64、address 等\n })\n });\n\n // devInspectTransactionBlock 不消耗 Gas\n const res = await this.client.devInspectTransactionBlock({\n sender,\n transactionBlock: tx // ✅ 这里传 Transaction,不再报 TS 类型错误\n });\n\n console.log(res, 'res');\n\n if (!res || !res.results?.[0]?.returnValues) {\n throw new Error(`Failed to read ${func}`);\n }\n\n return res.results[0].returnValues[0] as T;\n }\n\n /**\n * 查询 Distributor MoveObject 的 fields\n */\n async getObjectFields(objectId: string) {\n const res = await this.client.getObject({\n id: objectId,\n options: { showContent: true }\n });\n\n if (res.data?.content?.dataType !== 'moveObject') {\n throw new Error(`Object ${objectId} is not a moveObject`);\n }\n\n return res.data.content.fields;\n }\n\n async getSharedObjectRef(tx: Transaction, objectId: string, mutable: boolean) {\n const obj = await this.client.getObject({\n id: objectId,\n options: { showOwner: true }\n });\n\n console.log(obj, 'obj');\n\n if (!obj.data) {\n throw new Error(`Object ${objectId} not found`);\n }\n\n if (!(obj.data.owner as any)?.Shared) {\n throw new Error(`Object ${objectId} is not a shared object`);\n }\n\n const initialSharedVersion = (obj.data.owner as any).Shared.initial_shared_version;\n\n return tx.sharedObjectRef({\n objectId,\n initialSharedVersion: Number(initialSharedVersion),\n mutable\n });\n }\n}\n","import { SuiContractClientBase, SuiContractInfo } from './SuiContractClient';\nimport { Transaction } from '@mysten/sui/transactions';\nimport { bcs } from '@mysten/sui/bcs';\n\nexport class SuiBaseDistributorClient extends SuiContractClientBase {\n constructor(info: SuiContractInfo) {\n super({ ...info, moduleName: 'base_distributor' }); // 固定 base_distributor\n }\n\n async createDistributor(coinType: string, projectId: string, projectRegistryId: string) {\n const tx = new Transaction();\n // 使用 Uint8Array 编码 vector<u8>\n const projectIdBytes = bcs.vector(bcs.u8()).serialize(Array.from(Buffer.from(projectId, 'utf8')));\n\n tx.moveCall({\n target: `${this.packageId}::${this.moduleName}::create_and_share_distributor`,\n typeArguments: [coinType],\n arguments: [tx.pure(projectIdBytes), tx.object(projectRegistryId)]\n });\n\n const result = await this.signAndExecute(tx);\n\n let distributorId: string | undefined;\n if (result.effects?.created) {\n const createdObj = result.effects.created.find(\n (obj: any) => obj.owner === 'Shared' || obj.owner?.Shared // 某些版本字段是对象\n );\n if (createdObj) {\n distributorId = createdObj.reference.objectId;\n }\n }\n\n return {\n txResult: result,\n distributorId\n };\n }\n\n async setBaseParams(\n coinType: string,\n startTime: string | number,\n endTime: string | number,\n authorizedSigner: string,\n ownerCapId: string\n ) {\n const tx = new Transaction();\n tx.moveCall({\n target: `${this.packageId}::${this.moduleName}::set_base_params`,\n typeArguments: [coinType],\n arguments: [\n tx.object(this.distributorId!),\n tx.pure.u64(startTime),\n tx.pure.u64(endTime),\n tx.pure.address(authorizedSigner),\n tx.object(ownerCapId)\n ]\n });\n return this.signAndExecute(tx);\n }\n\n async togglePause(coinType: string, ownerCapId: string) {\n const tx = new Transaction();\n tx.moveCall({\n target: `${this.packageId}::${this.moduleName}::toggle_pause`,\n typeArguments: [coinType],\n arguments: [tx.object(this.distributorId!), tx.object(ownerCapId)]\n });\n return this.signAndExecute(tx);\n }\n\n async getDistributorInfo() {\n const res = await this.client.getObject({\n id: this.distributorId!,\n options: { showContent: true }\n });\n const content: any = (res as any).data?.content as any;\n const fields = content?.fields as any;\n const match = content?.type.match(/<(.+)>$/);\n const coinType = match ? match[1] : '';\n return {\n startTime: fields?.start_time,\n endTime: fields?.end_time,\n signer: fields?.authorized_signer,\n ownerCapId: fields?.owner_cap_id,\n version: fields?.version ? String.fromCharCode(...(fields.version as number[])) : undefined,\n feeCollector: fields?.fee_collector_config,\n token: coinType,\n tokenBalance: fields?.token_balance,\n paused: fields?.paused\n };\n }\n\n async getVersion() {\n const { version } = await this.getDistributorInfo();\n return version;\n }\n\n async getPaused() {\n const { paused } = await this.getDistributorInfo();\n return paused;\n }\n\n async getClaimFee(amount: bigint) {\n // const { token } = await this.getDistributorInfo();\n // const fee = await this.readMoveFunction<{ Some?: string; None?: null }>(\n // 'get_claim_fee',\n // [token],\n // [amount]\n // );\n // return fee;\n return 0n;\n }\n\n async batchFetchClaimed(coinType: string, claimIds: string[]): Promise<boolean[]> {\n const claimIdsBytes = claimIds.map((id) => Array.from(new TextEncoder().encode(id)));\n const res = await this.readMoveFunction<[number[], string]>(\n 'get_claim_status',\n [coinType],\n [this.distributorId!, claimIdsBytes]\n );\n\n const [data, type] = res;\n\n // 使用 BCS 解码 vector<bool>\n if (type === 'vector<bool>' && data) {\n // data 通常是 Uint8Array 格式\n const uint8Array = new Uint8Array(data);\n return Array.from(bcs.vector(bcs.bool()).parse(uint8Array));\n }\n return [];\n }\n\n async getDistributorId(projectId: string, projectRegistryId: string) {\n const distributorId = await this.readMoveFunction<{ Some?: string; None?: null }>(\n 'get_distributor_by_project_id',\n [],\n [projectRegistryId, Array.from(Buffer.from(projectId, 'utf8'))]\n );\n return distributorId.Some;\n }\n\n async getOwnerCapId() {\n const objects = await this.client.getOwnedObjects({\n owner: this.wallet.accounts[0].address,\n filter: {\n StructType: `${this.packageId}::ownable::OwnerCap`\n }\n });\n\n // 获取 OwnerCap 对象ID\n const ownerCapId = objects.data[0]?.data?.objectId;\n\n return ownerCapId;\n }\n}\n","import { Transaction } from '@mysten/sui/transactions';\nimport { SuiContractClientBase, SuiContractInfo } from './SuiContractClient';\nimport { bcs } from '@mysten/sui/bcs';\nimport { ISignatureClaimData } from '../../types';\n\nexport class SuiDistributorWithFeeClient extends SuiContractClientBase {\n constructor(info: SuiContractInfo) {\n super({ ...info, moduleName: 'fungible_token_with_fees_distributor' });\n }\n\n private async prepareFeePayment(totalFeesStr: string, feeTokenType: string, tx: Transaction): Promise<any> {\n const totalFees = BigInt(totalFeesStr);\n\n // 获取用户的 coins\n const coins = await this.client.getCoins({\n owner: this.wallet.accounts[0].address,\n coinType: feeTokenType\n });\n\n // 找到足够余额的单个 coin\n const suitableCoin = coins.data.find((coin) => BigInt(coin.balance) >= totalFees);\n\n if (suitableCoin) {\n // 如果coin的余额正好等于所需费用,直接使用\n if (BigInt(suitableCoin.balance) === totalFees) {\n return tx.object(suitableCoin.coinObjectId);\n }\n // 如果coin的余额大于所需费用,需要分割coin\n const [feeCoin] = tx.splitCoins(tx.object(suitableCoin.coinObjectId), [tx.pure(bcs.u64().serialize(totalFees))]);\n return feeCoin;\n }\n\n // 如果没有单个足够的 coin,需要合并多个 coins\n // 这里可以实现 coin 合并逻辑或抛出错误\n throw new Error(`Insufficient balance. Required: ${totalFeesStr}, Available coins: ${coins.data.length}`);\n }\n\n async claimWithFee(coinType: string, feeCollector: string, data: ISignatureClaimData[]) {\n const recipients = data.map((item) => item.recipient);\n const claimIds = data.map((item) => item.claimId);\n const signatures = data.map((item) => item.signature);\n\n function encodeClaimDataWithFees(timestamp: bigint, amount: bigint, fees: bigint): number[] {\n const tsBytes = bcs.u64().serialize(timestamp).toBytes(); // 8B, LE\n const amtBytes = bcs.u64().serialize(amount).toBytes(); // 8B, LE\n const feeBytes = bcs.u64().serialize(fees).toBytes(); // 8B, LE\n return Array.from(new Uint8Array([...tsBytes, ...amtBytes, ...feeBytes])); // 24B\n }\n const datas = data.map((item) => {\n const claimData = item.data as {\n claimableTimestamp: string;\n claimableAmount: string;\n };\n return encodeClaimDataWithFees(\n BigInt(claimData.claimableTimestamp),\n BigInt(claimData.claimableAmount),\n BigInt(item.fees || '0')\n );\n });\n const totalFees = data.map((item) => BigInt(item.fees || '0')).reduce((sum, fee) => sum + fee, BigInt(0));\n const tx = new Transaction();\n // 获取 distributor (mutable)\n const distributor = await this.getSharedObjectRef(tx, this.distributorId!, true);\n\n // 获取 feeCollector (mutable)\n const feeConfig = await this.getSharedObjectRef(tx, feeCollector, true);\n\n // 获取 clock (immutable, Sui 系统对象)\n const clock = await this.getSharedObjectRef(tx, '0x6', false);\n\n const hexToBytes = (hex: string) => Array.from(Buffer.from(hex.replace(/^0x/, ''), 'hex'));\n\n const feeTokenType = '0x2::sui::SUI'; // 或其他费用代币类型\n\n // 在splitCoins之前添加余额检查\n const gasBalance = await this.client.getBalance({\n owner: this.wallet.accounts[0].address,\n coinType: feeTokenType\n });\n\n if (BigInt(gasBalance.totalBalance) < totalFees) {\n throw new Error(`Insufficient SUI balance. Required: ${totalFees}, Available: ${gasBalance.totalBalance}`);\n }\n\n const [feeCoin] = tx.splitCoins(\n tx.gas, // 用 gas 对象作为源\n [tx.pure(bcs.u64().serialize(totalFees))]\n );\n\n // 调用 claim_with_fees 方法\n tx.moveCall({\n target: `${this.packageId}::${this.moduleName}::claim_with_fees`,\n arguments: [\n distributor,\n feeConfig,\n tx.pure(bcs.vector(bcs.Address).serialize(recipients as string[])), // recipients: vector<address>\n tx.pure(\n bcs.vector(bcs.vector(bcs.u8())).serialize(claimIds.map((id) => Array.from(new TextEncoder().encode(id))))\n ), // claim_ids: vector<vector<u8>>\n tx.pure(bcs.vector(bcs.vector(bcs.u8())).serialize(datas)), // claim_datas: vector<vector<u8>>\n tx.pure(bcs.vector(bcs.vector(bcs.u8())).serialize(signatures.map((sig) => hexToBytes(sig)))), // signatures: vector<vector<u8>>\n feeCoin,\n clock\n ],\n typeArguments: [coinType, feeTokenType] // Token类型, Fee类型\n });\n\n const res = await this.signAndExecute(tx);\n return res.digest;\n }\n}\n","import { getChainConfig } from '../../common';\nimport { ISignatureClaimData } from '../../types';\nimport { SuiBaseDistributorClient } from './BaseDistributorClient';\nimport { SuiDistributorWithFeeClient } from './DistributorWithFeeClient';\nimport { SuiContractInfo } from './SuiContractClient';\n\nexport class SignatureAirdropService {\n options: SuiContractInfo;\n constructor(options: Omit<SuiContractInfo, 'packageId'>) {\n const chainConfig = getChainConfig(options.chainId as any);\n this.options = {\n ...options,\n packageId: chainConfig.contractAddress\n };\n }\n\n private get baseDistributorClient(): SuiBaseDistributorClient {\n if (!this.options) {\n throw new Error('options is empty');\n }\n\n return new SuiBaseDistributorClient(this.options);\n }\n\n private get feeDistributorClient(): SuiDistributorWithFeeClient {\n if (!this.options) {\n throw new Error('options is empty');\n }\n\n return new SuiDistributorWithFeeClient(this.options);\n }\n\n async getVersion() {\n return this.baseDistributorClient.getVersion();\n }\n\n async getClaimFee(address: string, amount: bigint): Promise<bigint> {\n const fee = await this.baseDistributorClient.getClaimFee(amount);\n return fee;\n }\n\n async batchFetchClaimed(userClaimIds: string[]): Promise<boolean[]> {\n const res = await this.baseDistributorClient.batchFetchClaimed(this.options.coinType, userClaimIds);\n return res;\n }\n\n async getPaused() {\n return this.baseDistributorClient.getPaused();\n }\n\n async getContractInfo() {\n return this.baseDistributorClient.getDistributorInfo();\n }\n\n async claim(data: ISignatureClaimData[], recipient?: string) {\n const { feeCollector } = await this.getContractInfo();\n return this.feeDistributorClient.claimWithFee(this.options.coinType, feeCollector, data);\n }\n}\n","import { Aptos, AptosConfig, Network } from '@aptos-labs/ts-sdk';\nimport { useWallet } from '@aptos-labs/wallet-adapter-react';\n\nexport type AptosContractInfo = {\n address: string;\n chainId: string;\n account?: ReturnType<typeof useWallet>;\n module: string;\n chainRpc: string;\n};\n\nexport class AptosContractClientBase {\n protected address: string;\n protected chainId: string;\n protected wallet?: ReturnType<typeof useWallet>;\n protected client: Aptos;\n protected module: string;\n\n constructor(contractInfo: AptosContractInfo) {\n this.address = contractInfo.address;\n this.chainId = contractInfo.chainId;\n this.wallet = contractInfo.account;\n this.module = contractInfo.module;\n this.client = this.initClient(contractInfo.chainRpc);\n }\n\n private initClient(chainRpc: string): Aptos {\n const chainIdMap = {\n '2': Network.TESTNET,\n '1': Network.MAINNET\n };\n const config = new AptosConfig({\n network: chainIdMap[this.chainId as keyof typeof chainIdMap],\n fullnode: chainRpc\n });\n\n return new Aptos(config);\n }\n\n protected async invokeContractRead(method: string, args: any[]): Promise<any> {\n try {\n const viewPayload = {\n function: `${this.address}::${this.module}::${method}` as `${string}::${string}::${string}`,\n functionArguments: args\n };\n\n return await this.client.view({ payload: viewPayload });\n } catch (error) {\n console.error(`Error invoking read method ${method}:`, error);\n throw error;\n }\n }\n\n protected async invokeContractWrite(method: string, args: any[]): Promise<string> {\n if (!this.wallet) {\n throw new Error('Account not connected');\n }\n\n try {\n const response = await this.wallet.signAndSubmitTransaction({\n sender: this.wallet.account?.address,\n data: {\n function: `${this.address}::${this.module}::${method}`,\n functionArguments: args\n }\n });\n await this.client.waitForTransaction({\n transactionHash: response.hash\n });\n return response.hash;\n } catch (error) {\n console.error(`Error invoking write method ${method}:`, error);\n\n throw error;\n }\n }\n\n async signTransaction({\n functionName,\n functionArguments,\n typeArguments\n }: {\n functionName: `${string}::${string}::${string}`;\n functionArguments: any[];\n typeArguments?: string[];\n }) {\n if (!this.wallet) {\n throw new Error('Account not connected');\n }\n\n try {\n const response = await this.wallet.signAndSubmitTransaction({\n sender: this.wallet.account?.address,\n data: {\n function: functionName,\n functionArguments: functionArguments,\n typeArguments: typeArguments || []\n }\n });\n const res = await this.client.waitForTransaction({\n transactionHash: response.hash\n });\n\n return response.hash;\n } catch (error) {\n throw error;\n }\n }\n}\n","import { AptosContractClientBase, AptosContractInfo } from './AptosContractClient';\nimport { getChainConfig } from '../../common';\n\nexport class AptosAirdropContractClient extends AptosContractClientBase {\n airdropAddress: string;\n constructor(options: Omit<AptosContractInfo, 'module'>) {\n const chainConfig = getChainConfig(options.chainId as any);\n super({\n ...options,\n address: chainConfig.contractAddress,\n module: 'merkle_distributor_with_fees'\n });\n this.airdropAddress = options.address;\n }\n\n private hexToBytes(hexStr: string): number[] {\n const hex = hexStr.startsWith('0x') ? hexStr.slice(2) : hexStr;\n return Array.from(Buffer.from(hex, 'hex'));\n }\n\n async claim({ proof, group, data, value }: { proof: string[]; group: string; data: string; value?: bigint }) {\n const dataBytes = this.hexToBytes(data);\n const proofBytes = proof.map((p) => this.hexToBytes(p));\n\n return await this.invokeContractWrite('claim', [this.airdropAddress, proofBytes, dataBytes]);\n }\n}\n","import { AptosContractClientBase, AptosContractInfo } from './AptosContractClient';\nimport { getChainConfig } from '../../common';\n\nexport class AptosBaseDistributorContractClient extends AptosContractClientBase {\n airdropAddress: string;\n constructor(options: Omit<AptosContractInfo, 'module'>) {\n const chainConfig = getChainConfig(options.chainId as any);\n super({\n ...options,\n address: chainConfig.contractAddress,\n module: 'base_distributor'\n });\n this.airdropAddress = options.address;\n }\n\n async getContractInfo() {\n const data = await this.invokeContractRead('get_distribution_info', [this.airdropAddress]);\n console.log('data', data);\n const [root, token, startTime, endTime, owner, version, paused] = data;\n return {\n root,\n token,\n startTime: Number(startTime),\n endTime: Number(endTime),\n owner,\n version: version,\n paused\n };\n }\n\n async deposit({ amount, token }: { amount: bigint; token: string }): Promise<string> {\n return await this.signTransaction({\n functionName: `0x1::primary_fungible_store::transfer`,\n functionArguments: [token, this.airdropAddress, amount],\n typeArguments: ['0x1::fungible_asset::Metadata']\n });\n }\n\n async isLeafUsed(leaf: string): Promise<boolean> {\n const leafBytes = leaf.startsWith('0x')\n ? Array.from(Buffer.from(leaf.slice(2), 'hex'))\n : Array.from(Buffer.from(leaf, 'hex'));\n const res = await this.invokeContractRead('is_leaf_used', [this.airdropAddress, leafBytes]);\n console.log('res', res);\n return res[0];\n }\n\n async batchFetchClaimed(leafs: string[]) {\n const res = await Promise.all(\n leafs.map(async (leaf) => {\n return this.isLeafUsed(leaf);\n })\n );\n return res.map((info) => ({\n result: info || false,\n status: 'success'\n }));\n }\n\n private hexToBytes(hexStr: string): number[] {\n const hex = hexStr.startsWith('0x') ? hexStr.slice(2) : hexStr;\n return Array.from(Buffer.from(hex, 'hex'));\n }\n\n async claim({ proof, data }: { proof: string[]; group: string; data: string; value?: bigint; extraData?: string }) {\n const groupBytes = this.hexToBytes('');\n const dataBytes = this.hexToBytes(data);\n const proofBytes = proof.map((p) => this.hexToBytes(p));\n\n return await this.invokeContractWrite('claim', [this.airdropAddress, proofBytes, groupBytes, dataBytes]);\n }\n\n async getPaused() {\n const res = await this.getContractInfo();\n return res.paused;\n }\n\n async getClaimFee(contractAddress: string, amount: bigint) {\n return 0;\n }\n}\n","import { AptosAirdropContractClient } from './AptosAirdropClient';\nimport { AptosBaseDistributorContractClient } from './AptosBaseDistributorClient';\nimport { AptosContractInfo } from './AptosContractClient';\n\nexport class AirdropService {\n options: Omit<AptosContractInfo, 'module'>;\n constructor(options: Omit<AptosContractInfo, 'module'>) {\n this.options = options;\n }\n\n private get airdropClient(): AptosAirdropContractClient {\n if (!this.options) {\n throw new Error('options is empty');\n }\n\n return new AptosAirdropContractClient(this.options);\n }\n\n private get baseClient(): AptosBaseDistributorContractClient {\n if (!this.options) {\n throw new Error('options is empty');\n }\n return new AptosBaseDistributorContractClient(this.options);\n }\n\n async isLeafUsed(leaf: string): Promise<boolean> {\n return this.baseClient.isLeafUsed(leaf);\n }\n\n async batchFetchClaimed(leafs: string[]) {\n return this.baseClient.batchFetchClaimed(leafs);\n }\n\n async claim({ proof, group, data, value }: { proof: string[]; group: string; data: string; value?: bigint }) {\n return this.airdropClient.claim({\n proof,\n group,\n data,\n value\n });\n }\n\n async getVersion() {\n const res = await this.baseClient.getContractInfo();\n return res.version;\n }\n\n async getClaimFee(contractAddress: string, amount: bigint) {\n return this.baseClient.getClaimFee(contractAddress, amount);\n }\n\n async getPaused() {\n return this.baseClient.getPaused();\n }\n}\n"],"mappings":"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","names":["AirdropService","SignatureAirdropService","import_sdk","chain","import_viem","contractAddress","import_viem","ChainType","AirdropSigIdentityTypeEnum","ETokenType","TonAirdropVersionEnum","EvmAirdropVersionEnum","ErrorCode","TonWeb","signTransaction","error","SplTokenVersion","dayjs","contractAddress","import_viem","import_web3","import_web3","anchor","import_spl_token","FeeCollectorClient","FeeCollectorClient","AirdropService","import_web3","anchor","import_spl_token","AirdropSignatureClient","FeeCollectorClient","SignatureAirdropService","AirdropSignatureClient","import_ton","import_core","import_sdk","contractAddress","contractAddress","TonConnectUI","import_core","import_core","import_core","import_core","import_core","dateToUnixTimestamp","unixTimestampToDate","import_core","stringToInt","intToString","MIN_CLAIM_FEE","leafConfigToCell","Leaf","import_core","tokenDistributorConfigToCell","dateToUnixTimestamp","stringToInt","MerkleTokenDistributor","tokenDistributorConfigToCell","intToString","unixTimestampToDate","stringToInt","dateToUnixTimestamp","import_core","Leaf_compiled_default","MerkleTokenDistributor","Leaf_compiled_default","Leaf","import_core","dateToUnixTimestamp","unixTimestampToDate","import_core","stringToInt","intToString","MIN_CLAIM_FEE","leafConfigToCell","Leaf","import_core","tokenDistributorConfigToCell","dateToUnixTimestamp","stringToInt","MerkleTokenDistributor","tokenDistributorConfigToCell","intToString","unixTimestampToDate","stringToInt","dateToUnixTimestamp","import_core","Leaf_compiled_default","MerkleTokenDistributor","Leaf_compiled_default","Leaf","import_core","import_core","dateToUnixTimestamp","unixTimestampToDate","import_core","stringToInt","intToString","MIN_CLAIM_FEE","leafConfigToCell","Leaf","import_core","tokenDistributorConfigToCell","dateToUnixTimestamp","stringToInt","MerkleTokenDistributor","tokenDistributorConfigToCell","intToString","unixTimestampToDate","stringToInt","dateToUnixTimestamp","import_core","Leaf_compiled_default","MerkleTokenDistributor","Leaf_compiled_default","Leaf","AirdropService","import_client","import_transactions","import_bcs","import_transactions","import_bcs","SignatureAirdropService","contractAddress","AirdropService","contractAddress"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/constants/chain-config.ts","../src/constants/network.ts","../src/constants/index.ts","../src/common/projectDataForTon.ts","../src/common/index.ts","../src/contracts/evm/contracts/abis/AirdropV3.json","../src/contracts/evm/contracts/ContractBaseClient.ts","../src/contracts/evm/contracts/AirdropV3Client.ts","../src/contracts/evm/contracts/abis/FeeCollector.json","../src/contracts/evm/contracts/FeeCollectorClient.ts","../src/contracts/evm/contracts/abis/Deployer.json","../src/contracts/evm/contracts/DeployClient.ts","../src/contracts/evm/contracts/abis/AirdropV3_Fee.json","../src/contracts/evm/contracts/AirdropV3FeeClient.ts","../src/contracts/evm/contracts/abis/CustomFeeNativeAirdropV4.json","../src/contracts/evm/contracts/AirdropV4Client.ts","../src/contracts/evm/AirdropService.ts","../src/contracts/evm/contracts/abis/KycHook.json","../src/contracts/evm/contracts/KycClient.ts","../src/types/index.ts","../src/utils/web3.ts","../src/utils/utils.ts","../src/utils/api-client.ts","../src/utils/math.ts","../src/utils/biz.ts","../src/contracts/evm/contracts/abis/FungibleTokenECDSADistributor.json","../src/contracts/evm/contracts/AirdropSignatureClient.ts","../src/contracts/evm/contracts/abis/FungibleTokenWithFeesECDSADistributor.json","../src/contracts/evm/contracts/AirdropSignatureFeeClient.ts","../src/contracts/evm/SignatureAirdropService.ts","../src/contracts/solana/MerkleDistributorClient.ts","../src/contracts/solana/SolanaContractClient.ts","../src/contracts/solana/merkle_token_distributor_solana.json","../src/contracts/solana/fee_collector.json","../src/contracts/solana/FeeCollectorClient.ts","../src/contracts/solana/AirdropService.ts","../src/contracts/solana/AirdropSignatureClient.ts","../src/contracts/solana/eddsa_token_with_fees_distributor_solana.json","../src/contracts/solana/SignatureAirdropService.ts","../src/contracts/ton/TonContractBaseClient.ts","../src/services/wallets/ton/WalletService.ts","../src/services/airdrop/index.ts","../src/contracts/ton/AirdropClientV1.ts","../src/contracts/ton/v1/wrappers/Leaf.ts","../src/contracts/ton/v1/utils/date.utils.ts","../src/contracts/ton/v1/utils/ton.utils.ts","../src/contracts/ton/v1/wrappers/MerkleTokenDistributor.ts","../src/contracts/ton/v1/build/Leaf.compiled.json","../src/contracts/ton/v2/wrappers/Leaf.ts","../src/contracts/ton/v2/utils/date.utils.ts","../src/contracts/ton/v2/utils/ton.utils.ts","../src/contracts/ton/v2/wrappers/MerkleTokenDistributor.ts","../src/contracts/ton/AirdropClientV2.ts","../src/contracts/ton/v2/build/Leaf.compiled.json","../src/contracts/ton/v3/wrappers/Leaf.ts","../src/contracts/ton/v3/utils/date.utils.ts","../src/contracts/ton/v3/utils/ton.utils.ts","../src/contracts/ton/v3/wrappers/MerkleTokenDistributor.ts","../src/contracts/ton/AirdropClientV3.ts","../src/contracts/ton/v3/build/Leaf.compiled.json","../src/contracts/ton/AirdropService.ts","../src/contracts/ton/v21/wrappers/Leaf.ts","../src/contracts/ton/v21/utils/date.utils.ts","../src/contracts/ton/v21/utils/ton.utils.ts","../src/contracts/ton/v21/wrappers/MerkleTokenDistributor.ts","../src/contracts/ton/AirdropClientV21.ts","../src/contracts/ton/v21/build/Leaf.compiled.json","../src/contracts/sui/SuiContractClient.ts","../src/contracts/sui/BaseDistributorClient.ts","../src/contracts/sui/DistributorWithFeeClient.ts","../src/contracts/sui/SignatureAirdropService.ts","../src/contracts/aptos/AptosContractClient.ts","../src/contracts/aptos/AptosAirdropClient.ts","../src/contracts/aptos/AptosBaseDistributorClient.ts","../src/contracts/aptos/AirdropService.ts"],"sourcesContent":["export * from './common';\nexport * from './constants';\nexport * from './contracts';\nexport * from './services';\nexport * from './types';\nexport * from './utils';\n","import {\n base,\n baseSepolia,\n cyber,\n mainnet,\n polygonMumbai,\n polygonAmoy,\n sepolia,\n zetachain,\n zetachainAthensTestnet,\n bsc,\n berachainTestnet,\n arbitrum,\n sonic,\n xLayer,\n megaethTestnet,\n monadTestnet,\n monad,\n memecore,\n cronos\n} from 'viem/chains';\nimport {\n aptosTestNet,\n hyperEVM,\n megaeth,\n mevmDevNet,\n signBrBTestnet,\n solanaDevNet,\n solanaMainNet,\n suiMainNet,\n suiTestNet,\n tonMainNet,\n tonTestNet\n} from './network';\nimport { CHAIN } from '@tonconnect/sdk';\n\nexport const SupportedChains = [\n mainnet,\n bsc,\n base,\n cyber,\n zetachain,\n arbitrum,\n monad,\n cronos,\n memecore,\n megaeth,\n tonTestNet,\n tonMainNet,\n signBrBTestnet,\n sonic,\n xLayer,\n hyperEVM,\n sepolia,\n baseSepolia,\n zetachainAthensTestnet,\n berachainTestnet,\n polygonMumbai,\n polygonAmoy,\n mevmDevNet,\n megaethTestnet,\n monadTestnet\n] as const;\n\nexport type SupportedChainIds = (typeof SupportedChains)[number]['id'];\ntype ChainConfigItem = { contractAddress: string; rpcUrl: string } & Record<string, unknown>;\n\nexport const ChainConfig: Record<SupportedChainIds, ChainConfigItem> = {\n [mainnet.id]: {\n contractAddress: '0x0993Dd5384BcD116A3543889BC6ffA6C98948631',\n rpcUrl: 'https://eth-mainnet.g.alchemy.com/v2/udrqNPSB6i5n5L6QSM31Ng72h_hFOrVT'\n },\n [bsc.id]: {\n contractAddress: '0x6c241FF6d5c3f074b49aC10872770529d9e27BA4',\n rpcUrl: 'https://bnb-mainnet.g.alchemy.com/v2/udrqNPSB6i5n5L6QSM31Ng72h_hFOrVT'\n },\n [base.id]: {\n contractAddress: '0x3d1abcD56d53f7C8b04A753C6AF397903DC0f0F2',\n rpcUrl: 'https://base-mainnet.g.alchemy.com/v2/udrqNPSB6i5n5L6QSM31Ng72h_hFOrVT'\n },\n [monad.id]: {\n contractAddress: '0xa6A2d42E16a690E03bDe181319fDD085880F2605',\n rpcUrl: monad.rpcUrls.default.http[0]\n },\n [cronos.id]: {\n contractAddress: '0xa6A2d42E16a690E03bDe181319fDD085880F2605',\n rpcUrl: cronos.rpcUrls.default.http[0]\n },\n [memecore.id]: {\n contractAddress: '0xa6A2d42E16a690E03bDe181319fDD085880F2605',\n rpcUrl: memecore.rpcUrls.default.http[0]\n },\n [megaeth.id]: {\n contractAddress: '0xa6A2d42E16a690E03bDe181319fDD085880F2605',\n rpcUrl: megaeth.rpcUrls.default.http[0]\n },\n [cyber.id]: {\n contractAddress: '0x7915dA247674E430b2a4Dcf01e4471f709428Bc0',\n rpcUrl: cyber.rpcUrls.default.http[0]\n },\n [sepolia.id]: {\n contractAddress: '0xf3f5243B35376c6dea04169983A8c853c8BE6d69',\n rpcUrl: 'https://eth-sepolia.g.alchemy.com/v2/1tmk0FrhwTJHXh0XIyae7_SXw1lDCjgs'\n },\n [baseSepolia.id]: {\n contractAddress: '0x66c9fe5c76672B06Bf497eFfdaAfDf897D1e68d8',\n rpcUrl: baseSepolia.rpcUrls.default.http[0]\n },\n [zetachainAthensTestnet.id]: {\n contractAddress: '0x63aE2f2260DEfc11932d22410B976Ec29F54498B',\n rpcUrl: zetachainAthensTestnet.rpcUrls.default.http[0]\n },\n [zetachain.id]: {\n contractAddress: '0x00aFD4466E4Afa4F43cCd414b1BC65e574ACA2f5',\n rpcUrl: 'https://zetachain-mainnet.g.alchemy.com/v2/1tmk0FrhwTJHXh0XIyae7_SXw1lDCjgs'\n },\n [arbitrum.id]: {\n contractAddress: '0xeD09c23677D02f4f486E55f0f081cfc114EEa53b',\n rpcUrl: 'https://arb-mainnet.g.alchemy.com/v2/udrqNPSB6i5n5L6QSM31Ng72h_hFOrVT'\n },\n [hyperEVM.id]: {\n contractAddress: '0xeD09c23677D02f4f486E55f0f081cfc114EEa53b',\n rpcUrl: hyperEVM.rpcUrls.default.http[0]\n },\n [megaethTestnet.id]: {\n contractAddress: '0xa6A2d42E16a690E03bDe181319fDD085880F2605',\n rpcUrl: megaethTestnet.rpcUrls.default.http[0]\n },\n [monadTestnet.id]: {\n contractAddress: '0xa6A2d42E16a690E03bDe181319fDD085880F2605',\n rpcUrl: monadTestnet.rpcUrls.default.http[0]\n },\n [berachainTestnet.id]: {\n contractAddress: '',\n rpcUrl: '',\n availableSolutions: []\n },\n [polygonMumbai.id]: {\n contractAddress: '',\n rpcUrl: '',\n availableSolutions: []\n },\n [polygonAmoy.id]: {\n contractAddress: '',\n rpcUrl: '',\n availableSolutions: []\n },\n [mevmDevNet.id]: {\n contractAddress: '0x8D92827CdB67A503e9FB21B28a58F9dAb36B4973',\n rpcUrl: mevmDevNet.rpcUrls.default.http[0]\n },\n [signBrBTestnet.id]: {\n contractAddress: '0xeD09c23677D02f4f486E55f0f081cfc114EEa53b', // add default fee\n rpcUrl: signBrBTestnet.rpcUrls.default.http[0]\n },\n [sonic.id]: {\n contractAddress: '0xa6A2d42E16a690E03bDe181319fDD085880F2605',\n rpcUrl: sonic.rpcUrls.default.http[0]\n },\n [xLayer.id]: {\n contractAddress: '0xa6a2d42e16a690e03bde181319fdd085880f2605',\n rpcUrl: 'https://xlayerrpc.okx.com'\n },\n [CHAIN.TESTNET]: {\n name: 'TestNet',\n contractAddress: '',\n rpcUrl: 'https://testnet.toncenter.com/api/v2/jsonRPC', //https://toncenter.com/api/v2/jsonRPC\n tonApiPrefix: 'https://testnet.tonapi.io',\n blockExplorer: 'https://testnet.tonviewer.com'\n },\n [CHAIN.MAINNET]: {\n name: 'MainNet',\n contractAddress: '',\n rpcUrl: 'https://toncenter.com/api/v2/jsonRPC',\n tonApiPrefix: 'https://tonapi.io',\n blockExplorer: 'https://tonviewer.com'\n },\n [solanaDevNet.id]: {\n contractAddress: '',\n rpcUrl: solanaDevNet.rpcUrls.default.http[0]\n },\n [solanaMainNet.id]: {\n contractAddress: '',\n rpcUrl: solanaMainNet.rpcUrls.default.http[0]\n },\n [suiTestNet.id]: {\n contractAddress: '0xeb9691cd945745a89fd497746d30fb1a1e936865c6c514817d913fadef66df44',\n rpcUrl: suiTestNet.rpcUrls.default.http[0]\n },\n [suiMainNet.id]: {\n contractAddress: '0x3f73ec78d3e8a99277496edb6183d6075490983c2a29542a1c3f709aa31169b5',\n rpcUrl: suiMainNet.rpcUrls.default.http[0]\n },\n [aptosTestNet.id]: {\n contractAddress: '0x0ee860c2c1dc9e6d7c013cfc78cecfc226dfffa403b0ca212b38d958bc1048c9',\n rpcUrl: aptosTestNet.rpcUrls.default.http[0]\n }\n};\n","import { CHAIN } from '@tonconnect/sdk';\nimport { defineChain } from 'viem';\n\nexport const mevmDevNet = defineChain({\n id: 30732,\n name: 'Movement M1 Devnet',\n network: 'mevm',\n nativeCurrency: { name: 'Move', symbol: 'MOVE', decimals: 18 },\n rpcUrls: {\n default: {\n http: ['https://mevm.devnet.imola.movementlabs.xyz']\n },\n public: {\n http: ['https://mevm.devnet.imola.movementlabs.xyz']\n }\n },\n blockExplorers: {\n etherscan: { name: 'Arbiscan', url: 'https://explorer.devnet.imola.movementlabs.xyz/' },\n default: { name: 'Arbiscan', url: 'https://explorer.devnet.imola.movementlabs.xyz/' }\n },\n contracts: {\n multicall3: {\n address: '0xD67Eca381AAbd0c049554f5714E7d8C21864c560',\n blockCreated: 500\n }\n }\n});\n\nexport const tonTestNet = {\n id: CHAIN.TESTNET,\n name: 'TON Testnet',\n network: 'TON_TESTNET',\n nativeCurrency: {\n decimals: 9,\n name: 'TON',\n symbol: 'TON'\n },\n rpcUrls: {\n public: {\n http: []\n },\n default: {\n http: []\n }\n },\n blockExplorers: {\n default: {\n name: 'tonviewer',\n url: 'https://testnet.tonviewer.com'\n }\n },\n testnet: true\n};\n\nexport const tonMainNet = {\n id: CHAIN.MAINNET,\n name: 'TON Mainnet',\n network: 'TON_MAINNET',\n nativeCurrency: {\n decimals: 9,\n name: 'TON',\n symbol: 'TON'\n },\n rpcUrls: {\n public: {\n http: []\n },\n default: {\n http: []\n }\n },\n blockExplorers: {\n default: {\n name: 'tonviwer',\n url: 'https://tonviewer.com'\n }\n }\n};\n\nexport const solanaDevNet = {\n id: 'devnet',\n name: 'Solana Devnet',\n network: 'Sol_DEVNET',\n nativeCurrency: {\n decimals: 9,\n name: 'SOL',\n symbol: 'SOL'\n },\n rpcUrls: {\n public: {\n http: ['https://serene-empty-film.solana-devnet.quiknode.pro/7fcc62232b14dc8a6a154597ee028ebf00e0c195']\n },\n default: {\n http: ['https://serene-empty-film.solana-devnet.quiknode.pro/7fcc62232b14dc8a6a154597ee028ebf00e0c195']\n }\n },\n blockExplorers: {\n default: {\n name: 'solscan',\n url: 'https://solscan.io/'\n }\n },\n testnet: true\n};\n\nexport const solanaMainNet = {\n id: 'mainnet-beta',\n name: 'Solana Mainnet',\n network: 'Sol_MAINNET',\n nativeCurrency: {\n decimals: 9,\n name: 'SOL',\n symbol: 'SOL'\n },\n rpcUrls: {\n public: {\n http: ['https://serene-empty-film.solana-mainnet.quiknode.pro/7fcc62232b14dc8a6a154597ee028ebf00e0c195']\n },\n default: {\n http: ['https://serene-empty-film.solana-mainnet.quiknode.pro/7fcc62232b14dc8a6a154597ee028ebf00e0c195']\n }\n },\n blockExplorers: {\n default: {\n name: 'solscan',\n url: 'https://solscan.io/'\n }\n },\n testnet: false\n};\n\nexport const signBrBTestnet = /*#__PURE__*/ defineChain({\n id: 74460002,\n name: 'Sign Brb Testnet',\n network: 'Sign Brb Testnet',\n nativeCurrency: {\n decimals: 18,\n name: 'BNB Token',\n symbol: 'BNB'\n },\n rpcUrls: {\n default: { http: ['https://brb-testnet-rpc-0.bk.sign.global/'] },\n public: { http: ['https://brb-testnet-rpc-0.bk.sign.global/'] }\n },\n blockExplorers: {\n default: {\n name: 'Sign Brb Testnet Explorer',\n url: 'https://explorer-testnet.bk.sign.global/'\n }\n },\n testnet: true\n});\n\nexport const suiTestNet = {\n id: 'testnet',\n name: 'Sui Testnet',\n network: 'Sui Testnet',\n nativeCurrency: {\n decimals: 9,\n name: 'Sui',\n symbol: 'SUI'\n },\n rpcUrls: {\n public: {\n http: ['https://fullnode.testnet.sui.io:443']\n },\n default: {\n http: ['https://fullnode.testnet.sui.io:443']\n }\n },\n blockExplorers: {\n default: {\n name: 'sui scan',\n url: 'https://testnet.suivision.xyz/'\n }\n },\n testnet: true\n};\n\nexport const suiMainNet = {\n id: 'mainnet',\n name: 'Sui Mainnet',\n network: 'Sui Mainnet',\n nativeCurrency: {\n decimals: 9,\n name: 'Sui',\n symbol: 'SUI'\n },\n rpcUrls: {\n public: {\n http: ['https://fullnode.mainnet.sui.io:443']\n },\n default: {\n http: ['https://fullnode.mainnet.sui.io:443']\n }\n },\n blockExplorers: {\n default: {\n name: 'sui scan',\n url: 'https://suivision.xyz/'\n }\n },\n testnet: false\n};\n\nexport const aptosTestNet = {\n id: 2,\n name: 'Aptos Testnet',\n network: 'Aptos Testnet',\n nativeCurrency: {\n decimals: 8,\n name: 'Aptos',\n symbol: 'APT'\n },\n rpcUrls: {\n public: {\n http: ['https://api.testnet.aptoslabs.com/v1']\n },\n default: {\n http: ['https://api.testnet.aptoslabs.com/v1']\n }\n },\n blockExplorers: {\n default: {\n name: 'aptos scan',\n url: 'hhttps://explorer.aptoslabs.com/'\n }\n },\n testnet: true\n};\n\nexport const hyperEVM = defineChain({\n id: 999,\n name: 'HyperEVM',\n nativeCurrency: {\n name: 'HYPE',\n symbol: 'HYPE',\n decimals: 18\n },\n rpcUrls: {\n default: { http: ['https://rpc.hyperliquid.xyz/evm'] }\n },\n blockExplorers: {\n default: {\n name: 'HyperEVMScan',\n url: 'https://hyperevmscan.io/'\n }\n },\n contracts: {\n multicall3: {\n address: '0xcA11bde05977b3631167028862bE2a173976CA11',\n blockCreated: 13051\n }\n }\n});\n\nexport const megaeth = /*#__PURE__*/ defineChain({\n id: 4326,\n blockTime: 1_000,\n name: 'MegaETH',\n nativeCurrency: {\n name: 'Ether',\n symbol: 'ETH',\n decimals: 18\n },\n rpcUrls: {\n default: {\n http: ['https://mainnet.megaeth.com/rpc'],\n webSocket: ['wss://mainnet.megaeth.com/ws']\n }\n },\n blockExplorers: {\n default: {\n name: 'Blockscout',\n url: 'https://megaeth.blockscout.com',\n apiUrl: 'https://megaeth.blockscout.com/api'\n }\n },\n contracts: {\n multicall3: {\n address: '0xcA11bde05977b3631167028862bE2a173976CA11'\n }\n }\n});\n","// 基础常量\nexport const ZERO_ADDRESS = '0x0000000000000000000000000000000000000000';\n\nexport const CONST = {\n TWITTER_AUTH_SUCCESS: 'twitter:auth:success',\n DISCORD_AUTH_SUCCESS: 'discord:auth:success',\n GOOGLE_AUTH_SUCCESS: 'google:auth:success',\n WELCOME_SIGNATURE_STATEMENT: 'Welcome to TokenTable!'\n} as const;\n\n// 链配置\nexport * from './chain-config';\nexport * from './network';\n\nexport { ChainConfig, SupportedChains } from './chain-config';\n","export const projectDataForTon = {\n ava: {\n '12345': 'AD_18uwEPKbTXZo',\n '67890': 'AD_XOPhRRGggtjK',\n abcABC: 'AD_qKwG21hnimAB',\n defDEF: 'AD_CfAV1GNekDAQ',\n ghiGHI: 'AD_uwipChWywF4V',\n jklJKL: 'AD_d3tai5RtikM2',\n mnoMNO: 'AD_dMEF8ToRIqzY',\n pqrPQR: 'AD_vdx6P5QHc1ES',\n stuSTU: 'AD_2k77RlCRD1ds',\n vwxVWX: 'AD_hiXx1hLsIkBM',\n 'yz-_YZ': 'AD_cj99f5rdUU8C'\n },\n dogs: {\n '12': 'AD_P2ipWbDVrtSE',\n '34': 'AD_cXW3IFfYHfa5',\n '56': 'AD_NG5bNpQOHuqI',\n '78': 'AD_KvnQeG76AgYs',\n '90': 'AD_xlv2JO3PQdtR',\n aA: 'AD_kc0CJE8RPvJy',\n bB: 'AD_yRFzJyPoAOY4',\n cC: 'AD_yN14YHi4F29p',\n dD: 'AD_jWsTmtfnbzVn',\n eE: 'AD_ZfFnjr06dhp7',\n fF: 'AD_s58jwEK3EggA',\n gG: 'AD_qKszLFxv5PDy',\n hH: 'AD_RzefaG1fi44A',\n iI: 'AD_LItldBE09QRn',\n jJ: 'AD_SzKbQmVOz0S1',\n kK: 'AD_rNrYIzCzye0W',\n lL: 'AD_IbtlhoM0M6SZ',\n mM: 'AD_m2NUNiwCgFES',\n nN: 'AD_3mb6NTcYPw5y',\n oO: 'AD_kVrO6qmmZDUK',\n pP: 'AD_cV9g8YMQZ0iB',\n qQ: 'AD_esdFer2shKO3',\n rR: 'AD_BqZmJzFKapu0',\n sS: 'AD_iOU6Rnltj3sx',\n tT: 'AD_M8J1QU64Yuzi',\n uU: 'AD_es9ceiuC8TXq',\n vV: 'AD_7DXSpRcGivjO',\n wW: 'AD_0uI9R6Sc6jY4',\n xX: 'AD_FyrRNdtrgqKj',\n yY: 'AD_JR0ktPVqVriT',\n zZ: 'AD_bb9I2XdIqM6W',\n '_-': 'AD_qaLi6r8K9BAv'\n },\n ava2: {\n '1234567890_': 'AD_EZFWfhs641YQ',\n 'aAbBcCdDeE-': 'AD_jCVjsDT9g6h3',\n fFgGhHiIjJ: 'AD_7nF9gncQeVW3',\n kKlLmMnNoO: 'AD_RmoPsyKeIah0',\n pPqQrRsStTZ: 'AD_zrK1RVGQ2Ogl',\n uUvVwWxXyYz: 'AD_fKN6IcxEIdIA'\n },\n wat: {\n '1234': 'AD_sMtwhyrqUFiZ',\n '5678': 'AD_CMZVOHQjeVBp',\n aAbB: 'AD_sdmcLLcDS59f',\n cCdD: 'AD_M9Zyy7VaLuR1',\n eEfF: 'AD_K4WWeUvk7aMj',\n gGhH: 'AD_AmCnivdzxToB',\n iIjJ: 'AD_2NgsKs5nyJhe',\n kKlL: 'AD_IOPluo9KRSM9',\n mMnN: 'AD_FMOlFAIOycQw',\n oOpP: 'AD_NCW9yZdOTPQ9',\n qQrR: 'AD_JjOkeBs0Jfsb',\n sStT: 'AD_hUkWbwWMWUvp',\n uUvV: 'AD_w9UAKxCxU84P',\n wWxX: 'AD_Vwa41VRRXjpP',\n yYzZ: 'AD_XQbS0ksJGDrB',\n '90_-': 'AD_LhssByVDm8Q1'\n },\n roolz: {\n abcdefghijklmnopqrstuvwxyz12345_: 'AD_3ZoF8wq7leAI',\n 'ABCDEFGHIJKLMNOPQRSTUVWXYZ67890-': 'AD_HMFs2ubSrC1K'\n }\n};\n","import { ChainConfig, SupportedChains } from '../constants';\nimport { ChainId } from '../types';\nimport { projectDataForTon } from './projectDataForTon';\n\nexport type SupportedChainType = (typeof SupportedChains)[number];\n\nexport function getChainById(chainId: ChainId): SupportedChainType {\n const chain = SupportedChains.find((chain) => chain.id === chainId);\n\n if (!chain) {\n throw new Error(`ChainId ${chainId} not supported.`);\n }\n\n return chain;\n}\n\nexport function getChainConfig(chainId: ChainId) {\n return ChainConfig[chainId];\n}\n\nexport function getChainRpc(chainId: ChainId): string {\n const config = getChainConfig(chainId as any);\n\n if (!config) {\n throw new Error(`ChainId ${chainId} not supported.`);\n }\n\n return config?.rpcUrl;\n}\n\nexport const getTonProjectIdByAddress = ({\n address,\n slug,\n data\n}: {\n address?: string;\n slug: string;\n data: Record<string, string>;\n}): string | undefined => {\n let project: Record<string, string> = projectDataForTon[slug as keyof typeof projectDataForTon];\n if (!project) {\n project = data;\n }\n\n if (!address) {\n const firstProject = Object.values(project)[0];\n return firstProject;\n }\n const lastText = address[address.length - 1];\n\n const group = Object.keys(project || {}).find((key) => key.includes(lastText));\n\n const projectId = group ? project[group as keyof typeof project] : undefined;\n\n return projectId;\n};\n","[\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"target\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"AddressEmptyCode\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"AddressInsufficientBalance\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"implementation\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"ERC1967InvalidImplementation\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ERC1967NonPayable\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"FailedInnerCall\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"IncorrectFees\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidInitialization\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidProof\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"LeafUsed\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"NotInitializing\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"OutsideClaimableTimeRange\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"OwnableInvalidOwner\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"OwnableUnauthorizedAccount\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ReentrancyGuardReentrantCall\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"SafeERC20FailedOperation\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"TimeInactive\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"UUPSUnauthorizedCallContext\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"slot\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"UUPSUnsupportedProxiableUUID\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"UnsupportedOperation\",\n \"type\": \"error\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"delegate\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"ClaimDelegateSet\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"recipient\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bytes32\",\n \"name\": \"group\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bytes\",\n \"name\": \"data\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"Claimed\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"uint64\",\n \"name\": \"version\",\n \"type\": \"uint64\"\n }\n ],\n \"name\": \"Initialized\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"string\",\n \"name\": \"projectId\",\n \"type\": \"string\"\n }\n ],\n \"name\": \"Initialized\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"previousOwner\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"newOwner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"OwnershipTransferred\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"implementation\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"Upgraded\",\n \"type\": \"event\"\n },\n {\n \"inputs\": [],\n \"name\": \"UPGRADE_INTERFACE_VERSION\",\n \"outputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address[]\",\n \"name\": \"\",\n \"type\": \"address[]\"\n },\n {\n \"internalType\": \"bytes32[][]\",\n \"name\": \"\",\n \"type\": \"bytes32[][]\"\n },\n {\n \"internalType\": \"bytes32[]\",\n \"name\": \"\",\n \"type\": \"bytes32[]\"\n },\n {\n \"internalType\": \"bytes[]\",\n \"name\": \"\",\n \"type\": \"bytes[]\"\n }\n ],\n \"name\": \"batchDelegateClaim\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32[]\",\n \"name\": \"proof\",\n \"type\": \"bytes32[]\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"group\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"data\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"claim\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes\",\n \"name\": \"\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"decodeLeafData\",\n \"outputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"index\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"claimableTimestamp\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"claimableAmount\",\n \"type\": \"uint256\"\n }\n ],\n \"internalType\": \"struct TokenTableMerkleDistributorData\",\n \"name\": \"\",\n \"type\": \"tuple\"\n }\n ],\n \"stateMutability\": \"pure\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes\",\n \"name\": \"data\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"decodeMOCALeafData\",\n \"outputs\": [\n {\n \"components\": [\n {\n \"components\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"index\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"claimableTimestamp\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"claimableAmount\",\n \"type\": \"uint256\"\n }\n ],\n \"internalType\": \"struct TokenTableMerkleDistributorData\",\n \"name\": \"base\",\n \"type\": \"tuple\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"expiryTimestamp\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"nftTokenId\",\n \"type\": \"uint256\"\n }\n ],\n \"internalType\": \"struct MOCAMerkleDistributorData\",\n \"name\": \"\",\n \"type\": \"tuple\"\n }\n ],\n \"stateMutability\": \"pure\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes32[]\",\n \"name\": \"\",\n \"type\": \"bytes32[]\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"delegateClaim\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"user\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"group\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"data\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"encodeLeaf\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"externalDelegateRegistry\",\n \"outputs\": [\n {\n \"internalType\": \"contract IDelegateRegistry\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"getClaimDelegate\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"getDeployer\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"getNFT\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"getRoot\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"getTime\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"getToken\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"projectId\",\n \"type\": \"string\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"owner_\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"initialize\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"leaf\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"isLeafUsed\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"owner\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"proxiableUUID\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"renounceOwnership\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"startTime\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"endTime\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"root\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"setBaseParams\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"setClaimDelegate\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"nft\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"setNFT\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"newOwner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"transferOwnership\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"newImplementation\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"data\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"upgradeToAndCall\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32[]\",\n \"name\": \"proof\",\n \"type\": \"bytes32[]\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"leaf\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"verify\",\n \"outputs\": [],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"version\",\n \"outputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"pure\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes\",\n \"name\": \"\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"withdraw\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n }\n]","import {\n Chain,\n createPublicClient,\n http,\n PublicClient,\n WalletClient,\n createWalletClient,\n MulticallParameters\n} from 'viem';\nimport { ChainId } from '../../../types';\n\nexport class ContractBaseClient {\n contractAddress: string;\n chainId: ChainId;\n connector?: WalletClient;\n abi: any;\n chain: Chain;\n chainRpc: string;\n private _publicClient?: PublicClient;\n private _walletClient?: WalletClient;\n\n constructor({\n contractAddress,\n chainId,\n walletClient,\n abi,\n chainRpc,\n chain\n }: {\n contractAddress: string;\n chainId: ChainId;\n walletClient?: WalletClient;\n abi: any;\n chainRpc: string;\n chain: Chain;\n }) {\n this.contractAddress = contractAddress;\n this.chainId = chainId;\n this.connector = walletClient;\n this.abi = abi;\n this.chain = chain;\n this.chainRpc = chainRpc;\n }\n\n protected get publicClient(): PublicClient {\n if (!this._publicClient) {\n this._publicClient = createPublicClient({\n chain: this.chain,\n transport: http(this.chainRpc)\n }) as PublicClient;\n }\n return this._publicClient as PublicClient;\n }\n\n protected get walletClient(): WalletClient {\n if (!this._walletClient) {\n this._walletClient =\n this.connector ||\n createWalletClient({\n chain: this.chain,\n transport: http(this.chainRpc)\n });\n }\n return this._walletClient;\n }\n\n async readContract({ functionName, args }: { functionName: string; args?: any }) {\n const result = await this.publicClient.readContract({\n abi: this.abi,\n address: this.contractAddress as `0x${string}`,\n functionName: functionName,\n args: args\n });\n\n return result;\n }\n\n async writeContract({ functionName, args, value }: { functionName: string; args?: any; value?: bigint }) {\n const { request } = await this.publicClient.simulateContract({\n abi: this.abi,\n address: this.contractAddress as `0x${string}`,\n functionName: functionName,\n args: args,\n account: this.walletClient?.account,\n value: value\n });\n const result = await this.walletClient.writeContract(request);\n\n return result;\n }\n\n async multiCall(parameters: MulticallParameters<any[], boolean>) {\n return await this.publicClient.multicall(parameters);\n }\n}\n","import { EvmContractClientOption } from '../../../types';\nimport AirdropAbi from './abis/AirdropV3.json';\nimport { ContractBaseClient } from './ContractBaseClient';\n\nexport class AirdropV3Client extends ContractBaseClient {\n constructor(options: EvmContractClientOption) {\n super({\n ...options,\n abi: options.abi || AirdropAbi\n });\n }\n\n async isLeafUsed(leaf: string) {\n return this.readContract({ functionName: 'isLeafUsed', args: ['0x' + leaf] });\n }\n\n async claim({ proof, group, data, value }: { proof: string[]; group: string; data: string; value?: bigint }) {\n return this.writeContract({\n functionName: 'claim',\n args: [proof, group, data],\n value: value || 0n\n });\n }\n\n async batchFetchClaimed(leafs: string[]) {\n return this.multiCall({\n contracts: leafs?.map((leaf) => {\n return {\n address: this.contractAddress,\n abi: this.abi,\n functionName: 'isLeafUsed',\n args: ['0x' + leaf]\n };\n })\n });\n }\n\n async getNFT() {\n return this.readContract({ functionName: 'getNFT' });\n }\n\n async version() {\n return this.readContract({ functionName: 'version' }) as Promise<string>;\n }\n\n async getDeployer() {\n return this.readContract({ functionName: 'getDeployer' }) as Promise<string>;\n }\n}\n","[\n {\n \"inputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"constructor\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"target\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"AddressEmptyCode\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"AddressInsufficientBalance\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"FailedInnerCall\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"FeesTooHigh\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"OwnableInvalidOwner\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"OwnableUnauthorizedAccount\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"SafeERC20FailedOperation\",\n \"type\": \"error\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"unlockerAddress\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"bips\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"CustomFeeSetBips\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"unlockerAddress\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"fixedFee\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"CustomFeeSetFixed\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"bips\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"DefaultFeeSetBips\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"previousOwner\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"newOwner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"OwnershipTransferred\",\n \"type\": \"event\"\n },\n {\n \"inputs\": [],\n \"name\": \"BIPS_PRECISION\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"MAX_FEE_BIPS\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"defaultFeesBips\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"unlockerAddress\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"tokenTransferred\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"getFee\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"tokensCollected\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"owner\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"renounceOwnership\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"unlockerAddress\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"bips\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"setCustomFeeBips\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"unlockerAddress\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"fixedFee\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"setCustomFeeFixed\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"bips\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"setDefaultFeeBips\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"newOwner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"transferOwnership\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"version\",\n \"outputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"pure\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"contract IERC20\",\n \"name\": \"token\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"withdrawFee\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"stateMutability\": \"payable\",\n \"type\": \"receive\"\n }\n]","import { EvmContractClientOption } from '../../../types';\nimport FeeCollectorABI from './abis/FeeCollector.json';\nimport { ContractBaseClient } from './ContractBaseClient';\n\nexport class FeeCollectorClient extends ContractBaseClient {\n constructor(options: EvmContractClientOption) {\n const address = options.contractAddress;\n if (!address) {\n throw new Error(`FeeCollectorService address not found on chain ${options.chainId}`);\n }\n super({\n ...options,\n contractAddress: address,\n abi: FeeCollectorABI\n });\n }\n\n async getFee(address: string, tokenTransferred: bigint): Promise<bigint> {\n return (await this.readContract({ functionName: 'getFee', args: [address, tokenTransferred] })) as bigint;\n }\n}\n","{\n \"abi\": [\n {\n \"inputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"constructor\"\n },\n {\n \"inputs\": [],\n \"name\": \"ERC1167FailedCreateClone\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"OwnableInvalidOwner\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"OwnableUnauthorizedAccount\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"UnsupportedOperation\",\n \"type\": \"error\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"previousOwner\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"newOwner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"OwnershipTransferred\",\n \"type\": \"event\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"enum MDType\",\n \"name\": \"mdType\",\n \"type\": \"uint8\"\n },\n {\n \"internalType\": \"string\",\n \"name\": \"projectId\",\n \"type\": \"string\"\n }\n ],\n \"name\": \"deploy\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"instance\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"projectId\",\n \"type\": \"string\"\n }\n ],\n \"name\": \"deployments\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"deployment\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"deployment\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"feeCollectors\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"feeCollectors\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"deployment\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"feeTokens\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"feeTokens\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"enum MDType\",\n \"name\": \"mdType\",\n \"type\": \"uint8\"\n }\n ],\n \"name\": \"implementations\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"implementation\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"owner\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"renounceOwnership\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"deployment\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"feeToken\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"feeCollector\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"setDeploymentFeeParams\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"enum MDType\",\n \"name\": \"mdType\",\n \"type\": \"uint8\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"implementation\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"setImplementation\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"enum MDType\",\n \"name\": \"mdType\",\n \"type\": \"uint8\"\n },\n {\n \"internalType\": \"string\",\n \"name\": \"projectId\",\n \"type\": \"string\"\n }\n ],\n \"name\": \"simulateDeploy\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"newOwner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"transferOwnership\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"version\",\n \"outputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"pure\",\n \"type\": \"function\"\n }\n ]\n}","import { EvmContractClientOption } from '../../../types';\nimport TTUDeployerContractABI from './abis/Deployer.json';\nimport { ContractBaseClient } from './ContractBaseClient';\n\nexport class DeployerClient extends ContractBaseClient {\n constructor(options: EvmContractClientOption) {\n const address = options.contractAddress;\n\n if (!address) {\n throw new Error(`TTDeployerContract address not found on chain ${options.chainId}`);\n }\n super({\n abi: TTUDeployerContractABI.abi,\n contractAddress: address,\n chainId: options.chainId,\n walletClient: options.walletClient,\n chainRpc: options.chainRpc,\n chain: options.chain\n });\n }\n\n async feeCollectors(address: string) {\n const result = await this.readContract({\n functionName: 'feeCollectors',\n args: [address]\n });\n return result;\n }\n\n async feeTokens(address: string) {\n const result = await this.readContract({\n functionName: 'feeTokens',\n args: [address]\n });\n return result;\n }\n}\n","[\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"target\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"AddressEmptyCode\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"AddressInsufficientBalance\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"implementation\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"ERC1967InvalidImplementation\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ERC1967NonPayable\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"FailedInnerCall\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"IncorrectFees\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidInitialization\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidProof\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"LeafUsed\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"NotInitializing\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"OutsideClaimableTimeRange\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"OwnableInvalidOwner\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"OwnableUnauthorizedAccount\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ReentrancyGuardReentrantCall\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"SafeERC20FailedOperation\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"TimeInactive\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"UUPSUnauthorizedCallContext\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"slot\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"UUPSUnsupportedProxiableUUID\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"UnsupportedOperation\",\n \"type\": \"error\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"delegate\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"ClaimDelegateSet\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"recipient\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bytes32\",\n \"name\": \"group\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bytes\",\n \"name\": \"data\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"Claimed\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"uint64\",\n \"name\": \"version\",\n \"type\": \"uint64\"\n }\n ],\n \"name\": \"Initialized\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"string\",\n \"name\": \"projectId\",\n \"type\": \"string\"\n }\n ],\n \"name\": \"Initialized\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"previousOwner\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"newOwner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"OwnershipTransferred\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"implementation\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"Upgraded\",\n \"type\": \"event\"\n },\n {\n \"inputs\": [],\n \"name\": \"UPGRADE_INTERFACE_VERSION\",\n \"outputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address[]\",\n \"name\": \"recipients\",\n \"type\": \"address[]\"\n },\n {\n \"internalType\": \"bytes32[][]\",\n \"name\": \"proofs\",\n \"type\": \"bytes32[][]\"\n },\n {\n \"internalType\": \"bytes32[]\",\n \"name\": \"groups\",\n \"type\": \"bytes32[]\"\n },\n {\n \"internalType\": \"bytes[]\",\n \"name\": \"datas\",\n \"type\": \"bytes[]\"\n }\n ],\n \"name\": \"batchDelegateClaim\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32[]\",\n \"name\": \"proof\",\n \"type\": \"bytes32[]\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"group\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"data\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"claim\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes\",\n \"name\": \"data\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"decodeLeafData\",\n \"outputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"index\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"claimableTimestamp\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"claimableAmount\",\n \"type\": \"uint256\"\n }\n ],\n \"internalType\": \"struct TokenTableMerkleDistributorData\",\n \"name\": \"\",\n \"type\": \"tuple\"\n }\n ],\n \"stateMutability\": \"pure\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"recipient\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes32[]\",\n \"name\": \"proof\",\n \"type\": \"bytes32[]\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"group\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"data\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"delegateClaim\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"user\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"group\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"data\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"encodeLeaf\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"getClaimDelegate\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"getDeployer\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"getFeelessThreshold\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"getRoot\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"getTime\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"getToken\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"projectId\",\n \"type\": \"string\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"owner_\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"initialize\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"leaf\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"isLeafUsed\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"owner\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"proxiableUUID\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"renounceOwnership\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"startTime\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"endTime\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"root\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"setBaseParams\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"delegate\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"setClaimDelegate\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"feelessThreshold\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"setFeelessThreshold\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"newOwner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"transferOwnership\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"newImplementation\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"data\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"upgradeToAndCall\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32[]\",\n \"name\": \"proof\",\n \"type\": \"bytes32[]\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"leaf\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"verify\",\n \"outputs\": [],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"version\",\n \"outputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"pure\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes\",\n \"name\": \"\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"withdraw\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"stateMutability\": \"payable\",\n \"type\": \"receive\"\n }\n]","import { EvmContractClientOption } from '../../../types';\nimport AirdropAbi from './abis/AirdropV3_Fee.json';\nimport { ContractBaseClient } from './ContractBaseClient';\n\nexport class AirdropV3FeeClient extends ContractBaseClient {\n constructor(options: EvmContractClientOption) {\n super({\n ...options,\n abi: options.abi || AirdropAbi\n });\n }\n\n async getFeelessThreshold() {\n return this.readContract({ functionName: 'getFeelessThreshold' });\n }\n}\n","[\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"target\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"AddressEmptyCode\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"AddressInsufficientBalance\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"implementation\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"ERC1967InvalidImplementation\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ERC1967NonPayable\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"FailedInnerCall\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"IncorrectFees\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidInitialization\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidProof\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"LeafUsed\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"NotInitializing\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"OutsideClaimableTimeRange\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"OwnableInvalidOwner\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"OwnableUnauthorizedAccount\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ReentrancyGuardReentrantCall\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"SafeERC20FailedOperation\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"TimeInactive\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"UUPSUnauthorizedCallContext\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"slot\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"UUPSUnsupportedProxiableUUID\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"UnsupportedOperation\",\n \"type\": \"error\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"delegate\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"ClaimDelegateSet\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"recipient\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bytes32\",\n \"name\": \"group\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bytes\",\n \"name\": \"data\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"Claimed\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"uint64\",\n \"name\": \"version\",\n \"type\": \"uint64\"\n }\n ],\n \"name\": \"Initialized\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"previousOwner\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"newOwner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"OwnershipTransferred\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"implementation\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"Upgraded\",\n \"type\": \"event\"\n },\n {\n \"inputs\": [],\n \"name\": \"UPGRADE_INTERFACE_VERSION\",\n \"outputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address[]\",\n \"name\": \"recipients\",\n \"type\": \"address[]\"\n },\n {\n \"internalType\": \"bytes32[][]\",\n \"name\": \"proofs\",\n \"type\": \"bytes32[][]\"\n },\n {\n \"internalType\": \"bytes32[]\",\n \"name\": \"groups\",\n \"type\": \"bytes32[]\"\n },\n {\n \"internalType\": \"bytes[]\",\n \"name\": \"datas\",\n \"type\": \"bytes[]\"\n },\n {\n \"internalType\": \"bytes[]\",\n \"name\": \"extraDatas\",\n \"type\": \"bytes[]\"\n }\n ],\n \"name\": \"batchDelegateClaim\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32[]\",\n \"name\": \"proof\",\n \"type\": \"bytes32[]\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"group\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"data\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"extraData\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"claim\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes\",\n \"name\": \"data\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"decodeLeafData\",\n \"outputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"index\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"claimableTimestamp\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"claimableAmount\",\n \"type\": \"uint256\"\n }\n ],\n \"internalType\": \"struct TokenTableMerkleDistributorData\",\n \"name\": \"\",\n \"type\": \"tuple\"\n }\n ],\n \"stateMutability\": \"pure\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"recipient\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes32[]\",\n \"name\": \"proof\",\n \"type\": \"bytes32[]\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"group\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"data\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"extraData\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"delegateClaim\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"user\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"group\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"data\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"encodeLeaf\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"getClaimDelegate\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"getClaimHook\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"getDeployer\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"getFeelessThreshold\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"getRoot\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"getTime\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"getToken\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"owner_\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"initialize\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"leaf\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"isLeafUsed\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"owner\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"proxiableUUID\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"renounceOwnership\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"startTime\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"endTime\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"root\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"setBaseParams\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"delegate\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"setClaimDelegate\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"hook\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"setClaimHook\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"feelessThreshold\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"setFeelessThreshold\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"newOwner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"transferOwnership\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"newImplementation\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"data\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"upgradeToAndCall\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32[]\",\n \"name\": \"proof\",\n \"type\": \"bytes32[]\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"leaf\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"verify\",\n \"outputs\": [],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"version\",\n \"outputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"pure\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes\",\n \"name\": \"\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"withdraw\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"stateMutability\": \"payable\",\n \"type\": \"receive\"\n }\n]","import { EvmContractClientOption } from '../../../types';\nimport AirdropAbi from './abis/CustomFeeNativeAirdropV4.json';\nimport { AirdropV3Client } from './AirdropV3Client';\n\nexport class AirdropV4Client extends AirdropV3Client {\n constructor(options: EvmContractClientOption) {\n super({\n ...options,\n abi: options.abi || AirdropAbi\n });\n }\n\n async claim({\n proof,\n group,\n data,\n value,\n extraData\n }: {\n proof: string[];\n group: string;\n data: string;\n value?: bigint;\n extraData?: string;\n }) {\n return this.writeContract({\n functionName: 'claim',\n args: [proof, group, data, extraData],\n value: value || 0n\n });\n }\n\n async getClaimHook() {\n return this.readContract({ functionName: 'getClaimHook' }) as Promise<string>;\n }\n}\n","import { AirdropV3Client } from './contracts/AirdropV3Client';\nimport { FeeCollectorClient } from './contracts/FeeCollectorClient';\nimport { DeployerClient } from './contracts/DeployClient';\nimport { AirdropV3FeeClient } from './contracts/AirdropV3FeeClient';\nimport { AirdropV4Client } from './contracts/AirdropV4Client';\nimport { encodeAbiParameters } from 'viem';\nimport { KycClientClient } from './contracts/KycClient';\nimport { ZERO_ADDRESS } from '../../constants';\nimport { EvmAirdropVersionEnum as AirdropVersionEnum, ChainId, EvmContractClientOption } from '../../types';\nimport { getChainById } from '../../common';\nimport { isGreaterThan } from '../../utils';\n\nexport class AirdropService {\n options: EvmContractClientOption;\n constructor(options: Omit<EvmContractClientOption, 'chain'>) {\n this.options = {\n ...options,\n chain: getChainById(options.chainId) as any\n };\n }\n\n private get airdropV3Client(): AirdropV3Client {\n if (!this.options) {\n throw new Error('options is empty');\n }\n\n return new AirdropV3Client(this.options);\n }\n\n private get airdropV3FeeClient(): AirdropV3FeeClient {\n if (!this.options) {\n throw new Error('options is empty');\n }\n\n return new AirdropV3FeeClient(this.options);\n }\n\n private get airdropV4Client(): AirdropV4Client {\n if (!this.options) {\n throw new Error('options is empty');\n }\n\n return new AirdropV4Client(this.options);\n }\n\n async getDeployerClient(): Promise<DeployerClient> {\n const deployer = await this.getDeployer();\n return new DeployerClient({\n ...this.options,\n contractAddress: deployer\n });\n }\n\n private getFeeClient(address: string): FeeCollectorClient {\n if (!this.options) {\n throw new Error('options is empty');\n }\n\n return new FeeCollectorClient({\n ...this.options,\n chainId: this.options.chainId as ChainId,\n contractAddress: address\n });\n }\n\n async getKycClient() {\n const claimHook = await this.airdropV4Client.getClaimHook();\n\n return new KycClientClient({\n ...this.options,\n contractAddress: claimHook\n });\n }\n\n async isLeafUsed(leaf: string): Promise<boolean> {\n return this.airdropV3Client.isLeafUsed(leaf) as Promise<boolean>;\n }\n\n async batchFetchClaimed(leafs: string[]) {\n return this.airdropV3Client.batchFetchClaimed(leafs) as Promise<{ result: boolean; status: string }[]>;\n }\n\n async claim({\n proof,\n group,\n data,\n value,\n extraData\n }: {\n proof: string[];\n group: string;\n data: string;\n value?: bigint;\n extraData?: {\n isLegacy: boolean;\n attestationId: bigint;\n };\n }) {\n const version = await this.getVersion();\n\n if (version === AirdropVersionEnum.V4 || version.startsWith('0.4.')) {\n const encodeData = encodeAbiParameters(\n [\n {\n type: 'tuple',\n components: [\n {\n name: 'isLegacy',\n type: 'bool'\n },\n {\n name: 'attestationId',\n type: 'uint'\n }\n ]\n }\n ],\n [extraData!]\n );\n return this.airdropV4Client.claim({\n proof,\n group,\n data,\n value,\n extraData: encodeData\n });\n }\n return this.airdropV3Client.claim({\n proof,\n group,\n data,\n value\n });\n }\n\n async getNFT() {\n return this.airdropV3Client.getNFT();\n }\n\n async getVersion() {\n return this.airdropV3Client.version();\n }\n\n async getDeployer() {\n return this.airdropV3Client.getDeployer();\n }\n\n feeCollectors = async (address: string) => {\n const deployerClient = await this.getDeployerClient();\n return await deployerClient.feeCollectors(address);\n };\n\n feeTokens = async (address: string) => {\n const deployerClient = await this.getDeployerClient();\n return await deployerClient.feeTokens(address);\n };\n\n async getFeelessThreshold() {\n return this.airdropV3FeeClient.getFeelessThreshold();\n }\n\n async getClaimFee(address: string, amount: bigint): Promise<bigint | undefined> {\n try {\n const feeCollector = await this.feeCollectors(this.options.contractAddress as string);\n if (!feeCollector || feeCollector === ZERO_ADDRESS) {\n return undefined;\n }\n const feeClient = this.getFeeClient(feeCollector as string);\n const fee = await feeClient.getFee(address, amount);\n const version = await this.getVersion();\n if (version === AirdropVersionEnum.V3) {\n const threshold = await this.getFeelessThreshold();\n if (isGreaterThan(Number(amount), Number(threshold))) {\n return fee;\n } else {\n return undefined;\n }\n }\n return fee;\n } catch (error) {\n console.error('Failed to get claim fee:', error);\n throw new Error(`Failed to calculate claim fee: ${error instanceof Error ? error.message : 'Unknown error'}`);\n }\n }\n\n async getKycThreshold() {\n const kycClient = await this.getKycClient();\n return kycClient.kycThreshold();\n }\n}\n","[\n {\n \"inputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"constructor\"\n },\n {\n \"inputs\": [],\n \"name\": \"KYCFailed\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"OwnableInvalidOwner\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"OwnableUnauthorizedAccount\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"Unsupported\",\n \"type\": \"error\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"previousOwner\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"newOwner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"OwnershipTransferred\",\n \"type\": \"event\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"spInstance\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"schemaId\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"attester\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"acceptedSchemasAndAttesters\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"approved\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"recipient\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes32[]\",\n \"name\": \"\",\n \"type\": \"bytes32[]\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"claimedAmount\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"extraData\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"afterClaim\",\n \"outputs\": [],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes32[]\",\n \"name\": \"\",\n \"type\": \"bytes32[]\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"beforeClaim\",\n \"outputs\": [],\n \"stateMutability\": \"pure\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"kycThreshold\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"legacySPInstance\",\n \"outputs\": [\n {\n \"internalType\": \"contract LegacyISP\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"owner\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"renounceOwnership\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"instance\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"schemaId\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"attester\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bool\",\n \"name\": \"approved\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"setAcceptedSchemaAndAttester\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"threshold\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"setKYCThreshold\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"legacySP\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"sp\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"setSPInstance\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"spInstance\",\n \"outputs\": [\n {\n \"internalType\": \"contract ISP\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"newOwner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"transferOwnership\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"version\",\n \"outputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"pure\",\n \"type\": \"function\"\n }\n]","import { EvmContractClientOption } from '../../../types';\nimport KycHookABI from './abis/KycHook.json';\nimport { ContractBaseClient } from './ContractBaseClient';\n\nexport class KycClientClient extends ContractBaseClient {\n constructor(options: EvmContractClientOption) {\n const address = options.contractAddress;\n if (!address) {\n throw new Error(`Kyc Client address not found on chain ${options.chainId}`);\n }\n super({\n ...options,\n contractAddress: address,\n abi: KycHookABI\n });\n }\n\n async kycThreshold(): Promise<bigint> {\n return (await this.readContract({ functionName: 'kycThreshold' })) as bigint;\n }\n}\n","import { TonConnectUI as TonWalletClient } from '@tonconnect/ui-react';\nimport { TonAirdropService, EvmAirdropService } from '../contracts';\nimport { ChainConfig } from '../constants';\nimport { Chain, WalletClient as ViemWalletClient } from 'viem';\nimport { WalletContextState as SolanaWalletState } from '@solana/wallet-adapter-react';\nimport { Wallet as SuiWalletClient } from '@mysten/wallet-standard';\nimport { useWallet } from '@aptos-labs/wallet-adapter-react';\n\nexport type ChainId = keyof typeof ChainConfig;\n\nexport interface EvmContractClientOption {\n chainId: ChainId;\n walletClient?: ViemWalletClient;\n contractAddress: string;\n abi?: any;\n chainRpc: string;\n chain: Chain;\n}\n\nexport enum ChainType {\n Evm = 'evm',\n Ton = 'ton',\n Solana = 'solana',\n Sui = 'sui',\n Aptos = 'aptos',\n Cosmos = 'cosmos'\n}\n\nexport type ThemeConfig = {\n logo?: string;\n title?: string;\n description?: string;\n coverImage?: string;\n subTitle?: string;\n primaryColor?: string;\n secondaryColor?: string;\n buttonPrimaryHover?: string;\n buttonSecondaryHover?: string;\n buttonPrimaryForeground?: string;\n buttonSecondaryForeground?: string;\n welcomeModalText?: string;\n welcomeModalTitle?: string;\n isShowWelcomeModal?: boolean;\n blockCountries?: string;\n termsOfUse?: string;\n successModalPrimaryBtnText?: string;\n successModalUrl?: string;\n successModalTitle?: string;\n successModalDesc?: string;\n successModalShareTexts?: string;\n isUnAvailable?: boolean;\n privacyPolicy?: string;\n};\n\nexport interface IProject {\n id: string;\n name: string;\n chainId: string;\n chainType: ChainType;\n tokenAddress: string;\n tokenType: string;\n startTime: number;\n endTime: number;\n contractAddress: string;\n recipientType: string;\n merkleRoot: string;\n ownerAddress: string;\n blockCountries: Record<string, string>;\n themeConf: ThemeConfig | null;\n version: string;\n extra?: IProjectExtra;\n identities: Identity[];\n projectTag: string;\n}\n\nexport interface Identity {\n identityType: string;\n authorizeUrl?: string;\n}\n\nexport enum AirdropSigIdentityTypeEnum {\n Twitter = 'X Account',\n SolanaWallet = 'Solana Wallet',\n EVMWallet = 'EVM Wallet',\n TONWallet = 'TON Wallet',\n CosmosWallet = 'Cosmos Wallet',\n SuiWallet = 'Sui Wallet',\n Google = 'Google Account',\n Discord = 'Discord Account'\n}\n\nexport interface IProjectExtra {\n kyc: boolean;\n tag: string;\n seed: number;\n signer: string;\n identities: string[];\n}\n\nexport enum ETokenType {\n Erc20 = 'ERC20',\n Native = 'NATIVE_TOKEN',\n NFT = 'ERC721'\n}\n\nexport type IAirdropClaim = {\n index: number;\n recipient: string;\n proof: string[];\n amount: string;\n unlockingAt: number;\n group: string;\n data: string;\n leaf: string;\n claimed?: boolean;\n fees: string;\n\n claimId?: string;\n\n // ton\n claimable?: boolean;\n proofHash: string;\n ownerAddress: string;\n proofBoc: string;\n expiryTimestamp: number;\n expired?: boolean;\n project: IProject;\n};\n\nexport interface IExtraData {\n isLegacy: boolean;\n attestationId: bigint;\n}\n\nexport interface IAirdropClaimData extends IAirdropClaim {\n extraData?: IExtraData;\n value?: bigint | string;\n}\n\nexport type IAirdropSignatureClaim = {\n percent: number;\n unlockingAt: number;\n claimDeadline: number;\n value: string;\n recipient: string;\n recipientType: string;\n claimId: string;\n data?: {\n claimableTimestamp: string;\n claimableAmount: string;\n };\n signature?: string;\n claimed?: boolean;\n note: string;\n fees: string;\n};\n\nexport interface ISignatureClaimData {\n recipient: string;\n data:\n | string\n | {\n claimableTimestamp: string;\n claimableAmount: string;\n };\n claimId: string;\n signature: string;\n extraData?: string;\n unlockingAt: number;\n value: string;\n fees: string;\n hash: string;\n}\n\nexport interface IAirdropSignatureIdentity {\n type: AirdropSigIdentityTypeEnum;\n value: string;\n displayName: string;\n}\n\nexport interface IAirdropData {\n claims: IAirdropClaim[];\n}\n\nexport interface IAirdropSignatureData {\n claims: IAirdropSignatureClaim[];\n identities: IAirdropSignatureIdentity[];\n}\n\nexport interface IClaimSignature {\n claimId: string;\n data: string;\n signature: string;\n hash: string;\n fees: string;\n}\n\nexport enum TonAirdropVersionEnum {\n V1 = '1.0.0',\n V2 = '2.0.0',\n LiteV1 = '11.0.0',\n NativeV1 = '21.0.0'\n}\n\nexport enum EvmAirdropVersionEnum {\n V0 = '0.0.2', // 兼容btc减半 airdrop\n V3 = '0.3.0', // zeta 收费\n V4 = '0.4.0' // zeta kyc、kyc threshold\n}\n\ntype AptosWalletClient = ReturnType<typeof useWallet>;\n\nexport type IWalletClient =\n | TonWalletClient\n | ViemWalletClient\n | SolanaWalletState\n | SuiWalletClient\n | AptosWalletClient;\n\nexport type { TonWalletClient, ViemWalletClient, SolanaWalletState, SuiWalletClient, AptosWalletClient };\nexport type IAirdropService = TonAirdropService | EvmAirdropService;\n\ntype BaseAirdropOptions = {\n endpoint?: string;\n project?: IProject;\n chainRpc?: string;\n};\n\ntype ProjectIdOptions = BaseAirdropOptions & {\n projectId: string;\n slug?: never;\n};\n\ntype SlugOptions = BaseAirdropOptions & {\n slug: string;\n projectId?: never;\n};\n\nexport type IAirdropOptions = ProjectIdOptions | SlugOptions;\n\nexport interface IContractConfig {\n version?: string | null;\n paused: boolean | null;\n claimFee?: string | null;\n}\n\nexport enum ErrorCode {\n // 'Wallet already connected'\n WALLET_ALREADY_CONNECTED = 'Wallet already connected'\n}\n","import TonWeb from 'tonweb';\nimport {\n ASSOCIATED_TOKEN_PROGRAM_ID,\n getAssociatedTokenAddress,\n getAccount,\n createAssociatedTokenAccountInstruction,\n TokenAccountNotFoundError,\n TokenInvalidAccountOwnerError,\n TokenInvalidMintError,\n TokenInvalidOwnerError,\n TOKEN_PROGRAM_ID,\n TOKEN_2022_PROGRAM_ID\n} from '@solana/spl-token';\nimport { Cluster, Commitment, Connection, ParsedAccountData, PublicKey, Transaction } from '@solana/web3.js';\nimport { solanaDevNet, solanaMainNet } from '../constants';\n\nexport function flipAddressType(address: string) {\n if (!address) return '';\n return address.includes(':')\n ? new TonWeb.utils.Address(address).toString(true, true, true)\n : new TonWeb.utils.Address(address).toString(false, false, true);\n}\n\nexport function hexStrToU8Array(hexStr: string): number[] {\n // 移除 \"0x\" 前缀(如果存在)\n hexStr = hexStr.startsWith('0x') ? hexStr.slice(2) : hexStr;\n\n // 确保 hexStr 长度正确(64 个字符,即 32 字节)\n // if (hexStr.length !== 64) {\n // throw new Error('Invalid hex string length. Expected 64 characters (32 bytes).');\n // }\n\n // 将 16 进制字符串转换为 Uint8Array\n const bytes = [];\n for (let i = 0; i < hexStr.length / 2; i++) {\n bytes[i] = parseInt(hexStr.substring(i * 2, i * 2 + 2), 16);\n }\n\n return bytes;\n}\n\nexport async function getOrCreateAssociatedTokenAccount({\n connection,\n payer,\n mint,\n owner,\n signTransaction,\n allowOwnerOffCurve = false,\n commitment,\n programId = TOKEN_PROGRAM_ID,\n associatedTokenProgramId = ASSOCIATED_TOKEN_PROGRAM_ID\n}: {\n connection: Connection;\n payer: PublicKey;\n mint: PublicKey;\n owner: PublicKey;\n allowOwnerOffCurve?: boolean;\n commitment?: Commitment;\n programId?: PublicKey;\n associatedTokenProgramId?: PublicKey;\n signTransaction: (signature: Transaction) => Promise<Transaction>;\n}) {\n const associatedToken = await getAssociatedTokenAddress(\n mint,\n owner,\n allowOwnerOffCurve,\n programId,\n associatedTokenProgramId\n );\n // This is the optimal logic, considering TX fee, client-side computation, RPC roundtrips and guaranteed idempotent.\n // Sadly we can't do this atomically.\n let account;\n try {\n account = await getAccount(connection, associatedToken, commitment, programId);\n } catch (error) {\n // TokenAccountNotFoundError can be possible if the associated address has already received some lamports,\n // becoming a system account. Assuming program derived addressing is safe, this is the only case for the\n // TokenInvalidAccountOwnerError in this code path.\n if (error instanceof TokenAccountNotFoundError || error instanceof TokenInvalidAccountOwnerError) {\n // As this isn't atomic, it's possible others can create associated accounts meanwhile.\n try {\n const transaction = new Transaction().add(\n createAssociatedTokenAccountInstruction(\n payer,\n associatedToken,\n owner,\n mint,\n programId,\n associatedTokenProgramId\n )\n );\n const { blockhash } = await connection.getLatestBlockhash();\n\n console.log(blockhash, 'blockhash');\n transaction.feePayer = await payer;\n transaction.recentBlockhash = blockhash;\n const signed = await signTransaction(transaction);\n\n const signature = await connection.sendRawTransaction(signed.serialize());\n\n // await connection.confirmTransaction(signature, 'finalized');\n\n const latestBlockhash = await connection.getLatestBlockhash();\n await connection.confirmTransaction(\n {\n signature: signature,\n blockhash: latestBlockhash.blockhash,\n lastValidBlockHeight: latestBlockhash.lastValidBlockHeight\n },\n 'finalized'\n );\n } catch (error) {\n console.log(error);\n // Ignore all errors; for now there is no API-compatible way to selectively ignore the expected\n // instruction error if the associated account exists already.\n }\n // Now this should always succeed\n account = await getAccount(connection, associatedToken, commitment, programId);\n } else {\n throw error;\n }\n }\n if (!account.mint.equals(mint)) throw new TokenInvalidMintError();\n if (!account.owner.equals(owner)) throw new TokenInvalidOwnerError();\n return account;\n}\n\nexport enum SplTokenVersion {\n SplToken = 'spl-token',\n SplToken2022 = 'spl-token-2022'\n}\n\nexport type FetchTokenVersionOptions = {\n clusterOrEndpoint?: Cluster | string;\n};\n\nexport type FetchTokenMetadataOptions = FetchTokenVersionOptions & {\n fetchOffchainMetadata?: boolean;\n};\n\nasync function _getTokenProgramAndParsedAccountData(conn: Connection, tokenAddress: string) {\n const tokenMintAddress = new PublicKey(tokenAddress);\n const parsedMintAccountInfo = await conn.getParsedAccountInfo(tokenMintAddress);\n const parsedMintAccountData = parsedMintAccountInfo.value?.data as ParsedAccountData;\n if (parsedMintAccountData?.program === SplTokenVersion.SplToken) {\n return {\n name: SplTokenVersion.SplToken,\n programId: TOKEN_PROGRAM_ID,\n parsedMintAccountData\n };\n } else if (parsedMintAccountData?.program === SplTokenVersion.SplToken2022) {\n return {\n name: SplTokenVersion.SplToken2022,\n programId: TOKEN_2022_PROGRAM_ID,\n parsedMintAccountData\n };\n }\n return null;\n}\n\nfunction _getConnection(clusterOrEndpoint: Cluster | string) {\n let endpoint: string;\n try {\n endpoint = clusterApiUrl((clusterOrEndpoint as Cluster) ?? 'mainnet-beta');\n } catch {\n endpoint = clusterOrEndpoint as string;\n }\n\n const conn = new Connection(endpoint);\n return conn;\n}\n\nexport async function fetchTokenVersion(tokenAddress: string, options: FetchTokenMetadataOptions) {\n const conn = _getConnection(options.clusterOrEndpoint!);\n const data = await _getTokenProgramAndParsedAccountData(conn, tokenAddress);\n return data ? { name: data.name, programId: data.programId } : null;\n}\n\nexport const clusterApiUrl = (cluster?: Cluster) => {\n if (cluster === 'devnet') {\n return solanaDevNet.rpcUrls.default.http[0];\n }\n return solanaMainNet.rpcUrls.default.http[0];\n};\n","import dayjs from 'dayjs';\nimport { customAlphabet } from 'nanoid';\n\nexport const getCustomNaNoId = (): string => {\n const nanoid = customAlphabet('1234567890abcdefghijklmnopqrstuvwxyz', 10);\n return nanoid();\n};\n\nexport const safeParseJSON = <T = any>(str: string | null | undefined, defaultValue: T = {} as T): T => {\n if (!str || typeof str !== 'string') {\n return defaultValue;\n }\n try {\n const parsed = JSON.parse(str);\n return parsed !== null && parsed !== undefined ? parsed : defaultValue;\n } catch (error) {\n console.warn('Failed to parse JSON:', error);\n return defaultValue;\n }\n};\n\nexport const isBeforeByUnix = (unix: number) => {\n return dayjs(new Date()).isBefore(dayjs.unix(unix), 'millisecond');\n};\n\nexport const delay = (ms: number): Promise<unknown> => new Promise((res) => setTimeout(res, ms));\n\nexport async function retry<T>(fn: () => Promise<T>, options: { retries: number; delay: number }): Promise<T> {\n let lastError: Error | undefined;\n for (let i = 0; i < options.retries; i++) {\n try {\n return await fn();\n } catch (e) {\n if (e instanceof Error) {\n lastError = e;\n }\n await new Promise((resolve) => setTimeout(resolve, options.delay));\n }\n }\n throw lastError;\n}\n\nexport const isMobile = () => {\n if (typeof window === 'undefined') {\n return false;\n }\n return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\n};\n\nexport const cleanUrlParams = (paramsToRemove: string[]) => {\n if (typeof window !== 'undefined') {\n const url = new URL(window.location.href);\n paramsToRemove.forEach((param) => {\n url.searchParams.delete(param);\n });\n\n window.history.replaceState({}, document.title, url.toString());\n }\n};\n","export type ApiClientOptions = {\n baseURL?: string;\n};\n\nexport type ApiRequestOptions = {\n params?: Record<string, string | number>;\n skipHandleError?: boolean;\n headers?: Record<string, string>;\n};\n\ntype ApiResponse = {\n message: string;\n statusCode: number;\n data: unknown;\n success: boolean;\n};\n\nexport class ApiClient {\n constructor(private options?: ApiClientOptions) { }\n\n extend(options: ApiClientOptions): ApiClient {\n return new ApiClient({\n ...this.options,\n ...options\n });\n }\n\n async get<TRes>(url: string, options?: ApiRequestOptions): Promise<TRes> {\n return this.request('GET', url, null, options) as TRes;\n }\n\n async post<TRes, TReq = unknown>(url: string, data?: TReq, options?: ApiRequestOptions): Promise<TRes> {\n return this.request('POST', url, data, options) as TRes;\n }\n\n async put<TRes, TReq = unknown>(url: string, data?: TReq, options?: ApiRequestOptions): Promise<TRes> {\n return this.request('PUT', url, data, options) as TRes;\n }\n\n async delete<TRes>(url: string, options?: ApiRequestOptions): Promise<TRes> {\n return this.request('DELETE', url, null, options) as TRes;\n }\n\n private async request(\n method: 'GET' | 'POST' | 'PUT' | 'DELETE',\n url: string,\n data: unknown,\n options?: ApiRequestOptions\n ): Promise<unknown> {\n const finalUrl = (this.options?.baseURL || '') + url;\n\n const init: RequestInit = { method, headers: options?.headers || {} };\n if (data instanceof FormData) {\n init.body = data;\n } else {\n init.headers = { 'content-type': 'application/json', ...init.headers };\n init.body = data ? JSON.stringify(data) : void 0;\n }\n\n const res = await fetch(finalUrl, init);\n const [status, resData]: [number, ApiResponse] = await Promise.all([res.status, res.json() as any]);\n if (status < 200 || status >= 300 || resData?.success !== true) {\n return Promise.reject(resData);\n }\n return resData.data;\n }\n}\n\nexport const apiClient = new ApiClient({ baseURL: 'https://claim.tokentable.xyz/api' });\n","import { BigNumber } from 'bignumber.js';\n\nBigNumber.config({ DECIMAL_PLACES: 50, EXPONENTIAL_AT: 1e9 });\n\nexport function safePlus(val1: string | number, val2: string | number): string {\n return new BigNumber(val1).plus(val2).toString() as string;\n}\n\nexport function isGreaterThan(val1: string | number, val2: string | number): boolean {\n return new BigNumber(val1).gt(new BigNumber(val2));\n}\n","import { EvmSignatureAirdropService } from '../contracts';\nimport { getChainRpc } from '../common';\nimport { safePlus } from './math';\n\nexport const batchCheckClaimedForSignature = async ({\n contractAddress,\n chainId,\n chainRpc,\n claimIds\n}: {\n contractAddress: string;\n chainId: number;\n chainRpc?: string;\n claimIds: string[];\n}): Promise<boolean[]> => {\n if (!claimIds.length) {\n return [];\n }\n\n const service = new EvmSignatureAirdropService({\n chainId: chainId as any,\n contractAddress: contractAddress,\n chainRpc: chainRpc || getChainRpc(chainId as any)\n });\n\n try {\n return await service.batchFetchClaimed(claimIds);\n } catch (error: any) {\n throw new Error(`Failed to check claim status: ${error.message}`);\n }\n};\n\nexport const getAvailableClaimAmountForSignature = async ({\n contractAddress,\n chainId,\n claims\n}: {\n contractAddress: string;\n chainId: number;\n chainRpc?: string;\n claims: { claimId: string; formatedValue: string }[];\n}) => {\n if (!claims.length) return 0;\n const service = new EvmSignatureAirdropService({\n chainId: chainId as any,\n contractAddress: contractAddress,\n chainRpc: getChainRpc(chainId as any)\n });\n\n const claimIds = claims.map((claim) => claim.claimId);\n const claimedData = await service.batchFetchClaimed(claimIds);\n const availableClaims = claims.filter((_, index) => !claimedData[index]);\n\n const claimAmount = availableClaims.reduce((acc, claim) => {\n return safePlus(acc, claim.formatedValue);\n }, '0');\n\n return claimAmount;\n};\n","[\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"target\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"AddressEmptyCode\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"implementation\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"ERC1967InvalidImplementation\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ERC1967NonPayable\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"EnforcedPause\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ExpectedPause\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"FailedCall\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"IncorrectFees\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidInitialization\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidSignature\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"NotInitializing\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"OutsideClaimableTimeRange\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"OwnableInvalidOwner\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"OwnableUnauthorizedAccount\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ReentrancyGuardReentrantCall\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"SafeERC20FailedOperation\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"TimeInactive\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"UUPSUnauthorizedCallContext\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"slot\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"UUPSUnsupportedProxiableUUID\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"UnsupportedOperation\",\n \"type\": \"error\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"uint64\",\n \"name\": \"version\",\n \"type\": \"uint64\"\n }\n ],\n \"name\": \"Initialized\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"previousOwner\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"newOwner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"OwnershipTransferred\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"Paused\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"Unpaused\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"implementation\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"Upgraded\",\n \"type\": \"event\"\n },\n {\n \"inputs\": [],\n \"name\": \"UPGRADE_INTERFACE_VERSION\",\n \"outputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address[]\",\n \"name\": \"recipients\",\n \"type\": \"address[]\"\n },\n {\n \"internalType\": \"bytes32[]\",\n \"name\": \"userClaimIds\",\n \"type\": \"bytes32[]\"\n },\n {\n \"internalType\": \"bytes[]\",\n \"name\": \"datas\",\n \"type\": \"bytes[]\"\n },\n {\n \"internalType\": \"bytes[]\",\n \"name\": \"signatures\",\n \"type\": \"bytes[]\"\n },\n {\n \"internalType\": \"bytes[]\",\n \"name\": \"extraDatas\",\n \"type\": \"bytes[]\"\n }\n ],\n \"name\": \"claim\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes\",\n \"name\": \"userClaimData\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"decodeUserClaimData\",\n \"outputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"claimableTimestamp\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"claimableAmount\",\n \"type\": \"uint256\"\n }\n ],\n \"internalType\": \"struct FungibleTokenECDSADistributorData\",\n \"name\": \"\",\n \"type\": \"tuple\"\n }\n ],\n \"stateMutability\": \"pure\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"userClaimId\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"userClaimData\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"encodeHashToBeSigned\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32[]\",\n \"name\": \"userClaimIds\",\n \"type\": \"bytes32[]\"\n }\n ],\n \"name\": \"getClaimStatus\",\n \"outputs\": [\n {\n \"internalType\": \"bool[]\",\n \"name\": \"\",\n \"type\": \"bool[]\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"getStorage\",\n \"outputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"version_\",\n \"type\": \"string\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bool\",\n \"name\": \"paused\",\n \"type\": \"bool\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"deployer\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"authorizedSigner\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"claimHook\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"startTime\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"endTime\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"owner_\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"initialize\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"owner\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"paused\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"proxiableUUID\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"renounceOwnership\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"startTime\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"endTime\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"authorizedSigner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"setBaseParams\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"hook\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"setClaimHook\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"togglePause\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"newOwner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"transferOwnership\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"newImplementation\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"data\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"upgradeToAndCall\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"signer\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"hash\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"signature\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"verify\",\n \"outputs\": [],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"version\",\n \"outputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"pure\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes\",\n \"name\": \"\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"withdraw\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n }\n]\n","import { EvmContractClientOption } from '../../../types';\nimport ABI from './abis/FungibleTokenECDSADistributor.json';\nimport { ContractBaseClient } from './ContractBaseClient';\n\nexport class AirdropSignatureClient extends ContractBaseClient {\n constructor(options: EvmContractClientOption) {\n super({\n ...options,\n abi: ABI\n });\n }\n\n async getClaimStatus(userClaimId: string) {\n return this.readContract({ functionName: 'getClaimStatus', args: [userClaimId] });\n }\n\n async claim(\n data: {\n recipient: string;\n data: string;\n claimId: string;\n signature: string;\n extraData?: string;\n }[],\n value?: bigint\n ) {\n const [recipients = [], userClaimIds = [], datas = [], signatures = [], extraDatas = []] = [\n 'recipient',\n 'claimId',\n 'data',\n 'signature',\n 'extraData'\n ].map((key) => data.map((item) => item[key as keyof (typeof data)[0]] || ''));\n\n return this.writeContract({\n functionName: 'claim',\n args: [recipients, userClaimIds, datas, signatures, extraDatas],\n value: value || 0n\n });\n }\n\n async batchFetchClaimed(userClaimIds: string[]) {\n const res = (await this.readContract({ functionName: 'getClaimStatus', args: [userClaimIds] })) as boolean[];\n return res;\n }\n\n async getDeployer() {\n const res = (await this.readContract({ functionName: 'getStorage' })) as any[];\n return res?.[3] as string;\n }\n\n async getVersion() {\n const res = (await this.readContract({ functionName: 'getStorage' })) as any[];\n return res?.[0];\n }\n\n async getPaused() {\n const res = (await this.readContract({ functionName: 'getStorage' })) as any[];\n return res?.[2] as boolean;\n }\n}\n","[\n {\n \"inputs\": [{ \"internalType\": \"address\", \"name\": \"target\", \"type\": \"address\" }],\n \"name\": \"AddressEmptyCode\",\n \"type\": \"error\"\n },\n { \"inputs\": [], \"name\": \"ClaimClaimed\", \"type\": \"error\" },\n {\n \"inputs\": [{ \"internalType\": \"address\", \"name\": \"implementation\", \"type\": \"address\" }],\n \"name\": \"ERC1967InvalidImplementation\",\n \"type\": \"error\"\n },\n { \"inputs\": [], \"name\": \"ERC1967NonPayable\", \"type\": \"error\" },\n { \"inputs\": [], \"name\": \"EnforcedPause\", \"type\": \"error\" },\n { \"inputs\": [], \"name\": \"ExpectedPause\", \"type\": \"error\" },\n { \"inputs\": [], \"name\": \"FailedCall\", \"type\": \"error\" },\n { \"inputs\": [], \"name\": \"IncorrectFees\", \"type\": \"error\" },\n { \"inputs\": [], \"name\": \"InvalidInitialization\", \"type\": \"error\" },\n { \"inputs\": [], \"name\": \"InvalidSignature\", \"type\": \"error\" },\n { \"inputs\": [], \"name\": \"NotInitializing\", \"type\": \"error\" },\n { \"inputs\": [], \"name\": \"OutsideClaimableTimeRange\", \"type\": \"error\" },\n {\n \"inputs\": [{ \"internalType\": \"address\", \"name\": \"owner\", \"type\": \"address\" }],\n \"name\": \"OwnableInvalidOwner\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [{ \"internalType\": \"address\", \"name\": \"account\", \"type\": \"address\" }],\n \"name\": \"OwnableUnauthorizedAccount\",\n \"type\": \"error\"\n },\n { \"inputs\": [], \"name\": \"ReentrancyGuardReentrantCall\", \"type\": \"error\" },\n {\n \"inputs\": [{ \"internalType\": \"address\", \"name\": \"token\", \"type\": \"address\" }],\n \"name\": \"SafeERC20FailedOperation\",\n \"type\": \"error\"\n },\n { \"inputs\": [], \"name\": \"TimeInactive\", \"type\": \"error\" },\n { \"inputs\": [], \"name\": \"UUPSUnauthorizedCallContext\", \"type\": \"error\" },\n {\n \"inputs\": [{ \"internalType\": \"bytes32\", \"name\": \"slot\", \"type\": \"bytes32\" }],\n \"name\": \"UUPSUnsupportedProxiableUUID\",\n \"type\": \"error\"\n },\n { \"inputs\": [], \"name\": \"UnsupportedOperation\", \"type\": \"error\" },\n {\n \"anonymous\": false,\n \"inputs\": [{ \"indexed\": false, \"internalType\": \"uint64\", \"name\": \"version\", \"type\": \"uint64\" }],\n \"name\": \"Initialized\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n { \"indexed\": true, \"internalType\": \"address\", \"name\": \"previousOwner\", \"type\": \"address\" },\n { \"indexed\": true, \"internalType\": \"address\", \"name\": \"newOwner\", \"type\": \"address\" }\n ],\n \"name\": \"OwnershipTransferred\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [{ \"indexed\": false, \"internalType\": \"address\", \"name\": \"account\", \"type\": \"address\" }],\n \"name\": \"Paused\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [{ \"indexed\": false, \"internalType\": \"address\", \"name\": \"account\", \"type\": \"address\" }],\n \"name\": \"Unpaused\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [{ \"indexed\": true, \"internalType\": \"address\", \"name\": \"implementation\", \"type\": \"address\" }],\n \"name\": \"Upgraded\",\n \"type\": \"event\"\n },\n {\n \"inputs\": [],\n \"name\": \"UPGRADE_INTERFACE_VERSION\",\n \"outputs\": [{ \"internalType\": \"string\", \"name\": \"\", \"type\": \"string\" }],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"address[]\", \"name\": \"recipients\", \"type\": \"address[]\" },\n { \"internalType\": \"bytes32[]\", \"name\": \"userClaimIds\", \"type\": \"bytes32[]\" },\n { \"internalType\": \"bytes[]\", \"name\": \"datas\", \"type\": \"bytes[]\" },\n { \"internalType\": \"bytes[]\", \"name\": \"signatures\", \"type\": \"bytes[]\" },\n { \"internalType\": \"bytes[]\", \"name\": \"extraDatas\", \"type\": \"bytes[]\" }\n ],\n \"name\": \"claim\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [{ \"internalType\": \"bytes\", \"name\": \"\", \"type\": \"bytes\" }],\n \"name\": \"decodeUserClaimData\",\n \"outputs\": [\n {\n \"components\": [\n { \"internalType\": \"uint256\", \"name\": \"claimableTimestamp\", \"type\": \"uint256\" },\n { \"internalType\": \"uint256\", \"name\": \"claimableAmount\", \"type\": \"uint256\" }\n ],\n \"internalType\": \"struct FungibleTokenECDSADistributorData\",\n \"name\": \"\",\n \"type\": \"tuple\"\n }\n ],\n \"stateMutability\": \"pure\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [{ \"internalType\": \"bytes\", \"name\": \"userClaimData\", \"type\": \"bytes\" }],\n \"name\": \"decodeUserClaimDataWithFees\",\n \"outputs\": [\n {\n \"components\": [\n { \"internalType\": \"uint256\", \"name\": \"claimableTimestamp\", \"type\": \"uint256\" },\n { \"internalType\": \"uint256\", \"name\": \"claimableAmount\", \"type\": \"uint256\" },\n { \"internalType\": \"uint256\", \"name\": \"fees\", \"type\": \"uint256\" }\n ],\n \"internalType\": \"struct FungibleTokenWithFeesECDSADistributorData\",\n \"name\": \"\",\n \"type\": \"tuple\"\n }\n ],\n \"stateMutability\": \"pure\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"bytes32\", \"name\": \"userClaimId\", \"type\": \"bytes32\" },\n { \"internalType\": \"bytes\", \"name\": \"userClaimData\", \"type\": \"bytes\" }\n ],\n \"name\": \"encodeHashToBeSigned\",\n \"outputs\": [{ \"internalType\": \"bytes32\", \"name\": \"\", \"type\": \"bytes32\" }],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [{ \"internalType\": \"bytes32[]\", \"name\": \"userClaimIds\", \"type\": \"bytes32[]\" }],\n \"name\": \"getClaimStatus\",\n \"outputs\": [{ \"internalType\": \"bool[]\", \"name\": \"\", \"type\": \"bool[]\" }],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"getStorage\",\n \"outputs\": [\n { \"internalType\": \"string\", \"name\": \"version_\", \"type\": \"string\" },\n { \"internalType\": \"address\", \"name\": \"owner\", \"type\": \"address\" },\n { \"internalType\": \"bool\", \"name\": \"paused\", \"type\": \"bool\" },\n { \"internalType\": \"address\", \"name\": \"deployer\", \"type\": \"address\" },\n { \"internalType\": \"address\", \"name\": \"authorizedSigner\", \"type\": \"address\" },\n { \"internalType\": \"address\", \"name\": \"token\", \"type\": \"address\" },\n { \"internalType\": \"address\", \"name\": \"claimHook\", \"type\": \"address\" },\n { \"internalType\": \"uint256\", \"name\": \"startTime\", \"type\": \"uint256\" },\n { \"internalType\": \"uint256\", \"name\": \"endTime\", \"type\": \"uint256\" }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [{ \"internalType\": \"address\", \"name\": \"owner_\", \"type\": \"address\" }],\n \"name\": \"initialize\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"owner\",\n \"outputs\": [{ \"internalType\": \"address\", \"name\": \"\", \"type\": \"address\" }],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"paused\",\n \"outputs\": [{ \"internalType\": \"bool\", \"name\": \"\", \"type\": \"bool\" }],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"proxiableUUID\",\n \"outputs\": [{ \"internalType\": \"bytes32\", \"name\": \"\", \"type\": \"bytes32\" }],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n { \"inputs\": [], \"name\": \"renounceOwnership\", \"outputs\": [], \"stateMutability\": \"nonpayable\", \"type\": \"function\" },\n {\n \"inputs\": [\n { \"internalType\": \"address\", \"name\": \"token\", \"type\": \"address\" },\n { \"internalType\": \"uint256\", \"name\": \"startTime\", \"type\": \"uint256\" },\n { \"internalType\": \"uint256\", \"name\": \"endTime\", \"type\": \"uint256\" },\n { \"internalType\": \"address\", \"name\": \"authorizedSigner\", \"type\": \"address\" }\n ],\n \"name\": \"setBaseParams\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [{ \"internalType\": \"address\", \"name\": \"hook\", \"type\": \"address\" }],\n \"name\": \"setClaimHook\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n { \"inputs\": [], \"name\": \"togglePause\", \"outputs\": [], \"stateMutability\": \"nonpayable\", \"type\": \"function\" },\n {\n \"inputs\": [{ \"internalType\": \"address\", \"name\": \"newOwner\", \"type\": \"address\" }],\n \"name\": \"transferOwnership\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"address\", \"name\": \"newImplementation\", \"type\": \"address\" },\n { \"internalType\": \"bytes\", \"name\": \"data\", \"type\": \"bytes\" }\n ],\n \"name\": \"upgradeToAndCall\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n { \"internalType\": \"address\", \"name\": \"signer\", \"type\": \"address\" },\n { \"internalType\": \"bytes32\", \"name\": \"hash\", \"type\": \"bytes32\" },\n { \"internalType\": \"bytes\", \"name\": \"signature\", \"type\": \"bytes\" }\n ],\n \"name\": \"verify\",\n \"outputs\": [],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"version\",\n \"outputs\": [{ \"internalType\": \"string\", \"name\": \"\", \"type\": \"string\" }],\n \"stateMutability\": \"pure\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [{ \"internalType\": \"bytes\", \"name\": \"\", \"type\": \"bytes\" }],\n \"name\": \"withdraw\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n { \"stateMutability\": \"payable\", \"type\": \"receive\" }\n]\n","import { EvmContractClientOption } from '../../../types';\nimport ABI from './abis/FungibleTokenWithFeesECDSADistributor.json';\nimport { ContractBaseClient } from './ContractBaseClient';\n\nexport class AirdropSignatureFeeClient extends ContractBaseClient {\n constructor(options: EvmContractClientOption) {\n super({\n ...options,\n abi: ABI\n });\n }\n\n async getClaimStatus(userClaimId: string) {\n return this.readContract({ functionName: 'getClaimStatus', args: [userClaimId] });\n }\n\n async claim(\n data: {\n recipient: string;\n data: string;\n claimId: string;\n signature: string;\n extraData?: string;\n }[],\n value?: bigint\n ) {\n const [recipients = [], userClaimIds = [], datas = [], signatures = [], extraDatas = []] = [\n 'recipient',\n 'claimId',\n 'data',\n 'signature',\n 'extraData'\n ].map((key) => data.map((item) => item[key as keyof (typeof data)[0]] || ''));\n\n return this.writeContract({\n functionName: 'claim',\n args: [recipients, userClaimIds, datas, signatures, extraDatas],\n value: value || 0n\n });\n }\n\n async batchFetchClaimed(userClaimIds: string[]) {\n const res = (await this.readContract({ functionName: 'getClaimStatus', args: [userClaimIds] })) as boolean[];\n return res;\n }\n\n async getDeployer() {\n const res = (await this.readContract({ functionName: 'getStorage' })) as any[];\n return res?.[3] as string;\n }\n\n async getVersion() {\n const res = (await this.readContract({ functionName: 'getStorage' })) as any[];\n return res?.[0];\n }\n\n async getPaused() {\n const res = (await this.readContract({ functionName: 'getStorage' })) as any[];\n return res?.[2] as boolean;\n }\n}\n","import { ChainId, EvmContractClientOption } from '../../types';\nimport { ZERO_ADDRESS } from '../../constants';\nimport { getChainById } from '../../common';\nimport { AirdropSignatureClient } from './contracts/AirdropSignatureClient';\nimport { DeployerClient } from './contracts/DeployClient';\nimport { FeeCollectorClient } from './contracts/FeeCollectorClient';\nimport { AirdropSignatureFeeClient } from './contracts/AirdropSignatureFeeClient';\nimport { getAddress } from 'viem';\n\nexport class SignatureAirdropService {\n options: EvmContractClientOption;\n constructor(options: Omit<EvmContractClientOption, 'chain'>) {\n this.options = {\n ...options,\n chain: getChainById(options.chainId) as any\n };\n }\n\n private get airdropClient(): AirdropSignatureClient {\n if (!this.options) {\n throw new Error('options is empty');\n }\n\n return new AirdropSignatureClient(this.options);\n }\n private get airdropWithFeeClient(): AirdropSignatureFeeClient {\n if (!this.options) {\n throw new Error('options is empty');\n }\n\n return new AirdropSignatureFeeClient(this.options);\n }\n\n async getDeployerClient(): Promise<DeployerClient> {\n const deployer = await this.getDeployer();\n return new DeployerClient({\n ...this.options,\n contractAddress: deployer\n });\n }\n\n private getFeeClient(address: string): FeeCollectorClient {\n if (!this.options) {\n throw new Error('options is empty');\n }\n\n return new FeeCollectorClient({\n ...this.options,\n chainId: this.options.chainId as ChainId,\n contractAddress: address\n });\n }\n\n async getDeployer() {\n return this.airdropClient.getDeployer();\n }\n\n async getVersion() {\n return this.airdropClient.getVersion();\n }\n\n feeCollectors = async (address: string) => {\n const deployerClient = await this.getDeployerClient();\n return await deployerClient.feeCollectors(address);\n };\n\n feeTokens = async (address: string) => {\n const deployerClient = await this.getDeployerClient();\n return await deployerClient.feeTokens(address);\n };\n\n async getFeelessThreshold() {\n // return this.airdropClient.getFeelessThreshold();\n }\n\n async getClaimFee(address: string, amount: bigint): Promise<bigint | undefined> {\n const feeCollector = await this.feeCollectors(this.options.contractAddress as string);\n if (!feeCollector || feeCollector === ZERO_ADDRESS) {\n return undefined;\n }\n const feeClient = this.getFeeClient(feeCollector as string);\n const fee = (await feeClient.getFee(address, amount)) as bigint;\n return fee;\n }\n\n async batchFetchClaimed(userClaimIds: string[]): Promise<boolean[]> {\n const res = await this.airdropClient.batchFetchClaimed(userClaimIds);\n return res;\n }\n\n async getPaused() {\n return this.airdropClient.getPaused();\n }\n\n async claim(\n data: {\n recipient: string;\n claimId: string;\n data: string;\n signature: string;\n fees?: string;\n extraData?: string;\n }[],\n recipient?: string\n ) {\n const version = await this.getVersion();\n\n if (version.includes('FungibleTokenWithFeesECDSADistributor')) {\n const totalFees = data.map((item) => BigInt(item.fees || '0')).reduce((sum, fee) => sum + fee, BigInt(0));\n return this.airdropWithFeeClient.claim(data, totalFees);\n }\n const defaultRecipient = this.options.walletClient?.account?.address;\n const delegateMode = recipient ? getAddress(recipient) !== defaultRecipient : false;\n const feeData = (await this.getClaimFee(this.options.contractAddress, 1n)) || 0n;\n const value = delegateMode ? feeData * BigInt(data.length) : feeData;\n return this.airdropClient.claim(data, value);\n }\n}\n","import { PublicKey } from '@solana/web3.js';\nimport { SolanaContractClientBase, SolanaContractInfo } from './SolanaContractClient';\nimport IDL from './merkle_token_distributor_solana.json';\nimport * as anchor from '@coral-xyz/anchor';\nimport { TOKEN_PROGRAM_ID } from '@solana/spl-token';\nimport { MerkleTokenDistributorSolana } from './merkle_token_distributor_solana';\nimport { FeeCollectorClient } from './FeeCollectorClient';\nimport { fetchTokenVersion } from '../../utils';\nimport { IAirdropClaimData } from '../../types';\n\nexport class MerkleTokenDistributorClient extends SolanaContractClientBase<MerkleTokenDistributorSolana> {\n projectId: string;\n constructor(options: SolanaContractInfo) {\n super({\n ...options,\n idl: IDL\n });\n this.projectId = options.projectId;\n }\n\n get FeeCollector() {\n return new FeeCollectorClient({\n projectId: this.projectId,\n walletClient: this.wallet,\n chainId: this.chainId,\n chainRpc: this.chainRpc\n });\n }\n\n async getStoragePDA(): Promise<PublicKey> {\n const [storagePDA] = await this.findProgramAddress([\n anchor.utils.bytes.utf8.encode('storage'),\n anchor.utils.bytes.utf8.encode(this.projectId)\n ]);\n\n return storagePDA;\n }\n\n async getAirdropPDA(): Promise<PublicKey> {\n const [airdropPDA] = await this.findProgramAddress([\n anchor.utils.bytes.utf8.encode('airdrop'),\n anchor.utils.bytes.utf8.encode(this.projectId)\n ]);\n\n return airdropPDA;\n }\n\n async getConfigPDA(): Promise<PublicKey> {\n const [configPDA] = await this.findProgramAddress([anchor.utils.bytes.utf8.encode('config')]);\n\n return configPDA;\n }\n\n async getVersionPDA(): Promise<PublicKey> {\n const [versionPDA] = await this.findProgramAddress([anchor.utils.bytes.utf8.encode('version')]);\n\n return versionPDA;\n }\n\n async getVaultPDA(): Promise<PublicKey> {\n const airdropPDA = await this.getAirdropPDA();\n const [vaultPDA] = await this.findProgramAddress([anchor.utils.bytes.utf8.encode('vault'), airdropPDA.toBuffer()]);\n\n return vaultPDA;\n }\n\n async getContractInfo() {\n const airdropPDA = await this.getAirdropPDA();\n const config = await this.fetchAccountData('merkleAirdrop', airdropPDA);\n const versionPDA = await this.getVersionPDA();\n const versionData = await this.fetchAccountData('version', versionPDA);\n return {\n version: versionData.version as string,\n token: config.projectToken.toString() as string,\n startTime: Number(config.startTime),\n endTime: Number(config.endTime),\n paused: config.paused as boolean,\n root: Buffer.from(config.root).toString('hex') as string,\n owner: config.owner.toString() as string\n };\n }\n\n async getVersion() {\n const versionPDA = await this.getVersionPDA();\n const versionData = await this.fetchAccountData('version', versionPDA);\n return versionData.version;\n }\n\n async getPaused() {\n const config = await this.getContractInfo();\n return config.paused;\n }\n\n async getClaimFee(amount: bigint) {\n return this.FeeCollector.getClaimFee(this.programId, amount.toString());\n }\n\n async getFeeInfo() {\n const airdropPDA = await this.getAirdropPDA();\n const config = await this.fetchAccountData('merkleAirdrop', airdropPDA);\n return {\n feeToken: config.feeToken.toString(),\n feeCollector: config.feeCollector.toString()\n };\n }\n\n async deploy() {\n return this.invokeInstruction(\n 'deploy',\n {\n feeCollector: this.FeeCollector.programId,\n authority: this.wallet.publicKey\n },\n [new PublicKey(this.FeeCollector.programId)]\n );\n }\n\n async getAirdropAddress() {\n try {\n const airdropPDA = await this.getAirdropPDA();\n await this.fetchAccountData('merkleAirdrop', airdropPDA);\n return airdropPDA.toString();\n } catch (error) {\n return '';\n }\n }\n\n async initialize({ projectId, token }: { projectId: string; token: string }): Promise<string> {\n await this.FeeCollector.initProjectFee();\n const owner = this.wallet.publicKey;\n const airdropPDA = await this.getAirdropPDA();\n const projectFeePDA = await this.FeeCollector.getProjectFeePDA(this.programId);\n const feeCollectorStorage = await this.FeeCollector.getStoragePDA();\n console.log(airdropPDA.toString(), 'airdropPDA');\n console.log(projectFeePDA.toString(), 'projectFeePDA', feeCollectorStorage.toString(), 'feeCollectorStorage');\n const tx = await this.program.methods\n .initialize(projectId, new PublicKey(token), owner, true)\n .accountsPartial({\n feeCollector: this.FeeCollector.programId,\n feeCollectorStorage: feeCollectorStorage,\n fee: projectFeePDA\n })\n .rpc();\n await this.confirmTransaction(tx);\n try {\n const versionPDA = await this.getVersionPDA();\n await this.fetchAccountData('version', versionPDA);\n } catch (err) {\n // init version only once\n await this.invokeInstruction('version', {}, []);\n }\n const airdropAddress = await this.getAirdropAddress();\n return airdropAddress;\n }\n\n async setBaseParams(tokenAddress: string, startTime: number, endTime: number, root: string) {\n const start = new anchor.BN(startTime),\n end = new anchor.BN(endTime);\n await this.invokeInstruction(\n 'setBaseParams',\n {\n // airdrop: airdropPDA,\n authority: this.wallet.publicKey\n },\n [this.projectId, new PublicKey(tokenAddress), start, end, Array.from(Buffer.from(root, 'hex')), '']\n );\n }\n\n async togglePause() {\n await this.invokeInstruction('togglePause', {}, [this.projectId]);\n }\n\n async setFeeCollector(feeCollector: string) {\n await this.invokeInstruction('setFeeCollector', {}, [this.projectId, new PublicKey(feeCollector)]);\n }\n\n async setFeeParams(feeCollector: string, feeToken: string) {\n const tx = new anchor.web3.Transaction()\n .add(\n await this.program.methods\n .setFeeCollector(this.projectId, new PublicKey(feeCollector), true)\n .accountsPartial({\n feeCollectorStorage: null,\n fee: null\n })\n .transaction()\n )\n .add(await this.program.methods.setFeeToken(this.projectId, new PublicKey(feeToken)).transaction());\n return await this.program.provider.sendAndConfirm?.(tx, [], { commitment: 'finalized' });\n }\n\n async transferOwnership(newOwner: string) {\n const tx = await this.program.methods\n .transferOwnership(this.projectId, new PublicKey(newOwner))\n .accountsPartial({\n authority: this.wallet.publicKey\n })\n .rpc();\n await this.confirmTransaction?.(tx);\n }\n\n async getUsedLeafPDA(leaf: string) {\n const [usedLeafPDA] = await this.findProgramAddress([\n anchor.utils.bytes.utf8.encode('usedLeaf'),\n Buffer.from(leaf, 'hex')\n ]);\n\n return usedLeafPDA;\n }\n\n async isLeafUsed(leaf: string) {\n const usedLeafPDA = await this.getUsedLeafPDA(leaf);\n const usedLeafInfo = await this.program.account['usedLeaf'].fetch(usedLeafPDA);\n return usedLeafInfo?.used || false;\n }\n\n async batchFetchClaimed(leafs: string[]) {\n const usedLeafPDAs = await Promise.all(leafs.map((leaf) => this.getUsedLeafPDA(leaf)));\n const usedLeafInfo = await this.program.account['usedLeaf'].fetchMultiple(usedLeafPDAs);\n return usedLeafInfo.map((info) => ({\n result: info?.used || false,\n status: 'success'\n }));\n }\n\n async claim({ leaf, proof, index, unlockingAt, amount }: IAirdropClaimData) {\n const config = await this.getContractInfo();\n const feeCollectorStoragePDA = await this.FeeCollector.getStoragePDA();\n const feePDA = await this.FeeCollector.getProjectFeePDA(this.programId);\n const tokenVersion = await fetchTokenVersion(config.token, {\n clusterOrEndpoint: this.chainId\n });\n return this.program.methods\n .claim(\n this.projectId,\n Array.from(Buffer.from(leaf, 'hex')),\n proof.map((p) => Array.from(Buffer.from(p, 'hex'))),\n [],\n {\n claimableTimestamp: new anchor.BN(unlockingAt),\n claimableAmount: new anchor.BN(amount),\n index: new anchor.BN(index)\n }\n )\n .accounts({\n recipient: this.wallet.publicKey,\n tokenMint: new PublicKey(config.token),\n feeCollector: this.FeeCollector.programId,\n feeCollectorStorage: feeCollectorStoragePDA,\n feeCollectorVault: null,\n feeTokenMint: null,\n fee: feePDA,\n authorityFeeAta: null,\n tokenProgram: tokenVersion?.programId || TOKEN_PROGRAM_ID,\n feeTokenProgram: null\n })\n .rpc();\n }\n}\n","import { Program, AnchorProvider, setProvider, Wallet, Idl } from '@coral-xyz/anchor';\nimport {\n AllAccountsMap,\n AllInstructions,\n IdlAccounts,\n MakeMethodsNamespace\n} from '@coral-xyz/anchor/dist/cjs/program/namespace/types';\nimport { Cluster, Commitment, Connection, PublicKey, Signer } from '@solana/web3.js';\nimport { clusterApiUrl } from '../../utils';\n\nexport interface SolanaContractInfo {\n projectId: string;\n chainId?: string;\n idl?: any;\n token?: string;\n walletClient: Wallet;\n chainRpc: string;\n}\n\nexport abstract class SolanaContractClientBase<T extends Idl = Idl> {\n protected program: Program<T>;\n protected connection: Connection;\n protected wallet: Wallet;\n protected chainId: string;\n chainRpc: string;\n\n constructor(contractInfo: SolanaContractInfo) {\n const { idl, walletClient, chainId, chainRpc } = contractInfo;\n this.chainId = chainId || 'mainnet-beta';\n\n this.connection = this.getConnection(chainId);\n this.wallet = walletClient;\n this.chainRpc = chainRpc;\n\n const provider = new AnchorProvider(this.connection as any, this.wallet, { commitment: 'confirmed' });\n setProvider(provider);\n\n this.program = new Program(idl, provider);\n }\n\n get programId(): PublicKey {\n return this.program.programId;\n }\n\n getConnection(endpoint?: string) {\n const rpcUrl = this.chainRpc ? this.chainRpc : clusterApiUrl((endpoint as Cluster) ?? 'mainnet-beta');\n\n const conn = new Connection(rpcUrl);\n return conn;\n }\n\n protected async findProgramAddress(\n seeds: Array<Buffer | Uint8Array>,\n programId?: PublicKey\n ): Promise<[PublicKey, number]> {\n return await PublicKey.findProgramAddressSync(seeds, programId || new PublicKey(this.program.idl.address));\n }\n\n async fetchAccountData<A extends keyof AllAccountsMap<T>>(\n accountName: A,\n address: PublicKey | string,\n commitment?: Commitment\n ): Promise<IdlAccounts<T>[A]> {\n try {\n if (!this.program.account[accountName]) {\n throw new Error(`Account ${String(accountName)} not found in program`);\n }\n\n const account = await this.program.account[accountName].fetch(address, commitment);\n return account as IdlAccounts<T>[A];\n } catch (error) {\n console.error(`Error fetching account ${String(accountName)}:`, error);\n throw error;\n }\n }\n\n async invokeView<M extends keyof MakeMethodsNamespace<T, AllInstructions<T>>>(\n methodName: M,\n args: Parameters<MakeMethodsNamespace<T, AllInstructions<T>>[M]>\n ): Promise<any> {\n try {\n if (!this.program.methods[methodName]) {\n throw new Error(`Method ${methodName} not found in program`);\n }\n\n const result = await this.program.methods[methodName](...args).view();\n\n return result;\n } catch (error) {\n console.error(`Error invoking view method ${methodName}:`, error);\n throw error;\n }\n }\n\n async invokeInstruction<M extends keyof MakeMethodsNamespace<T, AllInstructions<T>>>(\n methodName: M,\n accounts: any,\n args: any,\n options?: { signers?: Signer[] }\n ): Promise<string> {\n if (!this.program.methods[methodName]) {\n throw new Error(`Method ${methodName} not found in program`);\n }\n let instruction = this.program.methods[methodName](...args).accounts(accounts);\n\n if (options?.signers?.length) {\n instruction = instruction.signers(options.signers);\n }\n\n const tx = await instruction.rpc();\n\n await this.confirmTransaction(tx);\n console.log(tx);\n\n return tx;\n }\n\n async confirmTransaction(tx: string): Promise<string> {\n const latestBlockhash = await this.connection.getLatestBlockhash();\n await this.connection.confirmTransaction(\n {\n signature: tx,\n blockhash: latestBlockhash.blockhash,\n lastValidBlockHeight: latestBlockhash.lastValidBlockHeight\n },\n 'finalized'\n );\n return tx;\n }\n}\n","{\n \"address\": \"BSYRcLiYQTiB1am7vGbx4xavoo97PMY2C1hdafdT7oyj\",\n \"metadata\": {\n \"name\": \"merkle_token_distributor_solana\",\n \"version\": \"0.1.0\",\n \"spec\": \"0.1.0\",\n \"description\": \"Created with Anchor\"\n },\n \"instructions\": [\n {\n \"name\": \"claim\",\n \"discriminator\": [\n 62,\n 198,\n 214,\n 193,\n 213,\n 159,\n 108,\n 210\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"airdrop\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 105,\n 114,\n 100,\n 114,\n 111,\n 112\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"_project_id\"\n }\n ]\n }\n },\n {\n \"name\": \"vault\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 118,\n 97,\n 117,\n 108,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"airdrop\"\n }\n ]\n }\n },\n {\n \"name\": \"recipient\"\n },\n {\n \"name\": \"recipient_ata\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"recipient\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"token_program\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"token_mint\"\n }\n ],\n \"program\": {\n \"kind\": \"const\",\n \"value\": [\n 140,\n 151,\n 37,\n 143,\n 78,\n 36,\n 137,\n 241,\n 187,\n 61,\n 16,\n 41,\n 20,\n 142,\n 13,\n 131,\n 11,\n 90,\n 19,\n 153,\n 218,\n 255,\n 16,\n 132,\n 4,\n 142,\n 123,\n 216,\n 219,\n 233,\n 248,\n 89\n ]\n }\n }\n },\n {\n \"name\": \"authority_fee_ata\",\n \"writable\": true,\n \"optional\": true\n },\n {\n \"name\": \"used_leaf\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 117,\n 115,\n 101,\n 100,\n 76,\n 101,\n 97,\n 102\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"_leaf\"\n }\n ]\n }\n },\n {\n \"name\": \"token_mint\"\n },\n {\n \"name\": \"fee_collector_storage\",\n \"writable\": true,\n \"optional\": true\n },\n {\n \"name\": \"fee_collector_vault\",\n \"writable\": true,\n \"optional\": true\n },\n {\n \"name\": \"fee_collector\"\n },\n {\n \"name\": \"fee_token_mint\",\n \"writable\": true,\n \"optional\": true\n },\n {\n \"name\": \"fee\",\n \"writable\": true\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n },\n {\n \"name\": \"token_program\"\n },\n {\n \"name\": \"fee_token_program\",\n \"optional\": true\n },\n {\n \"name\": \"associated_token_program\",\n \"address\": \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\"\n }\n ],\n \"args\": [\n {\n \"name\": \"project_id\",\n \"type\": \"string\"\n },\n {\n \"name\": \"leaf\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"proof\",\n \"type\": {\n \"vec\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n }\n },\n {\n \"name\": \"group\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"data\",\n \"type\": {\n \"defined\": {\n \"name\": \"TokenTableMerkleDistributorData\"\n }\n }\n }\n ]\n },\n {\n \"name\": \"deploy\",\n \"discriminator\": [\n 67,\n 36,\n 143,\n 118,\n 36,\n 164,\n 92,\n 217\n ],\n \"accounts\": [\n {\n \"name\": \"config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"fee_collector\"\n },\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"default_fee_collector\",\n \"type\": \"pubkey\"\n }\n ]\n },\n {\n \"name\": \"deposit\",\n \"discriminator\": [\n 242,\n 35,\n 198,\n 137,\n 82,\n 225,\n 242,\n 182\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"airdrop\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 105,\n 114,\n 100,\n 114,\n 111,\n 112\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"_project_id\"\n }\n ]\n }\n },\n {\n \"name\": \"vault\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 118,\n 97,\n 117,\n 108,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"airdrop\"\n }\n ]\n }\n },\n {\n \"name\": \"authority_ata\",\n \"writable\": true\n },\n {\n \"name\": \"token_mint\"\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n },\n {\n \"name\": \"token_program\"\n },\n {\n \"name\": \"associated_token_program\",\n \"address\": \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\"\n }\n ],\n \"args\": [\n {\n \"name\": \"project_id\",\n \"type\": \"string\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"encode_leaf\",\n \"discriminator\": [\n 84,\n 101,\n 187,\n 185,\n 39,\n 73,\n 231,\n 150\n ],\n \"accounts\": [],\n \"args\": [\n {\n \"name\": \"storage\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"user\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"group\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"data\",\n \"type\": {\n \"defined\": {\n \"name\": \"TokenTableMerkleDistributorData\"\n }\n }\n }\n ],\n \"returns\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"initialize\",\n \"discriminator\": [\n 175,\n 175,\n 109,\n 31,\n 13,\n 152,\n 155,\n 237\n ],\n \"accounts\": [\n {\n \"name\": \"airdrop\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 105,\n 114,\n 100,\n 114,\n 111,\n 112\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"_project_id\"\n }\n ]\n }\n },\n {\n \"name\": \"config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"fee_collector\",\n \"optional\": true\n },\n {\n \"name\": \"fee_collector_storage\",\n \"optional\": true\n },\n {\n \"name\": \"fee\",\n \"writable\": true,\n \"optional\": true\n },\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"project_id\",\n \"type\": \"string\"\n },\n {\n \"name\": \"project_token\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"init_fee_account\",\n \"type\": \"bool\"\n }\n ]\n },\n {\n \"name\": \"receive_program_admin\",\n \"discriminator\": [\n 238,\n 172,\n 61,\n 197,\n 23,\n 72,\n 249,\n 87\n ],\n \"accounts\": [\n {\n \"name\": \"config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"set_base_params\",\n \"discriminator\": [\n 53,\n 16,\n 151,\n 65,\n 155,\n 108,\n 105,\n 229\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"airdrop\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 105,\n 114,\n 100,\n 114,\n 111,\n 112\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"_project_id\"\n }\n ]\n }\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"project_id\",\n \"type\": \"string\"\n },\n {\n \"name\": \"start_time\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"end_time\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"root\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"uri\",\n \"type\": \"string\"\n }\n ]\n },\n {\n \"name\": \"set_claim_delegate\",\n \"discriminator\": [\n 227,\n 191,\n 177,\n 221,\n 167,\n 40,\n 47,\n 138\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"airdrop\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 105,\n 114,\n 100,\n 114,\n 111,\n 112\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"_project_id\"\n }\n ]\n }\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"project_id\",\n \"type\": \"string\"\n },\n {\n \"name\": \"delegate\",\n \"type\": \"pubkey\"\n }\n ]\n },\n {\n \"name\": \"set_default_fee_collector\",\n \"discriminator\": [\n 250,\n 25,\n 136,\n 29,\n 77,\n 231,\n 26,\n 141\n ],\n \"accounts\": [\n {\n \"name\": \"config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"fee_collector\"\n },\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"default_fee_collector\",\n \"type\": \"pubkey\"\n }\n ]\n },\n {\n \"name\": \"set_fee_collector\",\n \"discriminator\": [\n 143,\n 46,\n 10,\n 113,\n 121,\n 157,\n 245,\n 166\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"config\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"airdrop\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 105,\n 114,\n 100,\n 114,\n 111,\n 112\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"_project_id\"\n }\n ]\n }\n },\n {\n \"name\": \"fee_collector\"\n },\n {\n \"name\": \"fee_collector_storage\",\n \"optional\": true\n },\n {\n \"name\": \"fee\",\n \"writable\": true,\n \"optional\": true\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"project_id\",\n \"type\": \"string\"\n },\n {\n \"name\": \"fee_collector\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"init_fee_account\",\n \"type\": \"bool\"\n }\n ]\n },\n {\n \"name\": \"set_fee_token\",\n \"discriminator\": [\n 52,\n 90,\n 163,\n 123,\n 220,\n 202,\n 90,\n 217\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"config\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"airdrop\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 105,\n 114,\n 100,\n 114,\n 111,\n 112\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"_project_id\"\n }\n ]\n }\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"project_id\",\n \"type\": \"string\"\n },\n {\n \"name\": \"fee_token\",\n \"type\": \"pubkey\"\n }\n ]\n },\n {\n \"name\": \"toggle_pause\",\n \"discriminator\": [\n 238,\n 237,\n 206,\n 27,\n 255,\n 95,\n 123,\n 229\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"airdrop\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 105,\n 114,\n 100,\n 114,\n 111,\n 112\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"_project_id\"\n }\n ]\n }\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"project_id\",\n \"type\": \"string\"\n }\n ]\n },\n {\n \"name\": \"transfer_ownership\",\n \"discriminator\": [\n 65,\n 177,\n 215,\n 73,\n 53,\n 45,\n 99,\n 47\n ],\n \"accounts\": [\n {\n \"name\": \"airdrop\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 105,\n 114,\n 100,\n 114,\n 111,\n 112\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"_project_id\"\n }\n ]\n }\n },\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"project_id\",\n \"type\": \"string\"\n },\n {\n \"name\": \"new_owner\",\n \"type\": \"pubkey\"\n }\n ]\n },\n {\n \"name\": \"transfer_program_admin\",\n \"discriminator\": [\n 47,\n 201,\n 152,\n 248,\n 132,\n 27,\n 33,\n 139\n ],\n \"accounts\": [\n {\n \"name\": \"config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"new_admin\",\n \"writable\": true,\n \"signer\": true,\n \"optional\": true\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"new_admin\",\n \"type\": \"pubkey\"\n }\n ]\n },\n {\n \"name\": \"version\",\n \"discriminator\": [\n 118,\n 65,\n 195,\n 198,\n 129,\n 216,\n 252,\n 192\n ],\n \"accounts\": [\n {\n \"name\": \"version\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 118,\n 101,\n 114,\n 115,\n 105,\n 111,\n 110\n ]\n }\n ]\n }\n },\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"withdraw\",\n \"discriminator\": [\n 183,\n 18,\n 70,\n 156,\n 148,\n 109,\n 161,\n 34\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"airdrop\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 105,\n 114,\n 100,\n 114,\n 111,\n 112\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"_project_id\"\n }\n ]\n }\n },\n {\n \"name\": \"vault\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 118,\n 97,\n 117,\n 108,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"airdrop\"\n }\n ]\n }\n },\n {\n \"name\": \"authority_ata\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"authority\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"token_program\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"token_mint\"\n }\n ],\n \"program\": {\n \"kind\": \"const\",\n \"value\": [\n 140,\n 151,\n 37,\n 143,\n 78,\n 36,\n 137,\n 241,\n 187,\n 61,\n 16,\n 41,\n 20,\n 142,\n 13,\n 131,\n 11,\n 90,\n 19,\n 153,\n 218,\n 255,\n 16,\n 132,\n 4,\n 142,\n 123,\n 216,\n 219,\n 233,\n 248,\n 89\n ]\n }\n }\n },\n {\n \"name\": \"token_mint\"\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n },\n {\n \"name\": \"token_program\"\n },\n {\n \"name\": \"associated_token_program\",\n \"address\": \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\"\n }\n ],\n \"args\": [\n {\n \"name\": \"project_id\",\n \"type\": \"string\"\n }\n ]\n }\n ],\n \"accounts\": [\n {\n \"name\": \"Config\",\n \"discriminator\": [\n 155,\n 12,\n 170,\n 224,\n 30,\n 250,\n 204,\n 130\n ]\n },\n {\n \"name\": \"MerkleAirdrop\",\n \"discriminator\": [\n 86,\n 93,\n 215,\n 62,\n 159,\n 242,\n 77,\n 220\n ]\n },\n {\n \"name\": \"UsedLeaf\",\n \"discriminator\": [\n 164,\n 55,\n 142,\n 33,\n 246,\n 150,\n 42,\n 179\n ]\n },\n {\n \"name\": \"Version\",\n \"discriminator\": [\n 234,\n 4,\n 254,\n 42,\n 242,\n 196,\n 136,\n 199\n ]\n }\n ],\n \"events\": [\n {\n \"name\": \"ClaimDelegateSet\",\n \"discriminator\": [\n 82,\n 153,\n 121,\n 138,\n 224,\n 132,\n 71,\n 59\n ]\n },\n {\n \"name\": \"Claimed\",\n \"discriminator\": [\n 217,\n 192,\n 123,\n 72,\n 108,\n 150,\n 248,\n 33\n ]\n },\n {\n \"name\": \"Deployed\",\n \"discriminator\": [\n 50,\n 145,\n 94,\n 59,\n 169,\n 255,\n 159,\n 186\n ]\n },\n {\n \"name\": \"Initialized\",\n \"discriminator\": [\n 208,\n 213,\n 115,\n 98,\n 115,\n 82,\n 201,\n 209\n ]\n }\n ],\n \"errors\": [\n {\n \"code\": 6000,\n \"name\": \"AlreadyDeployed\",\n \"msg\": \"AlreadyDeployed\"\n },\n {\n \"code\": 6001,\n \"name\": \"UnsupportedOperation\",\n \"msg\": \"UnsupportedOperation\"\n },\n {\n \"code\": 6002,\n \"name\": \"TimeInactive\",\n \"msg\": \"TimeInactive\"\n },\n {\n \"code\": 6003,\n \"name\": \"InvalidProof\",\n \"msg\": \"InvalidProof\"\n },\n {\n \"code\": 6004,\n \"name\": \"LeafUsed\",\n \"msg\": \"LeafUsed\"\n },\n {\n \"code\": 6005,\n \"name\": \"IncorrectFees\",\n \"msg\": \"IncorrectFees\"\n },\n {\n \"code\": 6006,\n \"name\": \"OutsideClaimableTimeRange\",\n \"msg\": \"OutsideClaimableTimeRange\"\n },\n {\n \"code\": 6007,\n \"name\": \"AlreadyInitialized\",\n \"msg\": \"AlreadyInitialized\"\n },\n {\n \"code\": 6008,\n \"name\": \"NotOwner\",\n \"msg\": \"NotOwner\"\n },\n {\n \"code\": 6009,\n \"name\": \"NotProgramAdmin\",\n \"msg\": \"NotProgramAdmin\"\n },\n {\n \"code\": 6010,\n \"name\": \"OwnableUnauthorizedAccount\",\n \"msg\": \"OwnableUnauthorizedAccount\"\n },\n {\n \"code\": 6011,\n \"name\": \"NotPermissioned\",\n \"msg\": \"NotPermissioned\"\n },\n {\n \"code\": 6012,\n \"name\": \"InvalidFeeCollector\",\n \"msg\": \"InvalidFeeCollector\"\n },\n {\n \"code\": 6013,\n \"name\": \"Paused\",\n \"msg\": \"Paused\"\n }\n ],\n \"types\": [\n {\n \"name\": \"ClaimDelegateSet\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"delegate\",\n \"type\": \"pubkey\"\n }\n ]\n }\n },\n {\n \"name\": \"Claimed\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"recipient\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"group\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"data\",\n \"type\": {\n \"defined\": {\n \"name\": \"TokenTableMerkleDistributorData\"\n }\n }\n }\n ]\n }\n },\n {\n \"name\": \"Config\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"admin\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"new_admin\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"default_fee_collector\",\n \"type\": \"pubkey\"\n }\n ]\n }\n },\n {\n \"name\": \"Deployed\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": []\n }\n },\n {\n \"name\": \"Initialized\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"project_id\",\n \"type\": \"string\"\n }\n ]\n }\n },\n {\n \"name\": \"MerkleAirdrop\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"owner\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"root\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"project_token\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"claim_delegate\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"start_time\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"end_time\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"fee_collector\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"fee_token\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"paused\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"uri\",\n \"type\": \"string\"\n }\n ]\n }\n },\n {\n \"name\": \"TokenTableMerkleDistributorData\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"index\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"claimable_timestamp\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"claimable_amount\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"UsedLeaf\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"used\",\n \"type\": \"bool\"\n }\n ]\n }\n },\n {\n \"name\": \"Version\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"version\",\n \"type\": \"string\"\n }\n ]\n }\n }\n ]\n}","{\n \"address\": \"81oZDfqqbWkPbCx26A1mAwZmEDDZoeyxqmHuVtf4o7KB\",\n \"metadata\": {\n \"name\": \"fee_collector\",\n \"version\": \"0.1.0\",\n \"spec\": \"0.1.0\",\n \"description\": \"Created with Anchor\"\n },\n \"instructions\": [\n {\n \"name\": \"collect_fee\",\n \"discriminator\": [\n 60,\n 173,\n 247,\n 103,\n 4,\n 93,\n 130,\n 48\n ],\n \"accounts\": [\n {\n \"name\": \"storage\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 115,\n 116,\n 111,\n 114,\n 97,\n 103,\n 101\n ]\n }\n ]\n }\n },\n {\n \"name\": \"fee_token_mint\",\n \"writable\": true,\n \"optional\": true\n },\n {\n \"name\": \"vault\",\n \"writable\": true,\n \"optional\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 118,\n 97,\n 117,\n 108,\n 116\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"_fee_token\"\n }\n ]\n }\n },\n {\n \"name\": \"fee\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 102,\n 101,\n 101\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"_distributor\"\n },\n {\n \"kind\": \"arg\",\n \"path\": \"_project_id\"\n }\n ]\n }\n },\n {\n \"name\": \"source_ata\",\n \"writable\": true,\n \"optional\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"authority\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"token_program\"\n },\n {\n \"kind\": \"arg\",\n \"path\": \"_fee_token\"\n }\n ],\n \"program\": {\n \"kind\": \"const\",\n \"value\": [\n 140,\n 151,\n 37,\n 143,\n 78,\n 36,\n 137,\n 241,\n 187,\n 61,\n 16,\n 41,\n 20,\n 142,\n 13,\n 131,\n 11,\n 90,\n 19,\n 153,\n 218,\n 255,\n 16,\n 132,\n 4,\n 142,\n 123,\n 216,\n 219,\n 233,\n 248,\n 89\n ]\n }\n }\n },\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n },\n {\n \"name\": \"token_program\",\n \"optional\": true\n },\n {\n \"name\": \"associated_token_program\",\n \"address\": \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\"\n }\n ],\n \"args\": [\n {\n \"name\": \"fee_token\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"distributor\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"project_id\",\n \"type\": \"string\"\n },\n {\n \"name\": \"token_transferred\",\n \"type\": \"u64\"\n }\n ],\n \"returns\": \"u64\"\n },\n {\n \"name\": \"collect_fee_amount\",\n \"discriminator\": [\n 119,\n 58,\n 206,\n 40,\n 52,\n 201,\n 202,\n 81\n ],\n \"accounts\": [\n {\n \"name\": \"storage\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 115,\n 116,\n 111,\n 114,\n 97,\n 103,\n 101\n ]\n }\n ]\n }\n },\n {\n \"name\": \"fee_token_mint\",\n \"writable\": true,\n \"optional\": true\n },\n {\n \"name\": \"vault\",\n \"writable\": true,\n \"optional\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 118,\n 97,\n 117,\n 108,\n 116\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"_fee_token\"\n }\n ]\n }\n },\n {\n \"name\": \"source_ata\",\n \"writable\": true,\n \"optional\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"authority\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"token_program\"\n },\n {\n \"kind\": \"arg\",\n \"path\": \"_fee_token\"\n }\n ],\n \"program\": {\n \"kind\": \"const\",\n \"value\": [\n 140,\n 151,\n 37,\n 143,\n 78,\n 36,\n 137,\n 241,\n 187,\n 61,\n 16,\n 41,\n 20,\n 142,\n 13,\n 131,\n 11,\n 90,\n 19,\n 153,\n 218,\n 255,\n 16,\n 132,\n 4,\n 142,\n 123,\n 216,\n 219,\n 233,\n 248,\n 89\n ]\n }\n }\n },\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n },\n {\n \"name\": \"token_program\",\n \"optional\": true\n },\n {\n \"name\": \"associated_token_program\",\n \"address\": \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\"\n }\n ],\n \"args\": [\n {\n \"name\": \"fee_token\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"fee_amount\",\n \"type\": \"u64\"\n }\n ],\n \"returns\": \"u64\"\n },\n {\n \"name\": \"get_fee\",\n \"discriminator\": [\n 115,\n 195,\n 235,\n 161,\n 25,\n 219,\n 60,\n 29\n ],\n \"accounts\": [\n {\n \"name\": \"storage\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 115,\n 116,\n 111,\n 114,\n 97,\n 103,\n 101\n ]\n }\n ]\n }\n },\n {\n \"name\": \"fee\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 102,\n 101,\n 101\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"_distributor\"\n },\n {\n \"kind\": \"arg\",\n \"path\": \"_project_id\"\n }\n ]\n }\n }\n ],\n \"args\": [\n {\n \"name\": \"distributor\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"project_id\",\n \"type\": \"string\"\n },\n {\n \"name\": \"token_transferred\",\n \"type\": \"u64\"\n }\n ],\n \"returns\": \"u64\"\n },\n {\n \"name\": \"init_fee_token\",\n \"discriminator\": [\n 29,\n 135,\n 230,\n 71,\n 198,\n 116,\n 59,\n 38\n ],\n \"accounts\": [\n {\n \"name\": \"storage\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 115,\n 116,\n 111,\n 114,\n 97,\n 103,\n 101\n ]\n }\n ]\n }\n },\n {\n \"name\": \"vault\",\n \"writable\": true,\n \"optional\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 118,\n 97,\n 117,\n 108,\n 116\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"fee_token\"\n }\n ]\n }\n },\n {\n \"name\": \"token_mint\",\n \"optional\": true\n },\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"token_program\"\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"fee_token\",\n \"type\": \"pubkey\"\n }\n ]\n },\n {\n \"name\": \"init_project_fee\",\n \"discriminator\": [\n 21,\n 68,\n 31,\n 251,\n 143,\n 139,\n 107,\n 64\n ],\n \"accounts\": [\n {\n \"name\": \"storage\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 115,\n 116,\n 111,\n 114,\n 97,\n 103,\n 101\n ]\n }\n ]\n }\n },\n {\n \"name\": \"fee\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 102,\n 101,\n 101\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"_distributor\"\n },\n {\n \"kind\": \"arg\",\n \"path\": \"_project_id\"\n }\n ]\n }\n },\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"distributor\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"project_id\",\n \"type\": \"string\"\n }\n ]\n },\n {\n \"name\": \"initialize\",\n \"discriminator\": [\n 175,\n 175,\n 109,\n 31,\n 13,\n 152,\n 155,\n 237\n ],\n \"accounts\": [\n {\n \"name\": \"storage\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 115,\n 116,\n 111,\n 114,\n 97,\n 103,\n 101\n ]\n }\n ]\n }\n },\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"receive_ownership\",\n \"discriminator\": [\n 156,\n 163,\n 211,\n 191,\n 160,\n 158,\n 61,\n 55\n ],\n \"accounts\": [\n {\n \"name\": \"storage\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 115,\n 116,\n 111,\n 114,\n 97,\n 103,\n 101\n ]\n }\n ]\n }\n },\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"set_custom_fee_bips\",\n \"discriminator\": [\n 97,\n 137,\n 188,\n 218,\n 237,\n 225,\n 78,\n 39\n ],\n \"accounts\": [\n {\n \"name\": \"storage\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 115,\n 116,\n 111,\n 114,\n 97,\n 103,\n 101\n ]\n }\n ]\n }\n },\n {\n \"name\": \"fee\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 102,\n 101,\n 101\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"_distributor\"\n },\n {\n \"kind\": \"arg\",\n \"path\": \"_project_id\"\n }\n ]\n }\n },\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"distributor\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"project_id\",\n \"type\": \"string\"\n },\n {\n \"name\": \"bips\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"set_custom_fee_fixed\",\n \"discriminator\": [\n 105,\n 246,\n 45,\n 208,\n 238,\n 7,\n 174,\n 190\n ],\n \"accounts\": [\n {\n \"name\": \"storage\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 115,\n 116,\n 111,\n 114,\n 97,\n 103,\n 101\n ]\n }\n ]\n }\n },\n {\n \"name\": \"fee\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 102,\n 101,\n 101\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"_distributor\"\n },\n {\n \"kind\": \"arg\",\n \"path\": \"_project_id\"\n }\n ]\n }\n },\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"distributor\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"project_id\",\n \"type\": \"string\"\n },\n {\n \"name\": \"fixed_fee\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"set_default_fee\",\n \"discriminator\": [\n 150,\n 137,\n 197,\n 111,\n 176,\n 227,\n 201,\n 110\n ],\n \"accounts\": [\n {\n \"name\": \"storage\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 115,\n 116,\n 111,\n 114,\n 97,\n 103,\n 101\n ]\n }\n ]\n }\n },\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"bips\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"transfer_ownership\",\n \"discriminator\": [\n 65,\n 177,\n 215,\n 73,\n 53,\n 45,\n 99,\n 47\n ],\n \"accounts\": [\n {\n \"name\": \"storage\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 115,\n 116,\n 111,\n 114,\n 97,\n 103,\n 101\n ]\n }\n ]\n }\n },\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"new_owner\",\n \"writable\": true,\n \"signer\": true,\n \"optional\": true\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"new_owner\",\n \"type\": \"pubkey\"\n }\n ]\n },\n {\n \"name\": \"withdraw\",\n \"discriminator\": [\n 183,\n 18,\n 70,\n 156,\n 148,\n 109,\n 161,\n 34\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"storage\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 115,\n 116,\n 111,\n 114,\n 97,\n 103,\n 101\n ]\n }\n ]\n }\n },\n {\n \"name\": \"vault\",\n \"writable\": true,\n \"optional\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 118,\n 97,\n 117,\n 108,\n 116\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"fee_token\"\n }\n ]\n }\n },\n {\n \"name\": \"authority_ata\",\n \"writable\": true,\n \"optional\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"authority\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"token_program\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"token_mint\"\n }\n ],\n \"program\": {\n \"kind\": \"const\",\n \"value\": [\n 140,\n 151,\n 37,\n 143,\n 78,\n 36,\n 137,\n 241,\n 187,\n 61,\n 16,\n 41,\n 20,\n 142,\n 13,\n 131,\n 11,\n 90,\n 19,\n 153,\n 218,\n 255,\n 16,\n 132,\n 4,\n 142,\n 123,\n 216,\n 219,\n 233,\n 248,\n 89\n ]\n }\n }\n },\n {\n \"name\": \"token_mint\",\n \"optional\": true\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n },\n {\n \"name\": \"token_program\"\n },\n {\n \"name\": \"associated_token_program\",\n \"address\": \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\"\n }\n ],\n \"args\": [\n {\n \"name\": \"fee_token\",\n \"type\": \"pubkey\"\n }\n ]\n }\n ],\n \"accounts\": [\n {\n \"name\": \"Fee\",\n \"discriminator\": [\n 24,\n 55,\n 150,\n 250,\n 168,\n 27,\n 101,\n 178\n ]\n },\n {\n \"name\": \"FeeCollectorStorage\",\n \"discriminator\": [\n 204,\n 100,\n 40,\n 33,\n 80,\n 124,\n 161,\n 126\n ]\n }\n ],\n \"events\": [\n {\n \"name\": \"CustomFeeSetBips\",\n \"discriminator\": [\n 143,\n 98,\n 8,\n 161,\n 227,\n 53,\n 220,\n 12\n ]\n },\n {\n \"name\": \"CustomFeeSetFixed\",\n \"discriminator\": [\n 85,\n 168,\n 106,\n 241,\n 69,\n 235,\n 220,\n 95\n ]\n },\n {\n \"name\": \"DefaultFeeSet\",\n \"discriminator\": [\n 6,\n 114,\n 243,\n 225,\n 246,\n 24,\n 178,\n 87\n ]\n }\n ],\n \"errors\": [\n {\n \"code\": 6000,\n \"name\": \"AlreadyInitialized\",\n \"msg\": \"AlreadyInitialized\"\n },\n {\n \"code\": 6001,\n \"name\": \"NotOwner\",\n \"msg\": \"NotOwner\"\n },\n {\n \"code\": 6002,\n \"name\": \"NotPermissioned\",\n \"msg\": \"NotPermissioned\"\n },\n {\n \"code\": 6003,\n \"name\": \"FeesTooHigh\",\n \"msg\": \"FeesTooHigh\"\n },\n {\n \"code\": 6004,\n \"name\": \"InvalidCallData\",\n \"msg\": \"InvalidCallData\"\n }\n ],\n \"types\": [\n {\n \"name\": \"CustomFeeSetBips\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"distributor\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"bips\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"project_id\",\n \"type\": \"string\"\n }\n ]\n }\n },\n {\n \"name\": \"CustomFeeSetFixed\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"distributor\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"fixed_fee\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"project_id\",\n \"type\": \"string\"\n }\n ]\n }\n },\n {\n \"name\": \"DefaultFeeSet\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"bips\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"Fee\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"default\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"bips\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"fixed\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"FeeCollectorStorage\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"owner\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"new_owner\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"default_fees_bips\",\n \"type\": \"u64\"\n }\n ]\n }\n }\n ]\n}","import { FeeCollector } from './fee_collector';\nimport { SolanaContractClientBase, SolanaContractInfo } from './SolanaContractClient';\nimport IDL from './fee_collector.json';\nimport { PublicKey } from '@solana/web3.js';\nimport * as anchor from '@coral-xyz/anchor';\n\nexport class FeeCollectorClient extends SolanaContractClientBase<FeeCollector> {\n projectId: string;\n constructor(options: SolanaContractInfo) {\n super({\n ...options,\n idl: IDL\n });\n this.projectId = options.projectId;\n }\n\n async getStoragePDA(): Promise<PublicKey> {\n const [storagePDA] = await this.findProgramAddress([anchor.utils.bytes.utf8.encode('storage')]);\n\n return storagePDA;\n }\n\n async getProjectFeePDA(programId: PublicKey): Promise<PublicKey> {\n const [projectFeePDA] = await this.findProgramAddress([\n anchor.utils.bytes.utf8.encode('fee'),\n programId.toBuffer(),\n anchor.utils.bytes.utf8.encode(this.projectId)\n ]);\n return projectFeePDA;\n }\n\n async setDefaultFee(fee: string) {\n return this.invokeInstruction('setDefaultFee', {}, [new anchor.BN(fee)]);\n }\n\n async initProjectFee() {\n return this.invokeInstruction('initProjectFee', {}, [this.programId, this.projectId]);\n }\n\n async getClaimFee(programId: PublicKey, tokenAmount: string): Promise<bigint> {\n try {\n const fee = await this.invokeView('getFee', [programId, this.projectId, new anchor.BN(tokenAmount)]);\n return BigInt(fee);\n } catch (error) {\n return BigInt(0);\n }\n }\n}\n","import { IAirdropClaimData } from '../../types';\nimport { MerkleTokenDistributorClient } from './MerkleDistributorClient';\nimport { SolanaContractInfo } from './SolanaContractClient';\n\nexport class AirdropService {\n options: SolanaContractInfo;\n constructor(options: SolanaContractInfo) {\n this.options = options;\n }\n\n private get airdropClient(): MerkleTokenDistributorClient {\n if (!this.options) {\n throw new Error('options is empty');\n }\n\n return new MerkleTokenDistributorClient(this.options);\n }\n\n async getVersion() {\n return this.airdropClient.getVersion();\n }\n\n async getClaimFee(address: string, amount: bigint): Promise<bigint> {\n const fee = await this.airdropClient.getClaimFee(amount);\n return fee;\n }\n\n async batchFetchClaimed(leafs: string[]): Promise<{ result: boolean; status: string }[]> {\n const res = await this.airdropClient.batchFetchClaimed(leafs);\n return res;\n }\n\n async isLeafUsed(leaf: string) {\n return this.airdropClient.isLeafUsed(leaf);\n }\n\n async getPaused() {\n return this.airdropClient.getPaused();\n }\n\n async claim(data: IAirdropClaimData) {\n return this.airdropClient.claim(data);\n }\n}\n","import { PublicKey } from '@solana/web3.js';\nimport { SolanaContractClientBase, SolanaContractInfo } from './SolanaContractClient';\nimport IDL from './eddsa_token_with_fees_distributor_solana.json';\nimport * as anchor from '@coral-xyz/anchor';\nimport { EddsaTokenWithFeesDistributorSolana } from './eddsa_token_with_fees_distributor_solana';\nimport { TOKEN_2022_PROGRAM_ID } from '@solana/spl-token';\nimport { FeeCollectorClient } from './FeeCollectorClient';\nimport { fetchTokenVersion, getOrCreateAssociatedTokenAccount, hexStrToU8Array } from '../../utils';\nimport { ISignatureClaimData } from '../../types';\n\nexport class AirdropSignatureClient extends SolanaContractClientBase<EddsaTokenWithFeesDistributorSolana> {\n projectId: string;\n constructor(options: SolanaContractInfo) {\n super({\n ...options,\n idl: IDL\n });\n this.projectId = options.projectId;\n }\n\n async getVersionPDA(): Promise<PublicKey> {\n const [versionPDA] = await this.findProgramAddress([anchor.utils.bytes.utf8.encode('version')]);\n\n return versionPDA;\n }\n\n async getVersion() {\n const versionPDA = await this.getVersionPDA();\n const versionData = await this.fetchAccountData('version', versionPDA);\n return versionData.version;\n }\n\n get FeeCollector() {\n return new FeeCollectorClient({\n projectId: this.projectId,\n walletClient: this.wallet,\n chainId: this.chainId,\n chainRpc: this.chainRpc\n });\n }\n\n async getClaimFee(amount: bigint) {\n return this.FeeCollector.getClaimFee(this.programId, amount.toString());\n }\n\n async getStoragePDA(): Promise<PublicKey> {\n const [storagePDA] = await this.findProgramAddress([\n anchor.utils.bytes.utf8.encode('storage'),\n anchor.utils.bytes.utf8.encode(this.projectId)\n ]);\n\n return storagePDA;\n }\n\n async getAirdropPDA(): Promise<PublicKey> {\n const [airdropPDA] = await this.findProgramAddress([\n anchor.utils.bytes.utf8.encode('airdrop'),\n anchor.utils.bytes.utf8.encode(this.projectId)\n ]);\n\n return airdropPDA;\n }\n\n async getVaultPDA(): Promise<PublicKey> {\n const airdropPDA = await this.getAirdropPDA();\n const [vaultPDA] = await this.findProgramAddress([anchor.utils.bytes.utf8.encode('vault'), airdropPDA.toBuffer()]);\n\n return vaultPDA;\n }\n\n async getClaimPDA(claimId: string): Promise<PublicKey> {\n const airdropPDA = await this.getAirdropPDA();\n const [claimPDA] = await this.findProgramAddress([\n anchor.utils.bytes.utf8.encode('claim'),\n airdropPDA.toBuffer(),\n new Uint8Array(hexStrToU8Array(claimId))\n ]);\n return claimPDA;\n }\n\n async getContractInfo() {\n const airdropPDA = await this.getAirdropPDA();\n const config: any = await this.fetchAccountData('airdrop', airdropPDA);\n\n const version = await this.getVersion();\n return {\n version: version,\n token: config.token.toString() as string,\n startTime: Number(config.startTime),\n endTime: Number(config.endTime),\n paused: config.paused as boolean,\n signer: config.authorizedSigner.toString() as string,\n owner: config.owner.toString() as string\n };\n }\n\n async getPaused() {\n const config = await this.getContractInfo();\n return config.paused;\n }\n\n async checkClaim(id: string) {\n const claimPDA = await this.getClaimPDA(id);\n try {\n const claimData = await this.fetchAccountData('claim', claimPDA);\n return claimData?.used;\n } catch (error) {\n return false;\n }\n }\n\n async batchFetchClaimed(userClaimIds: string[]): Promise<boolean[]> {\n const res = await Promise.all(userClaimIds.map((id) => this.checkClaim(id)));\n return res;\n }\n\n async initialize(projectId: string, feeCollector?: PublicKey): Promise<string> {\n try {\n const airdropPDA = await this.getAirdropPDA();\n console.log(airdropPDA);\n const config = await this.getContractInfo();\n console.log(config);\n return airdropPDA.toString();\n } catch (error) {\n const owner = this.wallet.publicKey;\n const res = await this.invokeInstruction(\n 'initialize',\n {\n // storage: storagePDA,\n // authority: this.wallet.publicKey\n },\n [projectId, owner, feeCollector || PublicKey.default]\n );\n console.log(res);\n const airdropPDA = await this.getAirdropPDA();\n return airdropPDA.toString();\n }\n }\n\n async setBaseParams(tokenAddress: string, startTime: number, endTime: number, signer: string) {\n const start = new anchor.BN(startTime),\n end = new anchor.BN(endTime);\n console.log(start, end, tokenAddress, signer);\n await this.invokeInstruction('setBaseParams', {}, [new PublicKey(tokenAddress), start, end, new PublicKey(signer)]);\n }\n\n async togglePause() {\n await this.invokeInstruction('togglePause', {}, [this.projectId]);\n }\n\n async getFeeInfo() {\n const airdropPDA = await this.getAirdropPDA();\n const config = await this.fetchAccountData('airdrop', airdropPDA);\n return {\n feeToken: config.feeToken.toString(),\n feeCollector: config.feeCollector.toString()\n };\n }\n\n async claim(data: ISignatureClaimData[]) {\n const config = await this.getContractInfo();\n const feeCollectorStoragePDA = await this.FeeCollector.getStoragePDA();\n const feePDA = await this.FeeCollector.getProjectFeePDA(this.programId);\n const tokenVersion = await fetchTokenVersion(config.token, {\n clusterOrEndpoint: this.chainId\n });\n\n const authorityATA = await getOrCreateAssociatedTokenAccount({\n connection: this.connection,\n payer: this.wallet.publicKey,\n mint: new PublicKey(config.token),\n owner: new PublicKey(this.wallet.publicKey),\n signTransaction: (this.wallet as any).signTransaction,\n programId: tokenVersion?.programId || TOKEN_2022_PROGRAM_ID\n });\n\n let lastHash = '';\n // solana max transaction size of 1232\n for (const claim of data) {\n const tx = new anchor.web3.Transaction();\n tx.add(\n anchor.web3.Ed25519Program.createInstructionWithPublicKey({\n publicKey: new PublicKey(config.signer).toBytes(),\n message: Uint8Array.from(hexStrToU8Array(claim.hash)),\n signature: new Uint8Array(hexStrToU8Array(claim.signature))\n })\n );\n\n const claimPDA = await this.getClaimPDA(claim.claimId);\n\n const decodedData = {\n claimableTimestamp: new anchor.BN(claim.unlockingAt),\n claimableAmount: new anchor.BN(claim.value),\n fees: new anchor.BN(claim.fees)\n };\n\n tx.add(\n await this.program.methods\n .claim(\n this.projectId,\n this.wallet.publicKey,\n new Uint8Array(hexStrToU8Array(claim.claimId)),\n [],\n decodedData,\n Buffer.from(hexStrToU8Array(claim.signature))\n )\n .accountsPartial({\n authority: this.wallet.publicKey,\n recipient: this.wallet.publicKey,\n recipientAta: authorityATA.address,\n claim: claimPDA,\n tokenMint: new PublicKey(config.token),\n feeCollector: this.FeeCollector.programId,\n feeCollectorStorage: feeCollectorStoragePDA,\n feeCollectorVault: null,\n feeTokenMint: null,\n fee: feePDA,\n authorityFeeAta: null,\n tokenProgram: tokenVersion?.programId || TOKEN_2022_PROGRAM_ID,\n feeTokenProgram: null\n })\n .transaction()\n );\n\n const hash = await this.program.provider.sendAndConfirm?.(tx, [], {\n commitment: 'finalized'\n });\n\n lastHash = hash!;\n }\n\n return lastHash;\n }\n}\n","{\n \"address\": \"CwjcZKhYZ69bEL7jkotHtmAqhNBNmxyZCLUdVwsK3fWV\",\n \"metadata\": {\n \"name\": \"eddsa_token_with_fees_distributor_solana\",\n \"version\": \"0.1.0\",\n \"spec\": \"0.1.0\",\n \"description\": \"Created with Anchor\"\n },\n \"instructions\": [\n {\n \"name\": \"claim\",\n \"discriminator\": [\n 62,\n 198,\n 214,\n 193,\n 213,\n 159,\n 108,\n 210\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"airdrop\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 105,\n 114,\n 100,\n 114,\n 111,\n 112\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"_project_id\"\n }\n ]\n }\n },\n {\n \"name\": \"vault\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 118,\n 97,\n 117,\n 108,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"airdrop\"\n }\n ]\n }\n },\n {\n \"name\": \"recipient\"\n },\n {\n \"name\": \"recipient_ata\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"recipient\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"token_program\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"token_mint\"\n }\n ],\n \"program\": {\n \"kind\": \"const\",\n \"value\": [\n 140,\n 151,\n 37,\n 143,\n 78,\n 36,\n 137,\n 241,\n 187,\n 61,\n 16,\n 41,\n 20,\n 142,\n 13,\n 131,\n 11,\n 90,\n 19,\n 153,\n 218,\n 255,\n 16,\n 132,\n 4,\n 142,\n 123,\n 216,\n 219,\n 233,\n 248,\n 89\n ]\n }\n }\n },\n {\n \"name\": \"authority_fee_ata\",\n \"writable\": true,\n \"optional\": true\n },\n {\n \"name\": \"claim\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 108,\n 97,\n 105,\n 109\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"airdrop\"\n },\n {\n \"kind\": \"arg\",\n \"path\": \"_claim_id\"\n }\n ]\n }\n },\n {\n \"name\": \"token_mint\"\n },\n {\n \"name\": \"fee_collector_storage\",\n \"writable\": true,\n \"optional\": true\n },\n {\n \"name\": \"fee_collector_vault\",\n \"writable\": true,\n \"optional\": true\n },\n {\n \"name\": \"fee_collector\"\n },\n {\n \"name\": \"fee_token_mint\",\n \"writable\": true,\n \"optional\": true\n },\n {\n \"name\": \"fee\",\n \"writable\": true\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n },\n {\n \"name\": \"token_program\"\n },\n {\n \"name\": \"fee_token_program\",\n \"optional\": true\n },\n {\n \"name\": \"associated_token_program\",\n \"address\": \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\"\n },\n {\n \"name\": \"ix_sysvar\",\n \"docs\": [\n \"the supplied Sysvar could be anything else.\",\n \"The Instruction Sysvar has not been implemented\",\n \"in the Anchor framework yet, so this is the safe approach.\"\n ],\n \"address\": \"Sysvar1nstructions1111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"project_id\",\n \"type\": \"string\"\n },\n {\n \"name\": \"recipient\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"user_claim_id\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"group\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"user_claim_data\",\n \"type\": {\n \"defined\": {\n \"name\": \"EDDSADistributorData\"\n }\n }\n },\n {\n \"name\": \"signature\",\n \"type\": \"bytes\"\n }\n ]\n },\n {\n \"name\": \"deploy\",\n \"discriminator\": [\n 67,\n 36,\n 143,\n 118,\n 36,\n 164,\n 92,\n 217\n ],\n \"accounts\": [\n {\n \"name\": \"config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"fee_collector\"\n },\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"default_fee_collector\",\n \"type\": \"pubkey\"\n }\n ]\n },\n {\n \"name\": \"deposit\",\n \"discriminator\": [\n 242,\n 35,\n 198,\n 137,\n 82,\n 225,\n 242,\n 182\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"airdrop\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 105,\n 114,\n 100,\n 114,\n 111,\n 112\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"_project_id\"\n }\n ]\n }\n },\n {\n \"name\": \"vault\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 118,\n 97,\n 117,\n 108,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"airdrop\"\n }\n ]\n }\n },\n {\n \"name\": \"authority_ata\",\n \"writable\": true\n },\n {\n \"name\": \"token_mint\"\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n },\n {\n \"name\": \"token_program\"\n },\n {\n \"name\": \"associated_token_program\",\n \"address\": \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\"\n }\n ],\n \"args\": [\n {\n \"name\": \"project_id\",\n \"type\": \"string\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"encode_hash_to_be_signed\",\n \"discriminator\": [\n 15,\n 245,\n 227,\n 180,\n 152,\n 94,\n 134,\n 20\n ],\n \"accounts\": [],\n \"args\": [\n {\n \"name\": \"recipient\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"user_claim_id\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"user_claim_data\",\n \"type\": {\n \"defined\": {\n \"name\": \"EDDSADistributorData\"\n }\n }\n },\n {\n \"name\": \"airdrop\",\n \"type\": \"pubkey\"\n }\n ],\n \"returns\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"initialize\",\n \"discriminator\": [\n 175,\n 175,\n 109,\n 31,\n 13,\n 152,\n 155,\n 237\n ],\n \"accounts\": [\n {\n \"name\": \"airdrop\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 105,\n 114,\n 100,\n 114,\n 111,\n 112\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"_project_id\"\n }\n ]\n }\n },\n {\n \"name\": \"config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"fee_collector\",\n \"optional\": true\n },\n {\n \"name\": \"fee_collector_storage\",\n \"optional\": true\n },\n {\n \"name\": \"fee\",\n \"writable\": true,\n \"optional\": true\n },\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"project_id\",\n \"type\": \"string\"\n },\n {\n \"name\": \"project_token\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"init_fee_account\",\n \"type\": \"bool\"\n }\n ]\n },\n {\n \"name\": \"receive_program_admin\",\n \"discriminator\": [\n 238,\n 172,\n 61,\n 197,\n 23,\n 72,\n 249,\n 87\n ],\n \"accounts\": [\n {\n \"name\": \"config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"set_base_params\",\n \"discriminator\": [\n 53,\n 16,\n 151,\n 65,\n 155,\n 108,\n 105,\n 229\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"airdrop\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 105,\n 114,\n 100,\n 114,\n 111,\n 112\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"_project_id\"\n }\n ]\n }\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"project_id\",\n \"type\": \"string\"\n },\n {\n \"name\": \"start_time\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"end_time\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"authorized_signer\",\n \"type\": \"pubkey\"\n }\n ]\n },\n {\n \"name\": \"set_default_fee_collector\",\n \"discriminator\": [\n 250,\n 25,\n 136,\n 29,\n 77,\n 231,\n 26,\n 141\n ],\n \"accounts\": [\n {\n \"name\": \"config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"fee_collector\"\n },\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"default_fee_collector\",\n \"type\": \"pubkey\"\n }\n ]\n },\n {\n \"name\": \"set_fee_collector\",\n \"discriminator\": [\n 143,\n 46,\n 10,\n 113,\n 121,\n 157,\n 245,\n 166\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"config\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"airdrop\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 105,\n 114,\n 100,\n 114,\n 111,\n 112\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"_project_id\"\n }\n ]\n }\n },\n {\n \"name\": \"fee_collector\"\n },\n {\n \"name\": \"fee_collector_storage\",\n \"optional\": true\n },\n {\n \"name\": \"fee\",\n \"writable\": true,\n \"optional\": true\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"project_id\",\n \"type\": \"string\"\n },\n {\n \"name\": \"fee_collector\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"init_fee_account\",\n \"type\": \"bool\"\n }\n ]\n },\n {\n \"name\": \"set_fee_token\",\n \"discriminator\": [\n 52,\n 90,\n 163,\n 123,\n 220,\n 202,\n 90,\n 217\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"config\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"airdrop\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 105,\n 114,\n 100,\n 114,\n 111,\n 112\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"_project_id\"\n }\n ]\n }\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"project_id\",\n \"type\": \"string\"\n },\n {\n \"name\": \"fee_token\",\n \"type\": \"pubkey\"\n }\n ]\n },\n {\n \"name\": \"toggle_pause\",\n \"discriminator\": [\n 238,\n 237,\n 206,\n 27,\n 255,\n 95,\n 123,\n 229\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"airdrop\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 105,\n 114,\n 100,\n 114,\n 111,\n 112\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"_project_id\"\n }\n ]\n }\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"project_id\",\n \"type\": \"string\"\n }\n ]\n },\n {\n \"name\": \"transfer_ownership\",\n \"discriminator\": [\n 65,\n 177,\n 215,\n 73,\n 53,\n 45,\n 99,\n 47\n ],\n \"accounts\": [\n {\n \"name\": \"airdrop\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 105,\n 114,\n 100,\n 114,\n 111,\n 112\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"_project_id\"\n }\n ]\n }\n },\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"project_id\",\n \"type\": \"string\"\n },\n {\n \"name\": \"new_owner\",\n \"type\": \"pubkey\"\n }\n ]\n },\n {\n \"name\": \"transfer_program_admin\",\n \"discriminator\": [\n 47,\n 201,\n 152,\n 248,\n 132,\n 27,\n 33,\n 139\n ],\n \"accounts\": [\n {\n \"name\": \"config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"new_admin\",\n \"writable\": true,\n \"signer\": true,\n \"optional\": true\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"new_admin\",\n \"type\": \"pubkey\"\n }\n ]\n },\n {\n \"name\": \"verify\",\n \"discriminator\": [\n 133,\n 161,\n 141,\n 48,\n 120,\n 198,\n 88,\n 150\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n },\n {\n \"name\": \"ix_sysvar\",\n \"docs\": [\n \"the supplied Sysvar could be anything else.\",\n \"The Instruction Sysvar has not been implemented\",\n \"in the Anchor framework yet, so this is the safe approach.\"\n ],\n \"address\": \"Sysvar1nstructions1111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"signer\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"hash\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"signature\",\n \"type\": \"bytes\"\n }\n ]\n },\n {\n \"name\": \"version\",\n \"discriminator\": [\n 118,\n 65,\n 195,\n 198,\n 129,\n 216,\n 252,\n 192\n ],\n \"accounts\": [\n {\n \"name\": \"version\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 118,\n 101,\n 114,\n 115,\n 105,\n 111,\n 110\n ]\n }\n ]\n }\n },\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"withdraw\",\n \"discriminator\": [\n 183,\n 18,\n 70,\n 156,\n 148,\n 109,\n 161,\n 34\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"airdrop\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 105,\n 114,\n 100,\n 114,\n 111,\n 112\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"_project_id\"\n }\n ]\n }\n },\n {\n \"name\": \"vault\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 118,\n 97,\n 117,\n 108,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"airdrop\"\n }\n ]\n }\n },\n {\n \"name\": \"authority_ata\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"authority\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"token_program\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"token_mint\"\n }\n ],\n \"program\": {\n \"kind\": \"const\",\n \"value\": [\n 140,\n 151,\n 37,\n 143,\n 78,\n 36,\n 137,\n 241,\n 187,\n 61,\n 16,\n 41,\n 20,\n 142,\n 13,\n 131,\n 11,\n 90,\n 19,\n 153,\n 218,\n 255,\n 16,\n 132,\n 4,\n 142,\n 123,\n 216,\n 219,\n 233,\n 248,\n 89\n ]\n }\n }\n },\n {\n \"name\": \"token_mint\"\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n },\n {\n \"name\": \"token_program\"\n },\n {\n \"name\": \"associated_token_program\",\n \"address\": \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\"\n }\n ],\n \"args\": [\n {\n \"name\": \"project_id\",\n \"type\": \"string\"\n }\n ]\n }\n ],\n \"accounts\": [\n {\n \"name\": \"Airdrop\",\n \"discriminator\": [\n 31,\n 112,\n 159,\n 158,\n 124,\n 237,\n 9,\n 241\n ]\n },\n {\n \"name\": \"Claim\",\n \"discriminator\": [\n 155,\n 70,\n 22,\n 176,\n 123,\n 215,\n 246,\n 102\n ]\n },\n {\n \"name\": \"Config\",\n \"discriminator\": [\n 155,\n 12,\n 170,\n 224,\n 30,\n 250,\n 204,\n 130\n ]\n },\n {\n \"name\": \"Version\",\n \"discriminator\": [\n 234,\n 4,\n 254,\n 42,\n 242,\n 196,\n 136,\n 199\n ]\n }\n ],\n \"events\": [\n {\n \"name\": \"ClaimDelegateSet\",\n \"discriminator\": [\n 82,\n 153,\n 121,\n 138,\n 224,\n 132,\n 71,\n 59\n ]\n },\n {\n \"name\": \"Claimed\",\n \"discriminator\": [\n 217,\n 192,\n 123,\n 72,\n 108,\n 150,\n 248,\n 33\n ]\n },\n {\n \"name\": \"Deployed\",\n \"discriminator\": [\n 50,\n 145,\n 94,\n 59,\n 169,\n 255,\n 159,\n 186\n ]\n },\n {\n \"name\": \"Initialized\",\n \"discriminator\": [\n 208,\n 213,\n 115,\n 98,\n 115,\n 82,\n 201,\n 209\n ]\n }\n ],\n \"errors\": [\n {\n \"code\": 6000,\n \"name\": \"AlreadyDeployed\",\n \"msg\": \"AlreadyDeployed\"\n },\n {\n \"code\": 6001,\n \"name\": \"UnsupportedOperation\",\n \"msg\": \"UnsupportedOperation\"\n },\n {\n \"code\": 6002,\n \"name\": \"TimeInactive\",\n \"msg\": \"TimeInactive\"\n },\n {\n \"code\": 6003,\n \"name\": \"InvalidSignature\",\n \"msg\": \"InvalidSignature\"\n },\n {\n \"code\": 6004,\n \"name\": \"IncorrectFees\",\n \"msg\": \"IncorrectFees\"\n },\n {\n \"code\": 6005,\n \"name\": \"OutsideClaimableTimeRange\",\n \"msg\": \"OutsideClaimableTimeRange\"\n },\n {\n \"code\": 6006,\n \"name\": \"AlreadyInitialized\",\n \"msg\": \"AlreadyInitialized\"\n },\n {\n \"code\": 6007,\n \"name\": \"NotOwner\",\n \"msg\": \"NotOwner\"\n },\n {\n \"code\": 6008,\n \"name\": \"NotProgramAdmin\",\n \"msg\": \"NotProgramAdmin\"\n },\n {\n \"code\": 6009,\n \"name\": \"NotPermissioned\",\n \"msg\": \"NotPermissioned\"\n },\n {\n \"code\": 6010,\n \"name\": \"OwnableUnauthorizedAccount\",\n \"msg\": \"OwnableUnauthorizedAccount\"\n },\n {\n \"code\": 6011,\n \"name\": \"InvalidFeeCollector\",\n \"msg\": \"InvalidFeeCollector\"\n },\n {\n \"code\": 6012,\n \"name\": \"Paused\",\n \"msg\": \"Paused\"\n }\n ],\n \"types\": [\n {\n \"name\": \"Airdrop\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"owner\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"authorized_signer\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"token\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"start_time\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"end_time\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"fee_collector\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"fee_token\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"paused\",\n \"type\": \"bool\"\n }\n ]\n }\n },\n {\n \"name\": \"Claim\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"used\",\n \"type\": \"bool\"\n }\n ]\n }\n },\n {\n \"name\": \"ClaimDelegateSet\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"delegate\",\n \"type\": \"pubkey\"\n }\n ]\n }\n },\n {\n \"name\": \"Claimed\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"recipient\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"group\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"data\",\n \"type\": {\n \"defined\": {\n \"name\": \"EDDSADistributorData\"\n }\n }\n }\n ]\n }\n },\n {\n \"name\": \"Config\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"admin\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"new_admin\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"default_fee_collector\",\n \"type\": \"pubkey\"\n }\n ]\n }\n },\n {\n \"name\": \"Deployed\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": []\n }\n },\n {\n \"name\": \"EDDSADistributorData\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"claimable_timestamp\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"claimable_amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"fees\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"Initialized\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"project_id\",\n \"type\": \"string\"\n }\n ]\n }\n },\n {\n \"name\": \"Version\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"version\",\n \"type\": \"string\"\n }\n ]\n }\n }\n ]\n}","import { ISignatureClaimData } from '../../types';\nimport { AirdropSignatureClient } from './AirdropSignatureClient';\nimport { SolanaContractInfo } from './SolanaContractClient';\n\nexport class SignatureAirdropService {\n options: SolanaContractInfo;\n constructor(options: SolanaContractInfo) {\n this.options = options;\n }\n\n private get airdropClient(): AirdropSignatureClient {\n if (!this.options) {\n throw new Error('options is empty');\n }\n\n return new AirdropSignatureClient(this.options);\n }\n\n async getVersion() {\n return this.airdropClient.getVersion();\n }\n\n async getClaimFee(address: string, amount: bigint): Promise<bigint> {\n const fee = await this.airdropClient.getClaimFee(amount);\n return fee;\n }\n\n async batchFetchClaimed(userClaimIds: string[]): Promise<boolean[]> {\n const res = await this.airdropClient.batchFetchClaimed(userClaimIds);\n return res;\n }\n\n async getPaused() {\n return this.airdropClient.getPaused();\n }\n\n async claim(data: ISignatureClaimData[], recipient?: string) {\n return this.airdropClient.claim(data);\n }\n}\n","import { TonClient } from '@ton/ton';\nimport { Sender, SenderArguments, beginCell, storeStateInit, Address, Cell, storeMessage } from '@ton/core';\nimport { CHAIN, TonConnectUI } from '@tonconnect/ui-react';\nimport { EventEmitter } from 'events';\nimport { TonWalletService } from '../../services';\nimport { retry } from '../../utils';\nimport { Event } from 'tonapi-sdk-js';\nimport { getHttpEndpoint } from '@orbs-network/ton-access';\n\nexport interface IAirdropOption {\n chainId: string;\n address: string;\n walletClient?: TonConnectUI;\n tonClient?: TonClient;\n version?: string;\n}\n\nlet cachedTonClient: TonClient | null = null;\n\nexport class TonContractBaseClient {\n chainId: string;\n address: string;\n walletClient?: TonConnectUI;\n private eventBus: EventEmitter;\n private counter: number = 0;\n tonClient?: TonClient;\n\n constructor({ chainId, address, walletClient, tonClient }: IAirdropOption) {\n this.chainId = chainId;\n this.address = address;\n this.walletClient = walletClient;\n this.eventBus = new EventEmitter();\n this.tonClient = tonClient;\n }\n\n waitForContractDeployment = async (provider: TonClient, contractAddress: Address): Promise<Address> => {\n return new Promise((resolve, reject) => {\n const checkDeployment = async () => {\n try {\n const isDeployed = await provider.isContractDeployed(contractAddress);\n if (isDeployed) {\n resolve(contractAddress);\n } else {\n // 每3秒检查一次\n setTimeout(checkDeployment, 3000);\n }\n } catch (error) {\n reject(error);\n }\n };\n\n checkDeployment();\n });\n };\n\n async getTonClient() {\n if (cachedTonClient) {\n return cachedTonClient;\n }\n if (this.tonClient) {\n cachedTonClient = this.tonClient;\n } else {\n const endpoint = await getHttpEndpoint({ network: this.chainId === CHAIN.TESTNET ? 'testnet' : 'mainnet' });\n cachedTonClient = new TonClient({ endpoint });\n }\n return cachedTonClient;\n }\n\n getTxByBOC = ({ boc: exBoc, userAddress }: { boc: string; userAddress: string }): Promise<string> => {\n const myAddress = Address.parse(userAddress);\n\n return retry(\n async () => {\n const client = await this.getTonClient();\n const transactions = await client.getTransactions(myAddress, {\n limit: 5\n });\n for (const tx of transactions) {\n const inMsg = tx.inMessage;\n if (inMsg?.info.type === 'external-in') {\n const inBOC = inMsg?.body;\n if (typeof inBOC === 'undefined') {\n throw new Error('Invalid external');\n continue;\n }\n const extHash = Cell.fromBase64(exBoc).hash().toString('hex');\n const inHash = beginCell().store(storeMessage(inMsg)).endCell().hash().toString('hex');\n\n console.log(' hash BOC', extHash);\n console.log('inMsg hash', inHash);\n console.log('checking the tx', tx, tx.hash().toString('hex'));\n\n // Assuming `inBOC.hash()` is synchronous and returns a hash object with a `toString` method\n if (extHash === inHash) {\n console.log('Tx match');\n const txHash = tx.hash().toString('hex');\n console.log(`Transaction Hash: ${txHash}`);\n console.log(`Transaction LT: ${tx.lt}`);\n return txHash;\n }\n }\n }\n throw new Error('Transaction not found');\n },\n { retries: 30, delay: 1000 }\n );\n };\n\n waitForTransaction = async (onLoading?: () => void): Promise<Event | null> => {\n const TonConnectUI = this.walletClient;\n const boc = await this.onTransactionHash();\n console.log(boc, 'boc');\n\n if (!TonConnectUI) {\n throw new Error('TonConnectUI is not initialized');\n }\n\n // 兼容bybit web3钱包,boc为对象\n if (typeof boc !== 'string') {\n return null;\n }\n\n onLoading?.();\n\n let receipt: Event | null = null;\n try {\n const hash = await this.getTxByBOC({\n boc,\n userAddress: TonConnectUI.account!.address\n });\n console.log(hash, 'hash');\n receipt = await TonWalletService?.waitForTransaction({\n hash,\n chainId: this.chainId,\n address: TonConnectUI.account!.address\n });\n } catch (e) {\n console.log(e, 'err');\n const hash = Cell.fromBase64(boc).hash().toString('hex');\n console.log(hash, 'hash');\n receipt = await TonWalletService?.waitForTransactionLegacy({\n hash,\n chainId: this.chainId,\n contractAddress: this!.address,\n address: TonConnectUI.account!.address\n });\n }\n console.log(receipt, 'tt');\n return receipt;\n };\n\n waitForTransactionForLegacy = async (): Promise<Event | null> => {\n // 兼容ios Transaction was not sent\n const TonConnectUI = this.walletClient;\n if (!TonConnectUI) {\n throw new Error('TonConnectUI is not initialized');\n }\n\n const receipt = await TonWalletService?.waitForTransactionLegacy({\n hash: '',\n chainId: this.chainId,\n // contractAddress: this!.address,\n address: TonConnectUI.account!.address\n });\n console.log(receipt, 'tt');\n return receipt;\n };\n\n onTransactionHash(): Promise<string> {\n this.counter++;\n return new Promise((resolve, reject) => {\n console.log(this.counter, 'once counter');\n this.eventBus.once(`transactionHash_${this.counter}`, (boc: string) => {\n if (boc) {\n resolve(boc);\n } else {\n reject('error');\n }\n });\n });\n }\n\n get connection(): { sender: Sender; senderDeploy: Sender; connected: boolean } {\n const TonConnectUI = this.walletClient;\n if (!TonConnectUI) {\n throw new Error('TonConnectUI is not initialized');\n }\n if (!TonConnectUI.connected) {\n throw new Error('wallet is not connected, please logout and login again');\n }\n return {\n senderDeploy: {\n send: async (args: SenderArguments) => {\n console.log(args, 'args');\n const res = await TonConnectUI.sendTransaction({\n messages: [\n {\n address: args.to.toString(),\n amount: args.value.toString(),\n payload: args.body?.toBoc().toString('base64') || '',\n stateInit: args.init\n ? beginCell().storeWritable(storeStateInit(args.init)).endCell().toBoc().toString('base64')\n : undefined\n }\n ],\n validUntil: Date.now() + 5 * 60 * 1000\n });\n console.log(res, this.counter, 'emit');\n this.eventBus.emit(`transactionHash_${this.counter}`, res.boc);\n }\n },\n sender: {\n send: async (args: SenderArguments) => {\n console.log(args, TonConnectUI, 'aa');\n try {\n const res = await TonConnectUI.sendTransaction({\n messages: [\n {\n address: args.to.toString(),\n amount: args.value.toString(),\n payload: args.body?.toBoc().toString('base64')\n }\n ],\n validUntil: Date.now() + 6 * 60 * 1000 // 5 minutes\n });\n this.eventBus.emit(`transactionHash_${this.counter}`, res.boc);\n console.log(res, 'transaction res');\n } catch (e) {\n console.log(e, 'err');\n }\n }\n },\n connected: TonConnectUI.connected\n };\n }\n}\n","import { Address } from '@ton/core';\nimport { JettonMaster, TonClient } from '@ton/ton';\nimport { delay, flipAddressType } from '../../../utils';\n\nimport { Api, HttpClient, Event } from 'tonapi-sdk-js';\nimport { ChainConfig } from '../../../constants';\nimport { getJettonInfo } from '../../index';\nimport { CHAIN } from '@tonconnect/sdk';\n// import { getHttpEndpoint } from '@orbs-network/ton-access';\n\ninterface WaitForTransactionOptions {\n address: string;\n hash: string;\n refetchInterval?: number;\n refetchLimit?: number;\n chainId: string;\n contractAddress?: string;\n}\n\nexport abstract class TonWalletService {\n // static walletClient = tonStore.walletClient;\n\n static disconnect() {\n //\n }\n\n static async getTonClient(chainId: string) {\n const endpoint = ChainConfig[chainId as keyof typeof ChainConfig].rpcUrl;\n // const endpoint = await getHttpEndpoint({ network: chainId === CHAIN.TESTNET ? 'testnet' : 'mainnet' });\n return new TonClient({\n endpoint: endpoint\n });\n }\n\n static getTonApiClient(chainId: string) {\n const { tonApiPrefix } = ChainConfig[chainId as keyof typeof ChainConfig] as any;\n\n const httpClient = new HttpClient({\n baseUrl: tonApiPrefix\n // baseApiParams: {\n // headers: {\n // Authorization: `Bearer ${tonApiKey}`,\n // 'Content-type': 'application/json'\n // }\n // }\n });\n\n const client = new Api(httpClient);\n return client;\n }\n\n static waitForTransactionByClient = async (options: WaitForTransactionOptions): Promise<Event | null> => {\n const { hash, refetchInterval = 3000, refetchLimit, chainId } = options;\n\n return new Promise((resolve) => {\n let refetches = 0;\n const interval = setInterval(async () => {\n refetches += 1;\n\n console.log(hash, 'waiting transaction...');\n const tonApi = this.getTonApiClient(chainId);\n const events = await tonApi.events.getEvent(hash);\n console.log(events, 'traceData');\n if (!events.in_progress) {\n await delay(3000);\n clearInterval(interval);\n resolve(events);\n }\n if (refetchLimit && refetches >= refetchLimit) {\n clearInterval(interval);\n resolve(null);\n }\n }, refetchInterval);\n });\n };\n\n static waitForTransactionLegacy = async (options: WaitForTransactionOptions): Promise<Event | null> => {\n const { refetchInterval = 3000, refetchLimit, chainId, address, contractAddress } = options;\n\n const tonApi = this.getTonApiClient(chainId);\n const tonClient = await this.getTonClient(chainId);\n const walletAddress = Address.parse(address);\n\n return new Promise((resolve) => {\n let refetches = 0;\n const interval = setInterval(async () => {\n refetches += 1;\n\n console.log('waiting transaction...');\n\n let hash;\n\n if (contractAddress) {\n const res = await tonApi.accounts.getAccountEvents(address, {\n limit: 5\n });\n const targetTransaction = res.events.find((it) => {\n return (\n it.actions.length &&\n it.actions.find((action) => {\n return action.simple_preview.accounts.find((ac) => {\n return Address.parse(ac.address).toRawString() === Address.parse(contractAddress).toRawString();\n });\n })\n );\n });\n console.log(targetTransaction, 'res');\n if (targetTransaction) {\n hash = targetTransaction.event_id;\n }\n } else {\n const state = await tonClient.getContractState(walletAddress);\n console.log(state, 'state');\n hash = state.lastTransaction?.hash;\n }\n if (hash) {\n const events = await tonApi.events.getEvent(hash);\n console.log(events, 'events');\n if (!events.in_progress) {\n clearInterval(interval);\n resolve(events);\n }\n }\n if (refetchLimit && refetches >= refetchLimit) {\n clearInterval(interval);\n resolve(null);\n }\n }, refetchInterval);\n });\n };\n\n static async waitForTransaction({\n hash,\n chainId,\n address,\n contractAddress\n }: {\n hash: string;\n chainId: string;\n address: string;\n contractAddress?: string;\n }) {\n return this.waitForTransactionByClient({ hash, address, chainId, contractAddress });\n }\n\n static async fetchBalance(args: { chainId: string; address: string; token?: string }) {\n try {\n const config = ChainConfig[args.chainId as keyof typeof ChainConfig] as any;\n const options = { method: 'GET' };\n const rawAddress = flipAddressType(args.address);\n\n const url = args.token\n ? `${config.tonApiPrefix}/v2/accounts/${rawAddress}/jettons?currencies=usd`\n : `${config.tonApiPrefix}/v2/blockchain/accounts/${rawAddress}`;\n\n const response = await fetch(url, options);\n const responseJSON: any = await response.json();\n const current = args.token\n ? responseJSON.balances.find((it: any) => it.jetton.address === flipAddressType(args.token!))\n : { balance: responseJSON.balance / 1000000000 };\n\n return {\n value: current?.balance || 0\n };\n } catch {\n return {\n value: 0\n };\n }\n }\n\n static async fetchToken(args: { chainId: string; address: string }) {\n return getJettonInfo({\n address: args.address,\n isTestnet: args.chainId === CHAIN.TESTNET ? 'true' : 'false'\n });\n // const client = this.getTonApiClient(args.chainId as string);\n // const data: any = await client.jettons.getJettonInfo(args.address);\n // const { metadata, total_supply } = data;\n // return {\n // ...metadata,\n // totalSupply: {\n // value: total_supply,\n // formatted: fromNano(total_supply)\n // }\n // };\n }\n\n static async signMessage() {}\n\n static async addChain() {}\n\n static async fetchEnsAddress() {\n return '';\n }\n\n static validateAddress(address: string) {\n try {\n Address.parse(address);\n return true;\n } catch (e) {\n return false;\n }\n }\n\n static isSameAddress(address1: string, address2: string) {\n return Address.parse(address1).toRawString() === Address.parse(address2).toRawString();\n }\n\n static getJettonAddress = async ({\n chainId,\n address,\n token\n }: {\n chainId: string;\n address: string;\n token: string;\n }) => {\n const client = await this.getTonClient(chainId);\n const jettonWallet = client.open(JettonMaster.create(Address.parse(token)));\n\n return jettonWallet.getWalletAddress(Address.parse(address));\n };\n}\n","import { apiClient, safeParseJSON } from '../../utils';\nimport {\n AirdropSigIdentityTypeEnum,\n IAirdropData,\n IAirdropSignatureData,\n IClaimSignature,\n IContractConfig,\n IProject\n} from '../../types';\n\nconst createApiClient = (baseURL?: string) => {\n return baseURL ? apiClient.extend({ baseURL }) : apiClient;\n};\n\nexport const getAirdropProject = async (projectId: string, baseURL?: string): Promise<IProject> => {\n const client = createApiClient(baseURL);\n const res = await client.get<any>(`/airdrop-open/projects/${projectId}`);\n if (!res) {\n throw new Error(`Project not found: ${projectId}`);\n }\n const projectConfig = res?.themeConf;\n const blockCountries = safeParseJSON(projectConfig?.blockCountries);\n return {\n ...res,\n blockCountries\n };\n};\n\nexport const getAirdropProjectId = async (\n data: {\n recipient: string;\n slug: string;\n },\n baseURL?: string\n): Promise<{ recipient: string; projectIds: string[] }> => {\n const client = createApiClient(baseURL);\n return client.post(`/airdrop-open/query-pid`, data);\n};\n\nexport const getAirdropPro = async (\n slug: string,\n baseURL?: string\n): Promise<{\n slug: string;\n childProjectMapping: Record<string, string>;\n}> => {\n const client = createApiClient(baseURL);\n return client.get(`/airdrop-open/airdrop-pro/${slug}`);\n};\n\nexport const getAirdropQuery = async (\n data: {\n recipient: string;\n projectId: string;\n recipientType: string;\n },\n baseURL?: string\n): Promise<IAirdropData> => {\n const client = createApiClient(baseURL);\n return client.post(`/airdrop-open/query`, data);\n};\n\nexport const getAirdropContractConfig = async (\n data: { chainId: string; chainType: string; contractAddress: string },\n baseURL?: string\n): Promise<IContractConfig> => {\n const client = createApiClient(baseURL);\n return client.post(`/airdrop-open/contract/config`, data);\n};\n\nexport const getJettonInfo = async (\n data: { address: string; isTestnet: 'true' | 'false' },\n baseURL?: string\n): Promise<any> => {\n const client = createApiClient(baseURL);\n return client.get(`/airdrop-open/jetton/${data.address}?isTestnet=${data.isTestnet}`);\n};\n\ninterface SidResponse {\n sid: string;\n}\n\ninterface SocialConnectParams {\n code: string;\n projectId: string;\n}\n\ninterface WalletBindParams {\n projectId: string;\n key: string;\n signature: string;\n message: string;\n timestamp: number;\n recipientType: string;\n address: string;\n encodedMessage?: string;\n}\n\nconst getSidHeader = (projectId: string) => {\n if (typeof window === 'undefined') {\n throw new Error('getSidHeader must be called in a browser environment');\n }\n\n return {\n sid: window.localStorage.getItem(`sid_${projectId}`) || ''\n };\n};\n\nexport const connectTwitter = async (data: SocialConnectParams, baseURL?: string): Promise<SidResponse> => {\n const client = createApiClient(baseURL);\n return client.post('/airdrop-open/connect-twitter', data, {\n headers: getSidHeader(data.projectId)\n });\n};\n\nexport const connectGoogleApi = async (data: SocialConnectParams, baseURL?: string): Promise<SidResponse> => {\n const client = createApiClient(baseURL);\n return client.post('/airdrop-open/connect-google', data, {\n headers: getSidHeader(data.projectId)\n });\n};\n\nexport const connectDiscordApi = async (data: SocialConnectParams, baseURL?: string): Promise<SidResponse> => {\n const client = createApiClient(baseURL);\n return client.post('/airdrop-open/connect-discord', data, {\n headers: getSidHeader(data.projectId)\n });\n};\n\nexport const checkEligibility = async (\n data: { projectId: string },\n baseURL?: string\n): Promise<IAirdropSignatureData> => {\n const headers = getSidHeader(data.projectId);\n if (!headers.sid)\n return {\n claims: [],\n identities: []\n };\n const client = createApiClient(baseURL);\n\n return client.post('/airdrop-open/check-eligibility', data, {\n headers: headers\n });\n};\n\nexport const bindWallet = async (data: WalletBindParams, baseURL?: string): Promise<SidResponse> => {\n const client = createApiClient(baseURL);\n return client.post('/airdrop-open/connect-wallet', data, {\n headers: getSidHeader(data.projectId)\n });\n};\n\ninterface DisconnectParams {\n projectId: string;\n recipientType: AirdropSigIdentityTypeEnum;\n recipient?: string;\n}\n\nexport const disconnectRecipient = async (data: DisconnectParams, baseURL?: string): Promise<void> => {\n const client = createApiClient(baseURL);\n return client.post('/airdrop-open/disconnect', data, {\n headers: getSidHeader(data.projectId)\n });\n};\n\nexport const checkGetSignatures = async (\n data: {\n projectId: string;\n claimIds: string[];\n recipient: string;\n strategy?: string;\n },\n baseURL?: string\n): Promise<{ signatures: IClaimSignature[] }> => {\n const client = createApiClient(baseURL);\n return client.post('/airdrop-open/check-get-signatures', data, {\n headers: getSidHeader(data.projectId)\n });\n};\n","import { IAirdropOption, TonContractBaseClient } from './TonContractBaseClient';\nimport { Address, Cell } from '@ton/core';\nimport { Leaf, leafConfigToCell, MerkleTokenDistributor } from './v1/wrappers';\nimport LeafCode from './v1/build/Leaf.compiled.json';\nimport { IAirdropClaim } from '../../types';\nimport { TonWalletService } from '../../services';\n\nexport class TonAirdropClientV1 extends TonContractBaseClient {\n version = '1.0.0';\n\n constructor(option: IAirdropOption) {\n super(option);\n }\n\n async getVersion() {\n const airDropContract = await this.getAirdropContract();\n const version = await airDropContract.getVersion();\n this.version = version;\n return version;\n }\n\n getAirdropContract = async () => {\n const provider = await this.getTonClient();\n const contract = new MerkleTokenDistributor(Address.parse(this.address));\n return provider.open(contract);\n };\n\n async getBaseParams() {\n const airDropContract = await this.getAirdropContract();\n const [startTime, endTime] = await airDropContract!.getTime();\n const token = await airDropContract?.getToken();\n const root = await airDropContract?.getRoot();\n const deployer = await airDropContract.getDeployer();\n\n const owner = Address.parse(deployer?.toString()).toString({ bounceable: false });\n\n const version = this.version || (await airDropContract.getVersion());\n return {\n startTime: startTime ? String(startTime?.valueOf() / 1000) : '',\n endTime: endTime ? String(endTime?.valueOf() / 1000) : '',\n token: token?.toString(),\n root: root?.toString(),\n owner: owner,\n version\n };\n }\n\n async getFeeInfo() {\n const airDropContract = await this.getAirdropContract();\n const claimFee = await airDropContract.getClaimFee();\n const claimFeeReceiver = await airDropContract.getClaimFeeAddress();\n return {\n claimFee,\n claimFeeReceiver\n };\n }\n\n claim = async (claimData: any) => {\n const provider = await this.getTonClient();\n const airdropContract = await this.getAirdropContract();\n const proof = Cell.fromBase64(claimData.proofBoc);\n\n const index = BigInt(claimData.index);\n const leafAddress = await airdropContract!.getLeafAddress(index);\n const leaf = provider.open(Leaf.createFromAddress(leafAddress));\n const leafCode = Cell.fromBoc(Buffer.from(LeafCode.hex, 'hex'))[0];\n\n const isDeployed = await provider.isContractDeployed(leafAddress);\n\n let leafBalanceValue = 1;\n\n if (isDeployed) {\n const leafBalance = await TonWalletService.fetchBalance({\n address: leafAddress.toString(),\n chainId: this.chainId\n });\n leafBalanceValue = Number(leafBalance?.value) || 0;\n }\n\n if (!isDeployed || leafBalanceValue <= 0) {\n const claimFee = await airdropContract!.getClaimFee();\n leaf.sendLeafFees(\n this.connection.senderDeploy,\n claimFee,\n leafCode,\n leafConfigToCell({\n distributor: airdropContract!.address,\n index\n })\n );\n await this.waitForTransaction();\n await this.waitForContractDeployment(provider, leafAddress);\n }\n\n const queryId = await leaf.getSeqno();\n await leaf.sendClaim(proof, index, queryId);\n return null;\n };\n\n checkClaimed = async (claimData: IAirdropClaim) => {\n try {\n const provider = await this.getTonClient();\n const airdropContract = await this.getAirdropContract();\n\n const index = BigInt(claimData.index);\n\n const leafAddress = await airdropContract.getLeafAddress(index);\n\n const isDeployed = await provider.isContractDeployed(leafAddress);\n\n if (!isDeployed) return false;\n\n const leaf = new Leaf(leafAddress);\n const leafContract = provider.open(leaf);\n const isUsed = await leafContract?.getIsUsed();\n\n return isUsed;\n } catch (e: any) {\n return false;\n }\n };\n}\n","import { Address, beginCell, Cell, Contract, contractAddress, ContractProvider, Sender, toNano } from '@ton/core';\nimport { OpCode } from '../utils';\n\nexport type LeafConfig = {\n used?: boolean;\n distributor: Address;\n index: bigint;\n};\n\nexport const MIN_CLAIM_FEE = toNano('0.11');\n\nexport function leafConfigToCell(config: LeafConfig): Cell {\n const { distributor, index } = config;\n\n const initState = beginCell()\n .storeBit(false)\n .storeAddress(distributor)\n .storeUint(index, 256)\n .storeUint(0, 64)\n .endCell();\n\n return initState;\n}\n\nexport class Leaf implements Contract {\n constructor(readonly address: Address, readonly init?: { code: Cell; data: Cell }) {}\n\n static createFromAddress(address: Address) {\n return new Leaf(address);\n }\n\n static createFromConfig(config: LeafConfig, code: Cell, workchain = 0) {\n const data = leafConfigToCell(config);\n const init = { code, data };\n return new Leaf(contractAddress(workchain, init), init);\n }\n\n async getSeqno(provider: ContractProvider): Promise<number> {\n const result = await provider.get('get_seqno', []);\n\n return result.stack.readNumber();\n }\n\n async getIsUsed(provider: ContractProvider): Promise<boolean> {\n const result = await provider.get('get_is_used', []);\n const isUsed = result.stack.readNumber();\n\n return !!isUsed;\n }\n\n async getLeafData(provider: ContractProvider): Promise<LeafConfig> {\n const result = await provider.get('get_leaf_data', []);\n const cellHash = result.stack.readCell().beginParse();\n\n const isUsed = cellHash.loadUint(1);\n const distributor = cellHash.loadAddress();\n const index = cellHash.loadUint(256);\n\n return {\n used: !!isUsed,\n index: BigInt(index),\n distributor\n };\n }\n\n async sendLeafFees(_provider: ContractProvider, via: Sender, claimFee: bigint, code: Cell, data: Cell) {\n await via.send({\n bounce: false,\n to: this.address,\n value: MIN_CLAIM_FEE + claimFee,\n init: {\n code,\n data\n },\n body: beginCell().endCell()\n });\n }\n\n async sendClaim(provider: ContractProvider, proof: Cell, index: bigint, queryId = 0) {\n const messageBody = beginCell()\n .storeUint(OpCode.Claim, 32)\n .storeUint(queryId, 64)\n .storeRef(proof)\n .storeUint(index, 256)\n .endCell();\n await provider.external(messageBody);\n }\n}\n","export function dateToUnixTimestamp(date: Date): number {\n return Math.floor(date.getTime() / 1000);\n}\n\nexport function unixTimestampToDate(timestamp: number): Date {\n return new Date(timestamp * 1000);\n}\n\nexport function addOneHour(date: Date): Date {\n return new Date(date.getTime() + 60 * 60 * 1000);\n}\n","import { Address, BitString, Cell, Slice, beginCell, contractAddress, crc32c, toNano } from '@ton/core';\n\nexport function stringToSlice(str: string): Slice {\n return beginCell().storeStringTail(str).endCell().asSlice();\n}\n\nexport function sliceToString(slice: Slice): string {\n const cell = beginCell().storeSlice(slice).endCell();\n return cell.beginParse().loadStringTail();\n}\n\nexport function stringToInt(str: string): number {\n return str ? parseInt(Buffer.from(str).toString('hex'), 16) : 0;\n}\n\nexport function intToString(int: number): string {\n return Buffer.from(int.toString(16), 'hex').toString('utf-8');\n}\n\nexport function bufferToInt(buf: Buffer): number {\n return buf.readUInt32BE(0);\n}\n\nexport function intToBuffer(int: number): Buffer {\n return Buffer.from(int.toString(16), 'hex');\n}\n\nexport function sliceToAddress(slice: Slice): Address {\n const cell = beginCell().storeSlice(slice).endCell();\n return cell.beginParse().loadAddress();\n}\n\nexport function addressToSlice(address: Address): Slice {\n return beginCell().storeAddress(address).endCell().asSlice();\n}\n\nexport function stringToBitString(str: string): BitString {\n return new BitString(Buffer.from(str), 0, str.length * 8);\n}\n\nexport function bitStringToString(bits: BitString, len: number): string {\n const decoder = new TextDecoder();\n const subBuffer = bits.subbuffer(0, len);\n\n return subBuffer ? decoder.decode(subBuffer) : '';\n}\n\nexport function stringToCell(str: string): Cell {\n return beginCell().storeStringTail(str).endCell();\n}\n\nexport function cellToString(cell: Cell): string {\n return cell.beginParse().loadStringTail();\n}\n\nexport function stringToCrc32(str: string): number {\n return crc32c(Buffer.from(str)).readUint32BE();\n}\n\nexport function getContractAddress(code: Cell, data: Cell): Address {\n return contractAddress(0, { code, data });\n}\n\nexport function arraysToCell(arrays: (Slice | Cell | Address | number)[], bits = 32): Cell {\n const cell = beginCell();\n\n arrays.forEach((item) => {\n if (item instanceof Slice) {\n cell.storeSlice(item);\n } else if (item instanceof Cell) {\n cell.storeRef(item);\n } else if (item instanceof Address) {\n cell.storeAddress(item);\n } else if (typeof item === 'number') {\n cell.storeUint(item, bits);\n }\n });\n\n return cell.endCell();\n}\n\nexport function coinsToSlice(coins: string): Slice {\n return beginCell().storeCoins(toNano(coins)).endCell().asSlice();\n}\n","import {\n Address,\n beginCell,\n Builder,\n Cell,\n Contract,\n contractAddress,\n ContractProvider,\n Dictionary,\n Sender,\n SendMode,\n Slice,\n toNano,\n TupleItem\n} from '@ton/core';\nimport { CodeType, dateToUnixTimestamp, intToString, OpCode, stringToInt, unixTimestampToDate } from '../utils';\n\nexport type MerkleTokenDistributorConfig = {\n version: string;\n adminAddress: Address;\n root: bigint;\n deployer: Address;\n token?: Address;\n startTime: Date;\n endTime: Date;\n leafCode: Cell;\n claimFee: bigint;\n claimFeeAddress: Address;\n paused?: boolean;\n};\n\nexport function tokenDistributorConfigToCell(config: MerkleTokenDistributorConfig): Cell {\n const {\n version,\n adminAddress,\n deployer,\n endTime,\n leafCode,\n root,\n startTime,\n token,\n claimFee,\n claimFeeAddress,\n paused = false\n } = config;\n const c2 = beginCell()\n .storeCoins(claimFee)\n .storeAddress(claimFeeAddress)\n .storeUint(paused ? 1 : 0, 1)\n .endCell();\n\n const c1 = beginCell()\n .storeAddress(deployer)\n .storeAddress(token)\n .storeUint(dateToUnixTimestamp(startTime), 32)\n .storeUint(dateToUnixTimestamp(endTime), 32)\n .storeRef(leafCode)\n .endCell();\n\n return beginCell()\n .storeUint(stringToInt(version), 64)\n .storeAddress(adminAddress)\n .storeUint(root, 256)\n .storeRef(c1)\n .storeRef(c2)\n .endCell();\n}\n\nexport type TokenDistributorEntry = {\n address: Address;\n claimableAmount: bigint;\n claimableTimestamp: number;\n};\n\nexport const tokenDistributorEntryValue = {\n serialize: (src: TokenDistributorEntry, buidler: Builder) => {\n buidler.storeAddress(src.address).storeCoins(src.claimableAmount).storeUint(src.claimableTimestamp, 32);\n },\n parse: (src: Slice) => {\n return {\n address: src.loadAddress(),\n claimableAmount: src.loadCoins(),\n claimableTimestamp: src.loadUint(32)\n };\n }\n};\n\nexport function generateEntriesDictionary(entries: TokenDistributorEntry[]): Dictionary<bigint, TokenDistributorEntry> {\n const dict: Dictionary<bigint, TokenDistributorEntry> = Dictionary.empty(\n Dictionary.Keys.BigUint(256),\n tokenDistributorEntryValue\n );\n\n for (let i = 0; i < entries.length; i++) {\n dict.set(BigInt(i), entries[i]);\n }\n\n return dict;\n}\n\nexport class MerkleTokenDistributor implements Contract {\n constructor(readonly address: Address, readonly init?: { code: Cell; data: Cell }) {}\n\n static createFromAddress(address: Address) {\n return new MerkleTokenDistributor(address);\n }\n\n static createFromConfig(config: MerkleTokenDistributorConfig, code: Cell, workchain = 0) {\n const data = tokenDistributorConfigToCell(config);\n const init = { code, data };\n return new MerkleTokenDistributor(contractAddress(workchain, init), init);\n }\n\n async sendDeploy(provider: ContractProvider, via: Sender, value: bigint) {\n await provider.internal(via, {\n value,\n sendMode: SendMode.PAY_GAS_SEPARATELY,\n body: beginCell().endCell()\n });\n }\n\n async getVersion(provider: ContractProvider): Promise<string> {\n const result = await provider.get('get_version', []);\n\n return intToString(Number(result.stack.readBigNumber()));\n }\n\n async getLeafAddress(provider: ContractProvider, index: bigint): Promise<Address> {\n const arg: TupleItem = {\n value: index,\n type: 'int'\n };\n const result = await provider.get('get_leaf_address', [arg]);\n\n return result.stack.readAddress();\n }\n\n async getRoot(provider: ContractProvider): Promise<bigint> {\n const result = await provider.get('get_root', []);\n\n return result.stack.readBigNumber();\n }\n\n async getTime(provider: ContractProvider): Promise<[Date, Date] | [null, null]> {\n const result = await provider.get('get_time', []);\n const stack = result.stack;\n\n try {\n return [unixTimestampToDate(stack.readNumber()), unixTimestampToDate(stack.readNumber())];\n } catch (e) {\n return [null, null];\n }\n }\n\n async getToken(provider: ContractProvider): Promise<Address | null> {\n const result = await provider.get('get_token', []);\n\n try {\n return result.stack.readAddress();\n } catch (e) {\n return null;\n }\n }\n\n async getDeployer(provider: ContractProvider): Promise<Address> {\n const result = await provider.get('get_deployer', []);\n\n return result.stack.readAddress();\n }\n\n async getClaimFee(provider: ContractProvider): Promise<bigint> {\n const result = await provider.get('get_claim_fee', []);\n\n return result.stack.readBigNumber();\n }\n\n async getClaimFeeAddress(provider: ContractProvider): Promise<Address> {\n const result = await provider.get('get_claim_fee_address', []);\n\n return result.stack.readAddress();\n }\n\n async getPaused(provider: ContractProvider): Promise<boolean> {\n const result = await provider.get('get_paused', []);\n\n return result.stack.readNumber() === 1;\n }\n\n async sendChangeAdmin(provider: ContractProvider, via: Sender, newAdmin: Address) {\n const messageBody = beginCell().storeUint(OpCode.ChangeAdmin, 32).storeUint(0, 64).storeAddress(newAdmin).endCell();\n const result = await provider.internal(via, {\n value: '0.01',\n body: messageBody\n });\n\n return result;\n }\n\n async sendChangeCode(provider: ContractProvider, via: Sender, codeType: CodeType, newCode: Cell) {\n const messageBody = beginCell()\n .storeUint(OpCode.ChangeCode, 32)\n .storeUint(0, 64)\n .storeUint(codeType, 32)\n .storeRef(newCode)\n .endCell();\n const result = await provider.internal(via, {\n value: '0.01',\n body: messageBody\n });\n\n return result;\n }\n\n async sendChangeVersion(provider: ContractProvider, via: Sender, version: string) {\n const messageBody = beginCell()\n .storeUint(OpCode.ChangeVersion, 32)\n .storeUint(0, 64)\n .storeUint(stringToInt(version), 64)\n .endCell();\n const result = await provider.internal(via, {\n value: '0.01',\n body: messageBody\n });\n\n return result;\n }\n\n async sendWithdraw(provider: ContractProvider, via: Sender, amount: string) {\n const messageBody = beginCell()\n .storeUint(OpCode.Withdraw, 32)\n .storeUint(0, 64)\n .storeCoins(toNano(amount))\n .endCell();\n const result = await provider.internal(via, {\n value: '0.01',\n body: messageBody\n });\n\n return result;\n }\n\n async sendWithdrawTokens(provider: ContractProvider, via: Sender, amount: string) {\n const messageBody = beginCell()\n .storeUint(OpCode.WithdrawTokens, 32)\n .storeUint(0, 64)\n .storeCoins(toNano(amount))\n .endCell();\n const result = await provider.internal(via, {\n value: '0.1',\n body: messageBody\n });\n\n return result;\n }\n\n async sendSetBaseParams(\n provider: ContractProvider,\n via: Sender,\n startTime: Date,\n endTime: Date,\n root: bigint,\n token: Address\n ) {\n const messageBody = beginCell()\n .storeUint(OpCode.SetBaseParams, 32)\n .storeUint(0, 64)\n .storeAddress(token)\n .storeUint(dateToUnixTimestamp(startTime), 32)\n .storeUint(dateToUnixTimestamp(endTime), 32)\n .storeUint(root, 256)\n .endCell();\n const result = await provider.internal(via, {\n value: '0.01',\n body: messageBody\n });\n\n return result;\n }\n\n async sendSetClaimFee(provider: ContractProvider, via: Sender, claimFee: bigint) {\n const messageBody = beginCell().storeUint(OpCode.SetClaimFee, 32).storeUint(0, 64).storeCoins(claimFee).endCell();\n const result = await provider.internal(via, {\n value: '0.01',\n body: messageBody\n });\n\n return result;\n }\n\n async sendSetClaimFeeAddress(provider: ContractProvider, via: Sender, claimFeeAddress: Address) {\n const messageBody = beginCell()\n .storeUint(OpCode.SetClaimFee, 32)\n .storeUint(0, 64)\n .storeAddress(claimFeeAddress)\n .endCell();\n const result = await provider.internal(via, {\n value: '0.01',\n body: messageBody\n });\n\n return result;\n }\n\n async sendSetPaused(provider: ContractProvider, via: Sender, paused: boolean) {\n const messageBody = beginCell()\n .storeUint(OpCode.SetPaused, 32)\n .storeUint(0, 64)\n .storeUint(paused ? 1 : 0, 1)\n .endCell();\n const result = await provider.internal(via, {\n value: '0.01',\n body: messageBody\n });\n\n return result;\n }\n}\n","{\"hex\":\"b5ee9c7241022e010008a0000114ff00f4a413f4bcf2c80b0102012006020128f2d31fd33f028210503d1c97bae3025b840ff2f00302fef057f84521baf2a4f8276f22308210042c1d80bef2b0f842c001f26801d4d3ff30f864885210f90001f900baf26420d739f2aad30701c003f2ab21d765aa00a6025220f9415f03f84401d4308307f40e6fa131f2adf80071f843f844f845a4f058f842c8cb00c9f8448210d0d5f405c8cb1f14cb3f12cc12cbffccc971801005040024c8cb05f843cf1670fa02cb6accc98306fb0000000201480c070201200b080201200a090025bbc01f057f844f842c8cb00f843cf16cbffc98000dbaf13f057f8428000dbd817f82bfc22c0202c91f0d020148130e020120100f001dd81e465802c678b65ffe59fe4f6aa40201201211002ff76a268698000fc317d2000fc31e9ff80fc32699f987c32c00276be401c1cb232c072c004b2c1f2fff2743e900c20103a3c01404f62082300de0b6b3a7640000ba9b30823025b946ebc0b36173e08200c354218235c702bd3a30fc0000be228238070c1cc73b00c80000bbb0f2f420c1008e1282300de0b6b3a76400005202a3f04712a984e020821b782dace9d9aa18bee30f01a7648238056bc75e2d6310000021822056bc75e2d631aa18bee300211e1d1c1502f4822056bc75e2d631aa17be8e2701822056bc75e2d631aa17a101824adf0ab5a80a22c61ab5a7008238056bc75e2d63100000a984de21822056bc75e2d631aa16be8e2601822056bc75e2d631aa16a10182403f1fce3da636ea5cf8508238056bc75e2d63100000a984de21823815af1d78b58c400000bee300211b1602f482380ad78ebc5ac6200000be8e260182380ad78ebc5ac6200000a1018238280e60114edb805d038238056bc75e2d63100000a984de218238056bc75e2d63100000be8e26018238056bc75e2d63100000a10182380ebc5fb417461211108238056bc75e2d63100000a984de218232b5e3af16b1880000bee300211a1701ec82315af1d78b58c40000be8e250182315af1d78b58c40000a101823806f5f17757889379378238056bc75e2d63100000a984de218238056bc75e2d6310000021a0511382380ad78ebc5ac6200000a98466a0511382381043561a8829300000a98466a05113823815af1d78b58c400000a98466a051131801ea82381b1ae4d6e2ef500000a98466a0511382382086ac351052600000a98466a05113823825f273933db5700000a98466a05113822056bc75e2d631aa16a98466a05113823830ca024f987b900000a98466a0511382383635c9adc5dea00000a98466a0511382383ba1910bf341b00000a98466a0031900428238410d586a20a4c00000a98412a08238056bc75e2d63100000a984018064a984004a018232b5e3af16b1880000a101823808f00f760a4b2db55d8238056bc75e2d63100000a984004c01823815af1d78b58c400000a101823927fa27722cc06cc5e28238056bc75e2d63100000a984003830822056bc75e2d631aa18a18261855144814a7ff805980ff0084000005020821b782dace9d9aa17be8e18821b782dace9d9aa17a182501425982cf597cd205cef73809171e20042821b782dace9d9aa18a18288195e54c5dd42177f53a27172fa9ec630262827aa230201202b200103aee02101f62082300de0b6b3a7640000b98e1182300de0b6b3a76400005202a984f03ba3e0702182b05803bcc5cb9634ba4cfb2213f784019318ed4dcb6017880faa35be8e23308288195e54c5dd42177f53a27172fa9ec630262827aa23a904821b782dace9d9aa18de2182708bcc0026baae9e45e470190267a230cfaa18be2202ea8e1c0182501425982cf597cd205cef7380a90401821b782dace9d9aa17a0dea76401a764208261855144814a7ff805980ff0084000be8e2a8238056bc75e2d631000008261855144814a7ff805980ff0084000a98401822056bc75e2d631aa18a001de20824adf0ab5a80a22c61ab5a700bee300202a2302f882403f1fce3da636ea5cf850be8e268238056bc75e2d6310000082403f1fce3da636ea5cf850a98401822056bc75e2d631aa16a001de20823927fa27722cc06cc5e2be8e268238056bc75e2d63100000823927fa27722cc06cc5e2a98401823815af1d78b58c400000a001de208238280e60114edb805d03bee30020292402f482380ebc5fb41746121110be8e268238056bc75e2d6310000082380ebc5fb41746121110a984018238056bc75e2d63100000a001de20823808f00f760a4b2db55dbe8e258238056bc75e2d63100000823808f00f760a4b2db55da984018232b5e3af16b1880000a001de20823806f5f1775788937937bee30020282501ec823806248f33704b286603be8e258238056bc75e2d63100000823806248f33704b286603a984018230ad78ebc5ac620000a001de20823805c548670b9510e7acbe8e258238056bc75e2d63100000823805c548670b9510e7aca98401823056bc75e2d6310000a001de208238056bc75e2d63100000a12601fe8238056bc75e2d631000005122a012a98453008238056bc75e2d63100000a9845c8238056bc75e2d63100000a9842073a90413a051218238056bc75e2d63100000a9842075a90413a051218238056bc75e2d63100000a9842077a90413a051218238056bc75e2d63100000a9842079a90413a0598238056bc75e2d6310000027001ca984800ba904a0aa00a08064a904004a8238056bc75e2d63100000823806f5f1775788937937a9840182315af1d78b58c40000a001004c8238056bc75e2d631000008238280e60114edb805d03a9840182380ad78ebc5ac6200000a001004e8238056bc75e2d63100000824adf0ab5a80a22c61ab5a700a98401822056bc75e2d631aa17a0010201202d2c0063a46410e0804c45896c678b00d180ef381038c70a023d5486531812d40950025503815210e0002298731819d5016780e4e840008bd1b088831c02456f8007434c0c05c6c2456f83e900c0074c7f4cfcc40608426871dda6ea386bc15fe10c4b1c17ca8f4ffcc3e112ebcabdc3e10fe113e117c163816e103fcbc223e50a66\"}","import { Address, beginCell, Cell, Contract, contractAddress, ContractProvider, Sender, toNano } from '@ton/core';\nimport { OpCode } from '../utils';\n\nexport const MIN_CLAIM_FEE = toNano('0.17');\n\nexport type LeafConfig = {\n used?: boolean;\n distributor: Address;\n index: bigint;\n};\n\nexport function leafConfigToCell(config: LeafConfig): Cell {\n const { distributor, index } = config;\n\n const initState = beginCell().storeBit(false).storeAddress(distributor).storeUint(index, 64).endCell();\n\n return initState;\n}\n\nexport class Leaf implements Contract {\n constructor(readonly address: Address, readonly init?: { code: Cell; data: Cell }) {}\n\n static createFromAddress(address: Address) {\n return new Leaf(address);\n }\n\n static createFromConfig(config: LeafConfig, code: Cell, workchain = 0) {\n const data = leafConfigToCell(config);\n const init = { code, data };\n return new Leaf(contractAddress(workchain, init), init);\n }\n\n async getIsUsed(provider: ContractProvider): Promise<boolean> {\n const result = await provider.get('get_is_used', []);\n const isUsed = result.stack.readNumber();\n\n return !!isUsed;\n }\n\n async getLeafData(provider: ContractProvider): Promise<LeafConfig> {\n const result = await provider.get('get_leaf_data', []);\n const cellHash = result.stack.readCell().beginParse();\n\n const isUsed = cellHash.loadUint(1);\n const distributor = cellHash.loadAddress();\n const index = cellHash.loadUint(64);\n\n return {\n used: !!isUsed,\n index: BigInt(index),\n distributor\n };\n }\n\n async sendClaim(provider: ContractProvider, via: Sender, proof: Cell, index: bigint, claimFee: bigint) {\n const messageBody = beginCell()\n .storeUint(OpCode.Claim, 32)\n .storeUint(0, 64)\n .storeRef(proof)\n .storeUint(index, 64)\n .endCell();\n const result = await provider.internal(via, {\n value: MIN_CLAIM_FEE + claimFee,\n body: messageBody\n });\n\n return result;\n }\n}\n","export function dateToUnixTimestamp(date: Date): number {\n return Math.floor(date.getTime() / 1000);\n}\n\nexport function unixTimestampToDate(timestamp: number): Date {\n return new Date(timestamp * 1000);\n}\n\nexport function addOneHour(date: Date): Date {\n return new Date(date.getTime() + 60 * 60 * 1000);\n}\n","import { Address, BitString, Cell, Slice, beginCell, contractAddress, crc32c, toNano } from '@ton/core';\n\nexport function stringToSlice(str: string): Slice {\n return beginCell().storeStringTail(str).endCell().asSlice();\n}\n\nexport function sliceToString(slice: Slice): string {\n const cell = beginCell().storeSlice(slice).endCell();\n return cell.beginParse().loadStringTail();\n}\n\nexport function hexStringToInt(str: string): number {\n if (!str.startsWith('0x')) {\n str = '0x' + str;\n }\n\n return parseInt(str, 16);\n}\n\nexport function stringToInt(str: string): number {\n return str ? parseInt(Buffer.from(str).toString('hex'), 16) : 0;\n}\n\nexport function intToString(int: number): string {\n return Buffer.from(int.toString(16), 'hex').toString('utf-8');\n}\n\nexport function intToHexString(int: number): string {\n return int.toString(16);\n}\n\nexport function bufferToInt(buf: Buffer): number {\n return buf.readUInt32BE(0);\n}\n\nexport function intToBuffer(int: number): Buffer {\n return Buffer.from(int.toString(16), 'hex');\n}\n\nexport function sliceToAddress(slice: Slice): Address {\n const cell = beginCell().storeSlice(slice).endCell();\n return cell.beginParse().loadAddress();\n}\n\nexport function addressToSlice(address: Address): Slice {\n return beginCell().storeAddress(address).endCell().asSlice();\n}\n\nexport function stringToBitString(str: string): BitString {\n return new BitString(Buffer.from(str), 0, str.length * 8);\n}\n\nexport function bitStringToString(bits: BitString, len: number): string {\n const decoder = new TextDecoder();\n const subBuffer = bits.subbuffer(0, len);\n\n return subBuffer ? decoder.decode(subBuffer) : '';\n}\n\nexport function stringToCell(str: string): Cell {\n return beginCell().storeStringTail(str).endCell();\n}\n\nexport function cellToString(cell: Cell): string {\n return cell.beginParse().loadStringTail();\n}\n\nexport function stringToCrc32(str: string): number {\n return crc32c(Buffer.from(str)).readUint32BE();\n}\n\nexport function stringToBuffer64(str: string): Buffer {\n const buff = Buffer.alloc(64);\n buff.write(str);\n return buff;\n}\n\nexport function getContractAddress(code: Cell, data: Cell): Address {\n return contractAddress(0, { code, data });\n}\n\nexport function arraysToCell(arrays: (Slice | Cell | Address | number)[], bits = 32): Cell {\n const cell = beginCell();\n\n arrays.forEach((item) => {\n if (item instanceof Slice) {\n cell.storeSlice(item);\n } else if (item instanceof Cell) {\n cell.storeRef(item);\n } else if (item instanceof Address) {\n cell.storeAddress(item);\n } else if (typeof item === 'number') {\n cell.storeUint(item, bits);\n }\n });\n\n return cell.endCell();\n}\n\nexport function coinsToSlice(coins: string): Slice {\n return beginCell().storeCoins(toNano(coins)).endCell().asSlice();\n}\n","import {\n Address,\n beginCell,\n Builder,\n Cell,\n Contract,\n contractAddress,\n ContractProvider,\n Dictionary,\n Sender,\n SendMode,\n Slice,\n toNano,\n TupleItem\n} from '@ton/core';\nimport { CodeType, dateToUnixTimestamp, intToString, OpCode, stringToInt, unixTimestampToDate } from '../utils';\n\nexport type MerkleTokenDistributorConfig = {\n version: string;\n adminAddress: Address;\n root: bigint;\n deployer: Address;\n token?: Address;\n startTime: Date;\n endTime: Date;\n leafCode: Cell;\n claimFee: bigint;\n claimFeeAddress: Address;\n paused?: boolean;\n feelessThreshold?: bigint;\n};\n\nexport function tokenDistributorConfigToCell(config: MerkleTokenDistributorConfig): Cell {\n const {\n version,\n adminAddress,\n deployer,\n endTime,\n leafCode,\n root,\n startTime,\n token,\n claimFee,\n claimFeeAddress,\n paused = false,\n feelessThreshold = 0\n } = config;\n const c2 = beginCell()\n .storeCoins(claimFee)\n .storeAddress(claimFeeAddress)\n .storeUint(paused ? 1 : 0, 1)\n .storeCoins(feelessThreshold)\n .endCell();\n\n const c1 = beginCell()\n .storeAddress(deployer)\n .storeAddress(token)\n .storeUint(dateToUnixTimestamp(startTime), 32)\n .storeUint(dateToUnixTimestamp(endTime), 32)\n .storeRef(leafCode)\n .endCell();\n\n return beginCell()\n .storeUint(stringToInt(version), 64)\n .storeAddress(adminAddress)\n .storeUint(root, 256)\n .storeRef(c1)\n .storeRef(c2)\n .endCell();\n}\n\nexport type TokenDistributorEntry = {\n address: Address;\n claimableAmount: bigint;\n claimableTimestamp: number;\n};\n\nexport const tokenDistributorEntryValue = {\n serialize: (src: TokenDistributorEntry, buidler: Builder) => {\n buidler.storeAddress(src.address).storeCoins(src.claimableAmount).storeUint(src.claimableTimestamp, 32);\n },\n parse: (src: Slice) => {\n return {\n address: src.loadAddress(),\n claimableAmount: src.loadCoins(),\n claimableTimestamp: src.loadUint(32)\n };\n }\n};\n\nexport function generateEntriesDictionary(entries: TokenDistributorEntry[]): Dictionary<bigint, TokenDistributorEntry> {\n const dict: Dictionary<bigint, TokenDistributorEntry> = Dictionary.empty(\n Dictionary.Keys.BigUint(64),\n tokenDistributorEntryValue\n );\n\n for (let i = 0; i < entries.length; i++) {\n dict.set(BigInt(i), entries[i]);\n }\n\n return dict;\n}\n\nexport class MerkleTokenDistributor implements Contract {\n constructor(readonly address: Address, readonly init?: { code: Cell; data: Cell }) {}\n\n static createFromAddress(address: Address) {\n return new MerkleTokenDistributor(address);\n }\n\n static createFromConfig(config: MerkleTokenDistributorConfig, code: Cell, workchain = 0) {\n const data = tokenDistributorConfigToCell(config);\n const init = { code, data };\n return new MerkleTokenDistributor(contractAddress(workchain, init), init);\n }\n\n async sendDeploy(provider: ContractProvider, via: Sender, value: bigint) {\n await provider.internal(via, {\n value,\n sendMode: SendMode.PAY_GAS_SEPARATELY,\n body: beginCell().endCell()\n });\n }\n\n async getVersion(provider: ContractProvider): Promise<string> {\n const result = await provider.get('get_version', []);\n\n return intToString(Number(result.stack.readBigNumber()));\n }\n\n async getLeafAddress(provider: ContractProvider, index: bigint): Promise<Address> {\n const arg: TupleItem = {\n value: index,\n type: 'int'\n };\n const result = await provider.get('get_leaf_address', [arg]);\n\n return result.stack.readAddress();\n }\n\n async getRoot(provider: ContractProvider): Promise<bigint> {\n const result = await provider.get('get_root', []);\n\n return result.stack.readBigNumber();\n }\n\n async getTime(provider: ContractProvider): Promise<[Date, Date] | [null, null]> {\n const result = await provider.get('get_time', []);\n const stack = result.stack;\n\n try {\n return [unixTimestampToDate(stack.readNumber()), unixTimestampToDate(stack.readNumber())];\n } catch (e) {\n return [null, null];\n }\n }\n\n async getToken(provider: ContractProvider): Promise<Address | null> {\n const result = await provider.get('get_token', []);\n\n try {\n return result.stack.readAddress();\n } catch (e) {\n return null;\n }\n }\n\n async getAdminAddress(provider: ContractProvider): Promise<Address> {\n const result = await provider.get('get_admin_address', []);\n\n return result.stack.readAddress();\n }\n\n async getClaimFee(provider: ContractProvider): Promise<bigint> {\n const result = await provider.get('get_claim_fee', []);\n\n return result.stack.readBigNumber();\n }\n\n async getClaimFeeAddress(provider: ContractProvider): Promise<Address> {\n const result = await provider.get('get_claim_fee_address', []);\n\n return result.stack.readAddress();\n }\n\n async getPaused(provider: ContractProvider): Promise<boolean> {\n const result = await provider.get('get_paused', []);\n\n return result.stack.readNumber() === 1;\n }\n\n async getFeelessThreshold(provider: ContractProvider): Promise<bigint> {\n const result = await provider.get('get_feeless_threshold', []);\n\n return result.stack.readBigNumber();\n }\n\n async sendChangeAdmin(provider: ContractProvider, via: Sender, newAdmin: Address) {\n const messageBody = beginCell().storeUint(OpCode.ChangeAdmin, 32).storeUint(0, 64).storeAddress(newAdmin).endCell();\n const result = await provider.internal(via, {\n value: '0.01',\n body: messageBody\n });\n\n return result;\n }\n\n async sendChangeCode(provider: ContractProvider, via: Sender, codeType: CodeType, newCode: Cell) {\n const messageBody = beginCell()\n .storeUint(OpCode.ChangeCode, 32)\n .storeUint(0, 64)\n .storeUint(codeType, 32)\n .storeRef(newCode)\n .endCell();\n const result = await provider.internal(via, {\n value: '0.01',\n body: messageBody\n });\n\n return result;\n }\n\n async sendChangeVersion(provider: ContractProvider, via: Sender, version: string) {\n const messageBody = beginCell()\n .storeUint(OpCode.ChangeVersion, 32)\n .storeUint(0, 64)\n .storeUint(stringToInt(version), 64)\n .endCell();\n const result = await provider.internal(via, {\n value: '0.01',\n body: messageBody\n });\n\n return result;\n }\n\n async sendWithdraw(provider: ContractProvider, via: Sender, amount: string) {\n const messageBody = beginCell()\n .storeUint(OpCode.Withdraw, 32)\n .storeUint(0, 64)\n .storeCoins(toNano(amount))\n .endCell();\n const result = await provider.internal(via, {\n value: '0.01',\n body: messageBody\n });\n\n return result;\n }\n\n async sendWithdrawTokens(provider: ContractProvider, via: Sender, amount: string) {\n const messageBody = beginCell()\n .storeUint(OpCode.WithdrawTokens, 32)\n .storeUint(0, 64)\n .storeCoins(toNano(amount))\n .endCell();\n const result = await provider.internal(via, {\n value: '0.1',\n body: messageBody\n });\n\n return result;\n }\n\n async sendSetBaseParams(\n provider: ContractProvider,\n via: Sender,\n startTime: Date,\n endTime: Date,\n root: bigint,\n token: Address\n ) {\n const messageBody = beginCell()\n .storeUint(OpCode.SetBaseParams, 32)\n .storeUint(0, 64)\n .storeAddress(token)\n .storeUint(dateToUnixTimestamp(startTime), 32)\n .storeUint(dateToUnixTimestamp(endTime), 32)\n .storeUint(root, 256)\n .endCell();\n const result = await provider.internal(via, {\n value: '0.01',\n body: messageBody\n });\n\n return result;\n }\n\n async sendSetClaimFee(provider: ContractProvider, via: Sender, claimFee: bigint) {\n const messageBody = beginCell().storeUint(OpCode.SetClaimFee, 32).storeUint(0, 64).storeCoins(claimFee).endCell();\n const result = await provider.internal(via, {\n value: '0.01',\n body: messageBody\n });\n\n return result;\n }\n\n async sendSetClaimFeeAddress(provider: ContractProvider, via: Sender, claimFeeAddress: Address) {\n const messageBody = beginCell()\n .storeUint(OpCode.SetClaimFee, 32)\n .storeUint(0, 64)\n .storeAddress(claimFeeAddress)\n .endCell();\n const result = await provider.internal(via, {\n value: '0.01',\n body: messageBody\n });\n\n return result;\n }\n\n async sendSetPaused(provider: ContractProvider, via: Sender, paused: boolean) {\n const messageBody = beginCell()\n .storeUint(OpCode.SetPaused, 32)\n .storeUint(0, 64)\n .storeUint(paused ? 1 : 0, 1)\n .endCell();\n const result = await provider.internal(via, {\n value: '0.01',\n body: messageBody\n });\n\n return result;\n }\n\n async sendSetFeelessThreshold(provider: ContractProvider, via: Sender, feelessThreshold: bigint) {\n const messageBody = beginCell()\n .storeUint(OpCode.SetFeelessThreshold, 32)\n .storeUint(0, 64)\n .storeCoins(feelessThreshold)\n .endCell();\n const result = await provider.internal(via, {\n value: '0.01',\n body: messageBody\n });\n\n return result;\n }\n}\n","import { TonContractBaseClient, IAirdropOption } from './TonContractBaseClient';\nimport { Leaf, MerkleTokenDistributor } from './v2/wrappers';\nimport { Address, Cell, toNano } from '@ton/core';\nimport { IAirdropClaim } from '../../types';\nimport LeafCode from './v2/build/Leaf.compiled.json';\nimport { isBeforeByUnix } from '../../utils';\n\nexport class TonAirdropClientV2 extends TonContractBaseClient {\n version = '2.0.0';\n\n constructor(option: IAirdropOption) {\n super(option);\n }\n\n async getVersion() {\n const airDropContract = await this.getAirdropContract();\n const version = await airDropContract.getVersion();\n this.version = version;\n return version;\n }\n\n getAirdropContract = async () => {\n const provider = await this.getTonClient();\n const contract = new MerkleTokenDistributor(Address.parse(this.address));\n return provider.open(contract);\n };\n\n getPaused = async () => {\n const airDropContract = await this.getAirdropContract();\n return airDropContract?.getPaused();\n };\n\n getFeelessThreshold = async () => {\n const airDropContract = await this.getAirdropContract();\n return airDropContract?.getFeelessThreshold();\n };\n\n async getBaseParams() {\n const airDropContract = await this.getAirdropContract();\n const [startTime, endTime] = await airDropContract!.getTime();\n const token = await airDropContract?.getToken();\n const root = await airDropContract?.getRoot();\n const version = this.version || (await airDropContract.getVersion());\n\n const paused = await airDropContract?.getPaused();\n\n return {\n startTime: startTime ? String(startTime?.valueOf() / 1000) : '',\n endTime: endTime ? String(endTime?.valueOf() / 1000) : '',\n token: token?.toString(),\n root: root?.toString(),\n version,\n paused\n };\n }\n\n async getFeeInfo() {\n const airDropContract = await this.getAirdropContract();\n const claimFee = await airDropContract.getClaimFee();\n const claimFeeReceiver = await airDropContract.getClaimFeeAddress();\n return {\n claimFee,\n claimFeeReceiver\n };\n }\n\n claim = async (claimData: IAirdropClaim & { value: string | null }, options?: { onLoading?: () => void }) => {\n const provider = await this.getTonClient();\n const airdropContract = await this.getAirdropContract();\n const index = BigInt(claimData.index);\n const claimFee = claimData.value ? toNano(claimData.value) : await airdropContract!.getClaimFee();\n const proof = Cell.fromBase64(claimData.proofBoc);\n\n const leafCode = Cell.fromBoc(Buffer.from(LeafCode.hex, 'hex'))[0];\n\n const leaf = provider.open(\n Leaf.createFromConfig(\n {\n distributor: airdropContract.address,\n index\n },\n leafCode\n )\n );\n\n leaf.sendClaim(this.connection.senderDeploy, proof, index, claimFee);\n const res = await this.waitForTransaction(options?.onLoading);\n if (res) {\n console.log(res, res.event_id, 'res');\n }\n return res;\n };\n\n checkClaimed = async (claimData: IAirdropClaim) => {\n try {\n if (isBeforeByUnix(claimData.unlockingAt)) return false;\n const provider = await this.getTonClient();\n const airdropContract = await this.getAirdropContract();\n\n const index = BigInt(claimData.index);\n\n const leafAddress = await airdropContract.getLeafAddress(index);\n\n const isDeployed = await provider.isContractDeployed(leafAddress);\n\n if (!isDeployed) return false;\n\n const leaf = new Leaf(leafAddress);\n const leafContract = provider.open(leaf);\n const isUsed = await leafContract?.getIsUsed();\n\n return isUsed;\n } catch (e: any) {\n console.log(e, 'check claim err');\n return false;\n }\n };\n}\n","{\"hex\":\"b5ee9c7241022901000864000114ff00f4a413f4bcf2c80b01020162050202015804030025bbc01f057f844f842c8cb00f843cf16cb3fc98000dbaf13f057f84280202c918060201480c0702012009080019d8164658000e78b659fe4f6aa40201200b0a0025f76a268698000fc317d2000fc31e99f987c32400276be401c1cb232c072c004b2c1f2fff2743e900c20103a3c00d04f62082300de0b6b3a7640000ba9b30823025b946ebc0b36173e08200c354218235c702bd3a30fc0000be228238070c1cc73b00c80000bbb0f2f420c1008e1282300de0b6b3a76400005202a3f04712a984e020821b782dace9d9aa18bee30f01a7648238056bc75e2d6310000021822056bc75e2d631aa18bee300211716150e02f4822056bc75e2d631aa17be8e2701822056bc75e2d631aa17a101824adf0ab5a80a22c61ab5a7008238056bc75e2d63100000a984de21822056bc75e2d631aa16be8e2601822056bc75e2d631aa16a10182403f1fce3da636ea5cf8508238056bc75e2d63100000a984de21823815af1d78b58c400000bee30021140f02f482380ad78ebc5ac6200000be8e260182380ad78ebc5ac6200000a1018238280e60114edb805d038238056bc75e2d63100000a984de218238056bc75e2d63100000be8e26018238056bc75e2d63100000a10182380ebc5fb417461211108238056bc75e2d63100000a984de218232b5e3af16b1880000bee30021131001ec82315af1d78b58c40000be8e250182315af1d78b58c40000a101823806f5f17757889379378238056bc75e2d63100000a984de218238056bc75e2d6310000021a0511382380ad78ebc5ac6200000a98466a0511382381043561a8829300000a98466a05113823815af1d78b58c400000a98466a051131101ea82381b1ae4d6e2ef500000a98466a0511382382086ac351052600000a98466a05113823825f273933db5700000a98466a05113822056bc75e2d631aa16a98466a05113823830ca024f987b900000a98466a0511382383635c9adc5dea00000a98466a0511382383ba1910bf341b00000a98466a0031200428238410d586a20a4c00000a98412a08238056bc75e2d63100000a984018064a984004a018232b5e3af16b1880000a101823808f00f760a4b2db55d8238056bc75e2d63100000a984004c01823815af1d78b58c400000a101823927fa27722cc06cc5e28238056bc75e2d63100000a984003830822056bc75e2d631aa18a18261855144814a7ff805980ff0084000005020821b782dace9d9aa17be8e18821b782dace9d9aa17a182501425982cf597cd205cef73809171e20042821b782dace9d9aa18a18288195e54c5dd42177f53a27172fa9ec630262827aa2302012024190103aee01a01f62082300de0b6b3a7640000b98e1182300de0b6b3a76400005202a984f03ba3e0702182b05803bcc5cb9634ba4cfb2213f784019318ed4dcb6017880faa35be8e23308288195e54c5dd42177f53a27172fa9ec630262827aa23a904821b782dace9d9aa18de2182708bcc0026baae9e45e470190267a230cfaa18be1b02ea8e1c0182501425982cf597cd205cef7380a90401821b782dace9d9aa17a0dea76401a764208261855144814a7ff805980ff0084000be8e2a8238056bc75e2d631000008261855144814a7ff805980ff0084000a98401822056bc75e2d631aa18a001de20824adf0ab5a80a22c61ab5a700bee30020231c02f882403f1fce3da636ea5cf850be8e268238056bc75e2d6310000082403f1fce3da636ea5cf850a98401822056bc75e2d631aa16a001de20823927fa27722cc06cc5e2be8e268238056bc75e2d63100000823927fa27722cc06cc5e2a98401823815af1d78b58c400000a001de208238280e60114edb805d03bee30020221d02f482380ebc5fb41746121110be8e268238056bc75e2d6310000082380ebc5fb41746121110a984018238056bc75e2d63100000a001de20823808f00f760a4b2db55dbe8e258238056bc75e2d63100000823808f00f760a4b2db55da984018232b5e3af16b1880000a001de20823806f5f1775788937937bee30020211e01ec823806248f33704b286603be8e258238056bc75e2d63100000823806248f33704b286603a984018230ad78ebc5ac620000a001de20823805c548670b9510e7acbe8e258238056bc75e2d63100000823805c548670b9510e7aca98401823056bc75e2d6310000a001de208238056bc75e2d63100000a11f01fe8238056bc75e2d631000005122a012a98453008238056bc75e2d63100000a9845c8238056bc75e2d63100000a9842073a90413a051218238056bc75e2d63100000a9842075a90413a051218238056bc75e2d63100000a9842077a90413a051218238056bc75e2d63100000a9842079a90413a0598238056bc75e2d6310000020001ca984800ba904a0aa00a08064a904004a8238056bc75e2d63100000823806f5f1775788937937a9840182315af1d78b58c40000a001004c8238056bc75e2d631000008238280e60114edb805d03a9840182380ad78ebc5ac6200000a001004e8238056bc75e2d63100000824adf0ab5a80a22c61ab5a700a98401822056bc75e2d631aa17a00102012026250063a46410e0804c45896c678b00d180ef381038c70a023d5486531812d40950025503815210e0002298731819d5016780e4e840019fd0c8871c02497c0f83434c0c05c6c2497c0f83e900c0074c7f4cfc8a08426871dda6ea3864d16fc15fe10f1c17ca8f4cfcc3e112ebcabdc3e10fe113c16380cc06084140f4725eeb8c097c0e103fcbc22701fcf057028210042c1d80bef2b0f842c001f268d4d33f30f864885210f90001f900baf26420d739f2aad30701c003f2ab21d765aa00a6025220f9415f03f84401d4308040f40e6fa131f2ad71f843f844f058f842f8448210d0d5f405c8cb1f14cb3f12cc12cb3fcb00c9718010c8cb05f843cf1670fa02cb6accc98306fb0028000030639e90\"}","import { Address, beginCell, Cell, Contract, contractAddress, ContractProvider, Sender, toNano } from '@ton/core';\nimport { OpCode } from '../utils';\n\nexport const MIN_CLAIM_FEE = toNano('0.17');\n\nexport type LeafConfig = {\n used?: boolean;\n distributor: Address;\n index: bigint;\n};\nexport function leafConfigToCell(config: LeafConfig): Cell {\n const { distributor, index } = config;\n\n const initState = beginCell().storeBit(false).storeAddress(distributor).storeUint(index, 64).endCell();\n\n return initState;\n}\n\nexport class Leaf implements Contract {\n constructor(readonly address: Address, readonly init?: { code: Cell; data: Cell }) {}\n\n static createFromAddress(address: Address) {\n return new Leaf(address);\n }\n\n static createFromConfig(config: LeafConfig, code: Cell, workchain = 0) {\n const data = leafConfigToCell(config);\n const init = { code, data };\n return new Leaf(contractAddress(workchain, init), init);\n }\n\n async getIsUsed(provider: ContractProvider): Promise<boolean> {\n const result = await provider.get('get_is_used', []);\n const isUsed = result.stack.readNumber();\n\n return !!isUsed;\n }\n\n async getLeafData(provider: ContractProvider): Promise<LeafConfig> {\n const result = await provider.get('get_leaf_data', []);\n const cellHash = result.stack.readCell().beginParse();\n\n const isUsed = cellHash.loadUint(1);\n const distributor = cellHash.loadAddress();\n const index = cellHash.loadUint(64);\n\n return {\n used: !!isUsed,\n index: BigInt(index),\n distributor\n };\n }\n\n async sendClaim(provider: ContractProvider, via: Sender, proof: Cell, index: bigint, claimFee: bigint) {\n const messageBody = beginCell()\n .storeUint(OpCode.Claim, 32)\n .storeUint(0, 64)\n .storeRef(proof)\n .storeUint(index, 64)\n .endCell();\n const result = await provider.internal(via, {\n value: MIN_CLAIM_FEE + claimFee,\n body: messageBody\n });\n\n return result;\n }\n}\n","export function dateToUnixTimestamp(date: Date): number {\n return Math.floor(date.getTime() / 1000);\n}\n\nexport function unixTimestampToDate(timestamp: number): Date {\n return new Date(timestamp * 1000);\n}\n\nexport function addOneHour(date: Date): Date {\n return new Date(date.getTime() + 60 * 60 * 1000);\n}\n","import { Address, BitString, Cell, Slice, beginCell, contractAddress, crc32c, toNano } from '@ton/core';\n\nexport function stringToSlice(str: string): Slice {\n return beginCell().storeStringTail(str).endCell().asSlice();\n}\n\nexport function sliceToString(slice: Slice): string {\n const cell = beginCell().storeSlice(slice).endCell();\n return cell.beginParse().loadStringTail();\n}\n\nexport function stringToInt(str: string): number {\n return str ? parseInt(Buffer.from(str).toString('hex'), 16) : 0;\n}\n\nexport function intToString(int: number): string {\n return Buffer.from(int.toString(16), 'hex').toString('utf-8');\n}\n\nexport function bufferToInt(buf: Buffer): number {\n return buf.readUInt32BE(0);\n}\n\nexport function intToBuffer(int: number): Buffer {\n return Buffer.from(int.toString(16), 'hex');\n}\n\nexport function sliceToAddress(slice: Slice): Address {\n const cell = beginCell().storeSlice(slice).endCell();\n return cell.beginParse().loadAddress();\n}\n\nexport function addressToSlice(address: Address): Slice {\n return beginCell().storeAddress(address).endCell().asSlice();\n}\n\nexport function stringToBitString(str: string): BitString {\n return new BitString(Buffer.from(str), 0, str.length * 8);\n}\n\nexport function bitStringToString(bits: BitString, len: number): string {\n const decoder = new TextDecoder();\n const subBuffer = bits.subbuffer(0, len);\n\n return subBuffer ? decoder.decode(subBuffer) : '';\n}\n\nexport function stringToCell(str: string): Cell {\n return beginCell().storeStringTail(str).endCell();\n}\n\nexport function cellToString(cell: Cell): string {\n return cell.beginParse().loadStringTail();\n}\n\nexport function stringToCrc32(str: string): number {\n return crc32c(Buffer.from(str)).readUint32BE();\n}\n\nexport function getContractAddress(code: Cell, data: Cell): Address {\n return contractAddress(0, { code, data });\n}\n\nexport function arraysToCell(arrays: (Slice | Cell | Address | number)[], bits = 32): Cell {\n const cell = beginCell();\n\n arrays.forEach((item) => {\n if (item instanceof Slice) {\n cell.storeSlice(item);\n } else if (item instanceof Cell) {\n cell.storeRef(item);\n } else if (item instanceof Address) {\n cell.storeAddress(item);\n } else if (typeof item === 'number') {\n cell.storeUint(item, bits);\n }\n });\n\n return cell.endCell();\n}\n\nexport function coinsToSlice(coins: string): Slice {\n return beginCell().storeCoins(toNano(coins)).endCell().asSlice();\n}\n","import {\n Address,\n beginCell,\n Builder,\n Cell,\n Contract,\n contractAddress,\n ContractProvider,\n Dictionary,\n Sender,\n SendMode,\n Slice,\n toNano,\n TupleItem\n} from '@ton/core';\nimport { CodeType, dateToUnixTimestamp, intToString, OpCode, stringToInt, unixTimestampToDate } from '../utils';\n\nexport type MerkleTokenDistributorConfig = {\n version: string;\n adminAddress: Address;\n root: bigint;\n deployer: Address;\n token?: Address;\n startTime: Date;\n endTime: Date;\n leafCode: Cell;\n claimFee: bigint;\n claimFeeAddress: Address;\n paused?: boolean;\n feelessThreshold?: bigint;\n};\n\nexport function tokenDistributorConfigToCell(config: MerkleTokenDistributorConfig): Cell {\n const {\n version,\n adminAddress,\n deployer,\n endTime,\n leafCode,\n root,\n startTime,\n token,\n claimFee,\n claimFeeAddress,\n paused = false,\n feelessThreshold = 0\n } = config;\n const c2 = beginCell()\n .storeCoins(claimFee)\n .storeAddress(claimFeeAddress)\n .storeUint(paused ? 1 : 0, 1)\n .storeCoins(feelessThreshold)\n .endCell();\n\n const c1 = beginCell()\n .storeAddress(deployer)\n .storeAddress(token)\n .storeUint(dateToUnixTimestamp(startTime), 32)\n .storeUint(dateToUnixTimestamp(endTime), 32)\n .storeRef(leafCode)\n .endCell();\n\n return beginCell()\n .storeUint(stringToInt(version), 64)\n .storeAddress(adminAddress)\n .storeUint(root, 256)\n .storeRef(c1)\n .storeRef(c2)\n .endCell();\n}\n\nexport type TokenDistributorEntry = {\n address: Address;\n claimableAmount: bigint;\n claimableTimestamp: number;\n};\n\nexport const tokenDistributorEntryValue = {\n serialize: (src: TokenDistributorEntry, buidler: Builder) => {\n buidler.storeAddress(src.address).storeCoins(src.claimableAmount).storeUint(src.claimableTimestamp, 32);\n },\n parse: (src: Slice) => {\n return {\n address: src.loadAddress(),\n claimableAmount: src.loadCoins(),\n claimableTimestamp: src.loadUint(32)\n };\n }\n};\n\nexport function generateEntriesDictionary(entries: TokenDistributorEntry[]): Dictionary<bigint, TokenDistributorEntry> {\n const dict: Dictionary<bigint, TokenDistributorEntry> = Dictionary.empty(\n Dictionary.Keys.BigUint(64),\n tokenDistributorEntryValue\n );\n\n for (let i = 0; i < entries.length; i++) {\n dict.set(BigInt(i), entries[i]);\n }\n\n return dict;\n}\n\nexport class MerkleTokenDistributor implements Contract {\n constructor(readonly address: Address, readonly init?: { code: Cell; data: Cell }) {}\n\n static createFromAddress(address: Address) {\n return new MerkleTokenDistributor(address);\n }\n\n static createFromConfig(config: MerkleTokenDistributorConfig, code: Cell, workchain = 0) {\n const data = tokenDistributorConfigToCell(config);\n const init = { code, data };\n return new MerkleTokenDistributor(contractAddress(workchain, init), init);\n }\n\n async sendDeploy(provider: ContractProvider, via: Sender, value: bigint) {\n await provider.internal(via, {\n value,\n sendMode: SendMode.PAY_GAS_SEPARATELY,\n body: beginCell().endCell()\n });\n }\n\n async getVersion(provider: ContractProvider): Promise<string> {\n const result = await provider.get('get_version', []);\n\n return intToString(Number(result.stack.readBigNumber()));\n }\n\n async getLeafAddress(provider: ContractProvider, index: bigint): Promise<Address> {\n const arg: TupleItem = {\n value: index,\n type: 'int'\n };\n const result = await provider.get('get_leaf_address', [arg]);\n\n return result.stack.readAddress();\n }\n\n async getRoot(provider: ContractProvider): Promise<bigint> {\n const result = await provider.get('get_root', []);\n\n return result.stack.readBigNumber();\n }\n\n async getTime(provider: ContractProvider): Promise<[Date, Date] | [null, null]> {\n const result = await provider.get('get_time', []);\n const stack = result.stack;\n\n try {\n return [unixTimestampToDate(stack.readNumber()), unixTimestampToDate(stack.readNumber())];\n } catch (e) {\n return [null, null];\n }\n }\n\n async getToken(provider: ContractProvider): Promise<Address | null> {\n const result = await provider.get('get_token', []);\n\n try {\n return result.stack.readAddress();\n } catch (e) {\n return null;\n }\n }\n\n async getAdminAddress(provider: ContractProvider): Promise<Address> {\n const result = await provider.get('get_admin_address', []);\n\n return result.stack.readAddress();\n }\n\n async getClaimFee(provider: ContractProvider): Promise<bigint> {\n const result = await provider.get('get_claim_fee', []);\n\n return result.stack.readBigNumber();\n }\n\n async getClaimFeeAddress(provider: ContractProvider): Promise<Address> {\n const result = await provider.get('get_claim_fee_address', []);\n\n return result.stack.readAddress();\n }\n\n async getPaused(provider: ContractProvider): Promise<boolean> {\n const result = await provider.get('get_paused', []);\n\n return result.stack.readNumber() === 1;\n }\n\n async getFeelessThreshold(provider: ContractProvider): Promise<bigint> {\n const result = await provider.get('get_feeless_threshold', []);\n\n return result.stack.readBigNumber();\n }\n\n async sendChangeAdmin(provider: ContractProvider, via: Sender, newAdmin: Address) {\n const messageBody = beginCell().storeUint(OpCode.ChangeAdmin, 32).storeUint(0, 64).storeAddress(newAdmin).endCell();\n const result = await provider.internal(via, {\n value: '0.01',\n body: messageBody\n });\n\n return result;\n }\n\n async sendChangeCode(provider: ContractProvider, via: Sender, codeType: CodeType, newCode: Cell) {\n const messageBody = beginCell()\n .storeUint(OpCode.ChangeCode, 32)\n .storeUint(0, 64)\n .storeUint(codeType, 32)\n .storeRef(newCode)\n .endCell();\n const result = await provider.internal(via, {\n value: '0.01',\n body: messageBody\n });\n\n return result;\n }\n\n async sendChangeVersion(provider: ContractProvider, via: Sender, version: string) {\n const messageBody = beginCell()\n .storeUint(OpCode.ChangeVersion, 32)\n .storeUint(0, 64)\n .storeUint(stringToInt(version), 64)\n .endCell();\n const result = await provider.internal(via, {\n value: '0.01',\n body: messageBody\n });\n\n return result;\n }\n\n async sendWithdraw(provider: ContractProvider, via: Sender, amount: string) {\n const messageBody = beginCell()\n .storeUint(OpCode.Withdraw, 32)\n .storeUint(0, 64)\n .storeCoins(toNano(amount))\n .endCell();\n const result = await provider.internal(via, {\n value: '0.01',\n body: messageBody\n });\n\n return result;\n }\n\n async sendWithdrawTokens(provider: ContractProvider, via: Sender, amount: string) {\n const messageBody = beginCell()\n .storeUint(OpCode.WithdrawTokens, 32)\n .storeUint(0, 64)\n .storeCoins(toNano(amount))\n .endCell();\n const result = await provider.internal(via, {\n value: '0.1',\n body: messageBody\n });\n\n return result;\n }\n\n async sendSetBaseParams(\n provider: ContractProvider,\n via: Sender,\n startTime: Date,\n endTime: Date,\n root: bigint,\n token: Address\n ) {\n const messageBody = beginCell()\n .storeUint(OpCode.SetBaseParams, 32)\n .storeUint(0, 64)\n .storeAddress(token)\n .storeUint(dateToUnixTimestamp(startTime), 32)\n .storeUint(dateToUnixTimestamp(endTime), 32)\n .storeUint(root, 256)\n .endCell();\n const result = await provider.internal(via, {\n value: '0.01',\n body: messageBody\n });\n\n return result;\n }\n\n async sendSetPaused(provider: ContractProvider, via: Sender, paused: boolean) {\n const messageBody = beginCell()\n .storeUint(OpCode.SetPaused, 32)\n .storeUint(0, 64)\n .storeUint(paused ? 1 : 0, 1)\n .endCell();\n const result = await provider.internal(via, {\n value: '0.01',\n body: messageBody\n });\n\n return result;\n }\n\n async sendSetFeelessThreshold(provider: ContractProvider, via: Sender, feelessThreshold: bigint) {\n const messageBody = beginCell()\n .storeUint(OpCode.SetFeelessThreshold, 32)\n .storeUint(0, 64)\n .storeCoins(feelessThreshold)\n .endCell();\n const result = await provider.internal(via, {\n value: '0.01',\n body: messageBody\n });\n\n return result;\n }\n}\n","import { TonContractBaseClient, IAirdropOption } from './TonContractBaseClient';\nimport { Leaf, MerkleTokenDistributor } from './v3/wrappers';\nimport { Address, Cell, toNano } from '@ton/core';\nimport { IAirdropClaim } from '../../types';\nimport LeafCode from './v3/build/Leaf.compiled.json';\nimport { isBeforeByUnix } from '../../utils';\n\nexport class TonAirdropClientV3 extends TonContractBaseClient {\n version = '11.0.0';\n\n constructor(option: IAirdropOption) {\n super(option);\n }\n\n async getVersion() {\n const airDropContract = await this.getAirdropContract();\n const version = await airDropContract.getVersion();\n this.version = version;\n return version;\n }\n\n getAirdropContract = async () => {\n const provider = await this.getTonClient();\n const contract = new MerkleTokenDistributor(Address.parse(this.address));\n return provider.open(contract);\n };\n\n getPaused = async () => {\n const airDropContract = await this.getAirdropContract();\n return airDropContract?.getPaused();\n };\n\n getFeelessThreshold = async () => {\n const airDropContract = await this.getAirdropContract();\n return airDropContract?.getFeelessThreshold();\n };\n\n async getBaseParams() {\n const airDropContract = await this.getAirdropContract();\n const [startTime, endTime] = await airDropContract!.getTime();\n const token = await airDropContract?.getToken();\n const root = await airDropContract?.getRoot();\n\n const version = this.version || (await airDropContract.getVersion());\n\n const paused = await airDropContract?.getPaused();\n\n return {\n startTime: startTime ? String(startTime?.valueOf() / 1000) : '',\n endTime: endTime ? String(endTime?.valueOf() / 1000) : '',\n token: token?.toString(),\n root: root?.toString(),\n version,\n paused\n };\n }\n\n async getFeeInfo() {\n const airDropContract = await this.getAirdropContract();\n const claimFee = await airDropContract.getClaimFee();\n const claimFeeReceiver = await airDropContract.getClaimFeeAddress();\n return {\n claimFee,\n claimFeeReceiver\n };\n }\n\n claim = async (claimData: IAirdropClaim & { value: string | null }, options?: { onLoading?: () => void }) => {\n // const { provider, airdropContract, claimFee, leafAddress } = prepreData;\n const provider = await this.getTonClient();\n const airdropContract = await this.getAirdropContract();\n const index = BigInt(claimData.index);\n // const leafAddress = await airdropContract!.getLeafAddress(index);\n const claimFee = claimData.value ? toNano(claimData.value) : await airdropContract!.getClaimFee();\n const proof = Cell.fromBase64(claimData.proofBoc);\n\n const leafCode = Cell.fromBoc(Buffer.from(LeafCode.hex, 'hex'))[0];\n\n const leaf = provider.open(\n Leaf.createFromConfig(\n {\n distributor: airdropContract.address,\n index\n },\n leafCode\n )\n );\n\n leaf.sendClaim(this.connection.senderDeploy, proof, index, claimFee);\n const res = await this.waitForTransaction(options?.onLoading);\n\n // while (!(await provider.isContractDeployed(leafAddress))) {\n // console.log('waiting for leaf to deploy');\n // await new Promise((resolve) => setTimeout(resolve, 1000));\n // }\n // // const res = await this.waitForTransactionForLegacy();\n if (res) {\n console.log(res, res.event_id, 'res');\n }\n return res;\n };\n\n checkClaimed = async (claimData: IAirdropClaim) => {\n try {\n if (isBeforeByUnix(claimData.unlockingAt)) return false;\n const provider = await this.getTonClient();\n const airdropContract = await this.getAirdropContract();\n\n const index = BigInt(claimData.index);\n\n const leafAddress = await airdropContract.getLeafAddress(index);\n\n const isDeployed = await provider.isContractDeployed(leafAddress);\n\n if (!isDeployed) return false;\n\n const leaf = new Leaf(leafAddress);\n const leafContract = provider.open(leaf);\n const isUsed = await leafContract?.getIsUsed();\n\n return isUsed;\n } catch (e: any) {\n console.log(e.toString(), 'check claim err');\n return false;\n }\n };\n}\n","{\"hex\":\"b5ee9c7241022a01000887000114ff00f4a413f4bcf2c80b01020162050202015804030025bbc01f057f844f842c8cb00f843cf16cb3fc98000dbaf13f057f84280202c918060201480c0702012009080019d8164658000e78b659fe4f6aa40201200b0a0025f76a268698000fc317d2000fc31e99f987c32400276be401c1cb232c072c004b2c1f2fff2743e900c20103a3c00d04f62082300de0b6b3a7640000ba9b30823025b946ebc0b36173e08200c354218235c702bd3a30fc0000be228238070c1cc73b00c80000bbb0f2f420c1008e1282300de0b6b3a76400005202a3f04712a984e020821b782dace9d9aa18bee30f01a7648238056bc75e2d6310000021822056bc75e2d631aa18bee300211716150e02f4822056bc75e2d631aa17be8e2701822056bc75e2d631aa17a101824adf0ab5a80a22c61ab5a7008238056bc75e2d63100000a984de21822056bc75e2d631aa16be8e2601822056bc75e2d631aa16a10182403f1fce3da636ea5cf8508238056bc75e2d63100000a984de21823815af1d78b58c400000bee30021140f02f482380ad78ebc5ac6200000be8e260182380ad78ebc5ac6200000a1018238280e60114edb805d038238056bc75e2d63100000a984de218238056bc75e2d63100000be8e26018238056bc75e2d63100000a10182380ebc5fb417461211108238056bc75e2d63100000a984de218232b5e3af16b1880000bee30021131001ec82315af1d78b58c40000be8e250182315af1d78b58c40000a101823806f5f17757889379378238056bc75e2d63100000a984de218238056bc75e2d6310000021a0511382380ad78ebc5ac6200000a98466a0511382381043561a8829300000a98466a05113823815af1d78b58c400000a98466a051131101ea82381b1ae4d6e2ef500000a98466a0511382382086ac351052600000a98466a05113823825f273933db5700000a98466a05113822056bc75e2d631aa16a98466a05113823830ca024f987b900000a98466a0511382383635c9adc5dea00000a98466a0511382383ba1910bf341b00000a98466a0031200428238410d586a20a4c00000a98412a08238056bc75e2d63100000a984018064a984004a018232b5e3af16b1880000a101823808f00f760a4b2db55d8238056bc75e2d63100000a984004c01823815af1d78b58c400000a101823927fa27722cc06cc5e28238056bc75e2d63100000a984003830822056bc75e2d631aa18a18261855144814a7ff805980ff0084000005020821b782dace9d9aa17be8e18821b782dace9d9aa17a182501425982cf597cd205cef73809171e20042821b782dace9d9aa18a18288195e54c5dd42177f53a27172fa9ec630262827aa2302012024190103aee01a01f62082300de0b6b3a7640000b98e1182300de0b6b3a76400005202a984f03ba3e0702182b05803bcc5cb9634ba4cfb2213f784019318ed4dcb6017880faa35be8e23308288195e54c5dd42177f53a27172fa9ec630262827aa23a904821b782dace9d9aa18de2182708bcc0026baae9e45e470190267a230cfaa18be1b02ea8e1c0182501425982cf597cd205cef7380a90401821b782dace9d9aa17a0dea76401a764208261855144814a7ff805980ff0084000be8e2a8238056bc75e2d631000008261855144814a7ff805980ff0084000a98401822056bc75e2d631aa18a001de20824adf0ab5a80a22c61ab5a700bee30020231c02f882403f1fce3da636ea5cf850be8e268238056bc75e2d6310000082403f1fce3da636ea5cf850a98401822056bc75e2d631aa16a001de20823927fa27722cc06cc5e2be8e268238056bc75e2d63100000823927fa27722cc06cc5e2a98401823815af1d78b58c400000a001de208238280e60114edb805d03bee30020221d02f482380ebc5fb41746121110be8e268238056bc75e2d6310000082380ebc5fb41746121110a984018238056bc75e2d63100000a001de20823808f00f760a4b2db55dbe8e258238056bc75e2d63100000823808f00f760a4b2db55da984018232b5e3af16b1880000a001de20823806f5f1775788937937bee30020211e01ec823806248f33704b286603be8e258238056bc75e2d63100000823806248f33704b286603a984018230ad78ebc5ac620000a001de20823805c548670b9510e7acbe8e258238056bc75e2d63100000823805c548670b9510e7aca98401823056bc75e2d6310000a001de208238056bc75e2d63100000a11f01fe8238056bc75e2d631000005122a012a98453008238056bc75e2d63100000a9845c8238056bc75e2d63100000a9842073a90413a051218238056bc75e2d63100000a9842075a90413a051218238056bc75e2d63100000a9842077a90413a051218238056bc75e2d63100000a9842079a90413a0598238056bc75e2d6310000020001ca984800ba904a0aa00a08064a904004a8238056bc75e2d63100000823806f5f1775788937937a9840182315af1d78b58c40000a001004c8238056bc75e2d631000008238280e60114edb805d03a9840182380ad78ebc5ac6200000a001004e8238056bc75e2d63100000824adf0ab5a80a22c61ab5a700a98401822056bc75e2d631aa17a00102012026250063a46410e0804c45896c678b00d180ef381038c70a023d5486531812d40950025503815210e0002298731819d5016780e4e84001d7d0c8871c02497c0f83434c0c05c6c2497c0f83e900c0074c7f4cfc8a08426871dda6ea38d8d16fc15fe10f1c17ca8f4cff4c03e1104eebcabdc3e10fe113c163000244c383e900c1c20043232c15633c5887e80b2dab260103ec03800a084140f4725eeb8c097c12103fcbc22702fcf057038210042c1d80bef2b0f842c001f268d4d33f30f864885210f90001f900baf26420d739f2aad30701c003f2ab21d765aa00a6025220f9415f03f84401d4308040f40e6fa131f2ad71f843f844f058f842f8448210d0d5f405c8cb1f15cb3f12cc13cb3f12cb0001cf16c9718010c8cb05f843cf1670fa02cb6accc9292800088306fb0000006e3bece9\"}","import { TonAirdropClientV1 } from './AirdropClientV1';\nimport type { TonConnectUI } from '@tonconnect/ui-react';\nimport { TonAirdropClientV2 } from './AirdropClientV2';\nimport { IAirdropClaim, TonAirdropVersionEnum } from '../../types';\nimport { IAirdropOption } from './TonContractBaseClient';\nimport { TonAirdropClientV3 } from './AirdropClientV3';\nimport { fromNano } from '@ton/core';\nimport { TonClient } from '@ton/ton';\nimport { TonAirdropClientV21 } from './AirdropClientV21';\n\nexport class AirdropService {\n private address: string;\n\n private walletClient?: TonConnectUI;\n\n private chainId: string;\n\n private cachedVersion: string | null = null;\n\n private tonClient?: TonClient;\n\n constructor(options: IAirdropOption) {\n const { chainId, address, walletClient, tonClient, version } = options;\n this.address = address;\n this.walletClient = walletClient;\n this.chainId = chainId;\n this.tonClient = tonClient;\n if (version) {\n this.cachedVersion = version;\n }\n }\n\n private get airdropClientV1(): TonAirdropClientV1 {\n if (!this?.address) {\n throw new Error('Contract address is empty');\n }\n\n return new TonAirdropClientV1({\n chainId: this.chainId,\n address: this.address,\n walletClient: this.walletClient,\n tonClient: this.tonClient\n });\n }\n\n private get airdropClientV2(): TonAirdropClientV2 {\n if (!this?.address) {\n throw new Error('Contract address is empty');\n }\n\n return new TonAirdropClientV2({\n chainId: this.chainId,\n address: this.address,\n walletClient: this.walletClient,\n tonClient: this.tonClient\n });\n }\n\n private get airdropClientV3(): TonAirdropClientV3 {\n if (!this?.address) {\n throw new Error('Contract address is empty');\n }\n\n return new TonAirdropClientV3({\n chainId: this.chainId,\n address: this.address,\n walletClient: this.walletClient,\n tonClient: this.tonClient\n });\n }\n\n private get airdropClientV21(): TonAirdropClientV21 {\n if (!this?.address) {\n throw new Error('Contract address is empty');\n }\n\n return new TonAirdropClientV21({\n chainId: this.chainId,\n address: this.address,\n walletClient: this.walletClient,\n tonClient: this.tonClient\n });\n }\n\n async getVersion() {\n if (this.cachedVersion !== null) {\n return this.cachedVersion;\n }\n\n this.cachedVersion = await this.airdropClientV2.getVersion();\n return this.cachedVersion;\n }\n\n private async getClient() {\n const version = await this.getVersion();\n\n if (version === TonAirdropVersionEnum.NativeV1) {\n return this.airdropClientV21;\n }\n\n if (version === TonAirdropVersionEnum.LiteV1) {\n return this.airdropClientV3;\n }\n return version === TonAirdropVersionEnum.V2 ? this.airdropClientV2 : this.airdropClientV1;\n }\n\n async getAirdropContract() {\n const client = await this.getClient();\n return client.getAirdropContract();\n }\n\n async claim(claimData: IAirdropClaim & { value: string | null }, options?: { onLoading?: () => void }) {\n const client = await this.getClient();\n return client.claim(claimData, options);\n }\n\n async checkClaimed(claimData: IAirdropClaim) {\n const client = await this.getClient();\n return client.checkClaimed(claimData);\n }\n\n async getContractInfo() {\n const client = await this.getClient();\n return client.getBaseParams();\n }\n\n async getPaused() {\n const client = await this.getClient();\n if (!(client instanceof TonAirdropClientV1)) {\n return client.getPaused();\n } else {\n return false;\n }\n }\n\n async getClaimFeeInfo() {\n const client = await this.getClient();\n const feeInfo = await client.getFeeInfo();\n return {\n claimFee: fromNano(feeInfo.claimFee),\n claimFeeReceiver: feeInfo.claimFeeReceiver?.toString({ bounceable: false })\n };\n }\n\n async getClaimFee(address: string, amount: bigint) {\n const client = await this.getClient();\n const feeInfo = await client.getFeeInfo();\n return fromNano(feeInfo.claimFee);\n }\n}\n","import { Address, beginCell, Cell, Contract, contractAddress, ContractProvider, Sender, toNano } from '@ton/core';\nimport { OpCode } from '../utils';\n\nexport const MIN_CLAIM_FEE = toNano('0.17');\n\nexport type LeafConfig = {\n used?: boolean;\n distributor: Address;\n index: bigint;\n};\n\nexport function leafConfigToCell(config: LeafConfig): Cell {\n const { distributor, index } = config;\n\n const initState = beginCell().storeBit(false).storeAddress(distributor).storeUint(index, 64).endCell();\n\n return initState;\n}\n\nexport class Leaf implements Contract {\n constructor(readonly address: Address, readonly init?: { code: Cell; data: Cell }) {}\n\n static createFromAddress(address: Address) {\n return new Leaf(address);\n }\n\n static createFromConfig(config: LeafConfig, code: Cell, workchain = 0) {\n const data = leafConfigToCell(config);\n const init = { code, data };\n return new Leaf(contractAddress(workchain, init), init);\n }\n\n async getIsUsed(provider: ContractProvider): Promise<boolean> {\n const result = await provider.get('get_is_used', []);\n const isUsed = result.stack.readNumber();\n\n return !!isUsed;\n }\n\n async getLeafData(provider: ContractProvider): Promise<LeafConfig> {\n const result = await provider.get('get_leaf_data', []);\n const cellHash = result.stack.readCell().beginParse();\n\n const isUsed = cellHash.loadUint(1);\n const distributor = cellHash.loadAddress();\n const index = cellHash.loadUint(64);\n\n return {\n used: !!isUsed,\n index: BigInt(index),\n distributor\n };\n }\n\n async sendClaim(provider: ContractProvider, via: Sender, proof: Cell, index: bigint, claimFee: bigint) {\n const messageBody = beginCell()\n .storeUint(OpCode.Claim, 32)\n .storeUint(0, 64)\n .storeRef(proof)\n .storeUint(index, 64)\n .endCell();\n const result = await provider.internal(via, {\n value: MIN_CLAIM_FEE + claimFee,\n body: messageBody\n });\n\n return result;\n }\n}\n","export function dateToUnixTimestamp(date: Date): number {\n return Math.floor(date.getTime() / 1000);\n}\n\nexport function unixTimestampToDate(timestamp: number): Date {\n return new Date(timestamp * 1000);\n}\n\nexport function addOneHour(date: Date): Date {\n return new Date(date.getTime() + 60 * 60 * 1000);\n}\n","import { Address, BitString, Cell, Slice, beginCell, contractAddress, crc32c, toNano } from '@ton/core';\n\nexport function stringToSlice(str: string): Slice {\n return beginCell().storeStringTail(str).endCell().asSlice();\n}\n\nexport function sliceToString(slice: Slice): string {\n const cell = beginCell().storeSlice(slice).endCell();\n return cell.beginParse().loadStringTail();\n}\n\nexport function stringToInt(str: string): number {\n return str ? parseInt(Buffer.from(str).toString('hex'), 16) : 0;\n}\n\nexport function intToString(int: number): string {\n return Buffer.from(int.toString(16), 'hex').toString('utf-8');\n}\n\nexport function bufferToInt(buf: Buffer): number {\n return buf.readUInt32BE(0);\n}\n\nexport function intToBuffer(int: number): Buffer {\n return Buffer.from(int.toString(16), 'hex');\n}\n\nexport function sliceToAddress(slice: Slice): Address {\n const cell = beginCell().storeSlice(slice).endCell();\n return cell.beginParse().loadAddress();\n}\n\nexport function addressToSlice(address: Address): Slice {\n return beginCell().storeAddress(address).endCell().asSlice();\n}\n\nexport function stringToBitString(str: string): BitString {\n return new BitString(Buffer.from(str), 0, str.length * 8);\n}\n\nexport function bitStringToString(bits: BitString, len: number): string {\n const decoder = new TextDecoder();\n const subBuffer = bits.subbuffer(0, len);\n\n return subBuffer ? decoder.decode(subBuffer) : '';\n}\n\nexport function stringToCell(str: string): Cell {\n return beginCell().storeStringTail(str).endCell();\n}\n\nexport function cellToString(cell: Cell): string {\n return cell.beginParse().loadStringTail();\n}\n\nexport function stringToCrc32(str: string): number {\n return crc32c(Buffer.from(str)).readUint32BE();\n}\n\nexport function getContractAddress(code: Cell, data: Cell): Address {\n return contractAddress(0, { code, data });\n}\n\nexport function arraysToCell(arrays: (Slice | Cell | Address | number)[], bits = 32): Cell {\n const cell = beginCell();\n\n arrays.forEach((item) => {\n if (item instanceof Slice) {\n cell.storeSlice(item);\n } else if (item instanceof Cell) {\n cell.storeRef(item);\n } else if (item instanceof Address) {\n cell.storeAddress(item);\n } else if (typeof item === 'number') {\n cell.storeUint(item, bits);\n }\n });\n\n return cell.endCell();\n}\n\nexport function coinsToSlice(coins: string): Slice {\n return beginCell().storeCoins(toNano(coins)).endCell().asSlice();\n}\n","import {\n Address,\n beginCell,\n Builder,\n Cell,\n Contract,\n contractAddress,\n ContractProvider,\n Dictionary,\n Sender,\n SendMode,\n Slice,\n toNano,\n TupleItem\n} from '@ton/core';\nimport { CodeType, dateToUnixTimestamp, intToString, OpCode, stringToInt, unixTimestampToDate } from '../utils';\n\nexport type MerkleTokenDistributorConfig = {\n version: string;\n adminAddress: Address;\n root: bigint;\n deployer: Address;\n startTime: Date;\n endTime: Date;\n leafCode: Cell;\n claimFee?: bigint;\n claimFeeAddress?: Address;\n paused?: boolean;\n feelessThreshold?: bigint;\n};\n\nexport function tokenDistributorConfigToCell(config: MerkleTokenDistributorConfig): Cell {\n const {\n version,\n adminAddress,\n deployer,\n endTime,\n leafCode,\n root,\n startTime,\n claimFee,\n claimFeeAddress,\n paused = false,\n feelessThreshold = 0\n } = config;\n let c2 = beginCell()\n .storeCoins(claimFee ?? 0)\n .storeUint(claimFeeAddress ? 1 : 0, 1);\n\n if (claimFeeAddress) {\n c2 = c2.storeAddress(claimFeeAddress);\n }\n\n c2 = c2\n .storeUint(paused ? 1 : 0, 1)\n .storeCoins(feelessThreshold)\n .storeCoins(0);\n\n const c1 = beginCell()\n .storeAddress(deployer)\n .storeUint(dateToUnixTimestamp(startTime), 32)\n .storeUint(dateToUnixTimestamp(endTime), 32)\n .storeRef(leafCode)\n .endCell();\n\n return beginCell()\n .storeUint(stringToInt(version), 64)\n .storeAddress(adminAddress)\n .storeUint(root, 256)\n .storeRef(c1)\n .storeRef(c2.endCell())\n .endCell();\n}\n\nexport type TokenDistributorEntry = {\n address: Address;\n claimableAmount: bigint;\n claimableTimestamp: number;\n};\n\nexport const tokenDistributorEntryValue = {\n serialize: (src: TokenDistributorEntry, buidler: Builder) => {\n buidler.storeAddress(src.address).storeCoins(src.claimableAmount).storeUint(src.claimableTimestamp, 32);\n },\n parse: (src: Slice) => {\n return {\n address: src.loadAddress(),\n claimableAmount: src.loadCoins(),\n claimableTimestamp: src.loadUint(32)\n };\n }\n};\n\nexport function generateEntriesDictionary(entries: TokenDistributorEntry[]): Dictionary<bigint, TokenDistributorEntry> {\n const dict: Dictionary<bigint, TokenDistributorEntry> = Dictionary.empty(\n Dictionary.Keys.BigUint(64),\n tokenDistributorEntryValue\n );\n\n for (let i = 0; i < entries.length; i++) {\n dict.set(BigInt(i), entries[i]);\n }\n\n return dict;\n}\n\nexport class MerkleTokenDistributor implements Contract {\n constructor(readonly address: Address, readonly init?: { code: Cell; data: Cell }) {}\n\n static createFromAddress(address: Address) {\n return new MerkleTokenDistributor(address);\n }\n\n static createFromConfig(config: MerkleTokenDistributorConfig, code: Cell, workchain = 0) {\n const data = tokenDistributorConfigToCell(config);\n const init = { code, data };\n return new MerkleTokenDistributor(contractAddress(workchain, init), init);\n }\n\n async sendDeploy(provider: ContractProvider, via: Sender, value: bigint) {\n await provider.internal(via, {\n value,\n sendMode: SendMode.PAY_GAS_SEPARATELY,\n body: beginCell().endCell()\n });\n }\n\n async getVersion(provider: ContractProvider): Promise<string> {\n const result = await provider.get('get_version', []);\n\n return intToString(Number(result.stack.readBigNumber()));\n }\n\n async getLeafAddress(provider: ContractProvider, index: bigint): Promise<Address> {\n const arg: TupleItem = {\n value: index,\n type: 'int'\n };\n const result = await provider.get('get_leaf_address', [arg]);\n\n return result.stack.readAddress();\n }\n\n async getRoot(provider: ContractProvider): Promise<bigint> {\n const result = await provider.get('get_root', []);\n\n return result.stack.readBigNumber();\n }\n\n async getTime(provider: ContractProvider): Promise<[Date, Date] | [null, null]> {\n const result = await provider.get('get_time', []);\n const stack = result.stack;\n\n try {\n return [unixTimestampToDate(stack.readNumber()), unixTimestampToDate(stack.readNumber())];\n } catch (e) {\n return [null, null];\n }\n }\n\n async getAdminAddress(provider: ContractProvider): Promise<Address> {\n const result = await provider.get('get_admin_address', []);\n\n return result.stack.readAddress();\n }\n\n async getClaimFee(provider: ContractProvider): Promise<bigint> {\n const result = await provider.get('get_claim_fee', []);\n\n return result.stack.readBigNumber();\n }\n\n async getClaimFeeAddress(provider: ContractProvider): Promise<Address | null> {\n const result = await provider.get('get_claim_fee_address', []);\n\n try {\n return result.stack.readAddress();\n } catch (e) {\n return null;\n }\n }\n\n async getPaused(provider: ContractProvider): Promise<boolean> {\n const result = await provider.get('get_paused', []);\n\n return result.stack.readNumber() === 1;\n }\n\n async getFeelessThreshold(provider: ContractProvider): Promise<bigint> {\n const result = await provider.get('get_feeless_threshold', []);\n\n return result.stack.readBigNumber();\n }\n\n async getAccumulatedFees(provider: ContractProvider): Promise<bigint> {\n const result = await provider.get('get_accumulated_fees', []);\n\n return result.stack.readBigNumber();\n }\n\n async getBalance(provider: ContractProvider): Promise<bigint> {\n const result = await provider.get('get_ton_balance', []);\n\n return result.stack.readBigNumber();\n }\n\n async sendChangeAdmin(provider: ContractProvider, via: Sender, newAdmin: Address) {\n const messageBody = beginCell().storeUint(OpCode.ChangeAdmin, 32).storeUint(0, 64).storeAddress(newAdmin).endCell();\n const result = await provider.internal(via, {\n value: '0.01',\n body: messageBody\n });\n\n return result;\n }\n\n async sendChangeCode(provider: ContractProvider, via: Sender, codeType: CodeType, newCode: Cell) {\n const messageBody = beginCell()\n .storeUint(OpCode.ChangeCode, 32)\n .storeUint(0, 64)\n .storeUint(codeType, 32)\n .storeRef(newCode)\n .endCell();\n const result = await provider.internal(via, {\n value: '0.01',\n body: messageBody\n });\n\n return result;\n }\n\n async sendChangeVersion(provider: ContractProvider, via: Sender, version: string) {\n const messageBody = beginCell()\n .storeUint(OpCode.ChangeVersion, 32)\n .storeUint(0, 64)\n .storeUint(stringToInt(version), 64)\n .endCell();\n const result = await provider.internal(via, {\n value: '0.01',\n body: messageBody\n });\n\n return result;\n }\n\n async sendWithdraw(provider: ContractProvider, via: Sender, amount: string) {\n const messageBody = beginCell()\n .storeUint(OpCode.Withdraw, 32)\n .storeUint(0, 64)\n .storeCoins(toNano(amount))\n .endCell();\n const result = await provider.internal(via, {\n value: '0.01',\n body: messageBody\n });\n\n return result;\n }\n\n async sendWithdrawFees(provider: ContractProvider, via: Sender) {\n const messageBody = beginCell().storeUint(OpCode.WithdrawFees, 32).storeUint(0, 64).endCell();\n const result = await provider.internal(via, {\n value: '0.1',\n body: messageBody\n });\n\n return result;\n }\n\n async sendSetBaseParams(provider: ContractProvider, via: Sender, startTime: Date, endTime: Date, root: bigint) {\n const messageBody = beginCell()\n .storeUint(OpCode.SetBaseParams, 32)\n .storeUint(0, 64)\n .storeUint(dateToUnixTimestamp(startTime), 32)\n .storeUint(dateToUnixTimestamp(endTime), 32)\n .storeUint(root, 256)\n .endCell();\n const result = await provider.internal(via, {\n value: '0.01',\n body: messageBody\n });\n return result;\n }\n\n async sendSetClaimFee(provider: ContractProvider, via: Sender, claimFee: bigint) {\n const messageBody = beginCell().storeUint(OpCode.SetClaimFee, 32).storeUint(0, 64).storeCoins(claimFee).endCell();\n const result = await provider.internal(via, {\n value: '0.01',\n body: messageBody\n });\n\n return result;\n }\n\n async sendSetClaimFeeAddress(provider: ContractProvider, via: Sender, claimFeeAddress: Address) {\n const messageBody = beginCell()\n .storeUint(OpCode.SetClaimFeeAddress, 32)\n .storeUint(0, 64)\n .storeAddress(claimFeeAddress)\n .endCell();\n const result = await provider.internal(via, {\n value: '0.01',\n body: messageBody\n });\n\n return result;\n }\n\n async sendSetPaused(provider: ContractProvider, via: Sender, paused: boolean) {\n const messageBody = beginCell()\n .storeUint(OpCode.SetPaused, 32)\n .storeUint(0, 64)\n .storeUint(paused ? 1 : 0, 1)\n .endCell();\n const result = await provider.internal(via, {\n value: '0.01',\n body: messageBody\n });\n\n return result;\n }\n\n async sendSetFeelessThreshold(provider: ContractProvider, via: Sender, feelessThreshold: bigint) {\n const messageBody = beginCell()\n .storeUint(OpCode.SetFeelessThreshold, 32)\n .storeUint(0, 64)\n .storeCoins(feelessThreshold)\n .endCell();\n const result = await provider.internal(via, {\n value: '0.01',\n body: messageBody\n });\n\n return result;\n }\n\n async sendClearClaimFeeAddress(provider: ContractProvider, via: Sender) {\n const messageBody = beginCell().storeUint(OpCode.ClearClaimFeeAddress, 32).storeUint(0, 64).endCell();\n const result = await provider.internal(via, {\n value: '0.01',\n body: messageBody\n });\n\n return result;\n }\n}\n","import { TonContractBaseClient, IAirdropOption } from './TonContractBaseClient';\nimport { Leaf, MerkleTokenDistributor } from './v21/wrappers';\nimport { Address, Cell, fromNano, toNano } from '@ton/core';\nimport { IAirdropClaim } from '../../types';\nimport LeafCode from './v21/build/Leaf.compiled.json';\nimport { isBeforeByUnix } from '../../utils';\n\nexport class TonAirdropClientV21 extends TonContractBaseClient {\n version = '21.0.0';\n\n constructor(option: IAirdropOption) {\n super(option);\n }\n\n async getVersion() {\n const airDropContract = await this.getAirdropContract();\n const version = await airDropContract.getVersion();\n this.version = version;\n return version;\n }\n\n getAirdropContract = async () => {\n const provider = await this.getTonClient();\n const contract = new MerkleTokenDistributor(Address.parse(this.address));\n return provider.open(contract);\n };\n\n getPaused = async () => {\n const airDropContract = await this.getAirdropContract();\n return airDropContract?.getPaused();\n };\n\n async getBaseParams() {\n const airDropContract = await this.getAirdropContract();\n const [startTime, endTime] = await airDropContract!.getTime();\n const root = await airDropContract?.getRoot();\n const adminAddress = await airDropContract?.getAdminAddress();\n\n const owner = Address.parse(adminAddress?.toString()).toString({ bounceable: false });\n\n const version = this.version || (await airDropContract.getVersion());\n\n const feelessThreshold = await airDropContract?.getFeelessThreshold();\n const paused = await airDropContract?.getPaused();\n return {\n startTime: startTime ? String(startTime?.valueOf() / 1000) : '',\n endTime: endTime ? String(endTime?.valueOf() / 1000) : '',\n root: root?.toString(),\n owner: owner,\n version,\n feelessThreshold: fromNano(feelessThreshold),\n paused\n };\n }\n\n async getFeeInfo() {\n const airDropContract = await this.getAirdropContract();\n const claimFee = await airDropContract.getClaimFee();\n const claimFeeReceiver = await airDropContract.getClaimFeeAddress();\n return {\n claimFee,\n claimFeeReceiver\n };\n }\n\n getFeelessThreshold = async () => {\n const airDropContract = await this.getAirdropContract();\n return airDropContract?.getFeelessThreshold();\n };\n\n claim = async (claimData: IAirdropClaim & { value: string | null }, options?: { onLoading?: () => void }) => {\n const provider = await this.getTonClient();\n const airdropContract = await this.getAirdropContract();\n const index = BigInt(claimData.index);\n const claimFee = claimData.value ? toNano(claimData.value) : await airdropContract!.getClaimFee();\n const proof = Cell.fromBase64(claimData.proofBoc);\n\n const leafCode = Cell.fromBoc(Buffer.from(LeafCode.hex, 'hex'))[0];\n\n const leaf = provider.open(\n Leaf.createFromConfig(\n {\n distributor: airdropContract.address,\n index\n },\n leafCode\n )\n );\n\n leaf.sendClaim(this.connection.senderDeploy, proof, index, claimFee);\n const res = await this.waitForTransaction(options?.onLoading);\n\n // while (!(await provider.isContractDeployed(leafAddress))) {\n // console.log('waiting for leaf to deploy');\n // await new Promise((resolve) => setTimeout(resolve, 1000));\n // }\n // // const res = await this.waitForTransactionForLegacy();\n if (res) {\n console.log(res, res.event_id, 'res');\n }\n return res;\n };\n\n checkClaimed = async (claimData: IAirdropClaim) => {\n try {\n if (isBeforeByUnix(claimData.unlockingAt)) return false;\n const provider = await this.getTonClient();\n const airdropContract = await this.getAirdropContract();\n\n const index = BigInt(claimData.index);\n\n const leafAddress = await airdropContract.getLeafAddress(index);\n\n const isDeployed = await provider.isContractDeployed(leafAddress);\n\n console.log(index, leafAddress.toString(), isDeployed, 'index');\n\n if (!isDeployed) return false;\n\n const leaf = new Leaf(leafAddress);\n const leafContract = provider.open(leaf);\n const isUsed = await leafContract?.getIsUsed();\n\n console.log(isUsed, leafAddress.toString(), 'use');\n return isUsed;\n } catch (e: any) {\n console.log(e, 'check claim err');\n return false;\n }\n };\n}\n","{\"hex\":\"b5ee9c7241022a01000887000114ff00f4a413f4bcf2c80b01020162050202015804030025bbc01f057f844f842c8cb00f843cf16cb3fc98000dbaf13f057f84280202c918060201480c0702012009080019d8164658000e78b659fe4f6aa40201200b0a0025f76a268698000fc317d2000fc31e99f987c32400276be401c1cb232c072c004b2c1f2fff2743e900c20103a3c00d04f62082300de0b6b3a7640000ba9b30823025b946ebc0b36173e08200c354218235c702bd3a30fc0000be228238070c1cc73b00c80000bbb0f2f420c1008e1282300de0b6b3a76400005202a3f04712a984e020821b782dace9d9aa18bee30f01a7648238056bc75e2d6310000021822056bc75e2d631aa18bee300211716150e02f4822056bc75e2d631aa17be8e2701822056bc75e2d631aa17a101824adf0ab5a80a22c61ab5a7008238056bc75e2d63100000a984de21822056bc75e2d631aa16be8e2601822056bc75e2d631aa16a10182403f1fce3da636ea5cf8508238056bc75e2d63100000a984de21823815af1d78b58c400000bee30021140f02f482380ad78ebc5ac6200000be8e260182380ad78ebc5ac6200000a1018238280e60114edb805d038238056bc75e2d63100000a984de218238056bc75e2d63100000be8e26018238056bc75e2d63100000a10182380ebc5fb417461211108238056bc75e2d63100000a984de218232b5e3af16b1880000bee30021131001ec82315af1d78b58c40000be8e250182315af1d78b58c40000a101823806f5f17757889379378238056bc75e2d63100000a984de218238056bc75e2d6310000021a0511382380ad78ebc5ac6200000a98466a0511382381043561a8829300000a98466a05113823815af1d78b58c400000a98466a051131101ea82381b1ae4d6e2ef500000a98466a0511382382086ac351052600000a98466a05113823825f273933db5700000a98466a05113822056bc75e2d631aa16a98466a05113823830ca024f987b900000a98466a0511382383635c9adc5dea00000a98466a0511382383ba1910bf341b00000a98466a0031200428238410d586a20a4c00000a98412a08238056bc75e2d63100000a984018064a984004a018232b5e3af16b1880000a101823808f00f760a4b2db55d8238056bc75e2d63100000a984004c01823815af1d78b58c400000a101823927fa27722cc06cc5e28238056bc75e2d63100000a984003830822056bc75e2d631aa18a18261855144814a7ff805980ff0084000005020821b782dace9d9aa17be8e18821b782dace9d9aa17a182501425982cf597cd205cef73809171e20042821b782dace9d9aa18a18288195e54c5dd42177f53a27172fa9ec630262827aa2302012024190103aee01a01f62082300de0b6b3a7640000b98e1182300de0b6b3a76400005202a984f03ba3e0702182b05803bcc5cb9634ba4cfb2213f784019318ed4dcb6017880faa35be8e23308288195e54c5dd42177f53a27172fa9ec630262827aa23a904821b782dace9d9aa18de2182708bcc0026baae9e45e470190267a230cfaa18be1b02ea8e1c0182501425982cf597cd205cef7380a90401821b782dace9d9aa17a0dea76401a764208261855144814a7ff805980ff0084000be8e2a8238056bc75e2d631000008261855144814a7ff805980ff0084000a98401822056bc75e2d631aa18a001de20824adf0ab5a80a22c61ab5a700bee30020231c02f882403f1fce3da636ea5cf850be8e268238056bc75e2d6310000082403f1fce3da636ea5cf850a98401822056bc75e2d631aa16a001de20823927fa27722cc06cc5e2be8e268238056bc75e2d63100000823927fa27722cc06cc5e2a98401823815af1d78b58c400000a001de208238280e60114edb805d03bee30020221d02f482380ebc5fb41746121110be8e268238056bc75e2d6310000082380ebc5fb41746121110a984018238056bc75e2d63100000a001de20823808f00f760a4b2db55dbe8e258238056bc75e2d63100000823808f00f760a4b2db55da984018232b5e3af16b1880000a001de20823806f5f1775788937937bee30020211e01ec823806248f33704b286603be8e258238056bc75e2d63100000823806248f33704b286603a984018230ad78ebc5ac620000a001de20823805c548670b9510e7acbe8e258238056bc75e2d63100000823805c548670b9510e7aca98401823056bc75e2d6310000a001de208238056bc75e2d63100000a11f01fe8238056bc75e2d631000005122a012a98453008238056bc75e2d63100000a9845c8238056bc75e2d63100000a9842073a90413a051218238056bc75e2d63100000a9842075a90413a051218238056bc75e2d63100000a9842077a90413a051218238056bc75e2d63100000a9842079a90413a0598238056bc75e2d6310000020001ca984800ba904a0aa00a08064a904004a8238056bc75e2d63100000823806f5f1775788937937a9840182315af1d78b58c40000a001004c8238056bc75e2d631000008238280e60114edb805d03a9840182380ad78ebc5ac6200000a001004e8238056bc75e2d63100000824adf0ab5a80a22c61ab5a700a98401822056bc75e2d631aa17a00102012026250063a46410e0804c45896c678b00d180ef381038c70a023d5486531812d40950025503815210e0002298731819d5016780e4e84001d7d0c8871c02497c0f83434c0c05c6c2497c0f83e900c0074c7f4cfc8a08426871dda6ea38d8d16fc15fe10f1c17ca8f4cff4c03e1104eebcabdc3e10fe113c163000244c383e900c1c20043232c15633c5887e80b2dab260103ec03800a084140f4725eeb8c097c12103fcbc22702fcf057038210042c1d80bef2b0f842c001f268d4d33f30f864885210f90001f900baf26420d739f2aad30701c003f2ab21d765aa00a6025220f9415f03f84401d4308040f40e6fa131f2ad71f843f844f058f842f8448210d0d5f405c8cb1f15cb3f12cc13cb3f12cb0001cf16c9718010c8cb05f843cf1670fa02cb6accc9292800088306fb0000006e3bece9\"}","import { SuiGrpcClient } from '@mysten/sui/grpc';\nimport { bcs } from '@mysten/sui/bcs';\nimport { Transaction } from '@mysten/sui/transactions';\nimport { fromBase64 } from '@mysten/sui/utils';\nimport { signTransaction, Wallet } from '@mysten/wallet-standard';\n\nexport interface SuiContractInfo {\n packageId: string;\n chainId?: 'testnet' | 'mainnet';\n walletClient: Wallet;\n coinType: string;\n distributorId?: string;\n /** gRPC endpoint, e.g. https://fullnode.mainnet.sui.io:443 */\n chainRpc?: string;\n}\n\nexport abstract class SuiContractClientBase {\n protected packageId: string;\n protected chainId: 'testnet' | 'mainnet';\n protected moduleName: string;\n protected distributorId?: string;\n protected wallet: Wallet;\n protected client: SuiGrpcClient;\n\n constructor(contractInfo: SuiContractInfo & { moduleName: string }) {\n this.packageId = contractInfo.packageId;\n this.chainId = contractInfo.chainId ? contractInfo.chainId : 'mainnet';\n this.moduleName = contractInfo.moduleName;\n this.distributorId = contractInfo.distributorId;\n this.wallet = contractInfo.walletClient;\n this.client = new SuiGrpcClient({\n network: this.chainId,\n baseUrl: contractInfo.chainRpc || `https://fullnode.${this.chainId}.sui.io:443`\n });\n }\n\n async signAndExecute(tx: Transaction) {\n if (!this.wallet) {\n throw new Error('Wallet not connected');\n }\n if (!this.wallet.features?.['sui:signTransaction'] && !this.wallet.features?.['sui:signTransactionBlock']) {\n throw new Error(\"Wallet doesn't support transaction signing\");\n }\n\n const accounts = await this.wallet.accounts;\n const client = this.client;\n if (!accounts || accounts.length === 0) {\n throw new Error('No wallet account connected');\n }\n const signerAccount = accounts[0];\n\n // 设置交易发送者\n if ('setSenderIfNotSet' in tx) {\n tx.setSenderIfNotSet(signerAccount.address);\n }\n\n console.log(\n tx,\n await tx.toJSON({\n supportedIntents: [],\n client\n })\n );\n\n // 准备链标识,匹配 hook 里的格式\n const chain = `sui:${this.chainId}` as `${string}:${string}`;\n\n // 调用 wallet-standard 的 signTransaction 来签名\n const { signature, bytes } = await signTransaction(this.wallet, {\n transaction: {\n async toJSON() {\n return typeof tx === 'string'\n ? tx\n : await tx.toJSON({\n supportedIntents: [],\n client\n });\n }\n },\n account: signerAccount,\n chain: chain\n });\n\n // 发送交易\n const result = await this.client.executeTransaction({\n transaction: fromBase64(bytes),\n signatures: [signature],\n include: { effects: true, events: true }\n });\n\n if (result.$kind === 'FailedTransaction') {\n throw new Error(result.FailedTransaction.status.error?.message ?? 'Transaction failed');\n }\n\n // 等待交易确认\n await this.waitForTx(result.Transaction.digest);\n\n return result.Transaction;\n }\n\n protected async waitForTx(digest: string) {\n return this.client.waitForTransaction({\n digest,\n include: { effects: true, events: true }\n });\n }\n\n /**\n * 读取合约返回值(只读调用),返回第一个返回值的 BCS 字节\n * @param func Move function 名\n * @param typeArgs 类型参数\n * @param args Move function 参数\n */\n async readMoveFunction(func: string, typeArgs: string[] = [], args: any[] = []): Promise<Uint8Array> {\n const DEFAULT_SENDER = '0x0000000000000000000000000000000000000000000000000000000000000001';\n const sender = this.wallet?.accounts?.[0]?.address || DEFAULT_SENDER;\n if (!sender) throw new Error('No wallet account selected');\n\n // 创建 Transaction\n const tx = new Transaction();\n tx.moveCall({\n target: `${this.packageId}::${this.moduleName}::${func}`,\n typeArguments: typeArgs,\n arguments: args.map((arg) => {\n // 自动把纯数据转换成 Move 所需格式\n if (Array.isArray(arg)) return tx.pure(bcs.vector(bcs.vector(bcs.u8())).serialize(arg)); // vector<u8>\n if (typeof arg === 'string' && arg.startsWith('0x')) return tx.object(arg); // object ID\n return tx.pure(arg); // 纯量 u64、address 等\n })\n });\n tx.setSender(sender);\n\n // simulateTransaction 不消耗 Gas;关闭 checks 以允许调用非 entry 函数\n const res = await this.client.simulateTransaction({\n transaction: tx,\n checksEnabled: false,\n include: { commandResults: true }\n });\n\n console.log(res, 'res');\n\n if (res.$kind === 'FailedTransaction') {\n throw new Error(`Failed to read ${func}: ${res.FailedTransaction.status.error?.message}`);\n }\n\n const returnValue = res.commandResults?.[0]?.returnValues?.[0]?.bcs;\n if (!returnValue) {\n throw new Error(`Failed to read ${func}`);\n }\n\n return returnValue;\n }\n\n /**\n * 查询 Distributor MoveObject 的 fields\n */\n async getObjectFields(objectId: string) {\n const { object } = await this.client.getObject({\n objectId,\n include: { json: true }\n });\n\n if (!object.json) {\n throw new Error(`Object ${objectId} is not a moveObject`);\n }\n\n return object.json;\n }\n\n async getSharedObjectRef(tx: Transaction, objectId: string, mutable: boolean) {\n const { object } = await this.client.getObject({ objectId });\n\n console.log(object, 'obj');\n\n if (object.owner.$kind !== 'Shared') {\n throw new Error(`Object ${objectId} is not a shared object`);\n }\n\n const initialSharedVersion = object.owner.Shared.initialSharedVersion;\n\n return tx.sharedObjectRef({\n objectId,\n initialSharedVersion: Number(initialSharedVersion),\n mutable\n });\n }\n}\n","import { SuiContractClientBase, SuiContractInfo } from './SuiContractClient';\nimport { Transaction } from '@mysten/sui/transactions';\nimport { bcs } from '@mysten/sui/bcs';\nimport { fromBase64 } from '@mysten/sui/utils';\n\nexport class SuiBaseDistributorClient extends SuiContractClientBase {\n constructor(info: SuiContractInfo) {\n super({ ...info, moduleName: 'base_distributor' }); // 固定 base_distributor\n }\n\n async createDistributor(coinType: string, projectId: string, projectRegistryId: string) {\n const tx = new Transaction();\n // 使用 Uint8Array 编码 vector<u8>\n const projectIdBytes = bcs.vector(bcs.u8()).serialize(Array.from(Buffer.from(projectId, 'utf8')));\n\n tx.moveCall({\n target: `${this.packageId}::${this.moduleName}::create_and_share_distributor`,\n typeArguments: [coinType],\n arguments: [tx.pure(projectIdBytes), tx.object(projectRegistryId)]\n });\n\n const result = await this.signAndExecute(tx);\n\n // 新建的 shared object 即 distributor\n const createdObj = result.effects?.changedObjects.find(\n (obj) => obj.idOperation === 'Created' && obj.outputOwner?.$kind === 'Shared'\n );\n\n return {\n txResult: result,\n distributorId: createdObj?.objectId\n };\n }\n\n async setBaseParams(\n coinType: string,\n startTime: string | number,\n endTime: string | number,\n authorizedSigner: string,\n ownerCapId: string\n ) {\n const tx = new Transaction();\n tx.moveCall({\n target: `${this.packageId}::${this.moduleName}::set_base_params`,\n typeArguments: [coinType],\n arguments: [\n tx.object(this.distributorId!),\n tx.pure.u64(startTime),\n tx.pure.u64(endTime),\n tx.pure.address(authorizedSigner),\n tx.object(ownerCapId)\n ]\n });\n return this.signAndExecute(tx);\n }\n\n async togglePause(coinType: string, ownerCapId: string) {\n const tx = new Transaction();\n tx.moveCall({\n target: `${this.packageId}::${this.moduleName}::toggle_pause`,\n typeArguments: [coinType],\n arguments: [tx.object(this.distributorId!), tx.object(ownerCapId)]\n });\n return this.signAndExecute(tx);\n }\n\n async getDistributorInfo() {\n const { object } = await this.client.getObject({\n objectId: this.distributorId!,\n include: { json: true }\n });\n const fields = object.json as any;\n const match = object.type.match(/<(.+)>$/);\n const coinType = match ? match[1] : '';\n return {\n startTime: fields?.start_time,\n endTime: fields?.end_time,\n signer: fields?.authorized_public_key,\n ownerCapId: fields?.owner_cap_id,\n // gRPC JSON 中 vector<u8> 以 base64 返回\n version: fields?.version ? new TextDecoder().decode(fromBase64(fields.version)) : undefined,\n feeCollector: fields?.fee_collector_config,\n token: coinType,\n tokenBalance: fields?.token_balance,\n paused: fields?.paused\n };\n }\n\n async getVersion() {\n const { version } = await this.getDistributorInfo();\n return version;\n }\n\n async getPaused() {\n const { paused } = await this.getDistributorInfo();\n return paused;\n }\n\n async getClaimFee(amount: bigint) {\n // const { token } = await this.getDistributorInfo();\n // const fee = await this.readMoveFunction<{ Some?: string; None?: null }>(\n // 'get_claim_fee',\n // [token],\n // [amount]\n // );\n // return fee;\n return 0n;\n }\n\n async batchFetchClaimed(coinType: string, claimIds: string[]): Promise<boolean[]> {\n const claimIdsBytes = claimIds.map((id) => Array.from(new TextEncoder().encode(id)));\n const res = await this.readMoveFunction('get_claim_status', [coinType], [this.distributorId!, claimIdsBytes]);\n\n // 使用 BCS 解码 vector<bool>\n return bcs.vector(bcs.bool()).parse(res);\n }\n\n async getDistributorId(projectId: string, projectRegistryId: string) {\n const res = await this.readMoveFunction(\n 'get_distributor_by_project_id',\n [],\n [projectRegistryId, Array.from(Buffer.from(projectId, 'utf8'))]\n );\n // 使用 BCS 解码 Option<ID>\n return bcs.option(bcs.Address).parse(res);\n }\n\n async getOwnerCapId() {\n const { objects } = await this.client.listOwnedObjects({\n owner: this.wallet.accounts[0].address,\n type: `${this.packageId}::ownable::OwnerCap`\n });\n\n // 获取 OwnerCap 对象ID\n const ownerCapId = objects[0]?.objectId;\n\n return ownerCapId;\n }\n}\n","import { Transaction } from '@mysten/sui/transactions';\nimport { SuiContractClientBase, SuiContractInfo } from './SuiContractClient';\nimport { bcs } from '@mysten/sui/bcs';\nimport { ISignatureClaimData } from '../../types';\n\nexport class SuiDistributorWithFeeClient extends SuiContractClientBase {\n constructor(info: SuiContractInfo) {\n super({ ...info, moduleName: 'fungible_token_with_fees_distributor' });\n }\n\n private async prepareFeePayment(totalFeesStr: string, feeTokenType: string, tx: Transaction): Promise<any> {\n const totalFees = BigInt(totalFeesStr);\n\n // 获取用户的 coins\n const coins = await this.client.listCoins({\n owner: this.wallet.accounts[0].address,\n coinType: feeTokenType\n });\n\n // 找到足够余额的单个 coin\n const suitableCoin = coins.objects.find((coin) => BigInt(coin.balance) >= totalFees);\n\n if (suitableCoin) {\n // 如果coin的余额正好等于所需费用,直接使用\n if (BigInt(suitableCoin.balance) === totalFees) {\n return tx.object(suitableCoin.objectId);\n }\n // 如果coin的余额大于所需费用,需要分割coin\n const [feeCoin] = tx.splitCoins(tx.object(suitableCoin.objectId), [tx.pure(bcs.u64().serialize(totalFees))]);\n return feeCoin;\n }\n\n // 如果没有单个足够的 coin,需要合并多个 coins\n // 这里可以实现 coin 合并逻辑或抛出错误\n throw new Error(`Insufficient balance. Required: ${totalFeesStr}, Available coins: ${coins.objects.length}`);\n }\n\n async claimWithFee(coinType: string, feeCollector: string, data: ISignatureClaimData[]) {\n const recipients = data.map((item) => item.recipient);\n const claimIds = data.map((item) => item.claimId);\n const signatures = data.map((item) => item.signature);\n\n function encodeClaimDataWithFees(timestamp: bigint, amount: bigint, fees: bigint): number[] {\n const tsBytes = bcs.u64().serialize(timestamp).toBytes(); // 8B, LE\n const amtBytes = bcs.u64().serialize(amount).toBytes(); // 8B, LE\n const feeBytes = bcs.u64().serialize(fees).toBytes(); // 8B, LE\n return Array.from(new Uint8Array([...tsBytes, ...amtBytes, ...feeBytes])); // 24B\n }\n const datas = data.map((item) => {\n const claimData = item.data as {\n claimableTimestamp: string;\n claimableAmount: string;\n };\n return encodeClaimDataWithFees(\n BigInt(claimData.claimableTimestamp),\n BigInt(claimData.claimableAmount),\n BigInt(item.fees || '0')\n );\n });\n const totalFees = data.map((item) => BigInt(item.fees || '0')).reduce((sum, fee) => sum + fee, BigInt(0));\n const tx = new Transaction();\n // 获取 distributor (mutable)\n const distributor = await this.getSharedObjectRef(tx, this.distributorId!, true);\n\n // 获取 feeCollector (mutable)\n const feeConfig = await this.getSharedObjectRef(tx, feeCollector, true);\n\n // 获取 clock (immutable, Sui 系统对象)\n const clock = await this.getSharedObjectRef(tx, '0x6', false);\n\n const hexToBytes = (hex: string) => Array.from(Buffer.from(hex.replace(/^0x/, ''), 'hex'));\n\n const feeTokenType = '0x2::sui::SUI'; // 或其他费用代币类型\n\n // 在splitCoins之前添加余额检查\n const { balance: gasBalance } = await this.client.getBalance({\n owner: this.wallet.accounts[0].address,\n coinType: feeTokenType\n });\n\n if (BigInt(gasBalance.balance) < totalFees) {\n throw new Error(`Insufficient SUI balance. Required: ${totalFees}, Available: ${gasBalance.balance}`);\n }\n\n const [feeCoin] = tx.splitCoins(\n tx.gas, // 用 gas 对象作为源\n [tx.pure(bcs.u64().serialize(totalFees))]\n );\n\n // 调用 claim_with_fees 方法\n tx.moveCall({\n target: `${this.packageId}::${this.moduleName}::claim_with_fees`,\n arguments: [\n distributor,\n feeConfig,\n tx.pure(bcs.vector(bcs.Address).serialize(recipients as string[])), // recipients: vector<address>\n tx.pure(\n bcs.vector(bcs.vector(bcs.u8())).serialize(claimIds.map((id) => Array.from(new TextEncoder().encode(id))))\n ), // claim_ids: vector<vector<u8>>\n tx.pure(bcs.vector(bcs.vector(bcs.u8())).serialize(datas)), // claim_datas: vector<vector<u8>>\n tx.pure(bcs.vector(bcs.vector(bcs.u8())).serialize(signatures.map((sig) => hexToBytes(sig)))), // signatures: vector<vector<u8>>\n feeCoin,\n clock\n ],\n typeArguments: [coinType, feeTokenType] // Token类型, Fee类型\n });\n\n const res = await this.signAndExecute(tx);\n return res.digest;\n }\n}\n","import { getChainConfig } from '../../common';\nimport { ISignatureClaimData } from '../../types';\nimport { SuiBaseDistributorClient } from './BaseDistributorClient';\nimport { SuiDistributorWithFeeClient } from './DistributorWithFeeClient';\nimport { SuiContractInfo } from './SuiContractClient';\n\nexport class SignatureAirdropService {\n options: SuiContractInfo;\n constructor(options: Omit<SuiContractInfo, 'packageId'>) {\n const chainConfig = getChainConfig(options.chainId as any);\n this.options = {\n ...options,\n packageId: chainConfig.contractAddress\n };\n }\n\n private get baseDistributorClient(): SuiBaseDistributorClient {\n if (!this.options) {\n throw new Error('options is empty');\n }\n\n return new SuiBaseDistributorClient(this.options);\n }\n\n private get feeDistributorClient(): SuiDistributorWithFeeClient {\n if (!this.options) {\n throw new Error('options is empty');\n }\n\n return new SuiDistributorWithFeeClient(this.options);\n }\n\n async getVersion() {\n return this.baseDistributorClient.getVersion();\n }\n\n async getClaimFee(address: string, amount: bigint): Promise<bigint> {\n const fee = await this.baseDistributorClient.getClaimFee(amount);\n return fee;\n }\n\n async batchFetchClaimed(userClaimIds: string[]): Promise<boolean[]> {\n const res = await this.baseDistributorClient.batchFetchClaimed(this.options.coinType, userClaimIds);\n return res;\n }\n\n async getPaused() {\n return this.baseDistributorClient.getPaused();\n }\n\n async getContractInfo() {\n return this.baseDistributorClient.getDistributorInfo();\n }\n\n async claim(data: ISignatureClaimData[], recipient?: string) {\n const { feeCollector } = await this.getContractInfo();\n return this.feeDistributorClient.claimWithFee(this.options.coinType, feeCollector, data);\n }\n}\n","import { Aptos, AptosConfig, Network } from '@aptos-labs/ts-sdk';\nimport { useWallet } from '@aptos-labs/wallet-adapter-react';\n\nexport type AptosContractInfo = {\n address: string;\n chainId: string;\n account?: ReturnType<typeof useWallet>;\n module: string;\n chainRpc: string;\n};\n\nexport class AptosContractClientBase {\n protected address: string;\n protected chainId: string;\n protected wallet?: ReturnType<typeof useWallet>;\n protected client: Aptos;\n protected module: string;\n\n constructor(contractInfo: AptosContractInfo) {\n this.address = contractInfo.address;\n this.chainId = contractInfo.chainId;\n this.wallet = contractInfo.account;\n this.module = contractInfo.module;\n this.client = this.initClient(contractInfo.chainRpc);\n }\n\n private initClient(chainRpc: string): Aptos {\n const chainIdMap = {\n '2': Network.TESTNET,\n '1': Network.MAINNET\n };\n const config = new AptosConfig({\n network: chainIdMap[this.chainId as keyof typeof chainIdMap],\n fullnode: chainRpc\n });\n\n return new Aptos(config);\n }\n\n protected async invokeContractRead(method: string, args: any[]): Promise<any> {\n try {\n const viewPayload = {\n function: `${this.address}::${this.module}::${method}` as `${string}::${string}::${string}`,\n functionArguments: args\n };\n\n return await this.client.view({ payload: viewPayload });\n } catch (error) {\n console.error(`Error invoking read method ${method}:`, error);\n throw error;\n }\n }\n\n protected async invokeContractWrite(method: string, args: any[]): Promise<string> {\n if (!this.wallet) {\n throw new Error('Account not connected');\n }\n\n try {\n const response = await this.wallet.signAndSubmitTransaction({\n sender: this.wallet.account?.address,\n data: {\n function: `${this.address}::${this.module}::${method}`,\n functionArguments: args\n }\n });\n await this.client.waitForTransaction({\n transactionHash: response.hash\n });\n return response.hash;\n } catch (error) {\n console.error(`Error invoking write method ${method}:`, error);\n\n throw error;\n }\n }\n\n async signTransaction({\n functionName,\n functionArguments,\n typeArguments\n }: {\n functionName: `${string}::${string}::${string}`;\n functionArguments: any[];\n typeArguments?: string[];\n }) {\n if (!this.wallet) {\n throw new Error('Account not connected');\n }\n\n try {\n const response = await this.wallet.signAndSubmitTransaction({\n sender: this.wallet.account?.address,\n data: {\n function: functionName,\n functionArguments: functionArguments,\n typeArguments: typeArguments || []\n }\n });\n const res = await this.client.waitForTransaction({\n transactionHash: response.hash\n });\n\n return response.hash;\n } catch (error) {\n throw error;\n }\n }\n}\n","import { AptosContractClientBase, AptosContractInfo } from './AptosContractClient';\nimport { getChainConfig } from '../../common';\n\nexport class AptosAirdropContractClient extends AptosContractClientBase {\n airdropAddress: string;\n constructor(options: Omit<AptosContractInfo, 'module'>) {\n const chainConfig = getChainConfig(options.chainId as any);\n super({\n ...options,\n address: chainConfig.contractAddress,\n module: 'merkle_distributor_with_fees'\n });\n this.airdropAddress = options.address;\n }\n\n private hexToBytes(hexStr: string): number[] {\n const hex = hexStr.startsWith('0x') ? hexStr.slice(2) : hexStr;\n return Array.from(Buffer.from(hex, 'hex'));\n }\n\n async claim({ proof, group, data, value }: { proof: string[]; group: string; data: string; value?: bigint }) {\n const dataBytes = this.hexToBytes(data);\n const proofBytes = proof.map((p) => this.hexToBytes(p));\n\n return await this.invokeContractWrite('claim', [this.airdropAddress, proofBytes, dataBytes]);\n }\n}\n","import { AptosContractClientBase, AptosContractInfo } from './AptosContractClient';\nimport { getChainConfig } from '../../common';\n\nexport class AptosBaseDistributorContractClient extends AptosContractClientBase {\n airdropAddress: string;\n constructor(options: Omit<AptosContractInfo, 'module'>) {\n const chainConfig = getChainConfig(options.chainId as any);\n super({\n ...options,\n address: chainConfig.contractAddress,\n module: 'base_distributor'\n });\n this.airdropAddress = options.address;\n }\n\n async getContractInfo() {\n const data = await this.invokeContractRead('get_distribution_info', [this.airdropAddress]);\n console.log('data', data);\n const [root, token, startTime, endTime, owner, version, paused] = data;\n return {\n root,\n token,\n startTime: Number(startTime),\n endTime: Number(endTime),\n owner,\n version: version,\n paused\n };\n }\n\n async deposit({ amount, token }: { amount: bigint; token: string }): Promise<string> {\n return await this.signTransaction({\n functionName: `0x1::primary_fungible_store::transfer`,\n functionArguments: [token, this.airdropAddress, amount],\n typeArguments: ['0x1::fungible_asset::Metadata']\n });\n }\n\n async isLeafUsed(leaf: string): Promise<boolean> {\n const leafBytes = leaf.startsWith('0x')\n ? Array.from(Buffer.from(leaf.slice(2), 'hex'))\n : Array.from(Buffer.from(leaf, 'hex'));\n const res = await this.invokeContractRead('is_leaf_used', [this.airdropAddress, leafBytes]);\n console.log('res', res);\n return res[0];\n }\n\n async batchFetchClaimed(leafs: string[]) {\n const res = await Promise.all(\n leafs.map(async (leaf) => {\n return this.isLeafUsed(leaf);\n })\n );\n return res.map((info) => ({\n result: info || false,\n status: 'success'\n }));\n }\n\n private hexToBytes(hexStr: string): number[] {\n const hex = hexStr.startsWith('0x') ? hexStr.slice(2) : hexStr;\n return Array.from(Buffer.from(hex, 'hex'));\n }\n\n async claim({ proof, data }: { proof: string[]; group: string; data: string; value?: bigint; extraData?: string }) {\n const groupBytes = this.hexToBytes('');\n const dataBytes = this.hexToBytes(data);\n const proofBytes = proof.map((p) => this.hexToBytes(p));\n\n return await this.invokeContractWrite('claim', [this.airdropAddress, proofBytes, groupBytes, dataBytes]);\n }\n\n async getPaused() {\n const res = await this.getContractInfo();\n return res.paused;\n }\n\n async getClaimFee(contractAddress: string, amount: bigint) {\n return 0;\n }\n}\n","import { AptosAirdropContractClient } from './AptosAirdropClient';\nimport { AptosBaseDistributorContractClient } from './AptosBaseDistributorClient';\nimport { AptosContractInfo } from './AptosContractClient';\n\nexport class AirdropService {\n options: Omit<AptosContractInfo, 'module'>;\n constructor(options: Omit<AptosContractInfo, 'module'>) {\n this.options = options;\n }\n\n private get airdropClient(): AptosAirdropContractClient {\n if (!this.options) {\n throw new Error('options is empty');\n }\n\n return new AptosAirdropContractClient(this.options);\n }\n\n private get baseClient(): AptosBaseDistributorContractClient {\n if (!this.options) {\n throw new Error('options is empty');\n }\n return new AptosBaseDistributorContractClient(this.options);\n }\n\n async isLeafUsed(leaf: string): Promise<boolean> {\n return this.baseClient.isLeafUsed(leaf);\n }\n\n async batchFetchClaimed(leafs: string[]) {\n return this.baseClient.batchFetchClaimed(leafs);\n }\n\n async claim({ proof, group, data, value }: { proof: string[]; group: string; data: string; value?: bigint }) {\n return this.airdropClient.claim({\n proof,\n group,\n data,\n value\n });\n }\n\n async getVersion() {\n const res = await this.baseClient.getContractInfo();\n return res.version;\n }\n\n async getClaimFee(contractAddress: string, amount: bigint) {\n return this.baseClient.getClaimFee(contractAddress, amount);\n }\n\n async getPaused() {\n return this.baseClient.getPaused();\n }\n}\n"],"mappings":"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","names":["AirdropService","SignatureAirdropService","import_sdk","chain","import_viem","contractAddress","import_viem","ChainType","AirdropSigIdentityTypeEnum","ETokenType","TonAirdropVersionEnum","EvmAirdropVersionEnum","ErrorCode","TonWeb","signTransaction","error","SplTokenVersion","dayjs","contractAddress","import_viem","import_web3","import_web3","anchor","import_spl_token","FeeCollectorClient","FeeCollectorClient","AirdropService","import_web3","anchor","import_spl_token","AirdropSignatureClient","FeeCollectorClient","SignatureAirdropService","AirdropSignatureClient","import_ton","import_core","import_sdk","contractAddress","contractAddress","TonConnectUI","import_core","import_core","import_core","import_core","import_core","dateToUnixTimestamp","unixTimestampToDate","import_core","stringToInt","intToString","MIN_CLAIM_FEE","leafConfigToCell","Leaf","import_core","tokenDistributorConfigToCell","dateToUnixTimestamp","stringToInt","MerkleTokenDistributor","tokenDistributorConfigToCell","intToString","unixTimestampToDate","stringToInt","dateToUnixTimestamp","import_core","Leaf_compiled_default","MerkleTokenDistributor","Leaf_compiled_default","Leaf","import_core","dateToUnixTimestamp","unixTimestampToDate","import_core","stringToInt","intToString","MIN_CLAIM_FEE","leafConfigToCell","Leaf","import_core","tokenDistributorConfigToCell","dateToUnixTimestamp","stringToInt","MerkleTokenDistributor","tokenDistributorConfigToCell","intToString","unixTimestampToDate","stringToInt","dateToUnixTimestamp","import_core","Leaf_compiled_default","MerkleTokenDistributor","Leaf_compiled_default","Leaf","import_core","import_core","dateToUnixTimestamp","unixTimestampToDate","import_core","stringToInt","intToString","MIN_CLAIM_FEE","leafConfigToCell","Leaf","import_core","tokenDistributorConfigToCell","dateToUnixTimestamp","stringToInt","MerkleTokenDistributor","tokenDistributorConfigToCell","intToString","unixTimestampToDate","stringToInt","dateToUnixTimestamp","import_core","Leaf_compiled_default","MerkleTokenDistributor","Leaf_compiled_default","Leaf","AirdropService","import_utils","import_transactions","import_bcs","import_utils","import_transactions","import_bcs","SignatureAirdropService","contractAddress","AirdropService","contractAddress"]}