@wirexapp/wpay-baas-sdk 0.1.8 → 0.1.9

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.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/modules/crypto/chains/registry.ts","../src/abi/contractRegistry.abi.ts","../src/abi/tokenRegistry.abi.ts","../src/abi/accounts.abi.ts","../src/abi/corporateAccounts.abi.ts","../src/abi/synthetic.abi.ts","../src/abi/fundsManagement.abi.ts","../src/abi/yieldCalculator.abi.ts","../src/abi/executionDelayPolicy.abi.ts","../src/abi/signer.abi.ts","../src/modules/crypto/chains/base/account-abstraction.service.ts","../src/modules/crypto/chains/base/account.contract.service.ts","../src/modules/crypto/chains/base/crypto.service.ts","../src/modules/crypto/chains/base/onboarding.service.ts","../src/modules/crypto/chains/base/wallet.service.ts","../src/modules/crypto/chains/base/yield.service.ts","../src/modules/crypto/chains/base/index.ts","../src/modules/crypto/internal/contract-registry.service.ts","../src/modules/crypto/internal/smartDepositWallet.service.ts","../src/modules/crypto/crypto.module.ts"],"names":["encodeFunctionData","pad","erc20Abi","getEntryPoint","KERNEL_V3_1","toSudoPolicy","toPermissionValidator","toECDSASigner","token"],"mappings":"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","file":"chunk-NYDDEDPQ.js","sourcesContent":["import type { ChainServicesFactory } from './types';\n\nclass ChainRegistry {\n private factories = new Map<number, ChainServicesFactory>();\n\n register(chainId: number, factory: ChainServicesFactory): void {\n this.factories.set(chainId, factory);\n }\n\n get(chainId: number): ChainServicesFactory | undefined {\n return this.factories.get(chainId);\n }\n\n has(chainId: number): boolean {\n return this.factories.has(chainId);\n }\n\n getSupportedChainIds(): number[] {\n return Array.from(this.factories.keys());\n }\n}\n\nexport const chainRegistry = new ChainRegistry();\n","export const contractRegistryAbi = [\n {\n 'inputs': [],\n 'stateMutability': 'nonpayable',\n 'type': 'constructor'\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 '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': 'admin',\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': 'name',\n 'type': 'string'\n }\n ],\n 'name': 'contractByName',\n 'outputs': [\n {\n 'internalType': 'address',\n 'name': 'proxy',\n 'type': 'address'\n }\n ],\n 'stateMutability': 'view',\n 'type': 'function'\n },\n {\n 'inputs': [],\n 'name': 'contracts',\n 'outputs': [\n {\n 'components': [\n {\n 'internalType': 'string',\n 'name': 'name',\n 'type': 'string'\n },\n {\n 'internalType': 'address',\n 'name': 'proxy',\n 'type': 'address'\n }\n ],\n 'internalType': 'struct IContractRegistry.ContractData[]',\n 'name': 'contractsInfo',\n 'type': 'tuple[]'\n }\n ],\n 'stateMutability': 'view',\n 'type': 'function'\n },\n {\n 'inputs': [],\n 'name': 'oracleCards',\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': 'oracleFunds',\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': 'oracleKYC',\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': 'oracleProcessing',\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': '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 {\n 'internalType': 'string',\n 'name': 'name',\n 'type': 'string'\n }\n ],\n 'name': 'removeContract',\n 'outputs': [],\n 'stateMutability': 'nonpayable',\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': 'newAddress',\n 'type': 'address'\n }\n ],\n 'name': 'setAdmin',\n 'outputs': [],\n 'stateMutability': 'nonpayable',\n 'type': 'function'\n },\n {\n 'inputs': [\n {\n 'internalType': 'string',\n 'name': 'name',\n 'type': 'string'\n },\n {\n 'internalType': 'address',\n 'name': 'proxy',\n 'type': 'address'\n }\n ],\n 'name': 'setContract',\n 'outputs': [],\n 'stateMutability': 'nonpayable',\n 'type': 'function'\n },\n {\n 'inputs': [\n {\n 'internalType': 'address',\n 'name': 'newAddress',\n 'type': 'address'\n }\n ],\n 'name': 'setOracleCards',\n 'outputs': [],\n 'stateMutability': 'nonpayable',\n 'type': 'function'\n },\n {\n 'inputs': [\n {\n 'internalType': 'address',\n 'name': 'newAddress',\n 'type': 'address'\n }\n ],\n 'name': 'setOracleFunds',\n 'outputs': [],\n 'stateMutability': 'nonpayable',\n 'type': 'function'\n },\n {\n 'inputs': [\n {\n 'internalType': 'address',\n 'name': 'newAddress',\n 'type': 'address'\n }\n ],\n 'name': 'setOracleKYC',\n 'outputs': [],\n 'stateMutability': 'nonpayable',\n 'type': 'function'\n },\n {\n 'inputs': [\n {\n 'internalType': 'address',\n 'name': 'newAddress',\n 'type': 'address'\n }\n ],\n 'name': 'setOracleProcessing',\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] as const;","export const tokenRegistryAbi = [{ 'inputs': [], 'name': 'InvalidInitialization', 'type': 'error' }, {\n 'inputs': [],\n 'name': 'NotInitializing',\n 'type': 'error'\n}, {\n 'anonymous': false,\n 'inputs': [{ 'indexed': false, 'internalType': 'uint64', 'name': 'version', 'type': 'uint64' }],\n 'name': 'Initialized',\n 'type': 'event'\n}, {\n 'anonymous': false,\n 'inputs': [{ 'indexed': true, 'internalType': 'address', 'name': 'tokenAddress', 'type': 'address' }, {\n 'indexed': false,\n 'internalType': 'string',\n 'name': 'symbol',\n 'type': 'string'\n }, { 'indexed': false, 'internalType': 'uint256', 'name': 'decimals', 'type': 'uint256' }],\n 'name': 'TokenAdded',\n 'type': 'event'\n}, {\n 'anonymous': false,\n 'inputs': [{ 'indexed': true, 'internalType': 'address', 'name': 'tokenAddress', 'type': 'address' }, {\n 'indexed': true,\n 'internalType': 'address',\n 'name': 'newTokenAddress',\n 'type': 'address'\n }, { 'indexed': false, 'internalType': 'string', 'name': 'symbol', 'type': 'string' }],\n 'name': 'TokenAddressChanged',\n 'type': 'event'\n}, {\n 'anonymous': false,\n 'inputs': [{ 'indexed': true, 'internalType': 'address', 'name': 'tokenAddress', 'type': 'address' }, {\n 'indexed': false,\n 'internalType': 'string',\n 'name': 'symbol',\n 'type': 'string'\n }],\n 'name': 'TokenRemoved',\n 'type': 'event'\n}, {\n 'inputs': [{ 'internalType': 'address', 'name': 'tokenAddress', 'type': 'address' }, {\n 'internalType': 'string',\n 'name': 'symbol',\n 'type': 'string'\n }, { 'internalType': 'uint256', 'name': 'decimals', 'type': 'uint256' }],\n 'name': 'addToken',\n 'outputs': [],\n 'stateMutability': 'nonpayable',\n 'type': 'function'\n}, {\n 'inputs': [{ 'internalType': 'string', 'name': 'symbol', 'type': 'string' }, {\n 'internalType': 'address',\n 'name': 'newTokenAddress',\n 'type': 'address'\n }], 'name': 'changeTokenAddress', 'outputs': [], 'stateMutability': 'nonpayable', 'type': 'function'\n}, {\n 'inputs': [{ 'internalType': 'address', 'name': 'register', 'type': 'address' }],\n 'name': 'init',\n 'outputs': [],\n 'stateMutability': 'nonpayable',\n 'type': 'function'\n}, {\n 'inputs': [{ 'internalType': 'address', 'name': 'tokenAddress', 'type': 'address' }],\n 'name': 'isSupportedByAddress',\n 'outputs': [{ 'internalType': 'bool', 'name': '', 'type': 'bool' }],\n 'stateMutability': 'view',\n 'type': 'function'\n}, {\n 'inputs': [{ 'internalType': 'string', 'name': 'symbol', 'type': 'string' }],\n 'name': 'isSupportedBySymbol',\n 'outputs': [{ 'internalType': 'bool', 'name': '', 'type': 'bool' }],\n 'stateMutability': 'view',\n 'type': 'function'\n}, {\n 'inputs': [{ 'internalType': 'string', 'name': 'symbol', 'type': 'string' }],\n 'name': 'removeToken',\n 'outputs': [],\n 'stateMutability': 'nonpayable',\n 'type': 'function'\n}, {\n 'inputs': [],\n 'name': 'retrieveAllTokens',\n 'outputs': [{\n 'components': [{\n 'internalType': 'address',\n 'name': 'tokenAddress',\n 'type': 'address'\n }, { 'internalType': 'string', 'name': 'symbol', 'type': 'string' }, {\n 'internalType': 'uint256',\n 'name': 'decimals',\n 'type': 'uint256'\n }], 'internalType': 'struct ITokensRegistry.Token[]', 'name': '', 'type': 'tuple[]'\n }],\n 'stateMutability': 'view',\n 'type': 'function'\n}, {\n 'inputs': [],\n 'name': 'retrieveAllTokensV2',\n 'outputs': [{\n 'components': [{\n 'internalType': 'address',\n 'name': 'tokenAddress',\n 'type': 'address'\n }, { 'internalType': 'string', 'name': 'symbol', 'type': 'string' }, {\n 'internalType': 'uint256',\n 'name': 'decimals',\n 'type': 'uint256'\n }, { 'internalType': 'bool', 'name': 'isSynthetic', 'type': 'bool' }, {\n 'internalType': 'address',\n 'name': 'baseToken',\n 'type': 'address'\n }], 'internalType': 'struct ITokensRegistry.TokenExtended[]', 'name': '', 'type': 'tuple[]'\n }],\n 'stateMutability': 'view',\n 'type': 'function'\n }] as const;\n","export const accountsAbi = [\n { type: 'error', name: 'InvalidInitialization', inputs: [] },\n {\n type: 'error',\n name: 'NotInitializing',\n inputs: [],\n },\n {\n type: 'event',\n anonymous: false,\n name: 'AccountCreated',\n inputs: [{ type: 'address', name: 'owner', indexed: false }],\n },\n {\n type: 'event',\n anonymous: false,\n name: 'AccountStatusChanged',\n inputs: [\n { type: 'address', name: 'owner', indexed: false },\n {\n type: 'uint8',\n name: 'newStatus',\n indexed: false,\n },\n ],\n },\n {\n type: 'event',\n anonymous: false,\n name: 'AccountVerificationStatusChanged',\n inputs: [\n { type: 'address', name: 'owner', indexed: false },\n {\n type: 'uint8',\n name: 'newStatus',\n indexed: false,\n },\n ],\n },\n {\n type: 'event',\n anonymous: false,\n name: 'Initialized',\n inputs: [{ type: 'uint64', name: 'version', indexed: false }],\n },\n {\n type: 'event',\n anonymous: false,\n name: 'UserAccountCreated',\n inputs: [\n { type: 'bytes16', name: 'parentEntity', indexed: false },\n {\n type: 'address',\n name: 'owner',\n indexed: false,\n },\n ],\n },\n {\n type: 'event',\n anonymous: false,\n name: 'UserAccountStatusChanged',\n inputs: [\n { type: 'bytes16', name: 'parentEntity', indexed: false },\n {\n type: 'address',\n name: 'owner',\n indexed: false,\n },\n { type: 'uint8', name: 'newStatus', indexed: false },\n ],\n },\n {\n type: 'event',\n anonymous: false,\n name: 'UserAccountVerificationStatusChanged',\n inputs: [\n { type: 'bytes16', name: 'parentEntity', indexed: false },\n {\n type: 'address',\n name: 'owner',\n indexed: false,\n },\n { type: 'uint8', name: 'newStatus', indexed: false },\n ],\n },\n {\n type: 'event',\n anonymous: false,\n name: 'WalletConfirmationStatusChanged',\n inputs: [\n { type: 'bytes16', name: 'parentEntity', indexed: false },\n {\n type: 'address',\n name: 'wallet',\n indexed: false,\n },\n { type: 'uint8', name: 'newStatus', indexed: false },\n ],\n },\n {\n type: 'event',\n anonymous: false,\n name: 'WalletLinked',\n inputs: [\n { type: 'bytes16', name: 'parentEntity', indexed: false },\n {\n type: 'address',\n name: 'owner',\n indexed: false,\n },\n { type: 'address', name: 'wallet', indexed: false },\n ],\n },\n {\n type: 'event',\n anonymous: false,\n name: 'WalletRoleAssigned',\n inputs: [\n { type: 'bytes16', name: 'parentEntity', indexed: false },\n {\n type: 'address',\n name: 'account',\n indexed: false,\n },\n { type: 'address', name: 'wallet', indexed: false },\n { type: 'string', name: 'role', indexed: false },\n ],\n },\n {\n type: 'event',\n anonymous: false,\n name: 'WalletRoleRemoved',\n inputs: [\n { type: 'bytes16', name: 'parentEntity', indexed: false },\n {\n type: 'address',\n name: 'account',\n indexed: false,\n },\n { type: 'address', name: 'wallet', indexed: false },\n ],\n },\n {\n type: 'function',\n name: 'assignWalletRole',\n constant: false,\n payable: false,\n inputs: [\n { type: 'bytes16', name: 'parentEntity' },\n { type: 'address', name: 'account' },\n {\n type: 'address',\n name: 'wallet',\n },\n { type: 'string', name: 'role' },\n ],\n outputs: [],\n },\n {\n type: 'function',\n name: 'changeAccountStatus',\n constant: false,\n payable: false,\n inputs: [\n { type: 'address', name: 'owner' },\n { type: 'uint8', name: 'newStatus' },\n ],\n outputs: [],\n },\n {\n type: 'function',\n name: 'changeAccountVerificationStatus',\n constant: false,\n payable: false,\n inputs: [\n { type: 'address', name: 'owner' },\n { type: 'uint8', name: 'newStatus' },\n ],\n outputs: [],\n },\n {\n type: 'function',\n name: 'changeUserAccountStatus',\n constant: false,\n payable: false,\n inputs: [\n { type: 'bytes16', name: 'parentEntity' },\n { type: 'address', name: 'owner' },\n {\n type: 'uint8',\n name: 'newStatus',\n },\n ],\n outputs: [],\n },\n {\n type: 'function',\n name: 'changeUserAccountVerificationStatus',\n constant: false,\n payable: false,\n inputs: [\n { type: 'bytes16', name: 'parentEntity' },\n { type: 'address', name: 'owner' },\n {\n type: 'uint8',\n name: 'newStatus',\n },\n ],\n outputs: [],\n },\n {\n type: 'function',\n name: 'changeWalletConfirmationStatus',\n constant: false,\n payable: false,\n inputs: [\n { type: 'bytes16', name: 'parentEntity' },\n { type: 'address', name: 'wallet' },\n {\n type: 'uint8',\n name: 'status',\n },\n ],\n outputs: [],\n },\n {\n type: 'function',\n name: 'createAccount',\n constant: false,\n payable: false,\n inputs: [],\n outputs: [],\n },\n {\n type: 'function',\n name: 'createUserAccount',\n constant: false,\n payable: false,\n inputs: [{ type: 'bytes16', name: 'parentEntity' }],\n outputs: [],\n },\n {\n type: 'function',\n name: 'createUserAccountWithWallet',\n constant: false,\n payable: false,\n inputs: [{ type: 'bytes16', name: 'parentEntity' }],\n outputs: [],\n },\n {\n type: 'function',\n name: 'getAccount',\n constant: true,\n stateMutability: 'view',\n payable: false,\n inputs: [{ type: 'address', name: 'owner' }],\n outputs: [\n {\n type: 'tuple',\n name: '',\n components: [\n { type: 'uint8', name: 'status' },\n { type: 'uint8', name: 'verificationStatus' },\n ],\n },\n ],\n },\n {\n type: 'function',\n name: 'getUserAccount',\n constant: true,\n stateMutability: 'view',\n payable: false,\n inputs: [\n { type: 'address', name: 'owner' },\n { type: 'bytes16', name: 'parentEntity' },\n ],\n outputs: [\n {\n type: 'tuple',\n name: '',\n components: [\n { type: 'uint8', name: 'status' },\n { type: 'uint8', name: 'verificationStatus' },\n ],\n },\n ],\n },\n {\n type: 'function',\n name: 'getWallet',\n constant: true,\n stateMutability: 'view',\n payable: false,\n inputs: [\n { type: 'bytes16', name: 'parentEntity' },\n { type: 'address', name: 'wallet' },\n ],\n outputs: [\n {\n type: 'tuple',\n name: '',\n components: [\n { type: 'uint8', name: 'confirmationStatus' },\n { type: 'address', name: 'owner' },\n ],\n },\n ],\n },\n {\n type: 'function',\n name: 'init',\n constant: false,\n payable: false,\n inputs: [{ type: 'address', name: 'register' }],\n outputs: [],\n },\n {\n type: 'function',\n name: 'linkWallet',\n constant: false,\n payable: false,\n inputs: [{ type: 'bytes16', name: 'parentEntity' }],\n outputs: [],\n },\n {\n type: 'function',\n name: 'migrateAccount',\n constant: false,\n payable: false,\n inputs: [],\n outputs: [],\n },\n {\n type: 'function',\n name: 'removeWalletRole',\n constant: false,\n payable: false,\n inputs: [\n { type: 'bytes16', name: 'parentEntity' },\n { type: 'address', name: 'account' },\n {\n type: 'address',\n name: 'wallet',\n },\n ],\n outputs: [],\n },\n] as const;\n","export const corporateAccountsAbi = [\n {\n type: 'function',\n name: 'getCorporation',\n constant: true,\n stateMutability: 'view',\n payable: false,\n inputs: [\n { type: 'bytes16', name: 'companyId' },\n { type: 'address', name: 'wallet' },\n ],\n outputs: [\n {\n type: 'tuple',\n name: '',\n components: [\n { type: 'address', name: 'creator' },\n { type: 'uint8', name: 'status' },\n { type: 'uint8', name: 'verificationStatus' },\n { type: 'uint8', name: 'walletStatus' },\n ],\n },\n ],\n },\n {\n type: 'function',\n name: 'createCorporation',\n constant: false,\n payable: false,\n inputs: [{ type: 'bytes16', name: 'companyId' }],\n outputs: [],\n },\n] as const;\n","export const syntheticAbi = [\n {\n inputs: [{ internalType: \"address\", name: \"_lzEndpoint\", type: \"address\" }],\n stateMutability: \"nonpayable\",\n type: \"constructor\",\n },\n { inputs: [], name: \"AccessControlBadConfirmation\", type: \"error\" },\n {\n inputs: [\n { internalType: \"address\", name: \"account\", type: \"address\" },\n { internalType: \"bytes32\", name: \"neededRole\", type: \"bytes32\" },\n ],\n name: \"AccessControlUnauthorizedAccount\",\n type: \"error\",\n },\n {\n inputs: [{ internalType: \"uint256\", name: \"amountSD\", type: \"uint256\" }],\n name: \"AmountSDOverflowed\",\n type: \"error\",\n },\n { inputs: [], name: \"ECDSAInvalidSignature\", type: \"error\" },\n {\n inputs: [{ internalType: \"uint256\", name: \"length\", type: \"uint256\" }],\n name: \"ECDSAInvalidSignatureLength\",\n type: \"error\",\n },\n {\n inputs: [{ internalType: \"bytes32\", name: \"s\", type: \"bytes32\" }],\n name: \"ECDSAInvalidSignatureS\",\n type: \"error\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"spender\", type: \"address\" },\n { internalType: \"uint256\", name: \"allowance\", type: \"uint256\" },\n { internalType: \"uint256\", name: \"needed\", type: \"uint256\" },\n ],\n name: \"ERC20InsufficientAllowance\",\n type: \"error\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"sender\", type: \"address\" },\n { internalType: \"uint256\", name: \"balance\", type: \"uint256\" },\n { internalType: \"uint256\", name: \"needed\", type: \"uint256\" },\n ],\n name: \"ERC20InsufficientBalance\",\n type: \"error\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"approver\", type: \"address\" }],\n name: \"ERC20InvalidApprover\",\n type: \"error\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"receiver\", type: \"address\" }],\n name: \"ERC20InvalidReceiver\",\n type: \"error\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"sender\", type: \"address\" }],\n name: \"ERC20InvalidSender\",\n type: \"error\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"spender\", type: \"address\" }],\n name: \"ERC20InvalidSpender\",\n type: \"error\",\n },\n {\n inputs: [{ internalType: \"uint256\", name: \"deadline\", type: \"uint256\" }],\n name: \"ERC2612ExpiredSignature\",\n type: \"error\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"signer\", type: \"address\" },\n { internalType: \"address\", name: \"owner\", type: \"address\" },\n ],\n name: \"ERC2612InvalidSigner\",\n type: \"error\",\n },\n { inputs: [], name: \"ISyntheticErrors_AddressZero\", type: \"error\" },\n { inputs: [], name: \"ISyntheticErrors_AlreadyProcessed\", type: \"error\" },\n { inputs: [], name: \"ISyntheticErrors_AmountNotDivisible\", type: \"error\" },\n { inputs: [], name: \"ISyntheticErrors_DepositNA\", type: \"error\" },\n {\n inputs: [],\n name: \"ISyntheticErrors_InsufficientVaultBalance\",\n type: \"error\",\n },\n {\n inputs: [],\n name: \"ISyntheticErrors_InsufficientVaultFunds\",\n type: \"error\",\n },\n { inputs: [], name: \"ISyntheticErrors_InvalidAddress\", type: \"error\" },\n { inputs: [], name: \"ISyntheticErrors_InvalidAmount\", type: \"error\" },\n { inputs: [], name: \"ISyntheticErrors_InvalidBaseAddress\", type: \"error\" },\n { inputs: [], name: \"ISyntheticErrors_InvalidDecimals\", type: \"error\" },\n { inputs: [], name: \"ISyntheticErrors_InvalidParameter\", type: \"error\" },\n { inputs: [], name: \"ISyntheticErrors_InvalidTokenAddress\", type: \"error\" },\n { inputs: [], name: \"ISyntheticErrors_NoYieldToClaim\", type: \"error\" },\n { inputs: [], name: \"ISyntheticErrors_NotCoreChain\", type: \"error\" },\n { inputs: [], name: \"ISyntheticErrors_RangeToLarge\", type: \"error\" },\n { inputs: [], name: \"ISyntheticErrors_RequestNotFound\", type: \"error\" },\n { inputs: [], name: \"ISyntheticErrors_WithdrawNA\", type: \"error\" },\n {\n inputs: [\n { internalType: \"address\", name: \"account\", type: \"address\" },\n { internalType: \"uint256\", name: \"currentNonce\", type: \"uint256\" },\n ],\n name: \"InvalidAccountNonce\",\n type: \"error\",\n },\n { inputs: [], name: \"InvalidDelegate\", type: \"error\" },\n { inputs: [], name: \"InvalidEndpointCall\", type: \"error\" },\n { inputs: [], name: \"InvalidInitialization\", type: \"error\" },\n { inputs: [], name: \"InvalidLocalDecimals\", type: \"error\" },\n {\n inputs: [{ internalType: \"bytes\", name: \"options\", type: \"bytes\" }],\n name: \"InvalidOptions\",\n type: \"error\",\n },\n { inputs: [], name: \"LzTokenUnavailable\", type: \"error\" },\n {\n inputs: [{ internalType: \"uint32\", name: \"eid\", type: \"uint32\" }],\n name: \"NoPeer\",\n type: \"error\",\n },\n {\n inputs: [{ internalType: \"uint256\", name: \"msgValue\", type: \"uint256\" }],\n name: \"NotEnoughNative\",\n type: \"error\",\n },\n { inputs: [], name: \"NotInitializing\", type: \"error\" },\n {\n inputs: [{ internalType: \"address\", name: \"addr\", type: \"address\" }],\n name: \"OnlyEndpoint\",\n type: \"error\",\n },\n {\n inputs: [\n { internalType: \"uint32\", name: \"eid\", type: \"uint32\" },\n { internalType: \"bytes32\", name: \"sender\", type: \"bytes32\" },\n ],\n name: \"OnlyPeer\",\n type: \"error\",\n },\n { inputs: [], name: \"OnlySelf\", 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 {\n inputs: [{ internalType: \"bytes\", name: \"result\", type: \"bytes\" }],\n name: \"SimulationResult\",\n type: \"error\",\n },\n {\n inputs: [\n { internalType: \"uint256\", name: \"amountLD\", type: \"uint256\" },\n { internalType: \"uint256\", name: \"minAmountLD\", type: \"uint256\" },\n ],\n name: \"SlippageExceeded\",\n type: \"error\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"oldAdmin\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"newAdmin\",\n type: \"address\",\n },\n ],\n name: \"AdminChanged\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"owner\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"spender\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"value\",\n type: \"uint256\",\n },\n ],\n name: \"Approval\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"uint32\",\n name: \"updatedApr\",\n type: \"uint32\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"blockTime\",\n type: \"uint256\",\n },\n ],\n name: \"AprChanged\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"bool\",\n name: \"isDepositable\",\n type: \"bool\",\n },\n ],\n name: \"DepositableChanged\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"address\", name: \"user\", type: \"address\" },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"amount\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"timestamp\",\n type: \"uint256\",\n },\n ],\n name: \"Deposited\",\n type: \"event\",\n },\n { anonymous: false, inputs: [], name: \"EIP712DomainChanged\", type: \"event\" },\n {\n anonymous: false,\n inputs: [\n {\n components: [\n { internalType: \"uint32\", name: \"eid\", type: \"uint32\" },\n { internalType: \"uint16\", name: \"msgType\", type: \"uint16\" },\n { internalType: \"bytes\", name: \"options\", type: \"bytes\" },\n ],\n indexed: false,\n internalType: \"struct EnforcedOptionParam[]\",\n name: \"_enforcedOptions\",\n type: \"tuple[]\",\n },\n ],\n name: \"EnforcedOptionSet\",\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: \"address\",\n name: \"receiver\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"transferAmount\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"vaultBalance\",\n type: \"uint256\",\n },\n ],\n name: \"InsufficientVaultFunds\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"address\",\n name: \"inspector\",\n type: \"address\",\n },\n ],\n name: \"MsgInspectorSet\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"bytes32\", name: \"guid\", type: \"bytes32\" },\n {\n indexed: false,\n internalType: \"uint32\",\n name: \"srcEid\",\n type: \"uint32\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"toAddress\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"amountReceivedLD\",\n type: \"uint256\",\n },\n ],\n name: \"OFTReceived\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"bytes32\", name: \"guid\", type: \"bytes32\" },\n {\n indexed: false,\n internalType: \"uint32\",\n name: \"dstEid\",\n type: \"uint32\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"fromAddress\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"amountSentLD\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"amountReceivedLD\",\n type: \"uint256\",\n },\n ],\n name: \"OFTSent\",\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 { indexed: false, internalType: \"uint32\", name: \"eid\", type: \"uint32\" },\n {\n indexed: false,\n internalType: \"bytes32\",\n name: \"peer\",\n type: \"bytes32\",\n },\n ],\n name: \"PeerSet\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"address\",\n name: \"preCrimeAddress\",\n type: \"address\",\n },\n ],\n name: \"PreCrimeSet\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"bytes32\", name: \"role\", type: \"bytes32\" },\n {\n indexed: true,\n internalType: \"bytes32\",\n name: \"previousAdminRole\",\n type: \"bytes32\",\n },\n {\n indexed: true,\n internalType: \"bytes32\",\n name: \"newAdminRole\",\n type: \"bytes32\",\n },\n ],\n name: \"RoleAdminChanged\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"bytes32\", name: \"role\", type: \"bytes32\" },\n {\n indexed: true,\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"sender\",\n type: \"address\",\n },\n ],\n name: \"RoleGranted\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"bytes32\", name: \"role\", type: \"bytes32\" },\n {\n indexed: true,\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"sender\",\n type: \"address\",\n },\n ],\n name: \"RoleRevoked\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"token\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"receiver\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"amount\",\n type: \"uint256\",\n },\n ],\n name: \"TokensRescued\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"address\", name: \"from\", type: \"address\" },\n { indexed: true, internalType: \"address\", name: \"to\", type: \"address\" },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"value\",\n type: \"uint256\",\n },\n ],\n name: \"Transfer\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"user\",\n type: \"address\"\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"accumulatedYield\",\n type: \"uint256\"\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"lastBalance\",\n type: \"uint256\"\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"currentBalance\",\n type: \"uint256\"\n },\n {\n indexed: false,\n internalType: \"uint64\",\n name: \"lastUpdateTime\",\n type: \"uint64\"\n }\n ],\n name: \"UserYieldChanged\",\n type: \"event\"\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"uint256\",\n name: \"requestId\",\n type: \"uint256\",\n },\n { indexed: true, internalType: \"address\", name: \"user\", type: \"address\" },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"amount\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"createdTime\",\n type: \"uint256\",\n },\n ],\n name: \"WithdrawRequestCreated\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"uint256\",\n name: \"requestId\",\n type: \"uint256\",\n },\n { indexed: true, internalType: \"address\", name: \"user\", type: \"address\" },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"amount\",\n type: \"uint256\",\n },\n ],\n name: \"WithdrawRequestProcessed\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"bool\",\n name: \"isWithdrawable\",\n type: \"bool\",\n },\n ],\n name: \"WithdrawableChanged\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, internalType: \"address\", name: \"user\", type: \"address\" },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"amount\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"timestamp\",\n type: \"uint256\",\n },\n ],\n name: \"Withdrawn\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"address\",\n name: \"user\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"yieldToClaim\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"timestamp\",\n type: \"uint256\",\n },\n ],\n name: \"YieldClaimed\",\n type: \"event\",\n },\n {\n inputs: [],\n name: \"ADMIN_ROLE\",\n outputs: [{ internalType: \"bytes32\", name: \"\", type: \"bytes32\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"BASE_TOKEN_DECIMALS\",\n outputs: [{ internalType: \"uint8\", name: \"\", type: \"uint8\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"BURNER_ROLE\",\n outputs: [{ internalType: \"bytes32\", name: \"\", type: \"bytes32\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"DECIMALS_CONVERSION\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"DEFAULT_ADMIN_ROLE\",\n outputs: [{ internalType: \"bytes32\", name: \"\", type: \"bytes32\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"DOMAIN_SEPARATOR\",\n outputs: [{ internalType: \"bytes32\", name: \"\", type: \"bytes32\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"MINTER_ROLE\",\n outputs: [{ internalType: \"bytes32\", name: \"\", type: \"bytes32\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"SEND\",\n outputs: [{ internalType: \"uint16\", name: \"\", type: \"uint16\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"SEND_AND_CALL\",\n outputs: [{ internalType: \"uint16\", name: \"\", type: \"uint16\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"uint256\", name: \"amount\", type: \"uint256\" }],\n name: \"adminAddFunds\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n { internalType: \"uint32\", name: \"srcEid\", type: \"uint32\" },\n { internalType: \"bytes32\", name: \"sender\", type: \"bytes32\" },\n { internalType: \"uint64\", name: \"nonce\", type: \"uint64\" },\n ],\n internalType: \"struct Origin\",\n name: \"origin\",\n type: \"tuple\",\n },\n ],\n name: \"allowInitializePath\",\n outputs: [{ internalType: \"bool\", name: \"\", type: \"bool\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"owner\", type: \"address\" },\n { internalType: \"address\", name: \"spender\", type: \"address\" },\n ],\n name: \"allowance\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"approvalRequired\",\n outputs: [{ internalType: \"bool\", name: \"\", type: \"bool\" }],\n stateMutability: \"pure\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"spender\", type: \"address\" },\n { internalType: \"uint256\", name: \"value\", type: \"uint256\" },\n ],\n name: \"approve\",\n outputs: [{ internalType: \"bool\", name: \"\", type: \"bool\" }],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"apr\",\n outputs: [{ internalType: \"uint32\", name: \"\", type: \"uint32\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"account\", type: \"address\" }],\n name: \"balanceOf\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"baseToken\",\n outputs: [{ internalType: \"address\", name: \"\", type: \"address\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"_user\", type: \"address\" },\n { internalType: \"uint256\", name: \"_amount\", type: \"uint256\" },\n ],\n name: \"burn\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"uint256\", name: \"requestId\", type: \"uint256\" }],\n name: \"canProcessRequest\",\n outputs: [\n { internalType: \"bool\", name: \"canProcess\", type: \"bool\" },\n { internalType: \"string\", name: \"reason\", type: \"string\" },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"claimFailedWithdraw\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"claimYield\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"uint32\", name: \"_eid\", type: \"uint32\" },\n { internalType: \"uint16\", name: \"_msgType\", type: \"uint16\" },\n { internalType: \"bytes\", name: \"_extraOptions\", type: \"bytes\" },\n ],\n name: \"combineOptions\",\n outputs: [{ internalType: \"bytes\", name: \"\", type: \"bytes\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"decimalConversionRate\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"decimals\",\n outputs: [{ internalType: \"uint8\", name: \"\", type: \"uint8\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"uint256\", name: \"amount\", type: \"uint256\" }],\n name: \"deposit\",\n outputs: [{ internalType: \"uint256\", name: \"mintAmount\", type: \"uint256\" }],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"transferTo\", type: \"address\" }],\n name: \"depositAllAndTransfer\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n { internalType: \"address\", name: \"recipient\", type: \"address\" },\n ],\n name: \"depositTo\",\n outputs: [{ internalType: \"uint256\", name: \"mintAmount\", type: \"uint256\" }],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"eip712Domain\",\n outputs: [\n { internalType: \"bytes1\", name: \"fields\", type: \"bytes1\" },\n { internalType: \"string\", name: \"name\", type: \"string\" },\n { internalType: \"string\", name: \"version\", type: \"string\" },\n { internalType: \"uint256\", name: \"chainId\", type: \"uint256\" },\n { internalType: \"address\", name: \"verifyingContract\", type: \"address\" },\n { internalType: \"bytes32\", name: \"salt\", type: \"bytes32\" },\n { internalType: \"uint256[]\", name: \"extensions\", type: \"uint256[]\" },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"endpoint\",\n outputs: [\n {\n internalType: \"contract ILayerZeroEndpointV2\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"uint32\", name: \"_eid\", type: \"uint32\" },\n { internalType: \"uint16\", name: \"_msgType\", type: \"uint16\" },\n ],\n name: \"enforcedOptions\",\n outputs: [{ internalType: \"bytes\", name: \"\", type: \"bytes\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"uint256\", name: \"batchSize\", type: \"uint256\" }],\n name: \"getNextProcessableBatch\",\n outputs: [\n { internalType: \"uint256[]\", name: \"requestIds\", type: \"uint256[]\" },\n { internalType: \"uint256\", name: \"totalRequired\", type: \"uint256\" },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"uint256\", name: \"startId\", type: \"uint256\" },\n { internalType: \"uint256\", name: \"endId\", type: \"uint256\" },\n ],\n name: \"getPendingRequestsCount\",\n outputs: [{ internalType: \"uint256\", name: \"count\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"bytes32\", name: \"role\", type: \"bytes32\" }],\n name: \"getRoleAdmin\",\n outputs: [{ internalType: \"bytes32\", name: \"\", type: \"bytes32\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"user\", type: \"address\" }],\n name: \"getUserWithdrawRequests\",\n outputs: [{ internalType: \"uint256[]\", name: \"\", type: \"uint256[]\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"bytes32\", name: \"role\", type: \"bytes32\" },\n { internalType: \"address\", name: \"account\", type: \"address\" },\n ],\n name: \"grantRole\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"bytes32\", name: \"role\", type: \"bytes32\" },\n { internalType: \"address\", name: \"account\", type: \"address\" },\n ],\n name: \"hasRole\",\n outputs: [{ internalType: \"bool\", name: \"\", type: \"bool\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"string\", name: \"_name\", type: \"string\" },\n { internalType: \"string\", name: \"_symbol\", type: \"string\" },\n { internalType: \"address\", name: \"_baseToken\", type: \"address\" },\n { internalType: \"uint8\", name: \"_baseTokenDecimals\", type: \"uint8\" },\n { internalType: \"address\", name: \"_ownerOrDelegate\", type: \"address\" },\n { internalType: \"bool\", name: \"_isCoreChain\", type: \"bool\" },\n ],\n name: \"initialize\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n { internalType: \"uint32\", name: \"srcEid\", type: \"uint32\" },\n { internalType: \"bytes32\", name: \"sender\", type: \"bytes32\" },\n { internalType: \"uint64\", name: \"nonce\", type: \"uint64\" },\n ],\n internalType: \"struct Origin\",\n name: \"\",\n type: \"tuple\",\n },\n { internalType: \"bytes\", name: \"\", type: \"bytes\" },\n { internalType: \"address\", name: \"_sender\", type: \"address\" },\n ],\n name: \"isComposeMsgSender\",\n outputs: [{ internalType: \"bool\", name: \"\", type: \"bool\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"isCoreChain\",\n outputs: [{ internalType: \"bool\", name: \"\", type: \"bool\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"isDepositable\",\n outputs: [{ internalType: \"bool\", name: \"\", type: \"bool\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"uint32\", name: \"_eid\", type: \"uint32\" },\n { internalType: \"bytes32\", name: \"_peer\", type: \"bytes32\" },\n ],\n name: \"isPeer\",\n outputs: [{ internalType: \"bool\", name: \"\", type: \"bool\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"isWithdrawable\",\n outputs: [{ internalType: \"bool\", name: \"\", type: \"bool\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n { internalType: \"uint32\", name: \"srcEid\", type: \"uint32\" },\n { internalType: \"bytes32\", name: \"sender\", type: \"bytes32\" },\n { internalType: \"uint64\", name: \"nonce\", type: \"uint64\" },\n ],\n internalType: \"struct Origin\",\n name: \"_origin\",\n type: \"tuple\",\n },\n { internalType: \"bytes32\", name: \"_guid\", type: \"bytes32\" },\n { internalType: \"bytes\", name: \"_message\", type: \"bytes\" },\n { internalType: \"address\", name: \"_executor\", type: \"address\" },\n { internalType: \"bytes\", name: \"_extraData\", type: \"bytes\" },\n ],\n name: \"lzReceive\",\n outputs: [],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n {\n components: [\n { internalType: \"uint32\", name: \"srcEid\", type: \"uint32\" },\n { internalType: \"bytes32\", name: \"sender\", type: \"bytes32\" },\n { internalType: \"uint64\", name: \"nonce\", type: \"uint64\" },\n ],\n internalType: \"struct Origin\",\n name: \"origin\",\n type: \"tuple\",\n },\n { internalType: \"uint32\", name: \"dstEid\", type: \"uint32\" },\n { internalType: \"address\", name: \"receiver\", type: \"address\" },\n { internalType: \"bytes32\", name: \"guid\", type: \"bytes32\" },\n { internalType: \"uint256\", name: \"value\", type: \"uint256\" },\n { internalType: \"address\", name: \"executor\", type: \"address\" },\n { internalType: \"bytes\", name: \"message\", type: \"bytes\" },\n { internalType: \"bytes\", name: \"extraData\", type: \"bytes\" },\n ],\n internalType: \"struct InboundPacket[]\",\n name: \"_packets\",\n type: \"tuple[]\",\n },\n ],\n name: \"lzReceiveAndRevert\",\n outputs: [],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n { internalType: \"uint32\", name: \"srcEid\", type: \"uint32\" },\n { internalType: \"bytes32\", name: \"sender\", type: \"bytes32\" },\n { internalType: \"uint64\", name: \"nonce\", type: \"uint64\" },\n ],\n internalType: \"struct Origin\",\n name: \"_origin\",\n type: \"tuple\",\n },\n { internalType: \"bytes32\", name: \"_guid\", type: \"bytes32\" },\n { internalType: \"bytes\", name: \"_message\", type: \"bytes\" },\n { internalType: \"address\", name: \"_executor\", type: \"address\" },\n { internalType: \"bytes\", name: \"_extraData\", type: \"bytes\" },\n ],\n name: \"lzReceiveSimulate\",\n outputs: [],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"maxRequestsPerBatch\",\n outputs: [{ internalType: \"uint16\", name: \"\", type: \"uint16\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"maxViewRange\",\n outputs: [{ internalType: \"uint8\", name: \"\", type: \"uint8\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"_user\", type: \"address\" },\n { internalType: \"uint256\", name: \"_amount\", type: \"uint256\" },\n ],\n name: \"mint\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"msgInspector\",\n outputs: [{ internalType: \"address\", name: \"\", type: \"address\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"name\",\n outputs: [{ internalType: \"string\", name: \"\", type: \"string\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"uint32\", name: \"\", type: \"uint32\" },\n { internalType: \"bytes32\", name: \"\", type: \"bytes32\" },\n ],\n name: \"nextNonce\",\n outputs: [{ internalType: \"uint64\", name: \"nonce\", type: \"uint64\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"owner\", type: \"address\" }],\n name: \"nonces\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"oApp\",\n outputs: [{ internalType: \"address\", name: \"\", type: \"address\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"oAppVersion\",\n outputs: [\n { internalType: \"uint64\", name: \"senderVersion\", type: \"uint64\" },\n { internalType: \"uint64\", name: \"receiverVersion\", type: \"uint64\" },\n ],\n stateMutability: \"pure\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"oftVersion\",\n outputs: [\n { internalType: \"bytes4\", name: \"interfaceId\", type: \"bytes4\" },\n { internalType: \"uint64\", name: \"version\", type: \"uint64\" },\n ],\n stateMutability: \"pure\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"oldestUnprocessedRequest\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n stateMutability: \"view\",\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: [{ internalType: \"uint32\", name: \"_eid\", type: \"uint32\" }],\n name: \"peers\",\n outputs: [{ internalType: \"bytes32\", name: \"\", type: \"bytes32\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"\", type: \"address\" }],\n name: \"pendingBalances\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"account\", type: \"address\" }],\n name: \"pendingYield\",\n outputs: [\n {\n components: [\n {\n internalType: \"uint256\",\n name: \"accumulatedYield\",\n type: \"uint256\",\n },\n { internalType: \"uint256\", name: \"lastBalance\", type: \"uint256\" },\n { internalType: \"uint64\", name: \"lastUpdateTime\", type: \"uint64\" },\n ],\n internalType: \"struct ISyntheticStructs.UserYield\",\n name: \"info\",\n type: \"tuple\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"\", type: \"address\" }],\n name: \"claimedYield\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\"\n },\n {\n inputs: [\n { internalType: \"address\", name: \"owner\", type: \"address\" },\n { internalType: \"address\", name: \"spender\", type: \"address\" },\n { internalType: \"uint256\", name: \"value\", type: \"uint256\" },\n { internalType: \"uint256\", name: \"deadline\", type: \"uint256\" },\n { internalType: \"uint8\", name: \"v\", type: \"uint8\" },\n { internalType: \"bytes32\", name: \"r\", type: \"bytes32\" },\n { internalType: \"bytes32\", name: \"s\", type: \"bytes32\" },\n ],\n name: \"permit\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"preCrime\",\n outputs: [{ internalType: \"address\", name: \"\", type: \"address\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n { internalType: \"uint32\", name: \"dstEid\", type: \"uint32\" },\n { internalType: \"bytes32\", name: \"to\", type: \"bytes32\" },\n { internalType: \"uint256\", name: \"amountLD\", type: \"uint256\" },\n { internalType: \"uint256\", name: \"minAmountLD\", type: \"uint256\" },\n { internalType: \"bytes\", name: \"extraOptions\", type: \"bytes\" },\n { internalType: \"bytes\", name: \"composeMsg\", type: \"bytes\" },\n { internalType: \"bytes\", name: \"oftCmd\", type: \"bytes\" },\n ],\n internalType: \"struct SendParam\",\n name: \"_sendParam\",\n type: \"tuple\",\n },\n ],\n name: \"quoteOFT\",\n outputs: [\n {\n components: [\n { internalType: \"uint256\", name: \"minAmountLD\", type: \"uint256\" },\n { internalType: \"uint256\", name: \"maxAmountLD\", type: \"uint256\" },\n ],\n internalType: \"struct OFTLimit\",\n name: \"oftLimit\",\n type: \"tuple\",\n },\n {\n components: [\n { internalType: \"int256\", name: \"feeAmountLD\", type: \"int256\" },\n { internalType: \"string\", name: \"description\", type: \"string\" },\n ],\n internalType: \"struct OFTFeeDetail[]\",\n name: \"oftFeeDetails\",\n type: \"tuple[]\",\n },\n {\n components: [\n { internalType: \"uint256\", name: \"amountSentLD\", type: \"uint256\" },\n {\n internalType: \"uint256\",\n name: \"amountReceivedLD\",\n type: \"uint256\",\n },\n ],\n internalType: \"struct OFTReceipt\",\n name: \"oftReceipt\",\n type: \"tuple\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n { internalType: \"uint32\", name: \"dstEid\", type: \"uint32\" },\n { internalType: \"bytes32\", name: \"to\", type: \"bytes32\" },\n { internalType: \"uint256\", name: \"amountLD\", type: \"uint256\" },\n { internalType: \"uint256\", name: \"minAmountLD\", type: \"uint256\" },\n { internalType: \"bytes\", name: \"extraOptions\", type: \"bytes\" },\n { internalType: \"bytes\", name: \"composeMsg\", type: \"bytes\" },\n { internalType: \"bytes\", name: \"oftCmd\", type: \"bytes\" },\n ],\n internalType: \"struct SendParam\",\n name: \"_sendParam\",\n type: \"tuple\",\n },\n { internalType: \"bool\", name: \"_payInLzToken\", type: \"bool\" },\n ],\n name: \"quoteSend\",\n outputs: [\n {\n components: [\n { internalType: \"uint256\", name: \"nativeFee\", type: \"uint256\" },\n { internalType: \"uint256\", name: \"lzTokenFee\", type: \"uint256\" },\n ],\n internalType: \"struct MessagingFee\",\n name: \"msgFee\",\n type: \"tuple\",\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 { internalType: \"bytes32\", name: \"role\", type: \"bytes32\" },\n { internalType: \"address\", name: \"callerConfirmation\", type: \"address\" },\n ],\n name: \"renounceRole\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"_token\", type: \"address\" },\n { internalType: \"address\", name: \"_to\", type: \"address\" },\n { internalType: \"uint256\", name: \"_amount\", type: \"uint256\" },\n ],\n name: \"rescueTokens\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"bytes32\", name: \"role\", type: \"bytes32\" },\n { internalType: \"address\", name: \"account\", type: \"address\" },\n ],\n name: \"revokeRole\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n { internalType: \"uint32\", name: \"dstEid\", type: \"uint32\" },\n { internalType: \"bytes32\", name: \"to\", type: \"bytes32\" },\n { internalType: \"uint256\", name: \"amountLD\", type: \"uint256\" },\n { internalType: \"uint256\", name: \"minAmountLD\", type: \"uint256\" },\n { internalType: \"bytes\", name: \"extraOptions\", type: \"bytes\" },\n { internalType: \"bytes\", name: \"composeMsg\", type: \"bytes\" },\n { internalType: \"bytes\", name: \"oftCmd\", type: \"bytes\" },\n ],\n internalType: \"struct SendParam\",\n name: \"_sendParam\",\n type: \"tuple\",\n },\n {\n components: [\n { internalType: \"uint256\", name: \"nativeFee\", type: \"uint256\" },\n { internalType: \"uint256\", name: \"lzTokenFee\", type: \"uint256\" },\n ],\n internalType: \"struct MessagingFee\",\n name: \"_fee\",\n type: \"tuple\",\n },\n { internalType: \"address\", name: \"_refundAddress\", type: \"address\" },\n ],\n name: \"send\",\n outputs: [\n {\n components: [\n { internalType: \"bytes32\", name: \"guid\", type: \"bytes32\" },\n { internalType: \"uint64\", name: \"nonce\", type: \"uint64\" },\n {\n components: [\n { internalType: \"uint256\", name: \"nativeFee\", type: \"uint256\" },\n { internalType: \"uint256\", name: \"lzTokenFee\", type: \"uint256\" },\n ],\n internalType: \"struct MessagingFee\",\n name: \"fee\",\n type: \"tuple\",\n },\n ],\n internalType: \"struct MessagingReceipt\",\n name: \"msgReceipt\",\n type: \"tuple\",\n },\n {\n components: [\n { internalType: \"uint256\", name: \"amountSentLD\", type: \"uint256\" },\n {\n internalType: \"uint256\",\n name: \"amountReceivedLD\",\n type: \"uint256\",\n },\n ],\n internalType: \"struct OFTReceipt\",\n name: \"oftReceipt\",\n type: \"tuple\",\n },\n ],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"uint32\", name: \"_apr\", type: \"uint32\" }],\n name: \"setApr\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"_delegate\", type: \"address\" }],\n name: \"setDelegate\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"bool\", name: \"_isDepositable\", type: \"bool\" }],\n name: \"setDepositable\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n { internalType: \"uint32\", name: \"eid\", type: \"uint32\" },\n { internalType: \"uint16\", name: \"msgType\", type: \"uint16\" },\n { internalType: \"bytes\", name: \"options\", type: \"bytes\" },\n ],\n internalType: \"struct EnforcedOptionParam[]\",\n name: \"_enforcedOptions\",\n type: \"tuple[]\",\n },\n ],\n name: \"setEnforcedOptions\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"uint16\", name: \"_maxRequests\", type: \"uint16\" }],\n name: \"setMaxRequestsPerBatch\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"uint8\", name: \"_maxRange\", type: \"uint8\" }],\n name: \"setMaxViewRange\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"_msgInspector\", type: \"address\" },\n ],\n name: \"setMsgInspector\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"uint32\", name: \"_eid\", type: \"uint32\" },\n { internalType: \"bytes32\", name: \"_peer\", type: \"bytes32\" },\n ],\n name: \"setPeer\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"_preCrime\", type: \"address\" }],\n name: \"setPreCrime\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"_strategy\", type: \"address\" }],\n name: \"setStrategy\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"bool\", name: \"_isWithdrawable\", type: \"bool\" }],\n name: \"setWithdrawable\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"_calculator\", type: \"address\" }],\n name: \"setYieldCalculator\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"sharedDecimals\",\n outputs: [{ internalType: \"uint8\", name: \"\", type: \"uint8\" }],\n stateMutability: \"pure\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"strategy\",\n outputs: [\n { internalType: \"contract IStrategy\", name: \"\", type: \"address\" },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"uint256\", name: \"amount\", type: \"uint256\" }],\n name: \"supplyMorpho\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"bytes4\", name: \"interfaceId\", type: \"bytes4\" }],\n name: \"supportsInterface\",\n outputs: [{ internalType: \"bool\", name: \"\", type: \"bool\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"symbol\",\n outputs: [{ internalType: \"string\", name: \"\", type: \"string\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"token\",\n outputs: [{ internalType: \"address\", name: \"\", type: \"address\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"totalSupply\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"to\", type: \"address\" },\n { internalType: \"uint256\", name: \"value\", type: \"uint256\" },\n ],\n name: \"transfer\",\n outputs: [{ internalType: \"bool\", name: \"\", type: \"bool\" }],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"from\", type: \"address\" },\n { internalType: \"address\", name: \"to\", type: \"address\" },\n { internalType: \"uint256\", name: \"value\", type: \"uint256\" },\n ],\n name: \"transferFrom\",\n outputs: [{ internalType: \"bool\", name: \"\", type: \"bool\" }],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\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: \"\", type: \"address\" },\n { internalType: \"uint256\", name: \"\", type: \"uint256\" },\n ],\n name: \"userWithdrawRequests\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"\", type: \"address\" }],\n name: \"userYields\",\n outputs: [\n { internalType: \"uint256\", name: \"accumulatedYield\", type: \"uint256\" },\n { internalType: \"uint256\", name: \"lastBalance\", type: \"uint256\" },\n { internalType: \"uint64\", name: \"lastUpdateTime\", type: \"uint64\" },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"uint256\", name: \"amount\", type: \"uint256\" }],\n name: \"withdraw\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"withdrawRequestCounter\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n name: \"withdrawRequests\",\n outputs: [\n { internalType: \"address\", name: \"user\", type: \"address\" },\n { internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n { internalType: \"uint256\", name: \"requestTime\", type: \"uint256\" },\n { internalType: \"bool\", name: \"processed\", type: \"bool\" },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n { internalType: \"address\", name: \"recipient\", type: \"address\" },\n ],\n name: \"withdrawTo\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"yieldCalculator\",\n outputs: [\n { internalType: \"contract IYieldCalculator\", name: \"\", type: \"address\" },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n] as const;\n","export const fundsManagementAbi = [{\n 'type': 'error',\n 'name': 'AlreadyInitialized',\n 'inputs': [{ 'type': 'address', 'name': 'smartAccount' }]\n}, { 'type': 'error', 'name': 'InvalidInitialization', 'inputs': [] }, {\n 'type': 'error',\n 'name': 'NotInitialized',\n 'inputs': [{ 'type': 'address', 'name': 'smartAccount' }]\n}, { 'type': 'error', 'name': 'NotInitializing', 'inputs': [] }, {\n 'type': 'error',\n 'name': 'ReentrancyGuardReentrantCall',\n 'inputs': []\n}, {\n 'type': 'error',\n 'name': 'SafeERC20FailedOperation',\n 'inputs': [{ 'type': 'address', 'name': 'token' }]\n}, {\n 'type': 'event',\n 'anonymous': false,\n 'name': 'BatchTransactionApproved',\n 'inputs': [{ 'type': 'bytes16', 'name': 'transactionId', 'indexed': true }, {\n 'type': 'bytes16',\n 'name': 'operationId',\n 'indexed': true\n }, { 'type': 'address', 'name': 'wallet', 'indexed': true }, {\n 'type': 'address',\n 'name': 'token',\n 'indexed': false\n }, { 'type': 'uint256', 'name': 'totalAmount', 'indexed': false }, {\n 'type': 'uint256',\n 'name': 'createdAt',\n 'indexed': false\n }]\n}, {\n 'type': 'event',\n 'anonymous': false,\n 'name': 'IncomingTransactionProcessed',\n 'inputs': [{ 'type': 'bytes16', 'name': 'transactionID', 'indexed': false }, {\n 'type': 'bytes16',\n 'name': 'operationID',\n 'indexed': false\n }, { 'type': 'bytes32', 'name': 'transactionType', 'indexed': false }, {\n 'type': 'bytes3',\n 'name': 'transactionCurrency',\n 'indexed': false\n }, { 'type': 'address', 'name': 'transactionToken', 'indexed': false }, {\n 'type': 'uint256',\n 'name': 'transactionAmount',\n 'indexed': false\n }, { 'type': 'address', 'name': 'targetWallet', 'indexed': false }, {\n 'type': 'address',\n 'name': 'targetToken',\n 'indexed': false\n }, { 'type': 'uint256', 'name': 'targetAmount', 'indexed': false }, {\n 'type': 'uint256',\n 'name': 'createdAt',\n 'indexed': false\n }]\n}, {\n 'type': 'event',\n 'anonymous': false,\n 'name': 'Initialized',\n 'inputs': [{ 'type': 'uint64', 'name': 'version', 'indexed': false }]\n}, {\n 'type': 'event',\n 'anonymous': false,\n 'name': 'MigrationTransactionProcessed',\n 'inputs': [{ 'type': 'bytes16', 'name': 'transactionID', 'indexed': true }, {\n 'type': 'bytes16',\n 'name': 'operationID',\n 'indexed': true\n }, { 'type': 'bytes32', 'name': 'transactionType', 'indexed': false }, {\n 'type': 'bytes3',\n 'name': 'transactionCurrency',\n 'indexed': false\n }, { 'type': 'address', 'name': 'transactionToken', 'indexed': false }, {\n 'type': 'uint256',\n 'name': 'transactionAmount',\n 'indexed': false\n }, { 'type': 'address', 'name': 'sourceWallet', 'indexed': false }, {\n 'type': 'address',\n 'name': 'targetToken',\n 'indexed': false\n }, { 'type': 'uint256', 'name': 'targetAmount', 'indexed': false }, {\n 'type': 'uint256',\n 'name': 'createdAt',\n 'indexed': false\n }]\n}, {\n 'type': 'event',\n 'anonymous': false,\n 'name': 'OutgoingBatchTransactionProcessed',\n 'inputs': [{ 'type': 'bytes16', 'name': 'transactionId', 'indexed': true }, {\n 'type': 'bytes16',\n 'name': 'operationId',\n 'indexed': true\n }, { 'type': 'address', 'name': 'wallet', 'indexed': true }, {\n 'type': 'address',\n 'name': 'token',\n 'indexed': false\n }, { 'type': 'uint256', 'name': 'totalAmount', 'indexed': false }, {\n 'type': 'uint256',\n 'name': 'createdAt',\n 'indexed': false\n }]\n}, {\n 'type': 'event',\n 'anonymous': false,\n 'name': 'OutgoingTransactionProcessed',\n 'inputs': [{ 'type': 'bytes16', 'name': 'transactionID', 'indexed': false }, {\n 'type': 'bytes16',\n 'name': 'operationID',\n 'indexed': false\n }, { 'type': 'bytes32', 'name': 'transactionType', 'indexed': false }, {\n 'type': 'bytes3',\n 'name': 'transactionCurrency',\n 'indexed': false\n }, { 'type': 'address', 'name': 'transactionToken', 'indexed': false }, {\n 'type': 'uint256',\n 'name': 'transactionAmount',\n 'indexed': false\n }, { 'type': 'address', 'name': 'sourceWallet', 'indexed': false }, {\n 'type': 'address',\n 'name': 'sourceToken',\n 'indexed': false\n }, { 'type': 'uint256', 'name': 'sourceAmount', 'indexed': false }, {\n 'type': 'uint256',\n 'name': 'createdAt',\n 'indexed': false\n }]\n}, {\n 'type': 'function',\n 'name': 'approveOutgoingBatchTransaction',\n 'constant': false,\n 'payable': false,\n 'inputs': [{ 'type': 'bytes16', 'name': 'transactionId' }, {\n 'type': 'bytes16',\n 'name': 'operationId'\n }, { 'type': 'address', 'name': 'wallet' }, { 'type': 'address', 'name': 'token' }, {\n 'type': 'uint256',\n 'name': 'totalAmount'\n }],\n 'outputs': []\n}, {\n 'type': 'function',\n 'name': 'baseToSyntheticMigration',\n 'constant': true,\n 'stateMutability': 'view',\n 'payable': false,\n 'inputs': [{ 'type': 'address', 'name': '' }],\n 'outputs': [{ 'type': 'address', 'name': '' }]\n}, {\n 'type': 'function',\n 'name': 'batchTransactionRequests',\n 'constant': true,\n 'stateMutability': 'view',\n 'payable': false,\n 'inputs': [{ 'type': 'bytes32', 'name': '' }],\n 'outputs': [{ 'type': 'address', 'name': 'wallet' }, { 'type': 'address', 'name': 'token' }, {\n 'type': 'uint256',\n 'name': 'totalAmount'\n }, { 'type': 'uint256', 'name': 'createdAt' }]\n}, {\n 'type': 'function',\n 'name': 'changeFundsBufferAddress',\n 'constant': false,\n 'payable': false,\n 'inputs': [{ 'type': 'address', 'name': 'newAddress' }],\n 'outputs': []\n}, {\n 'type': 'function',\n 'name': 'configureMigrationPair',\n 'constant': false,\n 'payable': false,\n 'inputs': [{ 'type': 'address', 'name': 'baseToken' }, { 'type': 'address', 'name': 'syntheticToken' }],\n 'outputs': []\n}, {\n 'type': 'function',\n 'name': 'executeOutgoingBatchTransaction',\n 'constant': false,\n 'payable': false,\n 'inputs': [{ 'type': 'bytes16', 'name': 'transactionId' }, {\n 'type': 'bytes16',\n 'name': 'operationId'\n }, { 'type': 'address', 'name': 'tokenAddress' }, {\n 'type': 'address[]',\n 'name': 'recipients'\n }, { 'type': 'uint256[]', 'name': 'amounts' }],\n 'outputs': []\n}, {\n 'type': 'function',\n 'name': 'init',\n 'constant': false,\n 'payable': false,\n 'inputs': [{ 'type': 'address', 'name': 'register' }, { 'type': 'address', 'name': 'fundsBuffer' }],\n 'outputs': []\n}, {\n 'type': 'function',\n 'name': 'initV2',\n 'constant': false,\n 'payable': false,\n 'inputs': [],\n 'outputs': []\n}, {\n 'type': 'function',\n 'name': 'isInitialized',\n 'constant': true,\n 'stateMutability': 'view',\n 'payable': false,\n 'inputs': [{ 'type': 'address', 'name': 'wallet' }],\n 'outputs': [{ 'type': 'bool', 'name': '' }]\n}, {\n 'type': 'function',\n 'name': 'isModuleType',\n 'constant': true,\n 'stateMutability': 'view',\n 'payable': false,\n 'inputs': [{ 'type': 'uint256', 'name': 'moduleTypeId' }],\n 'outputs': [{ 'type': 'bool', 'name': '' }]\n}, {\n 'type': 'function',\n 'name': 'onInstall',\n 'constant': false,\n 'stateMutability': 'payable',\n 'payable': true,\n 'inputs': [{ 'type': 'bytes', 'name': 'data' }],\n 'outputs': []\n}, {\n 'type': 'function',\n 'name': 'onUninstall',\n 'constant': false,\n 'stateMutability': 'payable',\n 'payable': true,\n 'inputs': [{ 'type': 'bytes', 'name': 'data' }],\n 'outputs': []\n}, {\n 'type': 'function',\n 'name': 'processIncomingTransaction',\n 'constant': false,\n 'payable': false,\n 'inputs': [{ 'type': 'bytes16', 'name': 'transactionID' }, {\n 'type': 'bytes16',\n 'name': 'operationID'\n }, { 'type': 'bytes32', 'name': 'transactionType' }, {\n 'type': 'bytes3',\n 'name': 'transactionCurrency'\n }, { 'type': 'address', 'name': 'transactionToken' }, {\n 'type': 'uint256',\n 'name': 'transactionAmount'\n }, { 'type': 'address', 'name': 'targetWallet' }, { 'type': 'address', 'name': 'targetToken' }, {\n 'type': 'uint256',\n 'name': 'targetAmount'\n }, { 'type': 'uint256', 'name': 'createdAt' }],\n 'outputs': []\n}, {\n 'type': 'function',\n 'name': 'processIncomingTransactionSynthetic',\n 'constant': false,\n 'payable': false,\n 'inputs': [{ 'type': 'bytes16', 'name': 'transactionID' }, {\n 'type': 'bytes16',\n 'name': 'operationID'\n }, { 'type': 'bytes32', 'name': 'transactionType' }, {\n 'type': 'bytes3',\n 'name': 'transactionCurrency'\n }, { 'type': 'address', 'name': 'transactionToken' }, {\n 'type': 'uint256',\n 'name': 'transactionAmount'\n }, { 'type': 'address', 'name': 'targetWallet' }, { 'type': 'address', 'name': 'targetToken' }, {\n 'type': 'uint256',\n 'name': 'targetAmount'\n }, { 'type': 'uint256', 'name': 'createdAt' }],\n 'outputs': []\n}, {\n 'type': 'function',\n 'name': 'processMigrationAdmin',\n 'constant': false,\n 'payable': false,\n 'inputs': [{ 'type': 'address', 'name': 'sourceWallet' }],\n 'outputs': []\n}, {\n 'type': 'function',\n 'name': 'processMigrationSynthetic',\n 'constant': false,\n 'payable': false,\n 'inputs': [{ 'type': 'bytes16', 'name': 'transactionID' }, {\n 'type': 'bytes16',\n 'name': 'operationID'\n }, { 'type': 'bytes32', 'name': 'transactionType' }, {\n 'type': 'bytes3',\n 'name': 'transactionCurrency'\n }, { 'type': 'address', 'name': 'transactionToken' }, {\n 'type': 'uint256',\n 'name': 'transactionAmount'\n }, { 'type': 'address', 'name': 'sourceWallet' }, { 'type': 'address', 'name': 'targetToken' }, {\n 'type': 'uint256',\n 'name': 'targetAmount'\n }, { 'type': 'uint256', 'name': 'createdAt' }],\n 'outputs': []\n}, {\n 'type': 'function',\n 'name': 'processOutgoingTransaction',\n 'constant': false,\n 'payable': false,\n 'inputs': [{ 'type': 'bytes16', 'name': 'transactionID' }, {\n 'type': 'bytes16',\n 'name': 'operationID'\n }, { 'type': 'bytes32', 'name': 'transactionType' }, {\n 'type': 'bytes3',\n 'name': 'transactionCurrency'\n }, { 'type': 'address', 'name': 'transactionToken' }, {\n 'type': 'uint256',\n 'name': 'transactionAmount'\n }, { 'type': 'address', 'name': 'sourceWallet' }, { 'type': 'address', 'name': 'sourceToken' }, {\n 'type': 'uint256',\n 'name': 'sourceAmount'\n }, { 'type': 'uint256', 'name': 'createdAt' }],\n 'outputs': []\n}, {\n 'type': 'function',\n 'name': 'processOutgoingTransactionByApproval',\n 'constant': false,\n 'payable': false,\n 'inputs': [{ 'type': 'bytes16', 'name': 'transactionID' }, {\n 'type': 'bytes16',\n 'name': 'operationID'\n }, { 'type': 'bytes32', 'name': 'transactionType' }, {\n 'type': 'bytes3',\n 'name': 'transactionCurrency'\n }, { 'type': 'address', 'name': 'transactionToken' }, {\n 'type': 'uint256',\n 'name': 'transactionAmount'\n }, { 'type': 'address', 'name': 'sourceWallet' }, { 'type': 'address', 'name': 'sourceToken' }, {\n 'type': 'uint256',\n 'name': 'sourceAmount'\n }, { 'type': 'uint256', 'name': 'createdAt' }],\n 'outputs': []\n}, {\n 'type': 'function',\n 'name': 'removeMigrationPair',\n 'constant': false,\n 'payable': false,\n 'inputs': [{ 'type': 'address', 'name': 'baseToken' }],\n 'outputs': []\n}, {\n 'type': 'function',\n 'name': 'setApprovalsForRegistryTokens',\n 'constant': false,\n 'payable': false,\n 'inputs': [{ 'type': 'address', 'name': 'sourceWallet' }],\n 'outputs': []\n}, {\n 'type': 'function',\n 'name': 'status',\n 'constant': true,\n 'stateMutability': 'view',\n 'payable': false,\n 'inputs': [{ 'type': 'address', 'name': '' }],\n 'outputs': [{ 'type': 'uint8', 'name': '' }]\n}];\n","export const yieldCalculatorAbi = [{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"updatedApr\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"blockTime\",\"type\":\"uint256\"}],\"name\":\"AprChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"synthetic\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"newApr\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"}],\"name\":\"AprHistoryUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"synthetic\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"oldApr\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"newApr\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"CurrentAprUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldToken\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newToken\",\"type\":\"address\"}],\"name\":\"YieldStatusChanged\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"activeYieldToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"synthetic\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"newApr\",\"type\":\"uint32\"}],\"name\":\"aprChange\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"aprHistory\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"apr\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"aprs\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"accumulatedYield\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currentBalance\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"lastUpdateTime\",\"type\":\"uint64\"}],\"internalType\":\"struct ISyntheticStructs.UserYield\",\"name\":\"user\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"calculateCompoundYield\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getActiveYieldToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"synthetic\",\"type\":\"address\"}],\"name\":\"getAprHistory\",\"outputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"apr\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"}],\"internalType\":\"struct YieldCalculator.AprChange[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"synthetic\",\"type\":\"address\"}],\"name\":\"getCurrentApr\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"__tokensRegistry\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"syntheticToken\",\"type\":\"address\"}],\"name\":\"setActiveYieldToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}] as const;\n","export const executionDelayPolicyAbi = [\n {\n 'type': 'error',\n 'name': 'AlreadyInitialized',\n 'inputs': [\n {\n 'type': 'address',\n 'name': 'smartAccount'\n }\n ]\n },\n {\n 'type': 'error',\n 'name': 'InvalidInitialization',\n 'inputs': []\n },\n {\n 'type': 'error',\n 'name': 'NotInitialized',\n 'inputs': [\n {\n 'type': 'address',\n 'name': 'smartAccount'\n }\n ]\n },\n {\n 'type': 'error',\n 'name': 'NotInitializing',\n 'inputs': []\n },\n {\n 'type': 'event',\n 'anonymous': false,\n 'name': 'AccountChangesExecuted',\n 'inputs': [\n {\n 'type': 'bytes16',\n 'name': 'parentEntity',\n 'indexed': false\n },\n {\n 'type': 'address',\n 'name': 'account',\n 'indexed': false\n }\n ]\n },\n {\n 'type': 'event',\n 'anonymous': false,\n 'name': 'AccountChangesRequested',\n 'inputs': [\n {\n 'type': 'bytes16',\n 'name': 'parentEntity',\n 'indexed': false\n },\n {\n 'type': 'address',\n 'name': 'account',\n 'indexed': false\n }\n ]\n },\n {\n 'type': 'event',\n 'anonymous': false,\n 'name': 'ErcApprovalExecuted',\n 'inputs': [\n {\n 'type': 'bytes16',\n 'name': 'parentEntity',\n 'indexed': false\n },\n {\n 'type': 'address',\n 'name': 'account',\n 'indexed': false\n },\n {\n 'type': 'address',\n 'name': 'token',\n 'indexed': false\n },\n {\n 'type': 'address',\n 'name': 'to',\n 'indexed': false\n }\n ]\n },\n {\n 'type': 'event',\n 'anonymous': false,\n 'name': 'ErcWithdrawalExecuted',\n 'inputs': [\n {\n 'type': 'bytes16',\n 'name': 'parentEntity',\n 'indexed': false\n },\n {\n 'type': 'bytes32',\n 'name': 'callDataAndNonceHash',\n 'indexed': false\n }\n ]\n },\n {\n 'type': 'event',\n 'anonymous': false,\n 'name': 'ErcWithdrawalRequested',\n 'inputs': [\n {\n 'type': 'bytes16',\n 'name': 'parentEntity',\n 'indexed': false\n },\n {\n 'type': 'address',\n 'name': 'account',\n 'indexed': false\n },\n {\n 'type': 'address',\n 'name': 'token',\n 'indexed': false\n },\n {\n 'type': 'address',\n 'name': 'to',\n 'indexed': false\n },\n {\n 'type': 'uint256',\n 'name': 'amount',\n 'indexed': false\n },\n {\n 'type': 'uint48',\n 'name': 'validAfter',\n 'indexed': false\n },\n {\n 'type': 'uint48',\n 'name': 'validUntil',\n 'indexed': false\n },\n {\n 'type': 'bytes32',\n 'name': 'callDataAndNonceHash',\n 'indexed': false\n },\n {\n 'type': 'bytes',\n 'name': 'callData',\n 'indexed': false\n }\n ]\n },\n {\n 'type': 'event',\n 'anonymous': false,\n 'name': 'Initialized',\n 'inputs': [\n {\n 'type': 'uint64',\n 'name': 'version',\n 'indexed': false\n }\n ]\n },\n {\n 'type': 'function',\n 'name': 'accountToOwner',\n 'constant': true,\n 'stateMutability': 'view',\n 'payable': false,\n 'inputs': [\n {\n 'type': 'address',\n 'name': ''\n }\n ],\n 'outputs': [\n {\n 'type': 'address',\n 'name': ''\n }\n ]\n },\n {\n 'type': 'function',\n 'name': 'accountToParentEntity',\n 'constant': true,\n 'stateMutability': 'view',\n 'payable': false,\n 'inputs': [\n {\n 'type': 'address',\n 'name': ''\n }\n ],\n 'outputs': [\n {\n 'type': 'bytes16',\n 'name': ''\n }\n ]\n },\n {\n 'type': 'function',\n 'name': 'checkSignaturePolicy',\n 'constant': true,\n 'stateMutability': 'view',\n 'payable': false,\n 'inputs': [\n {\n 'type': 'bytes32',\n 'name': 'id'\n },\n {\n 'type': 'address',\n 'name': 'sender'\n },\n {\n 'type': 'bytes32',\n 'name': 'hash'\n },\n {\n 'type': 'bytes',\n 'name': 'sig'\n }\n ],\n 'outputs': [\n {\n 'type': 'uint256',\n 'name': ''\n }\n ]\n },\n {\n 'type': 'function',\n 'name': 'checkUserOpPolicy',\n 'constant': false,\n 'stateMutability': 'payable',\n 'payable': true,\n 'inputs': [\n {\n 'type': 'bytes32',\n 'name': 'id'\n },\n {\n 'type': 'tuple',\n 'name': 'userOp',\n 'components': [\n {\n 'type': 'address',\n 'name': 'sender'\n },\n {\n 'type': 'uint256',\n 'name': 'nonce'\n },\n {\n 'type': 'bytes',\n 'name': 'initCode'\n },\n {\n 'type': 'bytes',\n 'name': 'callData'\n },\n {\n 'type': 'bytes32',\n 'name': 'accountGasLimits'\n },\n {\n 'type': 'uint256',\n 'name': 'preVerificationGas'\n },\n {\n 'type': 'bytes32',\n 'name': 'gasFees'\n },\n {\n 'type': 'bytes',\n 'name': 'paymasterAndData'\n },\n {\n 'type': 'bytes',\n 'name': 'signature'\n }\n ]\n }\n ],\n 'outputs': [\n {\n 'type': 'uint256',\n 'name': ''\n }\n ]\n },\n {\n 'type': 'function',\n 'name': 'init',\n 'constant': false,\n 'payable': false,\n 'inputs': [\n {\n 'type': 'address',\n 'name': 'contractRegistry'\n },\n {\n 'type': 'address',\n 'name': 'tokenRegistry'\n }\n ],\n 'outputs': []\n },\n {\n 'type': 'function',\n 'name': 'isInitialized',\n 'constant': true,\n 'stateMutability': 'view',\n 'payable': false,\n 'inputs': [\n {\n 'type': 'address',\n 'name': 'wallet'\n }\n ],\n 'outputs': [\n {\n 'type': 'bool',\n 'name': ''\n }\n ]\n },\n {\n 'type': 'function',\n 'name': 'isModuleType',\n 'constant': true,\n 'stateMutability': 'pure',\n 'payable': false,\n 'inputs': [\n {\n 'type': 'uint256',\n 'name': 'id'\n }\n ],\n 'outputs': [\n {\n 'type': 'bool',\n 'name': ''\n }\n ]\n },\n {\n 'type': 'function',\n 'name': 'onInstall',\n 'constant': false,\n 'stateMutability': 'payable',\n 'payable': true,\n 'inputs': [\n {\n 'type': 'bytes',\n 'name': 'data'\n }\n ],\n 'outputs': []\n },\n {\n 'type': 'function',\n 'name': 'onUninstall',\n 'constant': false,\n 'stateMutability': 'payable',\n 'payable': true,\n 'inputs': [\n {\n 'type': 'bytes',\n 'name': 'data'\n }\n ],\n 'outputs': []\n },\n {\n 'type': 'function',\n 'name': 'operationsPerAccount',\n 'constant': true,\n 'stateMutability': 'view',\n 'payable': false,\n 'inputs': [\n {\n 'type': 'bytes32',\n 'name': 'callDataAndNonceHash'\n }\n ],\n 'outputs': [\n {\n 'type': 'uint8',\n 'name': 'opType'\n },\n {\n 'type': 'uint8',\n 'name': 'status'\n },\n {\n 'type': 'uint48',\n 'name': 'validAfter'\n },\n {\n 'type': 'uint48',\n 'name': 'validUntil'\n }\n ]\n },\n {\n 'type': 'function',\n 'name': 'request',\n 'constant': false,\n 'payable': false,\n 'inputs': [\n {\n 'type': 'address',\n 'name': 'wallet'\n },\n {\n 'type': 'uint256',\n 'name': 'nonce'\n },\n {\n 'type': 'bytes',\n 'name': 'callData'\n }\n ],\n 'outputs': [\n {\n 'type': 'uint48',\n 'name': ''\n }\n ]\n },\n {\n 'type': 'function',\n 'name': 'setParentEntity',\n 'constant': false,\n 'payable': false,\n 'inputs': [\n {\n 'type': 'address',\n 'name': 'account'\n },\n {\n 'type': 'bytes16',\n 'name': 'parentEntity'\n }\n ],\n 'outputs': []\n },\n {\n 'type': 'function',\n 'name': 'status',\n 'constant': true,\n 'stateMutability': 'view',\n 'payable': false,\n 'inputs': [\n {\n 'type': 'address',\n 'name': ''\n }\n ],\n 'outputs': [\n {\n 'type': 'uint8',\n 'name': ''\n }\n ]\n },\n {\n 'type': 'function',\n 'name': 'updateDelayConfiguration',\n 'constant': false,\n 'payable': false,\n 'inputs': [\n {\n 'type': 'uint48',\n 'name': 'normalDelay'\n },\n {\n 'type': 'uint48',\n 'name': 'longDelay'\n },\n {\n 'type': 'uint48',\n 'name': 'operationValidity'\n }\n ],\n 'outputs': []\n }\n] as const;\n","export const signerAbi = [\n {\n type: 'function',\n name: 'signer',\n inputs: [\n { name: 'id', type: 'bytes32', internalType: 'bytes32' },\n { name: 'wallet', type: 'address', internalType: 'address' }\n ],\n outputs: [{ name: '', type: 'address', internalType: 'address' }],\n stateMutability: 'view'\n },\n] as const;\n","import { toPermissionValidator } from '@zerodev/permissions';\nimport { toSudoPolicy } from '@zerodev/permissions/policies';\nimport { toECDSASigner } from '@zerodev/permissions/signers';\nimport { KernelAccountClient, KernelV3_1AccountAbi } from '@zerodev/sdk';\nimport { getEntryPoint, KERNEL_V3_1, VALIDATOR_TYPE } from '@zerodev/sdk/constants';\nimport { Signer } from '@zerodev/sdk/types';\nimport { concatHex, encodeFunctionData, pad, PublicClient, zeroAddress, zeroHash } from 'viem';\n\nimport { signerAbi } from '../../../../abi/index';\n\nimport type { IAccountAbstractionService } from '../../interfaces/index';\nimport type { CallData } from '../../types';\nimport type { IWalletService } from '../types';\n\nimport { ContractAddresses, Logger } from '../../../../core/index';\n\n\nexport class BaseAccountAbstractionService implements IAccountAbstractionService {\n private readonly contracts: ContractAddresses;\n private readonly walletService: IWalletService;\n private readonly logger?: Logger;\n private readonly publicRpcClient: PublicClient;\n private readonly kernelPublicClient: KernelAccountClient;\n\n constructor(config: {\n publicRpcClient: PublicClient;\n kernelPublicClient: KernelAccountClient;\n contracts: ContractAddresses;\n walletService: IWalletService;\n logger?: Logger;\n }) {\n this.publicRpcClient = config.publicRpcClient;\n this.kernelPublicClient = config.kernelPublicClient;\n this.contracts = config.contracts;\n this.walletService = config.walletService;\n this.logger = config.logger;\n }\n\n public async isExecutorInstalled(): Promise<boolean> {\n const smartWalletClient = await this.walletService.getSmartWalletClientWithoutPolicy();\n try {\n const fundsManagementContract = this.contracts.fundsManagement;\n\n const res = await this.publicRpcClient.readContract({\n address: smartWalletClient.account!.address,\n abi: KernelV3_1AccountAbi,\n functionName: 'isModuleInstalled',\n args: [BigInt(2), fundsManagementContract, '0x'],\n });\n return res as boolean;\n } catch (e) {\n console.error('Error checking if executor is installed:', e);\n return false;\n }\n }\n\n async isPolicyInstalled(): Promise<boolean> {\n const mainWalletClient = await this.walletService.getMainWalletClient();\n const mainWalletAddress = mainWalletClient?.address as `0x${string}`;\n const smartWalletClient = await this.walletService.getSmartWalletClientWithoutPolicy();\n\n try {\n const bytecode = await this.publicRpcClient.getCode({\n address: smartWalletClient.account!.address,\n });\n\n if (!bytecode || bytecode === '0x') {\n return false;\n }\n\n const rootValidatorId = (await this.publicRpcClient.readContract({\n address: smartWalletClient.account!.address,\n abi: KernelV3_1AccountAbi,\n functionName: 'rootValidator',\n })) as `0x${string}`;\n\n if (!rootValidatorId || rootValidatorId === '0x') {\n this.logger?.info('Policy not installed');\n return false;\n }\n\n const permissionId = ('0x' +\n (rootValidatorId as string).replace('0x', '').slice(2, 10)) as `0x${string}`;\n\n const permissionConfig = await this.publicRpcClient.readContract({\n address: smartWalletClient.account!.address,\n abi: KernelV3_1AccountAbi,\n functionName: 'permissionConfig',\n args: [permissionId],\n });\n\n const { policyData, signer } = permissionConfig as unknown as {\n policyData: string[];\n signer: `0x${string}`;\n };\n if (policyData.length !== 1) {\n this.logger?.info('Policy not installed');\n return false;\n }\n\n const data = policyData[0];\n const policyAddress = '0x' + data!.replace('0x', '').slice(4, 44);\n const paddedPermissionId = pad(permissionId, {\n size: 32,\n dir: 'right',\n });\n\n const ownerAddress = await this.publicRpcClient.readContract({\n address: signer,\n abi: signerAbi,\n functionName: 'signer',\n args: [paddedPermissionId, smartWalletClient.account!.address],\n });\n\n const executionDelayPolicyContract = await this.contracts.executionDelayPolicy;\n return (\n policyAddress.toLowerCase() === executionDelayPolicyContract?.toLowerCase() &&\n ownerAddress.toLowerCase() === mainWalletAddress.toLowerCase()\n );\n } catch (e) {\n this.logger?.error('Error checking if policy is installed:', e);\n return false;\n }\n }\n\n public async signInPolicyAndExecutor(): Promise<any> {\n const smartWalletClient = await this.walletService.getSmartWalletClientWithoutPolicy();\n\n const executorCallData = await this.getExecutorCallData();\n const policyCallData = await this.getPolicyCallData();\n\n const calls = await smartWalletClient.account!.encodeCalls([\n {\n to: smartWalletClient.account!.address,\n value: BigInt(0),\n data: executorCallData,\n },\n {\n to: smartWalletClient.account!.address,\n value: BigInt(0),\n data: policyCallData,\n },\n ]);\n\n return await this.walletService.sendUserOperationsAndWaitReceipt(calls, smartWalletClient);\n }\n\n public async signInPolicy(): Promise<any> {\n const smartWalletClient = await this.walletService.getSmartWalletClientWithoutPolicy();\n const policyCallData = await this.getPolicyCallData();\n\n const calls = await smartWalletClient.account!.encodeCalls([\n {\n to: smartWalletClient.account!.address,\n value: BigInt(0),\n data: policyCallData,\n },\n ]);\n\n return await this.walletService.sendUserOperationsAndWaitReceipt(calls, smartWalletClient);\n }\n\n public async signInExecutor(): Promise<any> {\n const smartWalletClient = await this.walletService.getSmartWalletClientWithoutPolicy();\n const policyCallData = await this.getExecutorCallData();\n\n const calls = await smartWalletClient.account!.encodeCalls([\n {\n to: smartWalletClient.account!.address,\n value: BigInt(0),\n data: policyCallData,\n },\n ]);\n\n return await this.walletService.sendUserOperationsAndWaitReceipt(calls, smartWalletClient);\n }\n\n // Batch-ready variants of the installs above: they return the calls instead of\n // sending them, so onboarding can install the executor, switch the root validator\n // and register the account in a single UserOp.\n public async getExecutorInstallCall(): Promise<CallData> {\n const smartWalletClient = await this.walletService.getSmartWalletClientWithoutPolicy();\n\n return {\n to: smartWalletClient.account!.address,\n value: BigInt(0),\n data: await this.getExecutorCallData(),\n };\n }\n\n public async getPolicyInstallCall(): Promise<CallData> {\n const smartWalletClient = await this.walletService.getSmartWalletClientWithoutPolicy();\n\n return {\n to: smartWalletClient.account!.address,\n value: BigInt(0),\n data: await this.getPolicyCallData(),\n };\n }\n\n private async createExecutionDelayValidator() {\n const executionDelayPolicyContract = this.contracts.executionDelayPolicy;\n const rootPolicy = toSudoPolicy({ policyAddress: executionDelayPolicyContract });\n const smartAccountSigner = await this.walletService.getSmartAccountSigner();\n\n const res = await toPermissionValidator(this.kernelPublicClient, {\n entryPoint: getEntryPoint('0.7'),\n signer: await toECDSASigner({ signer: smartAccountSigner as Signer }),\n kernelVersion: KERNEL_V3_1,\n policies: [rootPolicy],\n });\n\n res.address = executionDelayPolicyContract as `0x${string}`;\n\n return res;\n }\n\n private async getExecutorCallData() {\n const initData = concatHex([zeroAddress, zeroHash]);\n\n const fundsManagementContract = this.contracts.fundsManagement;\n\n return encodeFunctionData({\n abi: KernelV3_1AccountAbi,\n functionName: 'installModule',\n args: [BigInt(2), fundsManagementContract as `0x${string}`, initData],\n });\n }\n\n private async getPolicyCallData() {\n const validator = await this.createExecutionDelayValidator();\n const smartWallet = await this.walletService.getSmartWalletClientWithoutPolicy();\n\n const rootValidatorId = concatHex([\n VALIDATOR_TYPE[validator.validatorType],\n pad(validator.getIdentifier(), {\n size: 20,\n dir: 'right',\n }),\n ]);\n\n return encodeFunctionData({\n abi: KernelV3_1AccountAbi,\n functionName: 'changeRootValidator',\n args: [\n rootValidatorId,\n zeroAddress,\n await validator.getEnableData(smartWallet.account!.address),\n '0x',\n ],\n });\n }\n}\n","import { decodeFunctionResult, encodeFunctionData, PublicClient } from 'viem';\nimport { WaitForUserOperationReceiptReturnType } from 'viem/account-abstraction';\n\nimport { accountsAbi, corporateAccountsAbi } from '../../../../abi/index';\nimport { IWalletService } from '../types';\n\nimport type { IAccountContractService } from '../../interfaces/index';\nimport type { CallData } from '../../types';\n\nimport { ContractAddresses, Logger } from '../../../../core/index';\n\nexport class BaseAccountContractService implements IAccountContractService {\n private readonly walletService: IWalletService;\n private readonly logger?: Logger;\n private readonly companyId: string;\n private readonly publicRpcClient: PublicClient;\n private readonly contracts: ContractAddresses;\n\n constructor(config: {\n publicRpcClient: PublicClient;\n walletService: IWalletService;\n companyId: string;\n logger?: Logger;\n contracts: ContractAddresses;\n }) {\n this.walletService = config.walletService;\n this.logger = config.logger;\n this.companyId = config.companyId;\n this.publicRpcClient = config.publicRpcClient;\n this.contracts = config.contracts;\n }\n\n public async isWalletInAccounts(): Promise<boolean> {\n const mainWalletClient = await this.walletService.getMainWalletClient();\n\n try {\n const data = encodeFunctionData({\n abi: accountsAbi,\n functionName: 'getUserAccount',\n args: [mainWalletClient?.address, this.companyId],\n });\n const result = await this.publicRpcClient.call({\n to: this.contracts.accounts,\n data: data,\n });\n\n const decodedResult = decodeFunctionResult({\n abi: accountsAbi,\n functionName: 'getUserAccount',\n data: result.data!,\n }) as {\n creator: string;\n status: number;\n verificationStatus: number;\n walletStatus: number;\n };\n return decodedResult && decodedResult.status !== 0;\n } catch (e) {\n this.logger?.warn('Error checking wallet in accounts contract:', e);\n return false;\n }\n }\n\n public async isWalletInCorporateAccounts(): Promise<boolean> {\n const smartWalletClient = await this.walletService.getSmartWalletClient();\n\n try {\n const data = encodeFunctionData({\n abi: corporateAccountsAbi,\n functionName: 'getCorporation',\n args: [\n this.companyId as `0x${string}`,\n smartWalletClient.account?.address as `0x${string}`,\n ],\n });\n const result = await this.publicRpcClient.call({\n to: this.contracts.corporateAccounts,\n data: data,\n });\n\n const decodedResult = decodeFunctionResult({\n abi: corporateAccountsAbi,\n functionName: 'getCorporation',\n data: result.data!,\n }) as {\n creator: string;\n status: number;\n verificationStatus: number;\n walletStatus: number;\n };\n return decodedResult && decodedResult.status !== 0;\n } catch (e) {\n this.logger?.warn('Error checking wallet in corporate accounts contract:', e);\n return false;\n }\n }\n\n public async registerInAccounts(): Promise<WaitForUserOperationReceiptReturnType> {\n const callData = await this.getCallData();\n const smartWalletClient = await this.walletService.getSmartWalletClient();\n\n const encodedCallData = await smartWalletClient.account!.encodeCalls([\n {\n to: this.contracts.accounts as `0x${string}`,\n value: BigInt(0),\n data: callData,\n },\n ]);\n\n const receipt = await this.walletService.sendUserOperationsAndWaitReceipt(encodedCallData);\n\n if (!receipt) {\n throw new Error('Unable to register in accounts contract');\n }\n\n return receipt;\n }\n\n public async registerInCorporateAccounts(): Promise<WaitForUserOperationReceiptReturnType> {\n const callData = await this.getCorporateCallData();\n const smartWalletClient = await this.walletService.getSmartWalletClient();\n const encodedCallData = await smartWalletClient.account!.encodeCalls([\n {\n to: this.contracts.corporateAccounts as `0x${string}`,\n value: BigInt(0),\n data: callData,\n },\n ]);\n\n const receipt = await this.walletService.sendUserOperationsAndWaitReceipt(encodedCallData);\n\n if (!receipt) {\n throw new Error('Unable to register in corporate accounts contract');\n }\n\n return receipt;\n }\n\n // Batch-ready variant of registerInAccounts: returns the call so onboarding can\n // register the account in the same UserOp that installs the executor and policy.\n public async getAccountRegistrationCall(): Promise<CallData> {\n return {\n to: this.contracts.accounts as `0x${string}`,\n value: BigInt(0),\n data: await this.getCallData(),\n };\n }\n\n private async getCorporateCallData() {\n return encodeFunctionData({\n abi: corporateAccountsAbi,\n functionName: 'createCorporation',\n args: [this.companyId as `0x${string}`],\n });\n }\n\n private async getCallData() {\n return encodeFunctionData({\n abi: accountsAbi,\n functionName: 'createUserAccountWithWallet',\n args: [this.companyId],\n });\n }\n}\n","import { getCustomNonceKeyFromString } from '@zerodev/sdk';\nimport { encodeFunctionData, erc20Abi, Hex, keccak256, pad, parseUnits } from 'viem';\n\nimport { executionDelayPolicyAbi, fundsManagementAbi, syntheticAbi } from '../../../../abi/index';\nimport { IWalletService } from '../types';\n\nimport type { WithdrawalApi } from '../../../api/index';\nimport type {\n ICryptoService,\n Erc20TransferParams,\n SyntheticTransferParams,\n FullTransferParams,\n FullTransferResult,\n BatchTransferParams,\n SwapTransferParams,\n} from '../../interfaces/index';\n\nimport { AuthService } from '../../../auth/index';\nimport { ContractAddresses, Logger, TokenInfo } from '../../../../core/index';\n\ninterface CallData {\n to: `0x${string}`;\n value: bigint;\n data: `0x${string}`;\n}\n\nexport class BaseCryptoService implements ICryptoService {\n private readonly walletService: IWalletService;\n private readonly tokens: TokenInfo[];\n private readonly contracts?: ContractAddresses;\n private readonly logger?: Logger;\n private readonly withdrawalApi?: WithdrawalApi;\n\n constructor(config: {\n contracts: ContractAddresses;\n walletService: IWalletService;\n tokens: TokenInfo[];\n logger?: Logger;\n withdrawalApi?: WithdrawalApi;\n }) {\n this.walletService = config.walletService;\n this.contracts = config.contracts;\n this.logger = config.logger;\n this.tokens = config.tokens;\n this.withdrawalApi = config.withdrawalApi;\n }\n\n public async makeErc20TransferFirstPart(params: Erc20TransferParams): Promise<Hex> {\n const smartWalletClient = await this.walletService?.getSmartWalletClient();\n const tokenData = this.tokens.find(token => token.address === params.tokenAddress);\n if (!tokenData) {\n throw new Error('Token not found in token registry. Please check token address');\n }\n\n const baseToken = this.tokens.find(token => token.address === tokenData?.baseToken?.address);\n if (!baseToken) {\n throw new Error('Base token not found in token registry. Please check token address');\n }\n\n const callDataArray = [];\n\n const unwrapCallData = await this.generateUnwrapCallData(\n params.tokenAddress,\n parseUnits(String(params.amount), tokenData?.decimals ?? 18),\n );\n callDataArray.push(unwrapCallData);\n\n const erc20TransferCallDetails = await this.ercTransferCall(\n baseToken?.address as `0x${string}`,\n params.recipientAddress,\n parseUnits(String(params.amount), baseToken?.decimals ?? 18),\n );\n\n callDataArray.push(erc20TransferCallDetails);\n\n if (!smartWalletClient.account) {\n throw new Error('Smart wallet client account is not available.');\n }\n\n const encodedExecutionCalls = await smartWalletClient.account.encodeCalls(callDataArray);\n const requestCallData = await this.operationRequestCall(encodedExecutionCalls);\n const requestCalls = await smartWalletClient.account.encodeCalls([requestCallData.call]);\n\n const userOpReceipt = await this.walletService.sendUserOperationsAndWaitReceipt(requestCalls);\n if (!userOpReceipt.success) {\n throw new Error(\n `ERC20 Transfer Execution UserOperation failed: ` +\n `userOpHash=${userOpReceipt.userOpHash}, ` +\n `tx=${userOpReceipt.receipt.transactionHash}, ` +\n `reason=${userOpReceipt.reason ?? 'unknown (likely out of gas)'}`,\n );\n }\n\n return userOpReceipt.receipt.transactionHash;\n }\n\n public async makeErc20TransferFinal(withdrawalCallData: string) {\n const callData = ('0x' + withdrawalCallData) as `0x${string}`;\n const nonce = await this.getCustomNonceToFinishRequest(callData);\n const userOpReceipt = await this.walletService.sendUserOperationsWithNonceAndWaitReceipt(\n callData,\n nonce,\n { applyUnwrapGasFloor: true },\n );\n if (!userOpReceipt.success) {\n throw new Error(\n `ERC20 Transfer Execution UserOperation failed: ` +\n `userOpHash=${userOpReceipt.userOpHash}, ` +\n `tx=${userOpReceipt.receipt.transactionHash}, ` +\n `reason=${userOpReceipt.reason ?? 'unknown (likely out of gas)'}`,\n );\n }\n\n return userOpReceipt.receipt.transactionHash;\n }\n\n public async makeErc20TransferFull(params: Erc20TransferParams): Promise<Hex> {\n const smartWalletClient = await this.walletService.getSmartWalletClient();\n const tokenData = this.tokens.find(token => token.address === params.tokenAddress);\n if (!tokenData) {\n throw new Error('Token not found in token registry. Please check token address');\n }\n\n const baseToken = this.tokens.find(token => token.address === tokenData?.baseToken?.address);\n if (!baseToken) {\n throw new Error('Base token not found in token registry. Please check token address');\n }\n\n if (!smartWalletClient.account) {\n throw new Error('Smart wallet client account is not available.');\n }\n\n const unwrapCallData = await this.generateUnwrapCallData(\n params.tokenAddress,\n parseUnits(String(params.amount), tokenData?.decimals ?? 18),\n );\n\n const erc20TransferCallDetails = await this.ercTransferCall(\n baseToken.address as `0x${string}`,\n params.recipientAddress,\n parseUnits(String(params.amount), baseToken?.decimals ?? 18),\n );\n\n const encodedExecutionCalls = await smartWalletClient.account.encodeCalls([\n unwrapCallData,\n erc20TransferCallDetails,\n ]);\n\n const requestCallData = await this.operationRequestCall(encodedExecutionCalls);\n const requestCalls = await smartWalletClient.account.encodeCalls([requestCallData.call]);\n\n const requestUserOpReceipt = await this.walletService.sendUserOperationsAndWaitReceipt(\n requestCalls,\n undefined,\n { waitOnChainBlocks: 4 },\n );\n if (!requestUserOpReceipt.success) {\n throw new Error(\n `ERC20 Transfer Request UserOperation failed: ` +\n `userOpHash=${requestUserOpReceipt.userOpHash}, ` +\n `tx=${requestUserOpReceipt.receipt.transactionHash}, ` +\n `reason=${requestUserOpReceipt.reason ?? 'unknown (likely out of gas)'}`,\n );\n }\n\n const nonce = await this.getCustomNonceToFinishRequest(encodedExecutionCalls);\n const userOpReceipt = await this.walletService.sendUserOperationsWithNonceAndWaitReceipt(\n encodedExecutionCalls,\n nonce,\n { applyUnwrapGasFloor: true },\n );\n if (!userOpReceipt.success) {\n throw new Error(\n `ERC20 Transfer Execution UserOperation failed: ` +\n `userOpHash=${userOpReceipt.userOpHash}, ` +\n `tx=${userOpReceipt.receipt.transactionHash}, ` +\n `reason=${userOpReceipt.reason ?? 'unknown (likely out of gas)'}`,\n );\n }\n\n return userOpReceipt.receipt.transactionHash;\n }\n\n public async makeErc20TransferSynthetic(params: SyntheticTransferParams): Promise<Hex> {\n const smartWalletClient = await this.walletService.getSmartWalletClient();\n const tokenData = this.tokens.find(token => token.address === params.tokenAddress);\n if (!smartWalletClient.account) {\n throw new Error('Smart wallet client account is not available.');\n }\n\n const erc20TransferCallDetails = await this.ercTransferCall(\n params.tokenAddress,\n params.recipientAddress,\n parseUnits(String(params.amount), tokenData?.decimals ?? 18),\n );\n\n const encodedExecutionCalls = await smartWalletClient.account.encodeCalls([\n erc20TransferCallDetails,\n ]);\n const userOpReceipt =\n await this.walletService.sendUserOperationsAndWaitReceipt(encodedExecutionCalls);\n\n if (!userOpReceipt.success) {\n throw new Error(\n `ERC20 Transfer Execution UserOperation failed: ` +\n `userOpHash=${userOpReceipt.userOpHash}, ` +\n `tx=${userOpReceipt.receipt.transactionHash}, ` +\n `reason=${userOpReceipt.reason ?? 'unknown (likely out of gas)'}`,\n );\n }\n\n return new Promise(resolve => {\n setTimeout(() => {\n resolve(userOpReceipt.receipt.transactionHash);\n }, 2000);\n });\n }\n\n public async makeFullErc20Transfer(params: FullTransferParams): Promise<FullTransferResult> {\n if (!this.withdrawalApi) {\n throw new Error('Withdrawal API is required for full ERC20 transfer');\n }\n\n const authService = AuthService.getInstance();\n authService.ensureAuthenticated();\n\n const firstPartTxHash = await this.makeErc20TransferFirstPart({\n tokenAddress: params.tokenAddress,\n recipientAddress: params.recipientAddress,\n amount: params.amount,\n });\n\n this.logger?.info('First part of ERC20 transfer completed', { txHash: firstPartTxHash });\n\n await this.delay(6000);\n\n const withdrawalRequests = await this.withdrawalApi.getWithdrawalRequests();\n\n if (!withdrawalRequests || withdrawalRequests.length === 0) {\n throw new Error('No withdrawal requests found after first part of transfer');\n }\n\n const tokenData = this.tokens.find(token => token.address === params.tokenAddress);\n if (!tokenData) {\n throw new Error('Token not found in token registry');\n }\n\n const baseToken = this.tokens.find(token => token.address === tokenData.baseToken?.address);\n if (!baseToken) {\n throw new Error('Base token not found in token registry');\n }\n\n const withdrawalRequest = withdrawalRequests.find(\n req =>\n req.to_address === params.recipientAddress &&\n req.token_address === baseToken.address &&\n req.amount === params.amount,\n );\n\n if (!withdrawalRequest) {\n throw new Error('No pending withdrawal request found');\n }\n\n const now = new Date();\n const validAfterDate = new Date(withdrawalRequest.valid_after);\n\n if (validAfterDate > now) {\n const waitTime = validAfterDate.getTime() - now.getTime();\n this.logger?.info(`Waiting ${waitTime}ms until valid_after time`, {\n validAfter: withdrawalRequest.valid_after,\n now: now.toISOString(),\n });\n await this.delay(waitTime + 1000);\n }\n\n const finalReceipt = await this.makeErc20TransferFinal(withdrawalRequest.call_data);\n\n this.logger?.info('Full ERC20 transfer completed successfully');\n\n return {\n firstPartTxHash,\n finalTxHash: finalReceipt,\n success: true,\n };\n }\n\n public async makeTransferWithoutDelayPolicy(params: SwapTransferParams): Promise<Hex> {\n const smartWalletClient = await this.walletService.getSmartWalletClient();\n\n const tokenData = this.tokens.find(token => token.address === params.tokenAddress);\n if (!tokenData) {\n throw new Error('Token not found in token registry. Please check token address');\n }\n\n const baseToken = this.tokens.find(token => token.address === tokenData.baseToken?.address);\n if (!baseToken) {\n throw new Error('Base token not found in token registry. Please check token address');\n }\n\n if (!smartWalletClient.account) {\n throw new Error('Smart wallet client account is not available.');\n }\n\n const unwrapCallData = await this.generateUnwrapCallData(\n params.tokenAddress,\n parseUnits(params.amount, tokenData.decimals ?? 18),\n );\n\n const erc20TransferCallDetails = await this.ercTransferCall(\n baseToken.address,\n params.recipientAddress,\n parseUnits(params.amount, baseToken.decimals ?? 18),\n );\n\n const encodedExecutionCalls = await smartWalletClient.account.encodeCalls([\n unwrapCallData,\n erc20TransferCallDetails,\n ]);\n\n const userOpReceipt = await this.walletService.sendUserOperationsAndWaitReceipt(\n encodedExecutionCalls,\n undefined,\n { applyUnwrapGasFloor: true },\n );\n if (!userOpReceipt.success) {\n throw new Error(\n `ERC20 Unwrap Transfer UserOperation failed: ` +\n `userOpHash=${userOpReceipt.userOpHash}, ` +\n `tx=${userOpReceipt.receipt.transactionHash}, ` +\n `reason=${userOpReceipt.reason ?? 'unknown (likely out of gas)'}`,\n );\n }\n\n return userOpReceipt.receipt.transactionHash;\n }\n\n private delay(ms: number): Promise<void> {\n return new Promise(resolve => setTimeout(resolve, ms));\n }\n\n public async batchTransfer({ responses, tokenAddress }: BatchTransferParams): Promise<Hex[]> {\n const smartWalletClient = await this.walletService.getSmartWalletClient();\n const transactionHashes: Hex[] = [];\n\n for (const response of responses) {\n const transactionIdBytes16 = this.convertGuidToBytes16(response.transaction_id);\n const operationIdBytes16 = this.convertGuidToBytes16(response.operation_id);\n\n const recipients = response.crypto_transfers.map(\n transfer => transfer.address as `0x${string}`,\n );\n const amounts = response.crypto_transfers.map(transfer => BigInt(transfer.precise_amount));\n\n const callData = await this.generateBatchTransferCallData(\n transactionIdBytes16,\n operationIdBytes16,\n tokenAddress,\n recipients,\n amounts,\n );\n\n if (!smartWalletClient.account) {\n throw new Error('Smart wallet client account is not available.');\n }\n\n const encodedCall = await smartWalletClient.account.encodeCalls([callData]);\n\n const nonce = await this.getCustomNonceToFinishRequest(encodedCall);\n const userOpReceipt = await this.walletService.sendUserOperationsWithNonceAndWaitReceipt(\n encodedCall,\n nonce,\n );\n\n if (!userOpReceipt.success) {\n throw new Error(\n `Bulk transfer execution failed for transaction ${response.transaction_id}: ` +\n `userOpHash=${userOpReceipt.userOpHash}, ` +\n `tx=${userOpReceipt.receipt.transactionHash}, ` +\n `reason=${userOpReceipt.reason ?? 'unknown (likely out of gas)'}`,\n );\n }\n\n transactionHashes.push(userOpReceipt.receipt.transactionHash);\n }\n\n return transactionHashes;\n }\n\n private async getCustomNonceToFinishRequest(callData: `0x${string}`): Promise<bigint> {\n const smartWalletClient = await this.walletService.getSmartWalletClient();\n const nonceKey = keccak256(callData);\n const customNonce = getCustomNonceKeyFromString(nonceKey, '0.7');\n\n return await smartWalletClient.account!.getNonce({ key: customNonce });\n }\n\n private convertGuidToBytes16(guid: string): `0x${string}` {\n const guidHex = `0x${guid.replace(/-/g, '')}` as `0x${string}`;\n return pad(guidHex, { size: 16 }) as `0x${string}`;\n }\n\n private async ercTransferCall(\n token: `0x${string}`,\n recipientAddress: `0x${string}`,\n amount: bigint,\n ) {\n const callData = encodeFunctionData({\n abi: erc20Abi,\n functionName: 'transfer',\n args: [recipientAddress, amount],\n });\n return {\n to: token,\n value: BigInt(0),\n data: callData,\n } as CallData;\n }\n\n private async operationRequestCall(callData: `0x${string}`) {\n const smartWalletClient = await this.walletService.getSmartWalletClient();\n const executionDelayPolicyContract = this.contracts?.executionDelayPolicy;\n const nonceKey = keccak256(callData);\n const customNonce = getCustomNonceKeyFromString(nonceKey, '0.7');\n const nonce = await smartWalletClient.account!.getNonce({ key: customNonce });\n const requestCallData = encodeFunctionData({\n abi: executionDelayPolicyAbi,\n functionName: 'request',\n args: [smartWalletClient.account?.address, nonce, callData],\n });\n\n return {\n call: {\n to: executionDelayPolicyContract as `0x${string}`,\n value: BigInt(0),\n data: requestCallData,\n },\n hasCustomNonce: true,\n };\n }\n\n private async generateUnwrapCallData(token: `0x${string}`, amount: bigint) {\n const callData = encodeFunctionData({\n abi: syntheticAbi,\n functionName: 'withdraw',\n args: [amount],\n });\n return {\n to: token,\n value: BigInt(0),\n data: callData,\n } as CallData;\n }\n\n private async generateBatchTransferCallData(\n transactionId: `0x${string}`,\n operationId: `0x${string}`,\n tokenAddress: `0x${string}`,\n recipients: `0x${string}`[],\n amounts: bigint[],\n ) {\n const fundsManagementContract = this.contracts?.fundsManagement;\n const callData = encodeFunctionData({\n abi: fundsManagementAbi,\n functionName: 'executeOutgoingBatchTransaction',\n args: [transactionId, operationId, tokenAddress, recipients, amounts],\n });\n\n return {\n to: fundsManagementContract as `0x${string}`,\n value: BigInt(0),\n data: callData,\n };\n }\n}\n","import { WaitForUserOperationReceiptReturnType } from 'viem/account-abstraction';\n\nimport type { IAccountAbstractionService, IAccountContractService, IOnboardingService } from '../../interfaces/index';\nimport type { IWalletService } from '../types';\n\nimport { Logger } from '../../../../core/index';\n\nexport class BaseOnboardingService implements IOnboardingService {\n private readonly walletService: IWalletService;\n private readonly accountAbstractionService: IAccountAbstractionService;\n private readonly accountContractService: IAccountContractService;\n private readonly logger?: Logger;\n\n constructor(config: {\n walletService: IWalletService;\n accountAbstractionService: IAccountAbstractionService;\n accountContractService: IAccountContractService;\n logger?: Logger;\n }) {\n this.walletService = config.walletService;\n this.accountAbstractionService = config.accountAbstractionService;\n this.accountContractService = config.accountContractService;\n this.logger = config.logger;\n }\n\n /**\n * Executor install + root validator switch + Accounts registration in one UserOp,\n * signed by the pre-policy (ECDSA sudo) client. Replaces the three-signature\n * sequence signInExecutor → signInPolicy → registerInAccounts for wallets that\n * have neither the executor nor the policy installed yet.\n */\n public async allInOneStepOnboarding(): Promise<WaitForUserOperationReceiptReturnType> {\n const smartWalletClient = await this.walletService.getSmartWalletClientWithoutPolicy();\n\n const executorCall = await this.accountAbstractionService.getExecutorInstallCall();\n const policyCall = await this.accountAbstractionService.getPolicyInstallCall();\n const accountCall = await this.accountContractService.getAccountRegistrationCall();\n\n const callData = await smartWalletClient.account!.encodeCalls([\n executorCall,\n policyCall,\n accountCall,\n ]);\n\n const userOpReceipt = await this.walletService.sendUserOperationsAndWaitReceipt(\n callData,\n smartWalletClient,\n );\n\n if (!userOpReceipt?.success) {\n throw new Error(\n `Onboarding UserOperation failed: ` +\n `userOpHash=${userOpReceipt?.userOpHash}, ` +\n `tx=${userOpReceipt?.receipt?.transactionHash}, ` +\n `reason=${userOpReceipt?.reason ?? 'unknown (likely out of gas)'}`,\n );\n }\n\n this.logger?.info('All-in-one onboarding completed', {\n txHash: userOpReceipt.receipt.transactionHash,\n });\n\n return userOpReceipt;\n }\n}","import { signerToEcdsaValidator } from '@zerodev/ecdsa-validator';\nimport { toPermissionValidator } from '@zerodev/permissions';\nimport { toSudoPolicy } from '@zerodev/permissions/policies';\nimport { toECDSASigner } from '@zerodev/permissions/signers';\nimport { createKernelAccount, createKernelAccountClient, KernelAccountClient } from '@zerodev/sdk';\nimport { getEntryPoint, KERNEL_V3_1 } from '@zerodev/sdk/constants';\nimport { KernelValidator, Signer } from '@zerodev/sdk/types';\nimport { createWalletClient, custom, HttpTransport, WalletClient } from 'viem';\n\nimport type { ChainServiceConfig, IWalletService, SendUserOperationConfig } from '../types';\nimport type { Chain, ContractAddresses, Logger, MainWalletClient } from '../../../../core/index';\n\nconst UNWRAP_CALL_GAS_FLOOR = 1_300_000n;\n\nexport class BaseWalletService implements IWalletService {\n private readonly kernelPaymasterClient: any;\n private readonly kernelPublicClient: any;\n private readonly bundlerTransport: HttpTransport<undefined, false>;\n private readonly contracts: ContractAddresses;\n private readonly chain: Chain;\n private readonly logger?: Logger;\n private readonly _getMainWalletClient: () => MainWalletClient | Promise<MainWalletClient>;\n private smartAccountSigner?: WalletClient;\n private smartAddress?: `0x${string}`;\n private smartWalletClient?: KernelAccountClient;\n\n constructor(config: ChainServiceConfig) {\n this.bundlerTransport = config.bundlerTransport;\n this.kernelPaymasterClient = config.kernelPaymasterClient;\n this.kernelPublicClient = config.kernelPublicClient;\n this.contracts = config.contracts;\n this.chain = config.chain;\n this.logger = config.logger;\n this._getMainWalletClient = config.getMainWalletClient;\n }\n\n async getSmartWalletClientWithoutPolicy(): Promise<KernelAccountClient> {\n const smartAccountSigner = await this.getSmartAccountSigner();\n const simpleValidator = await this.createSimpleValidator(smartAccountSigner);\n\n const simpleSmartWalletClient = await this.createKernelClient(simpleValidator);\n\n if (!this.smartAddress) {\n const address = simpleSmartWalletClient.account?.address;\n if (!address) {\n throw new Error('Failed to create smart wallet: account address is undefined');\n }\n this.smartAddress = address;\n }\n\n return simpleSmartWalletClient;\n }\n\n async getSmartWalletClient(): Promise<KernelAccountClient> {\n if (this.smartWalletClient) {\n return this.smartWalletClient;\n }\n const validator = await this.createExecutionDelayValidator();\n const smartWalletAddress = await this.getSmartWalletAddress();\n\n return (this.smartWalletClient = await this.createKernelClient(validator, smartWalletAddress));\n }\n\n async getSmartWalletAddress(): Promise<`0x${string}`> {\n if (this.smartAddress) {\n return this.smartAddress;\n }\n\n const simpleSmartWalletClient = await this.getSmartWalletClientWithoutPolicy();\n const address = simpleSmartWalletClient.account?.address;\n if (!address) {\n throw new Error('Failed to resolve smart wallet address: account address is undefined');\n }\n this.smartAddress = address;\n\n return this.smartAddress;\n }\n\n async getMainWalletClient(): Promise<MainWalletClient> {\n return await this._getMainWalletClient();\n }\n\n async getSmartAccountSigner(): Promise<WalletClient> {\n if (this.smartAccountSigner) {\n return this.smartAccountSigner;\n }\n\n const mainWalletClient = await this.getMainWalletClient();\n const nativeProvider = await mainWalletClient.getEthereumProvider();\n\n if (!nativeProvider) {\n throw new Error('Ethereum provider not available');\n }\n\n this.smartAccountSigner = createWalletClient({\n chain: this.chain,\n transport: custom(nativeProvider as Parameters<typeof custom>[0]),\n });\n\n return this.smartAccountSigner;\n }\n\n public async sendUserOperationsAndWaitReceipt(\n callData: any,\n smartWalletClient?: KernelAccountClient,\n config?: SendUserOperationConfig,\n ) {\n if (!smartWalletClient) {\n smartWalletClient = await this.getSmartWalletClient();\n }\n\n if (!smartWalletClient) {\n throw new Error('Smart wallet client is not available.');\n }\n try {\n const trxHash = await this.sendUserOperation(smartWalletClient, callData, undefined, config);\n const result = await smartWalletClient.waitForUserOperationReceipt({\n hash: trxHash,\n timeout: 30 * 1000,\n });\n\n if (config?.waitOnChainBlocks) {\n await this.kernelPublicClient.waitForTransactionReceipt({\n hash: result.receipt.transactionHash,\n confirmations: config.waitOnChainBlocks,\n });\n }\n\n return result;\n } catch (error) {\n this.logger?.error('Error in sendUserOperationsAndWaitReceipt:', error);\n throw error;\n }\n }\n\n public async sendUserOperationsWithNonceAndWaitReceipt(\n callData: any,\n nonce: bigint,\n config?: SendUserOperationConfig,\n ) {\n const smartWalletClient = await this.getSmartWalletClient();\n const trxHash = await this.sendUserOperation(smartWalletClient, callData, nonce, config);\n return await smartWalletClient.waitForUserOperationReceipt({\n hash: trxHash,\n timeout: 30 * 1000,\n });\n }\n\n private async sendUserOperation(\n smartWalletClient: KernelAccountClient,\n callData: any,\n nonce?: bigint,\n config?: SendUserOperationConfig,\n ): Promise<`0x${string}`> {\n const request = nonce === undefined ? { callData } : { callData, nonce };\n\n if (!config?.applyUnwrapGasFloor) {\n return await smartWalletClient.sendUserOperation(request);\n }\n\n const fees = await smartWalletClient.getUserOperationGasPrice();\n\n const estimate = await smartWalletClient.estimateUserOperationGas({\n ...request,\n maxFeePerGas: fees.maxFeePerGas,\n maxPriorityFeePerGas: fees.maxPriorityFeePerGas,\n });\n\n // viem's formatter drops gas fields the bundler omits, so callGasLimit can be absent.\n const estimated = estimate?.callGasLimit;\n const callGasLimit =\n typeof estimated === 'bigint' && estimated > UNWRAP_CALL_GAS_FLOOR\n ? estimated\n : UNWRAP_CALL_GAS_FLOOR;\n\n this.logger?.debug(\n `Unwrap callGasLimit floor: estimated=${estimated ?? 'n/a'} submitted=${callGasLimit}`,\n );\n\n return await smartWalletClient.sendUserOperation({\n ...estimate,\n ...request,\n callGasLimit,\n });\n }\n\n public invalidateLocalCache(): void {\n this.smartWalletClient = undefined;\n this.smartAddress = undefined;\n this.smartAccountSigner = undefined;\n }\n\n private async createSimpleValidator(signer: WalletClient): Promise<KernelValidator> {\n return await signerToEcdsaValidator(this.kernelPublicClient, {\n signer: signer as Signer,\n entryPoint: getEntryPoint('0.7'),\n kernelVersion: KERNEL_V3_1,\n });\n }\n\n private async createKernelClient(\n validator: KernelValidator,\n address?: `0x${string}`,\n ): Promise<KernelAccountClient> {\n const baseConfig = {\n entryPoint: getEntryPoint('0.7'),\n kernelVersion: KERNEL_V3_1,\n plugins: {\n sudo: validator,\n },\n ...(address && { address }),\n };\n\n const kernelAccount = await createKernelAccount(this.kernelPublicClient, baseConfig);\n\n return createKernelAccountClient({\n account: kernelAccount,\n chain: this.chain,\n bundlerTransport: this.bundlerTransport,\n paymaster: {\n getPaymasterData: async userOperation => {\n // viem's prepareUserOperation leaks its own request options (`parameters`,\n // `stateOverride`, ...) into the paymaster call, and zerodev's sponsorUserOperation\n // forwards every unknown key on the wire. Base mainnet validates the userOp schema\n // strictly and rejects them with 400 \"Unrecognized key(s) in object: 'parameters'\",\n // while the testnet endpoint silently accepts them.\n const {\n parameters: _parameters,\n stateOverride: _stateOverride,\n dataSuffix: _dataSuffix,\n paymasterContext: _paymasterContext,\n ...cleanUserOperation\n } = userOperation as typeof userOperation & Record<string, unknown>;\n\n const sponsored = await this.kernelPaymasterClient.sponsorUserOperation({\n userOperation: cleanUserOperation,\n });\n\n // The sponsorship endpoint re-estimates gas and ignores the callGasLimit we send,\n // and viem merges its response over our request, so an explicitly requested limit\n // (the unwrap gas floor) is silently lowered and the op reverts out of gas while\n // zeroing the token storage slot.\n const requested =\n typeof userOperation.callGasLimit === 'bigint' ? userOperation.callGasLimit : 0n;\n if (typeof sponsored?.callGasLimit === 'bigint' && sponsored.callGasLimit < requested) {\n sponsored.callGasLimit = requested;\n }\n\n this.logger?.debug(\n `Paymaster gas: requested=${userOperation.callGasLimit ?? 'n/a'} sponsored=${sponsored?.callGasLimit ?? 'n/a'}`,\n );\n return sponsored;\n },\n },\n });\n }\n\n private async createExecutionDelayValidator() {\n const executionDelayPolicyContract = await this.contracts.executionDelayPolicy;\n const rootPolicy = toSudoPolicy({ policyAddress: executionDelayPolicyContract });\n const res = await toPermissionValidator(this.kernelPublicClient, {\n entryPoint: getEntryPoint('0.7'),\n signer: await toECDSASigner({ signer: (await this.getSmartAccountSigner()) as Signer }),\n kernelVersion: KERNEL_V3_1,\n policies: [rootPolicy],\n });\n\n res.address = executionDelayPolicyContract as `0x${string}`;\n\n return res;\n }\n}\n","import { encodeFunctionData, formatUnits, parseAbiItem, PublicClient } from 'viem';\n\nimport { syntheticAbi, yieldCalculatorAbi } from '../../../../abi/index';\n\nimport type { IYieldService, IYieldData, IYieldGraphicData } from '../../interfaces/index';\nimport type { IWalletService } from '../types';\n\nimport { ContractAddresses, TokenInfo } from '../../../../core/index';\n\ninterface CallData {\n to: `0x${string}`;\n value: bigint;\n data: `0x${string}`;\n}\n\ninterface UserYieldChangedEvent {\n accumulatedYield: bigint;\n lastBalance: bigint;\n currentBalance: bigint;\n lastUpdateTime: bigint;\n blockNumber: bigint | null;\n isYieldActive: boolean;\n}\n\nexport class BaseYieldService implements IYieldService {\n private readonly publicClient: PublicClient;\n private readonly walletService: IWalletService;\n private syntheticToken?: TokenInfo;\n private readonly contracts: ContractAddresses;\n private readonly tokens: TokenInfo[];\n private readonly BLOCKS_PER_SECOND = 0.5;\n private apr?: bigint;\n\n constructor(config: {\n publicClient: PublicClient;\n walletService: IWalletService;\n contracts: ContractAddresses;\n tokens: TokenInfo[];\n }) {\n this.publicClient = config.publicClient;\n this.walletService = config.walletService;\n this.contracts = config.contracts;\n this.tokens = config.tokens;\n }\n\n public async fetchYieldData(): Promise<IYieldData> {\n const [currentPendingYield, apr, weeklyYield, totalClaimed] = await Promise.all([\n this.fetchUserPendingYield(),\n this.getApr(),\n this.getWeeklyYield(),\n this.getTotalClaimedYield(),\n ]);\n\n const syntheticToken = await this.getSyntheticTokenInfo();\n\n return {\n apy: Number(apr) / 100,\n currentPendingYield: this.toFullBalance(\n currentPendingYield?.accumulatedYield,\n syntheticToken.decimals,\n ),\n weeklyYield,\n lifeTimeYield: this.toFullBalance(\n totalClaimed + currentPendingYield?.accumulatedYield,\n syntheticToken.decimals,\n ),\n };\n }\n\n public async getYieldDataForGraphic(): Promise<IYieldGraphicData[]> {\n const eventsForMonth = await this.fetchUserYieldEvents();\n\n return this.processYieldEvents(eventsForMonth);\n }\n\n public async getWeeklyYield(): Promise<string> {\n const [currentPendingYield, apr] = await Promise.all([\n this.fetchUserPendingYield(),\n this.getApr(),\n ]);\n const syntheticToken = await this.getSyntheticTokenInfo();\n const weekAfter = this.now() + BigInt(7 * 24 * 60 * 60);\n\n const calculatedWeekYield = await this.calculateYieldByWeek(\n currentPendingYield?.lastBalance,\n currentPendingYield?.accumulatedYield,\n this.now(),\n weekAfter,\n apr,\n );\n\n return this.toFullBalance(calculatedWeekYield, syntheticToken.decimals);\n }\n\n public async switchYieldToken(token: TokenInfo): Promise<void> {\n const smartWalletClient = await this.walletService.getSmartWalletClient();\n const claimCallData = await this.generateCallDataFoSwitchToken(token);\n const encodedExecutionCalls = await smartWalletClient.account!.encodeCalls([claimCallData]);\n const { receipt: executeReceipt } =\n await this.walletService.sendUserOperationsAndWaitReceipt(encodedExecutionCalls);\n if (executeReceipt.success === false) {\n throw new Error('Switching yield token failed');\n }\n this.syntheticToken = undefined;\n this.apr = undefined;\n }\n\n public async withdraw(): Promise<void> {\n const smartWalletClient = await this.walletService.getSmartWalletClient();\n\n const claimCallData = await this.generateClaimCallData();\n const encodedExecutionCalls = await smartWalletClient.account!.encodeCalls([claimCallData]);\n const { receipt: executeReceipt } =\n await this.walletService.sendUserOperationsAndWaitReceipt(encodedExecutionCalls);\n if (executeReceipt.success === false) {\n throw new Error('Claimed yield failed');\n }\n }\n\n private async generateClaimCallData(): Promise<CallData> {\n const syntheticInYield = await this.getSyntheticTokenInfo();\n if (!syntheticInYield) {\n throw new Error('Synthetic token not found in yield');\n }\n\n const callData = encodeFunctionData({\n abi: syntheticAbi,\n functionName: 'claimYield',\n });\n\n return {\n to: syntheticInYield.address as `0x${string}`,\n value: BigInt(0),\n data: callData,\n } as CallData;\n }\n\n private async generateCallDataFoSwitchToken(token: TokenInfo): Promise<CallData> {\n const yieldCalculatorContract = this.contracts.yieldCalculator;\n\n if (!yieldCalculatorContract) {\n throw new Error('Yield calculator contract not found');\n }\n\n const callData = encodeFunctionData({\n abi: yieldCalculatorAbi,\n functionName: 'setActiveYieldToken',\n args: [token.address],\n });\n\n return {\n to: yieldCalculatorContract as `0x${string}`,\n value: BigInt(0),\n data: callData,\n } as CallData;\n }\n\n private async processYieldEvents(\n events: UserYieldChangedEvent[],\n daysPeriod: number = 7,\n ): Promise<IYieldGraphicData[]> {\n const currentPendingYield = await this.fetchUserPendingYield();\n const syntheticToken = await this.getSyntheticTokenInfo();\n const apr = await this.getApr();\n\n const yieldByPeriod: IYieldGraphicData[] = [];\n\n if (events.length === 0 && currentPendingYield.accumulatedYield === BigInt(0)) {\n return [];\n }\n\n if (\n events.length === 1 &&\n this.toFullBalance(currentPendingYield.accumulatedYield, syntheticToken.decimals) === '0'\n ) {\n return [];\n }\n\n if (events.length === 0 && currentPendingYield.accumulatedYield !== BigInt(0)) {\n const timestampPeriodAgo = this.now() - BigInt(daysPeriod * 24 * 60 * 60);\n const calculatedYield = await this.calculateYieldByWeek(\n currentPendingYield.lastBalance,\n currentPendingYield.accumulatedYield,\n timestampPeriodAgo,\n this.now(),\n apr,\n );\n yieldByPeriod.push({\n timestamp: Number(timestampPeriodAgo),\n yield: this.toFullBalance(\n currentPendingYield.accumulatedYield - calculatedYield,\n syntheticToken.decimals,\n ),\n });\n }\n\n const sortedEvents = events.sort((a, b) => Number(a.lastUpdateTime - b.lastUpdateTime));\n\n for (let i = 0; i < sortedEvents.length; i++) {\n const event = sortedEvents[i];\n\n if (i === 0 && event.isYieldActive) {\n yieldByPeriod.push({\n timestamp: Number(event.lastUpdateTime),\n yield: this.toFullBalance(event.accumulatedYield, syntheticToken.decimals),\n });\n }\n\n if (!event.isYieldActive) {\n yieldByPeriod.push({\n timestamp: Number(event.lastUpdateTime),\n });\n\n continue;\n }\n\n if (event.isYieldActive && events[i - 1] && !events[i - 1].isYieldActive) {\n yieldByPeriod.push({\n timestamp: Number(event.lastUpdateTime),\n yield: this.toFullBalance(event.accumulatedYield, syntheticToken.decimals),\n });\n }\n\n if (sortedEvents[i + 1]) {\n const calculatedYieldBetweenPeriods = await this.calculateYieldByWeek(\n event.currentBalance,\n event.accumulatedYield,\n event.lastUpdateTime,\n sortedEvents[i + 1].lastUpdateTime,\n apr,\n );\n\n if (\n calculatedYieldBetweenPeriods + event.accumulatedYield >\n sortedEvents[i + 1].accumulatedYield\n ) {\n yieldByPeriod.push({\n timestamp: Number(event.lastUpdateTime),\n yield: this.toFullBalance(\n calculatedYieldBetweenPeriods + event.accumulatedYield,\n syntheticToken.decimals,\n ),\n });\n }\n\n yieldByPeriod.push({\n timestamp: Number(sortedEvents[i + 1].lastUpdateTime),\n yield: this.toFullBalance(sortedEvents[i + 1].accumulatedYield, syntheticToken.decimals),\n });\n }\n }\n\n yieldByPeriod.push({\n timestamp: Number(this.now()),\n yield: this.toFullBalance(currentPendingYield.accumulatedYield, syntheticToken.decimals),\n });\n\n return yieldByPeriod;\n }\n\n private calculateYield(\n balance: bigint,\n accumulatedYield: bigint,\n startPeriod: bigint,\n endPeriod: bigint,\n apr: bigint,\n ): bigint {\n const precision = BigInt('1000000000000000000');\n const basisPoints = BigInt(10000);\n const dailyRateScaled = (apr * precision) / (basisPoints * BigInt(365));\n const secondsElapsed = endPeriod - startPeriod;\n const daysElapsedScaled = (secondsElapsed * precision) / BigInt(86400);\n const growthMinusOne = (daysElapsedScaled * dailyRateScaled) / precision;\n const totalBalance = balance + accumulatedYield;\n\n return (totalBalance * growthMinusOne) / precision;\n }\n\n private async calculateYieldByWeek(\n balance: bigint,\n accumulatedYield: bigint,\n startPeriod: bigint,\n endPeriod: bigint,\n apr: bigint,\n ): Promise<bigint> {\n const precision = BigInt('1000000000000000000');\n const basisPoints = BigInt(10000);\n\n const timePassed = endPeriod - startPeriod;\n const weeklyRate = (apr * precision) / (BigInt(52) * basisPoints);\n const fullWeeks = timePassed / BigInt(604800);\n\n const fractionalWeek = ((timePassed % BigInt(604800)) * precision) / BigInt(604800);\n\n const base = precision + weeklyRate;\n\n const fullPeriodsFactor = this.power(base, fullWeeks, precision);\n const fractionalFactor = precision + (weeklyRate * fractionalWeek) / precision;\n const compoundFactor = (fullPeriodsFactor * fractionalFactor) / precision;\n\n if (compoundFactor <= precision) {\n return BigInt(0);\n }\n\n const yieldMultiplier = compoundFactor - precision;\n return ((balance + accumulatedYield) * yieldMultiplier) / precision;\n }\n\n private power(x: bigint, n: bigint, precision: bigint): bigint {\n if (n == BigInt(0)) return precision;\n if (n == BigInt(1)) return x;\n\n let result = precision;\n let base = x;\n\n while (n > BigInt(0)) {\n if (n % BigInt(2) == BigInt(1)) {\n result = (result * base) / precision;\n }\n base = (base * base) / precision;\n n /= BigInt(2);\n }\n\n return result;\n }\n\n private async fetchUserPendingYield() {\n const syntheticInYield = await this.getSyntheticTokenInfo();\n const smartWalletClient = await this.walletService.getSmartWalletClient();\n const smartWalletAddress = smartWalletClient.account?.address;\n\n return await this.publicClient.readContract({\n address: syntheticInYield?.address as `0x${string}`,\n abi: syntheticAbi,\n functionName: 'pendingYield',\n args: [smartWalletAddress as `0x${string}`],\n });\n }\n\n private async getApr(): Promise<bigint> {\n if (this.apr) return this.apr;\n\n const calculatorContract = this.contracts.yieldCalculator;\n const syntheticInYield = await this.getSyntheticTokenInfo();\n\n const apr = await this.publicClient.readContract({\n address: calculatorContract,\n abi: yieldCalculatorAbi,\n functionName: 'aprs',\n args: [syntheticInYield?.address as `0x${string}`],\n });\n\n this.apr = BigInt(apr);\n\n return this.apr;\n }\n\n private async fetchUserYieldEvents(\n days: number = 7,\n toBlock: bigint | null = null,\n ): Promise<UserYieldChangedEvent[]> {\n try {\n const currentBlockNumber = await this.publicClient.getBlockNumber();\n const actualToBlock = toBlock ?? currentBlockNumber;\n const blocksInDaysPeriod = BigInt(Math.floor(days * 24 * 60 * 60 * this.BLOCKS_PER_SECOND));\n const fromBlock = actualToBlock > blocksInDaysPeriod ? actualToBlock - blocksInDaysPeriod : BigInt(0);\n const smartWalletClient = await this.walletService.getSmartWalletClient();\n const smartWalletAddress = smartWalletClient.account?.address;\n const syntheticInYield = await this.getSyntheticTokenInfo();\n\n const logs = await this.publicClient.getLogs({\n address: syntheticInYield?.address as `0x${string}`,\n event: parseAbiItem(\n 'event UserYieldChanged(address indexed user, uint256 accumulatedYield, uint256 lastBalance, uint256 currentBalance, uint64 lastUpdateTime, bool isYieldActive)',\n ),\n fromBlock: fromBlock,\n toBlock: toBlock ?? currentBlockNumber,\n ...(smartWalletAddress && {\n args: {\n user: smartWalletAddress as `0x${string}`,\n },\n }),\n });\n\n return logs.map((log: any) => ({\n accumulatedYield: log.args?.accumulatedYield as bigint,\n lastBalance: log.args?.lastBalance as bigint,\n lastUpdateTime: log.args?.lastUpdateTime as bigint,\n blockNumber: log.blockNumber as bigint | null,\n currentBalance: log.args?.currentBalance as bigint,\n isYieldActive: log.args?.isYieldActive as boolean,\n }));\n } catch (error) {\n console.error('Error fetching UserYieldChanged events:', error);\n throw error;\n }\n }\n\n private async getTotalClaimedYield() {\n const smartWalletClient = await this.walletService.getSmartWalletClient();\n const smartWalletAddress = smartWalletClient.account?.address;\n const syntheticInYield = await this.getSyntheticTokenInfo();\n\n return await this.publicClient.readContract({\n address: syntheticInYield?.address as `0x${string}`,\n abi: syntheticAbi,\n functionName: 'claimedYield',\n args: [smartWalletAddress as `0x${string}`],\n });\n }\n\n private async getSyntheticTokenInfo(): Promise<TokenInfo> {\n if (this.syntheticToken) return this.syntheticToken;\n\n const smartWalletAddress = await this.walletService.getSmartWalletAddress();\n const tokenAddressInYield = await this.publicClient.readContract({\n address: this.contracts.yieldCalculator as `0x${string}`,\n abi: yieldCalculatorAbi,\n functionName: 'getActiveYieldToken',\n args: [smartWalletAddress],\n });\n\n if (!tokenAddressInYield) {\n throw new Error('Yield token not found in yield calculator');\n }\n\n const token = this.tokens.find(\n token => token.isSynthetic && token.address === tokenAddressInYield,\n );\n\n if (!token) {\n throw new Error('Yield token not found in tokens list');\n }\n\n this.syntheticToken = token;\n\n return this.syntheticToken!;\n }\n\n private now(): bigint {\n return BigInt(Math.floor(Date.now() / 1000));\n }\n\n private toFullBalance(amount: bigint, decimals: number) {\n const amountString = formatUnits(amount, decimals);\n const num = parseFloat(amountString);\n\n if (num < 0.000001) return '0';\n\n return num.toFixed(4);\n }\n}\n","import { chainRegistry } from '../registry';\nimport { BaseAccountAbstractionService } from './account-abstraction.service';\nimport { BaseAccountContractService } from './account.contract.service';\nimport { BaseCryptoService } from './crypto.service';\nimport { BaseOnboardingService } from './onboarding.service';\nimport { BaseWalletService } from './wallet.service';\nimport { BaseYieldService } from './yield.service';\n\nimport type { ChainServicesFactory, ChainServiceConfig, IWalletService } from '../types';\nimport type { IAccountAbstractionService, IAccountContractService } from '../../interfaces/index';\nimport type { TokenInfo } from '../../../../core/index';\n\nconst baseFactory: ChainServicesFactory = {\n createWalletService(config: ChainServiceConfig): IWalletService {\n return new BaseWalletService(config);\n },\n\n createAccountAbstractionService(config: ChainServiceConfig, walletService: IWalletService) {\n return new BaseAccountAbstractionService({\n publicRpcClient: config.publicClient,\n kernelPublicClient: config.kernelPublicClient,\n contracts: config.contracts,\n walletService: walletService as BaseWalletService,\n logger: config.logger,\n });\n },\n\n createCryptoService(\n config: ChainServiceConfig,\n walletService: IWalletService,\n tokens: TokenInfo[],\n ) {\n return new BaseCryptoService({\n contracts: config.contracts,\n walletService,\n tokens,\n logger: config.logger,\n withdrawalApi: config.withdrawalApi,\n });\n },\n\n createYieldService(\n config: ChainServiceConfig,\n walletService: IWalletService,\n tokens: TokenInfo[],\n ) {\n return new BaseYieldService({\n publicClient: config.publicClient,\n walletService,\n contracts: config.contracts,\n tokens,\n });\n },\n\n createAccountContractService(config: ChainServiceConfig, walletService: IWalletService) {\n return new BaseAccountContractService({\n publicRpcClient: config.publicClient,\n walletService,\n companyId: config.companyId || '',\n logger: config.logger,\n contracts: config.contracts,\n });\n },\n\n createOnboardingService(\n config: ChainServiceConfig,\n walletService: IWalletService,\n accountAbstractionService: IAccountAbstractionService,\n accountContractService: IAccountContractService,\n ) {\n return new BaseOnboardingService({\n walletService,\n accountAbstractionService,\n accountContractService,\n logger: config.logger,\n });\n },\n};\n\nchainRegistry.register(8453, baseFactory);\nchainRegistry.register(84532, baseFactory);\nchainRegistry.register(5042002, baseFactory);\n\nexport { BaseWalletService } from './wallet.service';\nexport { BaseAccountAbstractionService } from './account-abstraction.service';\nexport { BaseCryptoService } from './crypto.service';\nexport { BaseYieldService } from './yield.service';\nexport { BaseAccountContractService } from './account.contract.service';\nexport { BaseOnboardingService } from './onboarding.service';\n","import { contractRegistryAbi, tokenRegistryAbi } from '../../../abi/index';\n\nimport type { ContractAddresses, TokenInfo, Hex, Logger } from '../../../core/index';\n\nimport { ContractError } from '../../../core/index';\n\n\nconst CONTRACT_NAMES = {\n accounts: 'Accounts',\n corporateAccounts: 'CorporateAccounts',\n tokenRegistry: 'TokensRegistry',\n processing: 'Processing',\n executionDelayPolicy: 'ExecutionDelayPolicy',\n fundsManagement: 'FundsManagement',\n fundsBuffer: 'FundsBuffer',\n syntheticRouter: 'SyntheticRouter',\n yieldCalculator: 'YieldCalculator',\n cardsManagement: 'CardsManagement',\n} as const;\n\nexport class ContractRegistryService {\n private readonly publicClient: any;\n private readonly registryAddress: Hex;\n private readonly logger?: Logger;\n\n constructor(config: { registryAddress: `0x${string}`; publicClient?: any; logger?: Logger }) {\n this.registryAddress = config.registryAddress;\n this.logger = config.logger;\n this.publicClient = config.publicClient;\n }\n\n async loadContracts(): Promise<ContractAddresses> {\n this.logger?.info('Loading contracts from registry...');\n\n const contracts: Partial<ContractAddresses> = {};\n\n for (const [key, name] of Object.entries(CONTRACT_NAMES)) {\n try {\n const address = await this.publicClient.readContract({\n address: this.registryAddress,\n abi: contractRegistryAbi,\n functionName: 'contractByName',\n args: [name],\n });\n\n contracts[key as keyof ContractAddresses] = address as Hex;\n this.logger?.debug(`Loaded ${name}: ${address}`);\n } catch (error) {\n this.logger?.warn(`Failed to load contract ${name}:`, error);\n }\n }\n\n this.logger?.info('Contracts loaded successfully');\n return contracts as ContractAddresses;\n }\n\n async loadTokens(tokenRegistryAddress: Hex): Promise<TokenInfo[]> {\n this.logger?.info('Loading tokens from registry...');\n\n try {\n const tokensRaw = await this.publicClient.readContract({\n address: tokenRegistryAddress,\n abi: tokenRegistryAbi,\n functionName: 'retrieveAllTokensV2',\n });\n\n const tokens: TokenInfo[] = (\n tokensRaw as Array<{\n tokenAddress: Hex;\n symbol: string;\n decimals: bigint;\n isSynthetic: boolean;\n baseToken: Hex;\n }>\n ).map(token => {\n const baseTokenRaw = tokensRaw.find(\n (baseToken: any) => baseToken.tokenAddress === token.baseToken,\n );\n\n return {\n symbol: token.symbol,\n address: token.tokenAddress,\n decimals: Number(token.decimals),\n isSynthetic: token.isSynthetic,\n baseToken: baseTokenRaw\n ? {\n address: baseTokenRaw.tokenAddress,\n decimals: Number(baseTokenRaw.decimals),\n symbol: baseTokenRaw.symbol,\n isSynthetic: baseTokenRaw.isSynthetic,\n }\n : undefined,\n };\n });\n\n this.logger?.info(`Loaded ${tokens.length} tokens`);\n return tokens;\n } catch (error) {\n this.logger?.error('Failed to load tokens:', error);\n throw new ContractError(\n 'Failed to load tokens from registry',\n tokenRegistryAddress,\n error as Error,\n );\n }\n }\n}\n","import { RhinoSdk, SupportedChains } from '@rhino.fi/sdk';\nimport { IWalletService } from '../chains/index';\n\nexport interface IDepositAddressData {\n depositChain: string;\n depositAddress: `0x${string}`;\n destinationChain: string;\n destinationAddress: `0x${string}`;\n isActive: boolean;\n supportedTokens: string[];\n}\n\nexport interface ISmartDepositAddresses {\n evmChains: IDepositAddressData[];\n tronChains: IDepositAddressData[];\n solanaChains: IDepositAddressData[];\n allAddresses: IDepositAddressData[];\n}\n\nexport type ChainGroup = 'evm' | 'tron' | 'solana';\n\nexport const supportedEVMChains = [\n SupportedChains.BASE,\n SupportedChains.ARBITRUM_ONE,\n SupportedChains.BNB_SMART_CHAIN,\n SupportedChains.ETHEREUM,\n SupportedChains.KAIA,\n SupportedChains.POLYGON,\n SupportedChains.OPTIMISM,\n];\n\nconst SYSTEM_SUPPORTED_TOKENS = ['USDT', 'USDC', 'EURC'];\n\nexport class SmartDepositAddressesService {\n private rhinoSdkInstance: ReturnType<typeof RhinoSdk> | null = null;\n private walletService: IWalletService;\n private readonly rhinoApiKey: string;\n private addresses: IDepositAddressData[] = [];\n\n constructor(config: { walletService: IWalletService; rhinoApiKey: string }) {\n this.walletService = config.walletService;\n this.rhinoApiKey = config.rhinoApiKey;\n }\n\n async initializeSmartDepositAddresses(\n forceRefresh: boolean = false,\n ): Promise<IDepositAddressData[]> {\n if (this.addresses.length > 0 && !forceRefresh) {\n return this.addresses;\n }\n\n try {\n const result = await this.createSmartDepositAddresses();\n const allAddresses = result.allAddresses;\n\n const hasEvmAddresses = result.evmChains.length > 0;\n const hasTronAddresses = result.tronChains.length > 0;\n const hasSolanaAddresses = result.solanaChains.length > 0;\n\n if (!hasEvmAddresses || !hasTronAddresses || !hasSolanaAddresses) {\n const failedGroups = [];\n if (!hasEvmAddresses) failedGroups.push('EVM');\n if (!hasTronAddresses) failedGroups.push('TRON');\n if (!hasSolanaAddresses) failedGroups.push('Solana');\n console.warn(`Some chain groups failed to initialize: ${failedGroups.join(', ')}`);\n }\n\n this.setAddresses(allAddresses);\n return allAddresses;\n } catch (err: any) {\n console.error('Failed to initialize smart deposit addresses:', err);\n throw err;\n }\n }\n\n getAddresses(): IDepositAddressData[] {\n return this.addresses;\n }\n\n clearAddresses(): void {\n this.addresses = [];\n }\n\n private setAddresses(addresses: IDepositAddressData[]): void {\n this.addresses = addresses;\n }\n\n private async createSmartDepositAddressForChains(\n supportedChains: string[],\n ): Promise<IDepositAddressData[]> {\n const smartWalletClient = await this.walletService.getSmartWalletClient();\n const smartWalletAddress = smartWalletClient.account!.address;\n\n const sdk = this.getRhinoSdk();\n\n const response = await sdk.api.depositAddresses.create({\n depositChains: supportedChains,\n destinationChain: SupportedChains.BASE,\n destinationAddress: smartWalletAddress,\n bridgeIfNotSwappable: true,\n tokenOut: 'USDC',\n postBridgeData: {\n _tag: 'wirexwrap',\n },\n reusePolicy: 'reuse-existing',\n });\n\n if (response.response.status !== 200 || !response.data) {\n throw new Error(JSON.stringify(response.error));\n }\n\n const activationPromises = response.data\n .filter((depositData: any) => !depositData.isActive)\n .map(async (depositData: any) => {\n const activationResponse = await sdk.api.depositAddresses.activate({\n depositAddress: depositData.depositAddress,\n depositChain: depositData.depositChain,\n });\n\n if (activationResponse.response.status !== 200) {\n throw new Error(JSON.stringify(activationResponse.error));\n }\n });\n\n await Promise.all(activationPromises);\n\n return response.data.map((item: any) => {\n const supportedTokens = (item.supportedTokens || [])\n .map((token: any) => token.symbol)\n .filter((symbol: string) => SYSTEM_SUPPORTED_TOKENS.includes(symbol));\n\n return {\n depositChain: item.depositChain,\n depositAddress: item.depositAddress,\n destinationChain: item.destinationChain,\n destinationAddress: item.destinationAddress,\n isActive: true,\n supportedTokens,\n };\n });\n }\n\n private async createSmartDepositAddresses(): Promise<ISmartDepositAddresses> {\n const results = await Promise.allSettled([\n this.createSmartDepositAddressForChains(supportedEVMChains),\n this.createSmartDepositAddressForChains([SupportedChains.TRON]),\n this.createSmartDepositAddressForChains([SupportedChains.SOLANA]),\n ]);\n\n const evmChains = results[0].status === 'fulfilled' ? results[0].value : [];\n const tronChains = results[1].status === 'fulfilled' ? results[1].value : [];\n const solanaChains = results[2].status === 'fulfilled' ? results[2].value : [];\n\n if (results[0].status === 'rejected') {\n console.error('Failed to create EVM chain addresses:', results[0].reason);\n }\n if (results[1].status === 'rejected') {\n console.error('Failed to create TRON chain addresses:', results[1].reason);\n }\n if (results[2].status === 'rejected') {\n console.error('Failed to create Solana chain addresses:', results[2].reason);\n }\n\n return {\n evmChains,\n tronChains,\n solanaChains,\n allAddresses: [...evmChains, ...tronChains, ...solanaChains],\n };\n }\n\n private async createMissingAddressesForChainGroup(chainCode: string): Promise<void> {\n try {\n const chainGroup = this.getChainGroupByChainCode(chainCode);\n\n if (this.hasAddressesForChainGroup(chainGroup)) {\n return;\n }\n\n const chains = this.getChainsForGroup(chainGroup);\n const newAddresses = await this.createSmartDepositAddressForChains(chains);\n\n const existingChainCodes = new Set(this.addresses.map(addr => addr.depositChain));\n const newUniqueAddresses = newAddresses.filter(\n addr => !existingChainCodes.has(addr.depositChain),\n );\n\n if (newUniqueAddresses.length > 0) {\n const updatedAddresses = [...this.addresses, ...newUniqueAddresses];\n this.setAddresses(updatedAddresses);\n }\n } catch (err: any) {\n console.error(`Failed to create addresses for chain ${chainCode}:`, err);\n throw err;\n }\n }\n\n private hasAddressesForChainGroup(chainGroup: ChainGroup): boolean {\n const requiredChains = this.getChainsForGroup(chainGroup);\n const existingChainCodes = new Set(this.addresses.map(addr => addr.depositChain));\n return requiredChains.some(chain => existingChainCodes.has(chain));\n }\n\n private getChainsForGroup(chainGroup: ChainGroup): string[] {\n switch (chainGroup) {\n case 'evm':\n return supportedEVMChains;\n case 'tron':\n return [SupportedChains.TRON];\n case 'solana':\n return [SupportedChains.SOLANA];\n default:\n throw new Error(`Unknown chain group: ${chainGroup}`);\n }\n }\n\n private getChainGroupByChainCode(chainCode: string): ChainGroup {\n if (supportedEVMChains.includes(chainCode)) {\n return 'evm';\n }\n if (chainCode === SupportedChains.TRON) {\n return 'tron';\n }\n if (chainCode === SupportedChains.SOLANA) {\n return 'solana';\n }\n throw new Error(`Unknown chain code: ${chainCode}`);\n }\n\n private getRhinoSdk() {\n if (!this.rhinoSdkInstance) {\n this.rhinoSdkInstance = RhinoSdk({\n apiKey: this.rhinoApiKey,\n });\n }\n return this.rhinoSdkInstance;\n }\n}\n","import { createZeroDevPaymasterClient } from '@zerodev/sdk';\nimport { createPublicClient, http, HttpTransport, PublicClient } from 'viem';\n\nimport { chainRegistry, type IWalletService } from './chains/index';\nimport { WithdrawalApi } from '../api/index';\nimport { ContractRegistryService } from './internal/contract-registry.service';\nimport { SmartDepositAddressesService } from './internal/smartDepositWallet.service';\n\nimport type {\n IAccountAbstractionService,\n ICryptoService,\n IYieldService,\n IAccountContractService,\n IOnboardingService,\n} from './interfaces/index';\nimport type { SDKModule, ModuleContext, ContractAddresses, TokenInfo, Logger, HttpClient } from '../../core/index';\n\nimport { ConfigurationError } from '../../core/index';\n\n\nexport class CryptoModule implements SDKModule {\n readonly name = 'crypto';\n\n private readonly context: ModuleContext;\n private readonly logger: Logger;\n\n private _contractRegistry?: ContractRegistryService;\n private _walletService?: IWalletService;\n private _accountAbstraction?: IAccountAbstractionService;\n private _cryptoService?: ICryptoService;\n private _yieldService?: IYieldService;\n private _accountContractService?: IAccountContractService;\n private _onboardingService?: IOnboardingService;\n private _smartDepositService?: SmartDepositAddressesService;\n\n private _contracts?: ContractAddresses;\n private _tokens: TokenInfo[] = [];\n private _initialized = false;\n\n private _bundlerTransport?: HttpTransport<undefined, false>;\n private _kernelPaymasterClient?: unknown;\n private _kernelPublicClient?: unknown;\n private _publicRPCClient?: PublicClient;\n private _httpClient?: HttpClient;\n private _withdrawalApi?: WithdrawalApi;\n\n get wallet(): IWalletService {\n this.ensureInitialized();\n return this._walletService!;\n }\n\n get accountAbstraction(): IAccountAbstractionService {\n this.ensureInitialized();\n return this._accountAbstraction!;\n }\n\n get transfer(): ICryptoService {\n this.ensureInitialized();\n return this._cryptoService!;\n }\n\n get yield(): IYieldService {\n this.ensureInitialized();\n return this._yieldService!;\n }\n\n get accountContract(): IAccountContractService {\n this.ensureInitialized();\n return this._accountContractService!;\n }\n\n get onboarding(): IOnboardingService {\n this.ensureInitialized();\n return this._onboardingService!;\n }\n\n get smartDepositAddress(): SmartDepositAddressesService {\n this.ensureInitialized();\n if (!this._smartDepositService) {\n this.logger.error(\n 'smartDepositAddress unavailable: no rhinoApiKey was provided to createSDK(). Pass rhinoApiKey in the SDK config to enable smart deposit addresses.',\n );\n throw new ConfigurationError('rhinoApiKey is required to use smartDepositAddress.');\n }\n return this._smartDepositService;\n }\n\n get contracts(): ContractAddresses | undefined {\n return this._contracts;\n }\n\n get tokens(): TokenInfo[] {\n return this._tokens;\n }\n\n constructor(context: ModuleContext) {\n this.context = context;\n this.logger = context.logger;\n }\n\n async initialize(): Promise<void> {\n if (this._initialized) {\n this.logger.warn('Crypto module already initialized');\n return;\n }\n\n this.logger.info('Initializing Crypto module...');\n\n const { config } = this.context;\n\n this._bundlerTransport = http(config.bundlerRpc, { timeout: 30 * 1000 });\n this._kernelPaymasterClient = createZeroDevPaymasterClient({\n chain: config.chain,\n transport: http(config.paymasterRpc),\n });\n\n // Node-RPC transport for the kernel public client — NOT the bundler. createKernelAccount\n // and the ZeroDev validators issue plain node calls (eth_chainId, eth_call, eth_getCode)\n // through this client. The ZeroDev bundler only serves bundler methods; on chains where\n // it has no node provider (e.g. Arc Testnet 5042002) those node calls 400 with\n // \"No API provider supports the requested chainId\". Base/Base-Sepolia masked this because\n // ZeroDev proxies node calls there. Mirrors @wirexpay/core init.ts (rpcTransport).\n this._kernelPublicClient = createPublicClient({\n chain: config.chain,\n transport: http(config.rpcUrl, { timeout: 30 * 1000 }),\n });\n\n this._publicRPCClient = createPublicClient({\n chain: config.chain,\n transport: http(config.rpcUrl, { timeout: 30 * 1000 }),\n });\n\n this._httpClient = this.context.httpClient;\n\n this._withdrawalApi = new WithdrawalApi(this._httpClient);\n\n this._contractRegistry = new ContractRegistryService({\n registryAddress: config.contractRegistry,\n publicClient: this._publicRPCClient,\n logger: this.logger,\n });\n\n this._contracts = await this._contractRegistry.loadContracts();\n this._tokens = await this._contractRegistry.loadTokens(this._contracts.tokenRegistry);\n\n this.initializeChainServices();\n\n this._initialized = true;\n this.logger.info('Crypto module initialized successfully');\n }\n\n isInitialized(): boolean {\n return this._initialized;\n }\n\n private ensureInitialized(): void {\n if (!this._initialized) {\n throw new ConfigurationError('Crypto module not initialized');\n }\n }\n\n private initializeChainServices(): void {\n const { config } = this.context;\n\n const factory = chainRegistry.get(config.chainId);\n if (!factory) {\n const supported = chainRegistry.getSupportedChainIds().join(', ');\n throw new ConfigurationError(\n `Unsupported chainId: ${config.chainId}. Supported: ${supported}`,\n );\n }\n\n const serviceConfig = {\n publicClient: this._publicRPCClient!,\n kernelPaymasterClient: this._kernelPaymasterClient!,\n kernelPublicClient: this._kernelPublicClient!,\n bundlerTransport: this._bundlerTransport!,\n contracts: this._contracts!,\n chain: config.chain!,\n logger: this.logger,\n getMainWalletClient: config.getMainWalletClient,\n tokens: this._tokens,\n companyId: config.companyId,\n withdrawalApi: this._withdrawalApi,\n };\n\n this._walletService = factory.createWalletService(serviceConfig);\n this._accountAbstraction = factory.createAccountAbstractionService(\n serviceConfig,\n this._walletService,\n );\n this._cryptoService = factory.createCryptoService(\n serviceConfig,\n this._walletService,\n this._tokens,\n );\n this._yieldService = factory.createYieldService(\n serviceConfig,\n this._walletService,\n this._tokens,\n );\n this._accountContractService = factory.createAccountContractService(\n serviceConfig,\n this._walletService,\n );\n this._onboardingService = factory.createOnboardingService(\n serviceConfig,\n this._walletService,\n this._accountAbstraction,\n this._accountContractService,\n );\n\n if (config.rhinoApiKey) {\n this._smartDepositService = new SmartDepositAddressesService({\n walletService: this._walletService,\n rhinoApiKey: config.rhinoApiKey,\n });\n }\n }\n\n getToken(symbol: string): TokenInfo | undefined {\n this.ensureInitialized();\n return this._tokens.find(t => t.symbol.toUpperCase() === symbol.toUpperCase());\n }\n}\n"]}