@alephium/powfi-sdk 0.0.1-rc.1

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.
Files changed (146) hide show
  1. package/README.md +4 -0
  2. package/clmm/artifacts/BitmapWord.ral.json +125 -0
  3. package/clmm/artifacts/BitmapWordDeployer.ral.json +31 -0
  4. package/clmm/artifacts/CreateConfig.ral.json +37 -0
  5. package/clmm/artifacts/CreateLiquidPool.ral.json +55 -0
  6. package/clmm/artifacts/DexAccount.ral.json +110 -0
  7. package/clmm/artifacts/LiquidityAmountsTest.ral.json +161 -0
  8. package/clmm/artifacts/LiquidityManagmentTest.ral.json +384 -0
  9. package/clmm/artifacts/Pool.ral.json +1530 -0
  10. package/clmm/artifacts/PoolConfig.ral.json +31 -0
  11. package/clmm/artifacts/PoolFactory.ral.json +300 -0
  12. package/clmm/artifacts/PoolRouterDemo.ral.json +49 -0
  13. package/clmm/artifacts/PoolUser.ral.json +89 -0
  14. package/clmm/artifacts/Position.ral.json +183 -0
  15. package/clmm/artifacts/PositionManager.ral.json +416 -0
  16. package/clmm/artifacts/SwapWithoutAccount.ral.json +46 -0
  17. package/clmm/artifacts/TestToken.ral.json +68 -0
  18. package/clmm/artifacts/Tick.ral.json +161 -0
  19. package/clmm/artifacts/TickBitmapTest.ral.json +220 -0
  20. package/clmm/artifacts/constants.ral.json +81 -0
  21. package/clmm/artifacts/structs.ral.json +335 -0
  22. package/clmm/artifacts/ts/BitmapWord.ts +337 -0
  23. package/clmm/artifacts/ts/BitmapWordDeployer.ts +164 -0
  24. package/clmm/artifacts/ts/DexAccount.ts +330 -0
  25. package/clmm/artifacts/ts/LiquidityAmountsTest.ts +464 -0
  26. package/clmm/artifacts/ts/LiquidityManagmentTest.ts +859 -0
  27. package/clmm/artifacts/ts/Pool.ts +2535 -0
  28. package/clmm/artifacts/ts/PoolConfig.ts +179 -0
  29. package/clmm/artifacts/ts/PoolFactory.ts +640 -0
  30. package/clmm/artifacts/ts/PoolUser.ts +237 -0
  31. package/clmm/artifacts/ts/Position.ts +440 -0
  32. package/clmm/artifacts/ts/PositionManager.ts +929 -0
  33. package/clmm/artifacts/ts/TestToken.ts +277 -0
  34. package/clmm/artifacts/ts/Tick.ts +351 -0
  35. package/clmm/artifacts/ts/TickBitmapTest.ts +512 -0
  36. package/clmm/artifacts/ts/constants.ts +17 -0
  37. package/clmm/artifacts/ts/contracts.ts +26 -0
  38. package/clmm/artifacts/ts/deployments.ts +160 -0
  39. package/clmm/artifacts/ts/index.ts +20 -0
  40. package/clmm/artifacts/ts/scripts.ts +76 -0
  41. package/clmm/artifacts/ts/types.ts +105 -0
  42. package/clmm/deployments/.deployments.devnet.json +350 -0
  43. package/clmm/deployments/.deployments.testnet.json +350 -0
  44. package/cpmm/artifacts/dex/DexAccount.ral.json +110 -0
  45. package/cpmm/artifacts/dex/Router.ral.json +361 -0
  46. package/cpmm/artifacts/dex/TokenPair.ral.json +512 -0
  47. package/cpmm/artifacts/dex/TokenPairFactory.ral.json +297 -0
  48. package/cpmm/artifacts/examples/ExampleOracleSimple.ral.json +192 -0
  49. package/cpmm/artifacts/examples/FeeCollectorFactoryImpl.ral.json +185 -0
  50. package/cpmm/artifacts/examples/FeeCollectorPerTokenPairImpl.ral.json +216 -0
  51. package/cpmm/artifacts/examples/FullMathTest.ral.json +123 -0
  52. package/cpmm/artifacts/scripts/AddLiquidity.ral.json +46 -0
  53. package/cpmm/artifacts/scripts/Burn.ral.json +31 -0
  54. package/cpmm/artifacts/scripts/CollectFee.ral.json +25 -0
  55. package/cpmm/artifacts/scripts/CreatePair.ral.json +37 -0
  56. package/cpmm/artifacts/scripts/CreatePairAndAddLiquidity.ral.json +43 -0
  57. package/cpmm/artifacts/scripts/EnableFeeCollector.ral.json +28 -0
  58. package/cpmm/artifacts/scripts/Mint.ral.json +34 -0
  59. package/cpmm/artifacts/scripts/RemoveLiquidity.ral.json +43 -0
  60. package/cpmm/artifacts/scripts/SetFeeCollectorFactory.ral.json +28 -0
  61. package/cpmm/artifacts/scripts/Swap.ral.json +46 -0
  62. package/cpmm/artifacts/scripts/SwapMaxIn.ral.json +46 -0
  63. package/cpmm/artifacts/scripts/SwapMinOut.ral.json +46 -0
  64. package/cpmm/artifacts/test/GetToken.ral.json +31 -0
  65. package/cpmm/artifacts/test/MathTest.ral.json +49 -0
  66. package/cpmm/artifacts/test/TestToken.ral.json +87 -0
  67. package/cpmm/artifacts/ts/DexAccount.ts +329 -0
  68. package/cpmm/artifacts/ts/ExampleOracleSimple.ts +383 -0
  69. package/cpmm/artifacts/ts/FeeCollectorFactoryImpl.ts +227 -0
  70. package/cpmm/artifacts/ts/FeeCollectorPerTokenPairImpl.ts +327 -0
  71. package/cpmm/artifacts/ts/FullMathTest.ts +251 -0
  72. package/cpmm/artifacts/ts/MathTest.ts +183 -0
  73. package/cpmm/artifacts/ts/Router.ts +554 -0
  74. package/cpmm/artifacts/ts/TestToken.ts +312 -0
  75. package/cpmm/artifacts/ts/TokenPair.ts +947 -0
  76. package/cpmm/artifacts/ts/TokenPairFactory.ts +501 -0
  77. package/cpmm/artifacts/ts/contracts.ts +26 -0
  78. package/cpmm/artifacts/ts/deployments.ts +109 -0
  79. package/cpmm/artifacts/ts/index.ts +16 -0
  80. package/cpmm/artifacts/ts/scripts.ts +142 -0
  81. package/cpmm/deployments/.deployments.devnet.json +77 -0
  82. package/cpmm/deployments/.deployments.testnet.json +79 -0
  83. package/lib/index.d.mts +8800 -0
  84. package/lib/index.d.ts +8800 -0
  85. package/lib/index.js +21769 -0
  86. package/lib/index.js.map +1 -0
  87. package/lib/index.mjs +22118 -0
  88. package/lib/index.mjs.map +1 -0
  89. package/package.json +80 -0
  90. package/src/clmm/clmm.ts +607 -0
  91. package/src/clmm/constants.ts +7 -0
  92. package/src/clmm/index.ts +6 -0
  93. package/src/clmm/liquidity.ts +163 -0
  94. package/src/clmm/pool.ts +154 -0
  95. package/src/clmm/tick.ts +335 -0
  96. package/src/clmm/types.ts +155 -0
  97. package/src/common/constants.ts +1 -0
  98. package/src/common/error.ts +46 -0
  99. package/src/common/index.ts +7 -0
  100. package/src/common/logger.ts +82 -0
  101. package/src/common/math.ts +88 -0
  102. package/src/common/numeric.ts +64 -0
  103. package/src/common/types.ts +49 -0
  104. package/src/common/utils.ts +3 -0
  105. package/src/cpmm/constants.ts +2 -0
  106. package/src/cpmm/cpmm.ts +631 -0
  107. package/src/cpmm/index.ts +3 -0
  108. package/src/cpmm/types.ts +113 -0
  109. package/src/index.ts +25 -0
  110. package/src/moduleBase.ts +64 -0
  111. package/src/staking/index.ts +4 -0
  112. package/src/staking/settings.ts +38 -0
  113. package/src/staking/staking.ts +277 -0
  114. package/src/staking/types.ts +15 -0
  115. package/src/staking/utils.ts +25 -0
  116. package/src/token/index.ts +1 -0
  117. package/src/token/token.ts +163 -0
  118. package/src/zeta.ts +105 -0
  119. package/staking/artifacts/AlphStakeAndLock.ral.json +31 -0
  120. package/staking/artifacts/AlphUnstakeVault.ral.json +151 -0
  121. package/staking/artifacts/XAlphStakeVault.ral.json +559 -0
  122. package/staking/artifacts/XAlphToken.ral.json +404 -0
  123. package/staking/artifacts/XAlphUnlockAndStartUnstake.ral.json +31 -0
  124. package/staking/artifacts/examples/GovernanceDemo.ral.json +282 -0
  125. package/staking/artifacts/examples/RewardSharingVault.ral.json +253 -0
  126. package/staking/artifacts/structs.ral.json +47 -0
  127. package/staking/artifacts/ts/AlphUnstakeVault.ts +354 -0
  128. package/staking/artifacts/ts/FullMathTest.ts +175 -0
  129. package/staking/artifacts/ts/GovernanceDemo.ts +726 -0
  130. package/staking/artifacts/ts/RewardSharingVault.ts +559 -0
  131. package/staking/artifacts/ts/TestDynamicArrayByteVec32.ts +431 -0
  132. package/staking/artifacts/ts/TestDynamicSortedArrayForU256.ts +516 -0
  133. package/staking/artifacts/ts/TestMerkleProof.ts +343 -0
  134. package/staking/artifacts/ts/XAlphStakeVault.ts +1120 -0
  135. package/staking/artifacts/ts/XAlphToken.ts +835 -0
  136. package/staking/artifacts/ts/contracts.ts +26 -0
  137. package/staking/artifacts/ts/deployments.ts +109 -0
  138. package/staking/artifacts/ts/index.ts +15 -0
  139. package/staking/artifacts/ts/scripts.ts +35 -0
  140. package/staking/artifacts/ts/types.ts +19 -0
  141. package/staking/artifacts/utils/FullMathTest.ral.json +57 -0
  142. package/staking/artifacts/utils/TestDynamicArrayByteVec32.ral.json +165 -0
  143. package/staking/artifacts/utils/TestDynamicSortedArrayForU256.ral.json +189 -0
  144. package/staking/artifacts/utils/TestMerkleProof.ral.json +134 -0
  145. package/staking/deployments/.deployments.devnet.json +77 -0
  146. package/staking/deployments/.deployments.testnet.json +78 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/index.ts","../src/zeta.ts","../src/cpmm/cpmm.ts","../../cpmm/artifacts/ts/index.ts","../../cpmm/artifacts/ts/DexAccount.ts","../../cpmm/artifacts/dex/DexAccount.ral.json","../../cpmm/artifacts/ts/contracts.ts","../../cpmm/artifacts/ts/ExampleOracleSimple.ts","../../cpmm/artifacts/examples/ExampleOracleSimple.ral.json","../../cpmm/artifacts/ts/FeeCollectorFactoryImpl.ts","../../cpmm/artifacts/examples/FeeCollectorFactoryImpl.ral.json","../../cpmm/artifacts/ts/FeeCollectorPerTokenPairImpl.ts","../../cpmm/artifacts/examples/FeeCollectorPerTokenPairImpl.ral.json","../../cpmm/artifacts/ts/FullMathTest.ts","../../cpmm/artifacts/examples/FullMathTest.ral.json","../../cpmm/artifacts/ts/MathTest.ts","../../cpmm/artifacts/test/MathTest.ral.json","../../cpmm/artifacts/ts/Router.ts","../../cpmm/artifacts/dex/Router.ral.json","../../cpmm/artifacts/ts/TestToken.ts","../../cpmm/artifacts/test/TestToken.ral.json","../../cpmm/artifacts/ts/TokenPair.ts","../../cpmm/artifacts/dex/TokenPair.ral.json","../../cpmm/artifacts/ts/TokenPairFactory.ts","../../cpmm/artifacts/dex/TokenPairFactory.ral.json","../../cpmm/artifacts/ts/scripts.ts","../../cpmm/artifacts/scripts/AddLiquidity.ral.json","../../cpmm/artifacts/scripts/Burn.ral.json","../../cpmm/artifacts/scripts/CollectFee.ral.json","../../cpmm/artifacts/scripts/CreatePair.ral.json","../../cpmm/artifacts/scripts/CreatePairAndAddLiquidity.ral.json","../../cpmm/artifacts/scripts/EnableFeeCollector.ral.json","../../cpmm/artifacts/test/GetToken.ral.json","../../cpmm/artifacts/scripts/Mint.ral.json","../../cpmm/artifacts/scripts/RemoveLiquidity.ral.json","../../cpmm/artifacts/scripts/SetFeeCollectorFactory.ral.json","../../cpmm/artifacts/scripts/Swap.ral.json","../../cpmm/artifacts/scripts/SwapMaxIn.ral.json","../../cpmm/artifacts/scripts/SwapMinOut.ral.json","../../cpmm/deployments/.deployments.testnet.json","../../cpmm/deployments/.deployments.devnet.json","../../cpmm/artifacts/ts/deployments.ts","../src/common/utils.ts","../src/cpmm/constants.ts","../src/common/error.ts","../src/common/logger.ts","../src/moduleBase.ts","../../../node_modules/bignumber.js/bignumber.mjs","../src/common/math.ts","../src/common/constants.ts","../src/common/types.ts","../src/clmm/clmm.ts","../../clmm/artifacts/ts/index.ts","../../clmm/artifacts/ts/BitmapWord.ts","../../clmm/artifacts/BitmapWord.ral.json","../../clmm/artifacts/ts/contracts.ts","../../clmm/artifacts/ts/types.ts","../../clmm/artifacts/structs.ral.json","../../clmm/artifacts/ts/BitmapWordDeployer.ts","../../clmm/artifacts/BitmapWordDeployer.ral.json","../../clmm/artifacts/ts/DexAccount.ts","../../clmm/artifacts/DexAccount.ral.json","../../clmm/artifacts/ts/LiquidityAmountsTest.ts","../../clmm/artifacts/LiquidityAmountsTest.ral.json","../../clmm/artifacts/ts/LiquidityManagmentTest.ts","../../clmm/artifacts/LiquidityManagmentTest.ral.json","../../clmm/artifacts/ts/Pool.ts","../../clmm/artifacts/Pool.ral.json","../../clmm/artifacts/ts/PoolConfig.ts","../../clmm/artifacts/PoolConfig.ral.json","../../clmm/artifacts/ts/PoolFactory.ts","../../clmm/artifacts/PoolFactory.ral.json","../../clmm/artifacts/ts/PoolUser.ts","../../clmm/artifacts/PoolUser.ral.json","../../clmm/artifacts/ts/Position.ts","../../clmm/artifacts/Position.ral.json","../../clmm/artifacts/ts/PositionManager.ts","../../clmm/artifacts/PositionManager.ral.json","../../clmm/artifacts/ts/TestToken.ts","../../clmm/artifacts/TestToken.ral.json","../../clmm/artifacts/ts/Tick.ts","../../clmm/artifacts/Tick.ral.json","../../clmm/artifacts/ts/TickBitmapTest.ts","../../clmm/artifacts/TickBitmapTest.ral.json","../../clmm/artifacts/ts/scripts.ts","../../clmm/artifacts/CreateConfig.ral.json","../../clmm/artifacts/CreateLiquidPool.ral.json","../../clmm/artifacts/PoolRouterDemo.ral.json","../../clmm/artifacts/SwapWithoutAccount.ral.json","../../clmm/deployments/.deployments.testnet.json","../../clmm/deployments/.deployments.devnet.json","../../clmm/artifacts/ts/deployments.ts","../src/clmm/pool.ts","../../clmm/artifacts/ts/constants.ts","../src/clmm/constants.ts","../src/clmm/tick.ts","../src/clmm/liquidity.ts","../src/common/numeric.ts","../src/token/token.ts","../src/staking/staking.ts","../../staking/artifacts/ts/index.ts","../../staking/artifacts/ts/AlphUnstakeVault.ts","../../staking/artifacts/AlphUnstakeVault.ral.json","../../staking/artifacts/ts/contracts.ts","../../staking/artifacts/ts/types.ts","../../staking/artifacts/structs.ral.json","../../staking/artifacts/ts/FullMathTest.ts","../../staking/artifacts/utils/FullMathTest.ral.json","../../staking/artifacts/ts/GovernanceDemo.ts","../../staking/artifacts/examples/GovernanceDemo.ral.json","../../staking/artifacts/ts/RewardSharingVault.ts","../../staking/artifacts/examples/RewardSharingVault.ral.json","../../staking/artifacts/ts/TestDynamicArrayByteVec32.ts","../../staking/artifacts/utils/TestDynamicArrayByteVec32.ral.json","../../staking/artifacts/ts/TestDynamicSortedArrayForU256.ts","../../staking/artifacts/utils/TestDynamicSortedArrayForU256.ral.json","../../staking/artifacts/ts/TestMerkleProof.ts","../../staking/artifacts/utils/TestMerkleProof.ral.json","../../staking/artifacts/ts/XAlphStakeVault.ts","../../staking/artifacts/XAlphStakeVault.ral.json","../../staking/artifacts/ts/XAlphToken.ts","../../staking/artifacts/XAlphToken.ral.json","../../staking/artifacts/ts/scripts.ts","../../staking/artifacts/AlphStakeAndLock.ral.json","../../staking/artifacts/XAlphUnlockAndStartUnstake.ral.json","../../staking/deployments/.deployments.testnet.json","../../staking/deployments/.deployments.devnet.json","../../staking/artifacts/ts/deployments.ts","../src/staking/utils.ts","../src/staking/settings.ts","../src/clmm/types.ts"],"sourcesContent":["export * from './zeta';\nexport * from './common';\nexport * from './cpmm';\nexport * from './clmm';\nexport * from './token';\nexport * from './staking';\n\nexport type { TokenPairTypes as CpmmTokenPairTypes } from 'cpmm/artifacts/ts/TokenPair';\nexport type { TokenPairFactoryTypes as CpmmTokenPairFactoryTypes } from 'cpmm/artifacts/ts/TokenPairFactory';\nexport type { PoolTypes as ClmmPoolTypes } from 'clmm/artifacts/ts/Pool';\nexport type { PoolFactoryTypes as ClmmPoolFactoryTypes } from 'clmm/artifacts/ts/PoolFactory';\nexport type { PositionManagerTypes as ClmmPositionManagerTypes } from 'clmm/artifacts/ts/PositionManager';\nexport type { XAlphTokenTypes } from 'staking/artifacts/ts/XAlphToken';\nexport type { XAlphStakeVaultTypes } from 'staking/artifacts/ts/XAlphStakeVault';\nexport type { RewardSharingVaultTypes } from 'staking/artifacts/ts/RewardSharingVault';\nexport type { GovernanceDemoTypes } from 'staking/artifacts/ts/GovernanceDemo';\n\nexport * as CpmmContracts from 'cpmm/artifacts/ts';\nexport * as ClmmContracts from 'clmm/artifacts/ts';\nexport * as CpmmScripts from 'cpmm/artifacts/ts/scripts';\nexport * as ClmmScripts from 'clmm/artifacts/ts/scripts';\nexport * as StakingContracts from 'staking/artifacts/ts';\nexport { loadDeployments as loadCpmmDeployments } from 'cpmm/artifacts/ts/deployments';\nexport { loadDeployments as loadClmmDeployments } from 'clmm/artifacts/ts/deployments';\nexport { loadDeployments as loadStakingDeployments } from 'staking/artifacts/ts/deployments';\n","import type { SignerProvider, Account } from '@alephium/web3';\nimport { NodeProvider, ExplorerProvider, web3 } from '@alephium/web3';\nimport { CpmmModule } from './cpmm/cpmm';\nimport type { Network, ZetaLoadParams } from './common/types';\nimport { defaultNetworks } from './common/types';\nimport { ClmmModule } from './clmm/clmm';\nimport { TokenModule } from './token/token';\nimport { StakingModule } from './staking/staking';\n\nexport class Zeta {\n public cpmm: CpmmModule;\n public clmm: ClmmModule;\n public token: TokenModule;\n public staking: StakingModule;\n\n private _nodeProvider: NodeProvider;\n private _explorerProvider: ExplorerProvider;\n private _tokenListUrl: string;\n private _signer?: SignerProvider;\n private _account?: Account;\n private _network: Network;\n\n constructor(params: ZetaLoadParams) {\n const network = defaultNetworks.find((n) => n.id === params.networkId);\n if (!network) {\n throw new Error(`Network ${params.networkId} not found`);\n }\n\n const overrides = params.networkOverrides ?? {};\n const networkConfig: Network = { ...network, ...overrides };\n\n this._network = networkConfig;\n this._nodeProvider = new NodeProvider(this._network.nodeUrl, this._network.nodeApiKey);\n this._explorerProvider = new ExplorerProvider(this._network.explorerApiUrl);\n this._tokenListUrl = this._network.tokenListUrl;\n this._signer = params.signer;\n\n // Initialize modules\n this.cpmm = new CpmmModule(this);\n this.clmm = new ClmmModule(this);\n this.token = new TokenModule(this);\n this.staking = new StakingModule(this);\n }\n\n static load(config: ZetaLoadParams): Zeta {\n return new Zeta(config);\n }\n\n public set signer(signer: SignerProvider) {\n this._signer = signer;\n }\n\n public set account(account: Account) {\n this._account = account;\n }\n\n get signer(): SignerProvider {\n if (!this._signer) {\n throw new Error('Signer not set');\n }\n return this._signer;\n }\n\n get account(): Account {\n if (!this._account) {\n throw new Error('Account not set');\n }\n return this._account;\n }\n\n public clearSigner() {\n this._signer = undefined;\n }\n\n public clearAccount() {\n this._account = undefined;\n }\n\n get nodeProvider(): NodeProvider {\n return this._nodeProvider;\n }\n\n get explorerProvider(): ExplorerProvider {\n return this._explorerProvider;\n }\n\n get network(): Network {\n return this._network;\n }\n\n get tokenListUrl(): string {\n return this._tokenListUrl;\n }\n\n public setCurrentProviders(): void {\n if (!this._nodeProvider) {\n throw new Error('Node provider not set');\n }\n if (!this._explorerProvider) {\n throw new Error('Explorer provider not set');\n }\n web3.setCurrentNodeProvider(this._nodeProvider);\n web3.setCurrentExplorerProvider(this._explorerProvider);\n }\n}\n","import type { ExecuteScriptResult } from '@alephium/web3';\nimport {\n DUST_AMOUNT,\n addressFromContractId,\n subContractId,\n ALPH_TOKEN_ID,\n ONE_ALPH,\n prettifyTokenAmount,\n} from '@alephium/web3';\nimport {\n TokenPair as TokenPairContract,\n SwapMaxIn,\n SwapMinOut,\n AddLiquidity,\n RemoveLiquidity,\n CreatePair,\n CreatePairAndAddLiquidity,\n} from 'cpmm/artifacts/ts';\nimport { loadDeployments } from 'cpmm/artifacts/ts/deployments';\nimport type { CpmmPoolContractState } from './types';\nimport { sortTokens } from '../common/utils';\nimport { MAX_PRICE_IMPACT } from './constants';\nimport {\n InsufficientBalanceError,\n PriceImpactTooHighError,\n PoolNotFoundError,\n} from '../common/error';\nimport type {\n SwapParams,\n SwapDetails,\n AddLiquidityParams,\n AddLiquidityDetails,\n RemoveLiquidityParams,\n RemoveLiquidityDetails,\n ClaimableAmounts,\n CreatePoolParams,\n ComputeSwapParams,\n ComputeLiquidityParams,\n CpmmConfig,\n} from './types';\nimport type { Zeta } from '../zeta';\nimport ModuleBase from '../moduleBase';\nimport BigNumber from 'bignumber.js';\nimport { MathUtil } from '../common/math';\nimport { MINIMUM_LIQUIDITY } from './constants';\nimport { BPS } from '../common/constants';\nimport { InsufficientLiquidityError } from '../common/error';\n\nexport class CpmmModule extends ModuleBase {\n private config: CpmmConfig;\n\n constructor(scope: Zeta) {\n super({ scope, moduleName: 'CpmmModule' });\n\n this.config = this.getCpmmConfig();\n this.scope = scope;\n }\n\n getPoolId(tokenA: string, tokenB: string): string {\n const [token0Id, token1Id] = sortTokens(tokenA, tokenB);\n const path = token0Id + token1Id;\n return subContractId(this.config.factoryId, path, this.config.groupIndex);\n }\n\n getPoolAddress(tokenA: string, tokenB: string): string {\n return addressFromContractId(this.getPoolId(tokenA, tokenB));\n }\n\n async getPoolState(tokenA: string, tokenB: string): Promise<CpmmPoolContractState> {\n const [token0Id, token1Id] = sortTokens(tokenA, tokenB);\n const token0Info = await this.scope.token.getTokenById(token0Id);\n const token1Info = await this.scope.token.getTokenById(token1Id);\n\n const poolId = this.getPoolId(tokenA, tokenB);\n const contractAddress = addressFromContractId(poolId);\n const pool = TokenPairContract.at(contractAddress);\n\n try {\n const state = await pool.fetchState();\n return {\n poolId,\n reserve0: state.fields.reserve0,\n reserve1: state.fields.reserve1,\n token0Info,\n token1Info,\n totalSupply: state.fields.totalSupply,\n dexAccount: state.fields.dexAccount0,\n };\n } catch (error) {\n if (error instanceof Error && error.message.includes('not found')) {\n throw new PoolNotFoundError(poolId);\n }\n this.logAndThrowError(`Failed to fetch pool state on ${poolId}`, error);\n }\n }\n\n async poolExists(tokenA: string, tokenB: string): Promise<boolean> {\n const address = this.getPoolAddress(tokenA, tokenB);\n\n return this.scope.nodeProvider.addresses\n .getAddressesAddressGroup(address)\n .then((_) => true)\n .catch((e: any) => {\n if (e instanceof Error && e.message.indexOf('Group not found') !== -1) {\n return false;\n }\n throw e;\n });\n }\n\n async swap(params: SwapParams, balances?: Map<string, bigint>): Promise<ExecuteScriptResult> {\n if (!this.scope.signer) {\n throw new Error('Signer is required for swap operation');\n }\n\n const poolState = await this.getPoolState(params.tokenIn.id, params.tokenOut.id);\n const swapDetails = CpmmModule.computeSwapAmount({\n state: poolState,\n tokenIn: params.tokenIn,\n tokenOut: params.tokenOut,\n amountIn: params.amountIn,\n amountOut: params.amountOut,\n slippage: params.slippage,\n });\n\n if (swapDetails.priceImpact >= MAX_PRICE_IMPACT) {\n throw new PriceImpactTooHighError(swapDetails.priceImpact, MAX_PRICE_IMPACT);\n }\n\n if (balances) {\n const available = balances.get(swapDetails.tokenInInfo.id) ?? 0n;\n if (available < swapDetails.tokenInAmount) {\n throw new InsufficientBalanceError(\n swapDetails.tokenInInfo.symbol,\n prettifyTokenAmount(swapDetails.tokenInAmount, swapDetails.tokenInInfo.decimals) ??\n `${swapDetails.tokenInAmount}`,\n prettifyTokenAmount(available, swapDetails.tokenInInfo.decimals) ?? `${available}`,\n );\n }\n }\n\n const ttl = params.ttl ?? 60;\n\n if (swapDetails.swapType === 'ExactIn') {\n let attoAlphAmount = this.getExtraAlphAmount(\n swapDetails.state.token0Info.id,\n swapDetails.state.token1Info.id,\n );\n const tokens: Array<{ id: string; amount: bigint }> = [];\n\n if (swapDetails.tokenInInfo.id === ALPH_TOKEN_ID) {\n attoAlphAmount += swapDetails.tokenInAmount;\n } else {\n tokens.push({ id: swapDetails.tokenInInfo.id, amount: swapDetails.tokenInAmount });\n }\n\n const result = await SwapMinOut.execute({\n signer: this.scope.signer,\n initialFields: {\n dexAccount: poolState.dexAccount,\n sender: params.sender,\n router: this.config.routerId,\n pair: swapDetails.state.poolId,\n tokenInId: swapDetails.tokenInInfo.id,\n amountIn: swapDetails.tokenInAmount,\n amountOutMin: swapDetails.minimalTokenOutAmount!,\n deadline: deadline(ttl),\n },\n attoAlphAmount,\n tokens,\n });\n return result;\n } else {\n let attoAlphAmount = this.getExtraAlphAmount(\n swapDetails.state.token0Info.id,\n swapDetails.state.token1Info.id,\n );\n const tokens: Array<{ id: string; amount: bigint }> = [];\n\n if (swapDetails.tokenInInfo.id === ALPH_TOKEN_ID) {\n attoAlphAmount += swapDetails.maximalTokenInAmount!;\n } else {\n tokens.push({ id: swapDetails.tokenInInfo.id, amount: swapDetails.maximalTokenInAmount! });\n }\n const result = await SwapMaxIn.execute({\n signer: this.scope.signer,\n initialFields: {\n dexAccount: poolState.dexAccount,\n sender: params.sender,\n router: this.config.routerId,\n pair: swapDetails.state.poolId,\n tokenInId: swapDetails.tokenInInfo.id,\n amountInMax: swapDetails.maximalTokenInAmount!,\n amountOut: swapDetails.tokenOutAmount,\n deadline: deadline(ttl),\n },\n attoAlphAmount,\n tokens,\n });\n return result;\n }\n }\n\n async addLiquidity(\n params: AddLiquidityParams,\n balances?: Map<string, bigint>,\n ): Promise<ExecuteScriptResult> {\n if (!this.scope.signer) {\n throw new Error('Signer is required for addLiquidity operation');\n }\n\n const { cpmmPoolState, tokenA, tokenB, amountA, amountB, slippage, sender, ttl = 60 } = params;\n\n if (amountA === 0n || amountB === 0n) {\n throw new Error('The input amount must be greater than 0');\n }\n\n if (balances) {\n const tokenAAvailable = balances.get(tokenA.id) ?? 0n;\n if (tokenAAvailable < amountA) {\n throw new InsufficientBalanceError(\n tokenA.symbol,\n prettifyTokenAmount(amountA, tokenA.decimals) ?? `${amountA}`,\n prettifyTokenAmount(tokenAAvailable, tokenA.decimals) ?? `${tokenAAvailable}`,\n );\n }\n\n const tokenBAvailable = balances.get(tokenB.id) ?? 0n;\n if (tokenBAvailable < amountB) {\n throw new InsufficientBalanceError(\n tokenB.symbol,\n prettifyTokenAmount(amountB, tokenB.decimals) ?? `${amountB}`,\n prettifyTokenAmount(tokenBAvailable, tokenB.decimals) ?? `${tokenBAvailable}`,\n );\n }\n }\n\n const isInitial = cpmmPoolState.reserve0 === 0n && cpmmPoolState.reserve1 === 0n;\n const amountAMin = isInitial ? amountA : CpmmModule.minimalAmount(amountA, slippage);\n const amountBMin = isInitial ? amountB : CpmmModule.minimalAmount(amountB, slippage);\n\n const [amount0Desired, amount1Desired, amount0Min, amount1Min] =\n tokenA.id === cpmmPoolState.token0Info.id\n ? [amountA, amountB, amountAMin, amountBMin]\n : [amountB, amountA, amountBMin, amountAMin];\n\n // Calculate ALPH amounts properly\n const extraAlph = this.getExtraAlphAmount(tokenA.id, tokenB.id);\n let attoAlphAmount = extraAlph + DUST_AMOUNT;\n const tokens: Array<{ id: string; amount: bigint }> = [];\n\n // Handle ALPH token properly - don't double count it\n if (tokenA.id === ALPH_TOKEN_ID) {\n attoAlphAmount += amountA;\n tokens.push({ id: tokenB.id, amount: amountB });\n } else if (tokenB.id === ALPH_TOKEN_ID) {\n attoAlphAmount += amountB;\n tokens.push({ id: tokenA.id, amount: amountA });\n } else {\n tokens.push({ id: tokenA.id, amount: amountA }, { id: tokenB.id, amount: amountB });\n }\n\n const result = await AddLiquidity.execute({\n signer: this.scope.signer,\n initialFields: {\n sender,\n router: this.config.routerId,\n pair: cpmmPoolState.poolId,\n amount0Desired,\n amount1Desired,\n amount0Min,\n amount1Min,\n deadline: deadline(ttl),\n },\n attoAlphAmount,\n tokens,\n });\n return result;\n }\n\n async removeLiquidity(params: RemoveLiquidityParams): Promise<ExecuteScriptResult> {\n if (!this.scope.signer) {\n throw new Error('Signer is required for removeLiquidity operation');\n }\n\n const { state, liquidity, totalLiquidityAmount, slippage, sender, ttl = 60 } = params;\n const ownedLiquidity = totalLiquidityAmount ?? state.totalSupply;\n const details = CpmmModule.computeRemoveLiquidityAmounts(state, ownedLiquidity, liquidity);\n\n const amount0Min = CpmmModule.minimalAmount(details.amount0, slippage);\n const amount1Min = CpmmModule.minimalAmount(details.amount1, slippage);\n\n const result = await RemoveLiquidity.execute({\n signer: this.scope.signer,\n initialFields: {\n sender,\n router: this.config.routerId,\n pairId: state.poolId,\n liquidity,\n amount0Min,\n amount1Min,\n deadline: deadline(ttl),\n },\n attoAlphAmount:\n this.getExtraAlphAmount(state.token0Info.id, state.token1Info.id) + DUST_AMOUNT,\n tokens: [{ id: state.poolId, amount: liquidity }],\n });\n return result;\n }\n\n async computeClaimableAmounts(\n tokenAId: string,\n tokenBId: string,\n liquidityBalance: bigint,\n ): Promise<ClaimableAmounts> {\n const state = await this.getPoolState(tokenAId, tokenBId);\n const details = CpmmModule.computeClaimableAmounts(state, liquidityBalance);\n return {\n token0: details.token0,\n amount0: details.amount0,\n token1: details.token1,\n amount1: details.amount1,\n };\n }\n\n async createPool(params: CreatePoolParams): Promise<ExecuteScriptResult & { poolId: string }> {\n if (!this.scope.signer) {\n throw new Error('Signer is required for createPool operation');\n }\n\n const { tokenA, tokenB, sender, tokenAAmount, tokenBAmount } = params;\n const poolId = this.getPoolId(tokenA.id, tokenB.id);\n\n if (tokenAAmount !== undefined && tokenBAmount !== undefined) {\n const [token0Id, token1Id] = sortTokens(tokenA.id, tokenB.id);\n const [amount0, amount1] =\n token0Id === tokenA.id ? [tokenAAmount, tokenBAmount] : [tokenBAmount, tokenAAmount];\n const result = await CreatePairAndAddLiquidity.execute({\n signer: this.scope.signer,\n initialFields: {\n payer: sender,\n factory: this.config.factoryId,\n alphAmount: ONE_ALPH,\n token0Id,\n token1Id,\n amount0,\n amount1,\n },\n attoAlphAmount: ONE_ALPH + this.getExtraAlphAmount(tokenA.id, tokenB.id),\n tokens: [\n { id: token0Id, amount: amount0 },\n { id: token1Id, amount: amount1 },\n ],\n });\n return { ...result, poolId };\n }\n\n const result = await CreatePair.execute({\n signer: this.scope.signer,\n initialFields: {\n payer: sender,\n factory: this.config.factoryId,\n alphAmount: ONE_ALPH,\n tokenAId: tokenA.id,\n tokenBId: tokenB.id,\n },\n attoAlphAmount: ONE_ALPH + this.getExtraAlphAmount(tokenA.id, tokenB.id),\n tokens: [\n { id: tokenA.id, amount: 1n },\n { id: tokenB.id, amount: 1n },\n ],\n });\n return { ...result, poolId };\n }\n\n getCpmmConfig(): CpmmConfig {\n const networkId = this.scope.network.id;\n try {\n const deployments = loadDeployments(networkId);\n return {\n groupIndex: deployments.contracts.Router.contractInstance.groupIndex,\n factoryId: deployments.contracts.TokenPairFactory.contractInstance.contractId,\n routerId: deployments.contracts.Router.contractInstance.contractId,\n };\n } catch (error) {\n this.logAndThrowError(`Failed to load deployments on ${networkId}`, error);\n }\n }\n\n static computeSwapAmount(params: ComputeSwapParams): SwapDetails {\n const { state, tokenIn, tokenOut, amountIn, amountOut, slippage } = params;\n\n let swapType: 'ExactIn' | 'ExactOut';\n let tokenInAmount: bigint;\n let tokenOutAmount: bigint;\n\n if (amountIn !== undefined) {\n swapType = 'ExactIn';\n tokenInAmount = amountIn;\n tokenOutAmount = CpmmModule.getAmountOut(state, tokenIn.id, amountIn);\n } else if (amountOut !== undefined) {\n swapType = 'ExactOut';\n tokenInAmount = CpmmModule.getAmountIn(state, tokenOut.id, amountOut);\n tokenOutAmount = amountOut;\n } else {\n throw new Error('Either amountIn or amountOut must be specified');\n }\n\n const priceImpact = this.calcPriceImpact(\n state.reserve0,\n state.reserve1,\n tokenIn.id,\n state.token0Info.id,\n tokenInAmount,\n tokenOutAmount,\n );\n\n return {\n swapType,\n state,\n tokenInInfo: tokenIn,\n tokenOutInfo: tokenOut,\n tokenInAmount,\n tokenOutAmount,\n priceImpact,\n minimalTokenOutAmount:\n swapType === 'ExactIn' ? this.minimalAmount(tokenOutAmount, slippage) : undefined,\n maximalTokenInAmount:\n swapType === 'ExactOut' ? this.maximalAmount(tokenInAmount, slippage) : undefined,\n };\n }\n\n static computeLiquidityAmounts(params: ComputeLiquidityParams): AddLiquidityDetails {\n const { state, tokenA, tokenB, amountA, amountB, inputType = 'TokenA' } = params;\n\n if (!state) {\n // Initial liquidity\n if (!amountA || !amountB) {\n throw new Error('Both amountA and amountB are required for initial liquidity');\n }\n return this.getInitLiquidityDetails(tokenA.id, tokenB.id, amountA, amountB);\n }\n\n // Adding to existing pool\n const inputTokenId = inputType === 'TokenA' ? tokenA.id : tokenB.id;\n const inputAmount = inputType === 'TokenA' ? amountA : amountB;\n\n if (!inputAmount) {\n throw new Error(`Amount for ${inputType} is required`);\n }\n\n return this.getLiquidityDetails(state, inputTokenId, inputAmount, inputType);\n }\n\n static computeRemoveLiquidityAmounts(\n state: CpmmPoolContractState,\n totalLiquidity: bigint,\n liquidityToRemove: bigint,\n ): RemoveLiquidityDetails {\n if (liquidityToRemove > totalLiquidity) {\n throw new Error('Liquidity exceeds total liquidity amount');\n }\n\n const amount0 = (liquidityToRemove * state.reserve0) / state.totalSupply;\n const amount1 = (liquidityToRemove * state.reserve1) / state.totalSupply;\n const remainShareAmount = totalLiquidity - liquidityToRemove;\n const remainPoolLiquidity = state.totalSupply - liquidityToRemove;\n const remainSharePercentage = BigNumber((100n * remainShareAmount).toString())\n .div(BigNumber(remainPoolLiquidity.toString()))\n .toFixed(5);\n\n return {\n state: state,\n token0: state.token0Info,\n amount0,\n token1: state.token1Info,\n amount1,\n remainShareAmount,\n remainSharePercentage: parseFloat(remainSharePercentage),\n };\n }\n\n static computeClaimableAmounts(\n state: CpmmPoolContractState,\n liquidityBalance: bigint,\n ): RemoveLiquidityDetails {\n return this.computeRemoveLiquidityAmounts(state, liquidityBalance, liquidityBalance);\n }\n\n static minimalAmount(amount: bigint, slippage: bigint): bigint {\n this.assertSlippageInRange(slippage);\n return (amount * BPS) / (BPS + slippage);\n }\n\n static maximalAmount(amount: bigint, slippage: bigint): bigint {\n this.assertSlippageInRange(slippage);\n return (amount * (BPS + slippage) + (BPS - 1n)) / BPS;\n }\n\n private static assertSlippageInRange(slippage: bigint): void {\n if (slippage < 0n || slippage >= BPS) {\n throw new Error(`Slippage must satisfy 0 <= slippage < ${BPS}, received ${slippage}`);\n }\n }\n\n static calcPriceImpact(\n reserve0: bigint,\n reserve1: bigint,\n tokenInId: string,\n token0Id: string,\n amountIn: bigint,\n amountOut: bigint,\n ): number {\n const [reserveIn, reserveOut] =\n token0Id === tokenInId ? [reserve0, reserve1] : [reserve1, reserve0];\n const numerator =\n (reserveOut * (reserveIn + amountIn) - (reserveOut - amountOut) * reserveIn) * 100n;\n const denumerator = reserveIn * (reserveOut - amountOut);\n const impact = new BigNumber(numerator.toString())\n .div(new BigNumber(denumerator.toString()))\n .toFixed();\n return parseFloat(impact);\n }\n\n static getLiquidityDetails(\n state: CpmmPoolContractState,\n inputTokenId: string,\n inputAmount: bigint,\n inputType: 'TokenA' | 'TokenB', // First or second token in the token input box\n ): {\n state: CpmmPoolContractState;\n tokenAId: string;\n tokenBId: string;\n amountA: bigint;\n amountB: bigint;\n shareAmount: bigint;\n sharePercentage: number;\n } {\n const isInputToken0 = inputTokenId === state.token0Info.id;\n const [reserveA, reserveB] = isInputToken0\n ? [state.reserve0, state.reserve1]\n : [state.reserve1, state.reserve0];\n\n const outputAmount = (inputAmount * reserveB) / reserveA;\n const liquidityA = (inputAmount * state.totalSupply) / reserveA;\n const liquidityB = (outputAmount * state.totalSupply) / reserveB;\n const liquidity = liquidityA < liquidityB ? liquidityA : liquidityB;\n const totalSupply = state.totalSupply + liquidity;\n const percentage = BigNumber((100n * liquidity).toString())\n .div(BigNumber(totalSupply.toString()))\n .toFixed(5);\n const sharePercentage = parseFloat(percentage);\n const outputTokenId = isInputToken0 ? state.token1Info.id : state.token0Info.id;\n\n const [tokenAId, tokenBId] =\n inputType === 'TokenA' ? [inputTokenId, outputTokenId] : [outputTokenId, inputTokenId];\n const [amountA, amountB] =\n inputType === 'TokenA' ? [inputAmount, outputAmount] : [outputAmount, inputAmount];\n return { state, tokenAId, tokenBId, amountA, amountB, shareAmount: liquidity, sharePercentage };\n }\n\n static getAmountIn(state: CpmmPoolContractState, tokenOutId: string, amountOut: bigint): bigint {\n const [tokenOutInfo, reserveIn, reserveOut] =\n tokenOutId === state.token0Info.id\n ? [state.token0Info, state.reserve1, state.reserve0]\n : [state.token1Info, state.reserve0, state.reserve1];\n\n if (amountOut >= reserveOut) {\n throw new InsufficientLiquidityError(\n `Amount must be less than reserve, amount: ${prettifyTokenAmount(amountOut, tokenOutInfo.decimals)}, reserve: ${prettifyTokenAmount(reserveOut, tokenOutInfo.decimals)}`,\n );\n }\n const numerator = reserveIn * amountOut * 1000n;\n const denominator = (reserveOut - amountOut) * 997n;\n return numerator / denominator + 1n;\n }\n\n static getAmountOut(state: CpmmPoolContractState, tokenInId: string, amountIn: bigint): bigint {\n if (tokenInId === state.token0Info.id) {\n return this._getAmountOut(amountIn, state.reserve0, state.reserve1);\n } else {\n return this._getAmountOut(amountIn, state.reserve1, state.reserve0);\n }\n }\n\n static getInitLiquidityDetails(\n tokenAId: string,\n tokenBId: string,\n amountA: bigint,\n amountB: bigint,\n ): {\n tokenAId: string;\n tokenBId: string;\n amountA: bigint;\n amountB: bigint;\n shareAmount: bigint;\n sharePercentage: number;\n } {\n const liquidity = MathUtil.sqrt(amountA * amountB);\n if (liquidity <= MINIMUM_LIQUIDITY) {\n throw new InsufficientLiquidityError('Insufficient initial liquidity');\n }\n return {\n tokenAId,\n tokenBId,\n amountA,\n amountB,\n shareAmount: liquidity - MINIMUM_LIQUIDITY,\n sharePercentage: 100,\n };\n }\n\n private static _getAmountOut(amountIn: bigint, reserveIn: bigint, reserveOut: bigint): bigint {\n const amountInExcludeFee = 997n * amountIn;\n const numerator = amountInExcludeFee * reserveOut;\n const denominator = amountInExcludeFee + 1000n * reserveIn;\n return numerator / denominator;\n }\n\n // TODO: This might not be needed\n private getExtraAlphAmount(tokenAId: string, tokenBId: string): bigint {\n if (tokenAId === ALPH_TOKEN_ID || tokenBId === ALPH_TOKEN_ID) {\n return DUST_AMOUNT * 2n;\n }\n return DUST_AMOUNT * 3n;\n }\n}\n\nfunction deadline(ttlInMinutes: number): bigint {\n return BigInt(Date.now() + ttlInMinutes * 60 * 1000);\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nexport * from \"./DexAccount\";\nexport * from \"./ExampleOracleSimple\";\nexport * from \"./FeeCollectorFactoryImpl\";\nexport * from \"./FeeCollectorPerTokenPairImpl\";\nexport * from \"./FullMathTest\";\nexport * from \"./MathTest\";\nexport * from \"./Router\";\nexport * from \"./TestToken\";\nexport * from \"./TokenPair\";\nexport * from \"./TokenPairFactory\";\nexport * from \"./contracts\";\nexport * from \"./scripts\";\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport {\n Address,\n Contract,\n ContractState,\n TestContractResult,\n HexString,\n ContractFactory,\n EventSubscribeOptions,\n EventSubscription,\n CallContractParams,\n CallContractResult,\n TestContractParams,\n ContractEvent,\n subscribeContractEvent,\n subscribeContractEvents,\n testMethod,\n callMethod,\n multicallMethods,\n fetchContractState,\n Asset,\n ContractInstance,\n getContractEventsCurrentCount,\n TestContractParamsWithoutMaps,\n TestContractResultWithoutMaps,\n SignExecuteContractMethodParams,\n SignExecuteScriptTxResult,\n signExecuteMethod,\n addStdIdToFields,\n encodeContractFields,\n Narrow,\n} from \"@alephium/web3\";\nimport { default as DexAccountContractJson } from \"../dex/DexAccount.ral.json\";\nimport { getContractByCodeHash, registerContract } from \"./contracts\";\n\n// Custom types for the contract\nexport namespace DexAccountTypes {\n export type Fields = {\n parents: [HexString, HexString];\n owner: Address;\n refferer: Address;\n counter: bigint;\n };\n\n export type State = ContractState<Fields>;\n\n export interface CallMethodTable {\n deposit: {\n params: CallContractParams<{\n payer: Address;\n tokenId: HexString;\n amount: bigint;\n path: HexString;\n at: bigint;\n }>;\n result: CallContractResult<null>;\n };\n createAccount: {\n params: CallContractParams<{ ref: Address }>;\n result: CallContractResult<null>;\n };\n asRef: {\n params: CallContractParams<{ defaultRef: Address }>;\n result: CallContractResult<Address>;\n };\n updateCounter: {\n params: CallContractParams<{ newCounter: bigint }>;\n result: CallContractResult<null>;\n };\n setParents: {\n params: CallContractParams<{ newParents: [HexString, HexString] }>;\n result: CallContractResult<null>;\n };\n }\n export type CallMethodParams<T extends keyof CallMethodTable> =\n CallMethodTable[T][\"params\"];\n export type CallMethodResult<T extends keyof CallMethodTable> =\n CallMethodTable[T][\"result\"];\n export type MultiCallParams = Partial<{\n [Name in keyof CallMethodTable]: CallMethodTable[Name][\"params\"];\n }>;\n export type MultiCallResults<T extends MultiCallParams> = {\n [MaybeName in keyof T]: MaybeName extends keyof CallMethodTable\n ? CallMethodTable[MaybeName][\"result\"]\n : undefined;\n };\n export type MulticallReturnType<Callss extends MultiCallParams[]> = {\n [index in keyof Callss]: MultiCallResults<Callss[index]>;\n };\n\n export interface SignExecuteMethodTable {\n deposit: {\n params: SignExecuteContractMethodParams<{\n payer: Address;\n tokenId: HexString;\n amount: bigint;\n path: HexString;\n at: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n createAccount: {\n params: SignExecuteContractMethodParams<{ ref: Address }>;\n result: SignExecuteScriptTxResult;\n };\n asRef: {\n params: SignExecuteContractMethodParams<{ defaultRef: Address }>;\n result: SignExecuteScriptTxResult;\n };\n updateCounter: {\n params: SignExecuteContractMethodParams<{ newCounter: bigint }>;\n result: SignExecuteScriptTxResult;\n };\n setParents: {\n params: SignExecuteContractMethodParams<{\n newParents: [HexString, HexString];\n }>;\n result: SignExecuteScriptTxResult;\n };\n }\n export type SignExecuteMethodParams<T extends keyof SignExecuteMethodTable> =\n SignExecuteMethodTable[T][\"params\"];\n export type SignExecuteMethodResult<T extends keyof SignExecuteMethodTable> =\n SignExecuteMethodTable[T][\"result\"];\n}\n\nclass Factory extends ContractFactory<\n DexAccountInstance,\n DexAccountTypes.Fields\n> {\n encodeFields(fields: DexAccountTypes.Fields) {\n return encodeContractFields(\n addStdIdToFields(this.contract, fields),\n this.contract.fieldsSig,\n []\n );\n }\n\n at(address: string): DexAccountInstance {\n return new DexAccountInstance(address);\n }\n\n tests = {\n deposit: async (\n params: TestContractParamsWithoutMaps<\n DexAccountTypes.Fields,\n {\n payer: Address;\n tokenId: HexString;\n amount: bigint;\n path: HexString;\n at: bigint;\n }\n >\n ): Promise<TestContractResultWithoutMaps<null>> => {\n return testMethod(this, \"deposit\", params, getContractByCodeHash);\n },\n createAccount: async (\n params: TestContractParamsWithoutMaps<\n DexAccountTypes.Fields,\n { ref: Address }\n >\n ): Promise<TestContractResultWithoutMaps<null>> => {\n return testMethod(this, \"createAccount\", params, getContractByCodeHash);\n },\n asRef: async (\n params: TestContractParamsWithoutMaps<\n DexAccountTypes.Fields,\n { defaultRef: Address }\n >\n ): Promise<TestContractResultWithoutMaps<Address>> => {\n return testMethod(this, \"asRef\", params, getContractByCodeHash);\n },\n updateCounter: async (\n params: TestContractParamsWithoutMaps<\n DexAccountTypes.Fields,\n { newCounter: bigint }\n >\n ): Promise<TestContractResultWithoutMaps<null>> => {\n return testMethod(this, \"updateCounter\", params, getContractByCodeHash);\n },\n setParents: async (\n params: TestContractParamsWithoutMaps<\n DexAccountTypes.Fields,\n { newParents: [HexString, HexString] }\n >\n ): Promise<TestContractResultWithoutMaps<null>> => {\n return testMethod(this, \"setParents\", params, getContractByCodeHash);\n },\n };\n\n stateForTest(\n initFields: DexAccountTypes.Fields,\n asset?: Asset,\n address?: string\n ) {\n return this.stateForTest_(initFields, asset, address, undefined);\n }\n}\n\n// Use this object to test and deploy the contract\nexport const DexAccount = new Factory(\n Contract.fromJson(\n DexAccountContractJson,\n \"\",\n \"66c27c91033d54a2d3edc97dbc36b35022274ddd8a7b84b724631ac37586ed48\",\n []\n )\n);\nregisterContract(DexAccount);\n\n// Use this class to interact with the blockchain\nexport class DexAccountInstance extends ContractInstance {\n constructor(address: Address) {\n super(address);\n }\n\n async fetchState(): Promise<DexAccountTypes.State> {\n return fetchContractState(DexAccount, this);\n }\n\n view = {\n deposit: async (\n params: DexAccountTypes.CallMethodParams<\"deposit\">\n ): Promise<DexAccountTypes.CallMethodResult<\"deposit\">> => {\n return callMethod(\n DexAccount,\n this,\n \"deposit\",\n params,\n getContractByCodeHash\n );\n },\n createAccount: async (\n params: DexAccountTypes.CallMethodParams<\"createAccount\">\n ): Promise<DexAccountTypes.CallMethodResult<\"createAccount\">> => {\n return callMethod(\n DexAccount,\n this,\n \"createAccount\",\n params,\n getContractByCodeHash\n );\n },\n asRef: async (\n params: DexAccountTypes.CallMethodParams<\"asRef\">\n ): Promise<DexAccountTypes.CallMethodResult<\"asRef\">> => {\n return callMethod(\n DexAccount,\n this,\n \"asRef\",\n params,\n getContractByCodeHash\n );\n },\n updateCounter: async (\n params: DexAccountTypes.CallMethodParams<\"updateCounter\">\n ): Promise<DexAccountTypes.CallMethodResult<\"updateCounter\">> => {\n return callMethod(\n DexAccount,\n this,\n \"updateCounter\",\n params,\n getContractByCodeHash\n );\n },\n setParents: async (\n params: DexAccountTypes.CallMethodParams<\"setParents\">\n ): Promise<DexAccountTypes.CallMethodResult<\"setParents\">> => {\n return callMethod(\n DexAccount,\n this,\n \"setParents\",\n params,\n getContractByCodeHash\n );\n },\n };\n\n transact = {\n deposit: async (\n params: DexAccountTypes.SignExecuteMethodParams<\"deposit\">\n ): Promise<DexAccountTypes.SignExecuteMethodResult<\"deposit\">> => {\n return signExecuteMethod(DexAccount, this, \"deposit\", params);\n },\n createAccount: async (\n params: DexAccountTypes.SignExecuteMethodParams<\"createAccount\">\n ): Promise<DexAccountTypes.SignExecuteMethodResult<\"createAccount\">> => {\n return signExecuteMethod(DexAccount, this, \"createAccount\", params);\n },\n asRef: async (\n params: DexAccountTypes.SignExecuteMethodParams<\"asRef\">\n ): Promise<DexAccountTypes.SignExecuteMethodResult<\"asRef\">> => {\n return signExecuteMethod(DexAccount, this, \"asRef\", params);\n },\n updateCounter: async (\n params: DexAccountTypes.SignExecuteMethodParams<\"updateCounter\">\n ): Promise<DexAccountTypes.SignExecuteMethodResult<\"updateCounter\">> => {\n return signExecuteMethod(DexAccount, this, \"updateCounter\", params);\n },\n setParents: async (\n params: DexAccountTypes.SignExecuteMethodParams<\"setParents\">\n ): Promise<DexAccountTypes.SignExecuteMethodResult<\"setParents\">> => {\n return signExecuteMethod(DexAccount, this, \"setParents\", params);\n },\n };\n\n async multicall<Calls extends DexAccountTypes.MultiCallParams>(\n calls: Calls\n ): Promise<DexAccountTypes.MultiCallResults<Calls>>;\n async multicall<Callss extends DexAccountTypes.MultiCallParams[]>(\n callss: Narrow<Callss>\n ): Promise<DexAccountTypes.MulticallReturnType<Callss>>;\n async multicall<\n Callss extends\n | DexAccountTypes.MultiCallParams\n | DexAccountTypes.MultiCallParams[]\n >(callss: Callss): Promise<unknown> {\n return await multicallMethods(\n DexAccount,\n this,\n callss,\n getContractByCodeHash\n );\n }\n}\n","{\n \"version\": \"v4.2.5\",\n \"name\": \"DexAccount\",\n \"bytecode\": \"0505404b409940b240ca40e60103050800402cd3bd481528b417051600ce0116011602aa16047a0e314dc3170616064313202f4c1816047a0e314dc31603cc17071605160777467a4c0418a0020c304c04a0020d2ba10201000106004029d365b302f9b41701160149191341f47b160047cb17021602c54c06ce000d0d160201024a01ce00170316011603130264a000a001a00213036417051704160147b116041605c11801000101010ad358cbdacfa0020c2f4c03ce00024a0216000201030101000ad3511324a7b4b1a50d2f1341937b1600a10201030202000cd375472acbb4b1a50d2f1341937b16001601a101a100\",\n \"codeHash\": \"66c27c91033d54a2d3edc97dbc36b35022274ddd8a7b84b724631ac37586ed48\",\n \"fieldsSig\": {\n \"names\": [\n \"parents\",\n \"owner\",\n \"refferer\",\n \"counter\"\n ],\n \"types\": [\n \"[ByteVec;2]\",\n \"Address\",\n \"Address\",\n \"U256\"\n ],\n \"isMutable\": [\n true,\n false,\n false,\n true\n ]\n },\n \"eventsSig\": [],\n \"functions\": [\n {\n \"name\": \"deposit\",\n \"paramNames\": [\n \"payer\",\n \"tokenId\",\n \"amount\",\n \"path\",\n \"at\"\n ],\n \"paramTypes\": [\n \"Address\",\n \"ByteVec\",\n \"U256\",\n \"ByteVec\",\n \"U256\"\n ],\n \"paramIsMutable\": [\n false,\n false,\n false,\n false,\n false\n ],\n \"returnTypes\": []\n },\n {\n \"name\": \"createAccount\",\n \"paramNames\": [\n \"ref\"\n ],\n \"paramTypes\": [\n \"Address\"\n ],\n \"paramIsMutable\": [\n false\n ],\n \"returnTypes\": []\n },\n {\n \"name\": \"asRef\",\n \"paramNames\": [\n \"defaultRef\"\n ],\n \"paramTypes\": [\n \"Address\"\n ],\n \"paramIsMutable\": [\n false\n ],\n \"returnTypes\": [\n \"Address\"\n ]\n },\n {\n \"name\": \"updateCounter\",\n \"paramNames\": [\n \"newCounter\"\n ],\n \"paramTypes\": [\n \"U256\"\n ],\n \"paramIsMutable\": [\n false\n ],\n \"returnTypes\": []\n },\n {\n \"name\": \"setParents\",\n \"paramNames\": [\n \"newParents\"\n ],\n \"paramTypes\": [\n \"[ByteVec;2]\"\n ],\n \"paramIsMutable\": [\n false\n ],\n \"returnTypes\": []\n }\n ],\n \"constants\": [],\n \"enums\": []\n}","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport { Contract, ContractFactory } from \"@alephium/web3\";\n\nlet contracts: ContractFactory<any>[] | undefined = undefined;\n\nexport function getAllContracts(): ContractFactory<any>[] {\n return contracts ?? [];\n}\n\nexport function registerContract(factory: ContractFactory<any>) {\n if (contracts === undefined) {\n contracts = [factory];\n } else {\n contracts.push(factory);\n }\n}\nexport function getContractByCodeHash(codeHash: string): Contract {\n const c = contracts?.find((c) => c.contract.hasCodeHash(codeHash));\n if (c === undefined) {\n throw new Error(\"Unknown code with code hash: \" + codeHash);\n }\n return c.contract;\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport {\n Address,\n Contract,\n ContractState,\n TestContractResult,\n HexString,\n ContractFactory,\n EventSubscribeOptions,\n EventSubscription,\n CallContractParams,\n CallContractResult,\n TestContractParams,\n ContractEvent,\n subscribeContractEvent,\n subscribeContractEvents,\n testMethod,\n callMethod,\n multicallMethods,\n fetchContractState,\n Asset,\n ContractInstance,\n getContractEventsCurrentCount,\n TestContractParamsWithoutMaps,\n TestContractResultWithoutMaps,\n SignExecuteContractMethodParams,\n SignExecuteScriptTxResult,\n signExecuteMethod,\n addStdIdToFields,\n encodeContractFields,\n Narrow,\n} from \"@alephium/web3\";\nimport { default as ExampleOracleSimpleContractJson } from \"../examples/ExampleOracleSimple.ral.json\";\nimport { getContractByCodeHash, registerContract } from \"./contracts\";\n\n// Custom types for the contract\nexport namespace ExampleOracleSimpleTypes {\n export type Fields = {\n pair: HexString;\n price0CumulativeLast: bigint;\n price1CumulativeLast: bigint;\n blockTimeStampLast: bigint;\n price0Average: bigint;\n price1Average: bigint;\n };\n\n export type State = ContractState<Fields>;\n\n export interface CallMethodTable {\n fullMul: {\n params: CallContractParams<{ x: bigint; y: bigint }>;\n result: CallContractResult<[bigint, bigint]>;\n };\n mulDiv: {\n params: CallContractParams<{ a: bigint; b: bigint; denominator: bigint }>;\n result: CallContractResult<bigint>;\n };\n fraction: {\n params: CallContractParams<{ numerator: bigint; denominator: bigint }>;\n result: CallContractResult<bigint>;\n };\n currentCumulativePrices: {\n params: CallContractParams<{ currentBlockTimeStamp: bigint }>;\n result: CallContractResult<[bigint, bigint]>;\n };\n update: {\n params: Omit<CallContractParams<{}>, \"args\">;\n result: CallContractResult<null>;\n };\n consult: {\n params: CallContractParams<{ tokenId: HexString; amountIn: bigint }>;\n result: CallContractResult<bigint>;\n };\n }\n export type CallMethodParams<T extends keyof CallMethodTable> =\n CallMethodTable[T][\"params\"];\n export type CallMethodResult<T extends keyof CallMethodTable> =\n CallMethodTable[T][\"result\"];\n export type MultiCallParams = Partial<{\n [Name in keyof CallMethodTable]: CallMethodTable[Name][\"params\"];\n }>;\n export type MultiCallResults<T extends MultiCallParams> = {\n [MaybeName in keyof T]: MaybeName extends keyof CallMethodTable\n ? CallMethodTable[MaybeName][\"result\"]\n : undefined;\n };\n export type MulticallReturnType<Callss extends MultiCallParams[]> = {\n [index in keyof Callss]: MultiCallResults<Callss[index]>;\n };\n\n export interface SignExecuteMethodTable {\n fullMul: {\n params: SignExecuteContractMethodParams<{ x: bigint; y: bigint }>;\n result: SignExecuteScriptTxResult;\n };\n mulDiv: {\n params: SignExecuteContractMethodParams<{\n a: bigint;\n b: bigint;\n denominator: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n fraction: {\n params: SignExecuteContractMethodParams<{\n numerator: bigint;\n denominator: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n currentCumulativePrices: {\n params: SignExecuteContractMethodParams<{\n currentBlockTimeStamp: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n update: {\n params: Omit<SignExecuteContractMethodParams<{}>, \"args\">;\n result: SignExecuteScriptTxResult;\n };\n consult: {\n params: SignExecuteContractMethodParams<{\n tokenId: HexString;\n amountIn: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n }\n export type SignExecuteMethodParams<T extends keyof SignExecuteMethodTable> =\n SignExecuteMethodTable[T][\"params\"];\n export type SignExecuteMethodResult<T extends keyof SignExecuteMethodTable> =\n SignExecuteMethodTable[T][\"result\"];\n}\n\nclass Factory extends ContractFactory<\n ExampleOracleSimpleInstance,\n ExampleOracleSimpleTypes.Fields\n> {\n encodeFields(fields: ExampleOracleSimpleTypes.Fields) {\n return encodeContractFields(\n addStdIdToFields(this.contract, fields),\n this.contract.fieldsSig,\n []\n );\n }\n\n consts = {\n Resolution: BigInt(\"112\"),\n Period: BigInt(\"86400\"),\n ErrorCodes: {\n FullDivOverflow: BigInt(\"0\"),\n DivByZero: BigInt(\"1\"),\n FractionOverflow: BigInt(\"2\"),\n PeriodNotElapsed: BigInt(\"3\"),\n InvalidToken: BigInt(\"4\"),\n },\n };\n\n at(address: string): ExampleOracleSimpleInstance {\n return new ExampleOracleSimpleInstance(address);\n }\n\n tests = {\n fullMul: async (\n params: TestContractParamsWithoutMaps<\n ExampleOracleSimpleTypes.Fields,\n { x: bigint; y: bigint }\n >\n ): Promise<TestContractResultWithoutMaps<[bigint, bigint]>> => {\n return testMethod(this, \"fullMul\", params, getContractByCodeHash);\n },\n mulDiv: async (\n params: TestContractParamsWithoutMaps<\n ExampleOracleSimpleTypes.Fields,\n { a: bigint; b: bigint; denominator: bigint }\n >\n ): Promise<TestContractResultWithoutMaps<bigint>> => {\n return testMethod(this, \"mulDiv\", params, getContractByCodeHash);\n },\n fraction: async (\n params: TestContractParamsWithoutMaps<\n ExampleOracleSimpleTypes.Fields,\n { numerator: bigint; denominator: bigint }\n >\n ): Promise<TestContractResultWithoutMaps<bigint>> => {\n return testMethod(this, \"fraction\", params, getContractByCodeHash);\n },\n currentCumulativePrices: async (\n params: TestContractParamsWithoutMaps<\n ExampleOracleSimpleTypes.Fields,\n { currentBlockTimeStamp: bigint }\n >\n ): Promise<TestContractResultWithoutMaps<[bigint, bigint]>> => {\n return testMethod(\n this,\n \"currentCumulativePrices\",\n params,\n getContractByCodeHash\n );\n },\n update: async (\n params: Omit<\n TestContractParamsWithoutMaps<ExampleOracleSimpleTypes.Fields, never>,\n \"args\"\n >\n ): Promise<TestContractResultWithoutMaps<null>> => {\n return testMethod(this, \"update\", params, getContractByCodeHash);\n },\n consult: async (\n params: TestContractParamsWithoutMaps<\n ExampleOracleSimpleTypes.Fields,\n { tokenId: HexString; amountIn: bigint }\n >\n ): Promise<TestContractResultWithoutMaps<bigint>> => {\n return testMethod(this, \"consult\", params, getContractByCodeHash);\n },\n };\n\n stateForTest(\n initFields: ExampleOracleSimpleTypes.Fields,\n asset?: Asset,\n address?: string\n ) {\n return this.stateForTest_(initFields, asset, address, undefined);\n }\n}\n\n// Use this object to test and deploy the contract\nexport const ExampleOracleSimple = new Factory(\n Contract.fromJson(\n ExampleOracleSimpleContractJson,\n \"\",\n \"c96ea41f2579f435d70c7801c2ec158031575b7571d8e8bbb2e460a8814cfbdf\",\n []\n )\n);\nregisterContract(ExampleOracleSimple);\n\n// Use this class to interact with the blockchain\nexport class ExampleOracleSimpleInstance extends ContractInstance {\n constructor(address: Address) {\n super(address);\n }\n\n async fetchState(): Promise<ExampleOracleSimpleTypes.State> {\n return fetchContractState(ExampleOracleSimple, this);\n }\n\n view = {\n fullMul: async (\n params: ExampleOracleSimpleTypes.CallMethodParams<\"fullMul\">\n ): Promise<ExampleOracleSimpleTypes.CallMethodResult<\"fullMul\">> => {\n return callMethod(\n ExampleOracleSimple,\n this,\n \"fullMul\",\n params,\n getContractByCodeHash\n );\n },\n mulDiv: async (\n params: ExampleOracleSimpleTypes.CallMethodParams<\"mulDiv\">\n ): Promise<ExampleOracleSimpleTypes.CallMethodResult<\"mulDiv\">> => {\n return callMethod(\n ExampleOracleSimple,\n this,\n \"mulDiv\",\n params,\n getContractByCodeHash\n );\n },\n fraction: async (\n params: ExampleOracleSimpleTypes.CallMethodParams<\"fraction\">\n ): Promise<ExampleOracleSimpleTypes.CallMethodResult<\"fraction\">> => {\n return callMethod(\n ExampleOracleSimple,\n this,\n \"fraction\",\n params,\n getContractByCodeHash\n );\n },\n currentCumulativePrices: async (\n params: ExampleOracleSimpleTypes.CallMethodParams<\"currentCumulativePrices\">\n ): Promise<\n ExampleOracleSimpleTypes.CallMethodResult<\"currentCumulativePrices\">\n > => {\n return callMethod(\n ExampleOracleSimple,\n this,\n \"currentCumulativePrices\",\n params,\n getContractByCodeHash\n );\n },\n update: async (\n params?: ExampleOracleSimpleTypes.CallMethodParams<\"update\">\n ): Promise<ExampleOracleSimpleTypes.CallMethodResult<\"update\">> => {\n return callMethod(\n ExampleOracleSimple,\n this,\n \"update\",\n params === undefined ? {} : params,\n getContractByCodeHash\n );\n },\n consult: async (\n params: ExampleOracleSimpleTypes.CallMethodParams<\"consult\">\n ): Promise<ExampleOracleSimpleTypes.CallMethodResult<\"consult\">> => {\n return callMethod(\n ExampleOracleSimple,\n this,\n \"consult\",\n params,\n getContractByCodeHash\n );\n },\n };\n\n transact = {\n fullMul: async (\n params: ExampleOracleSimpleTypes.SignExecuteMethodParams<\"fullMul\">\n ): Promise<ExampleOracleSimpleTypes.SignExecuteMethodResult<\"fullMul\">> => {\n return signExecuteMethod(ExampleOracleSimple, this, \"fullMul\", params);\n },\n mulDiv: async (\n params: ExampleOracleSimpleTypes.SignExecuteMethodParams<\"mulDiv\">\n ): Promise<ExampleOracleSimpleTypes.SignExecuteMethodResult<\"mulDiv\">> => {\n return signExecuteMethod(ExampleOracleSimple, this, \"mulDiv\", params);\n },\n fraction: async (\n params: ExampleOracleSimpleTypes.SignExecuteMethodParams<\"fraction\">\n ): Promise<\n ExampleOracleSimpleTypes.SignExecuteMethodResult<\"fraction\">\n > => {\n return signExecuteMethod(ExampleOracleSimple, this, \"fraction\", params);\n },\n currentCumulativePrices: async (\n params: ExampleOracleSimpleTypes.SignExecuteMethodParams<\"currentCumulativePrices\">\n ): Promise<\n ExampleOracleSimpleTypes.SignExecuteMethodResult<\"currentCumulativePrices\">\n > => {\n return signExecuteMethod(\n ExampleOracleSimple,\n this,\n \"currentCumulativePrices\",\n params\n );\n },\n update: async (\n params: ExampleOracleSimpleTypes.SignExecuteMethodParams<\"update\">\n ): Promise<ExampleOracleSimpleTypes.SignExecuteMethodResult<\"update\">> => {\n return signExecuteMethod(ExampleOracleSimple, this, \"update\", params);\n },\n consult: async (\n params: ExampleOracleSimpleTypes.SignExecuteMethodParams<\"consult\">\n ): Promise<ExampleOracleSimpleTypes.SignExecuteMethodResult<\"consult\">> => {\n return signExecuteMethod(ExampleOracleSimple, this, \"consult\", params);\n },\n };\n\n async multicall<Calls extends ExampleOracleSimpleTypes.MultiCallParams>(\n calls: Calls\n ): Promise<ExampleOracleSimpleTypes.MultiCallResults<Calls>>;\n async multicall<Callss extends ExampleOracleSimpleTypes.MultiCallParams[]>(\n callss: Narrow<Callss>\n ): Promise<ExampleOracleSimpleTypes.MulticallReturnType<Callss>>;\n async multicall<\n Callss extends\n | ExampleOracleSimpleTypes.MultiCallParams\n | ExampleOracleSimpleTypes.MultiCallParams[]\n >(callss: Callss): Promise<unknown> {\n return await multicallMethods(\n ExampleOracleSimple,\n this,\n callss,\n getContractByCodeHash\n );\n }\n}\n","{\n \"version\": \"v4.0.0\",\n \"name\": \"ExampleOracleSimple\",\n \"bytecode\": \"060640354103414c419f41f0422701000205021bd3ebaef653160016010c0d36871702160016013717031602160336170416021603314c0416040d36170416031604020100030801407fd340d735c316020c300d7b1600160100001704170316040c2f4c04160316022d0216021604330c7b16001601160287170516051603334c0416040d361704160316053617030c1602361602381706160216062d1702160316062d17030c16063616062d0d351706160316041606373917030f1602370e3a170716070e16021607373637170716070e16021607373637170716070e16021607373637170716070e16021607373637170716070e16021607373637170716070e16021607373637170716031607370201000203014028d30dcd6a6a16010c300d7b16000c2f4c020c0216000d1340903b314c0616001340703b16012d4a0616000d1340703b16010001170216020d1340e03b310e7b1602020000010602402e0c0dce00010a17010c0dce00010b17020c0ece0001081704170316000c0dce0001092b170516050c304c10160116041603000216052c351701160216031604000216052c351702160116020201000004004028d3948fae95561343e82d0d13203b2e17001600a0022b170116011380015180340f7b16000003170317021602a0003616012da1031603a0013616012da1041602a1001603a1011600a10201000204011cd3a9d209fc0c0ece0001071703170216001602414c06a00316012c1340703c021600160341107ba00416012c1340703c02\",\n \"codeHash\": \"c96ea41f2579f435d70c7801c2ec158031575b7571d8e8bbb2e460a8814cfbdf\",\n \"fieldsSig\": {\n \"names\": [\n \"pair\",\n \"price0CumulativeLast\",\n \"price1CumulativeLast\",\n \"blockTimeStampLast\",\n \"price0Average\",\n \"price1Average\"\n ],\n \"types\": [\n \"TokenPair\",\n \"U256\",\n \"U256\",\n \"U256\",\n \"U256\",\n \"U256\"\n ],\n \"isMutable\": [\n false,\n true,\n true,\n true,\n true,\n true\n ]\n },\n \"eventsSig\": [],\n \"functions\": [\n {\n \"name\": \"fullMul\",\n \"paramNames\": [\n \"x\",\n \"y\"\n ],\n \"paramTypes\": [\n \"U256\",\n \"U256\"\n ],\n \"paramIsMutable\": [\n false,\n false\n ],\n \"returnTypes\": [\n \"U256\",\n \"U256\"\n ]\n },\n {\n \"name\": \"mulDiv\",\n \"paramNames\": [\n \"a\",\n \"b\",\n \"denominator\"\n ],\n \"paramTypes\": [\n \"U256\",\n \"U256\",\n \"U256\"\n ],\n \"paramIsMutable\": [\n false,\n false,\n true\n ],\n \"returnTypes\": [\n \"U256\"\n ]\n },\n {\n \"name\": \"fraction\",\n \"paramNames\": [\n \"numerator\",\n \"denominator\"\n ],\n \"paramTypes\": [\n \"U256\",\n \"U256\"\n ],\n \"paramIsMutable\": [\n false,\n false\n ],\n \"returnTypes\": [\n \"U256\"\n ]\n },\n {\n \"name\": \"currentCumulativePrices\",\n \"paramNames\": [\n \"currentBlockTimeStamp\"\n ],\n \"paramTypes\": [\n \"U256\"\n ],\n \"paramIsMutable\": [\n false\n ],\n \"returnTypes\": [\n \"U256\",\n \"U256\"\n ]\n },\n {\n \"name\": \"update\",\n \"paramNames\": [],\n \"paramTypes\": [],\n \"paramIsMutable\": [],\n \"returnTypes\": []\n },\n {\n \"name\": \"consult\",\n \"paramNames\": [\n \"tokenId\",\n \"amountIn\"\n ],\n \"paramTypes\": [\n \"ByteVec\",\n \"U256\"\n ],\n \"paramIsMutable\": [\n false,\n false\n ],\n \"returnTypes\": [\n \"U256\"\n ]\n }\n ],\n \"constants\": [\n {\n \"name\": \"Resolution\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"112\"\n }\n },\n {\n \"name\": \"Period\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"86400\"\n }\n }\n ],\n \"enums\": [\n {\n \"name\": \"ErrorCodes\",\n \"fields\": [\n {\n \"name\": \"FullDivOverflow\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"0\"\n }\n },\n {\n \"name\": \"DivByZero\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"1\"\n }\n },\n {\n \"name\": \"FractionOverflow\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"2\"\n }\n },\n {\n \"name\": \"PeriodNotElapsed\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"3\"\n }\n },\n {\n \"name\": \"InvalidToken\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"4\"\n }\n }\n ]\n }\n ]\n}","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport {\n Address,\n Contract,\n ContractState,\n TestContractResult,\n HexString,\n ContractFactory,\n EventSubscribeOptions,\n EventSubscription,\n CallContractParams,\n CallContractResult,\n TestContractParams,\n ContractEvent,\n subscribeContractEvent,\n subscribeContractEvents,\n testMethod,\n callMethod,\n multicallMethods,\n fetchContractState,\n Asset,\n ContractInstance,\n getContractEventsCurrentCount,\n TestContractParamsWithoutMaps,\n TestContractResultWithoutMaps,\n SignExecuteContractMethodParams,\n SignExecuteScriptTxResult,\n signExecuteMethod,\n addStdIdToFields,\n encodeContractFields,\n Narrow,\n} from \"@alephium/web3\";\nimport { default as FeeCollectorFactoryImplContractJson } from \"../examples/FeeCollectorFactoryImpl.ral.json\";\nimport { getContractByCodeHash, registerContract } from \"./contracts\";\n\n// Custom types for the contract\nexport namespace FeeCollectorFactoryImplTypes {\n export type Fields = {\n feeCollectorPerTokenPairTemplateId: HexString;\n tokenPairFactory: HexString;\n };\n\n export type State = ContractState<Fields>;\n\n export interface CallMethodTable {\n createFeeCollector: {\n params: CallContractParams<{\n caller: Address;\n alphAmount: bigint;\n tokenPair: HexString;\n }>;\n result: CallContractResult<HexString>;\n };\n }\n export type CallMethodParams<T extends keyof CallMethodTable> =\n CallMethodTable[T][\"params\"];\n export type CallMethodResult<T extends keyof CallMethodTable> =\n CallMethodTable[T][\"result\"];\n export type MultiCallParams = Partial<{\n [Name in keyof CallMethodTable]: CallMethodTable[Name][\"params\"];\n }>;\n export type MultiCallResults<T extends MultiCallParams> = {\n [MaybeName in keyof T]: MaybeName extends keyof CallMethodTable\n ? CallMethodTable[MaybeName][\"result\"]\n : undefined;\n };\n export type MulticallReturnType<Callss extends MultiCallParams[]> = {\n [index in keyof Callss]: MultiCallResults<Callss[index]>;\n };\n\n export interface SignExecuteMethodTable {\n createFeeCollector: {\n params: SignExecuteContractMethodParams<{\n caller: Address;\n alphAmount: bigint;\n tokenPair: HexString;\n }>;\n result: SignExecuteScriptTxResult;\n };\n }\n export type SignExecuteMethodParams<T extends keyof SignExecuteMethodTable> =\n SignExecuteMethodTable[T][\"params\"];\n export type SignExecuteMethodResult<T extends keyof SignExecuteMethodTable> =\n SignExecuteMethodTable[T][\"result\"];\n}\n\nclass Factory extends ContractFactory<\n FeeCollectorFactoryImplInstance,\n FeeCollectorFactoryImplTypes.Fields\n> {\n encodeFields(fields: FeeCollectorFactoryImplTypes.Fields) {\n return encodeContractFields(\n addStdIdToFields(this.contract, fields),\n this.contract.fieldsSig,\n []\n );\n }\n\n consts = {\n ErrorCodes: {\n ReserveOverflow: BigInt(\"0\"),\n InsufficientInitLiquidity: BigInt(\"1\"),\n InsufficientLiquidityMinted: BigInt(\"2\"),\n InsufficientLiquidityBurned: BigInt(\"3\"),\n InvalidToAddress: BigInt(\"4\"),\n InsufficientLiquidity: BigInt(\"5\"),\n InvalidTokenInId: BigInt(\"6\"),\n InvalidCalleeId: BigInt(\"7\"),\n InvalidK: BigInt(\"8\"),\n InsufficientOutputAmount: BigInt(\"9\"),\n InsufficientInputAmount: BigInt(\"10\"),\n IdenticalTokenIds: BigInt(\"11\"),\n Expired: BigInt(\"12\"),\n InsufficientToken0Amount: BigInt(\"13\"),\n InsufficientToken1Amount: BigInt(\"14\"),\n TokenNotExist: BigInt(\"15\"),\n InvalidCaller: BigInt(\"16\"),\n FeeCollectorNotEnabled: BigInt(\"17\"),\n InvalidAccount: BigInt(\"18\"),\n },\n };\n\n at(address: string): FeeCollectorFactoryImplInstance {\n return new FeeCollectorFactoryImplInstance(address);\n }\n\n tests = {\n createFeeCollector: async (\n params: TestContractParamsWithoutMaps<\n FeeCollectorFactoryImplTypes.Fields,\n { caller: Address; alphAmount: bigint; tokenPair: HexString }\n >\n ): Promise<TestContractResultWithoutMaps<HexString>> => {\n return testMethod(\n this,\n \"createFeeCollector\",\n params,\n getContractByCodeHash\n );\n },\n };\n\n stateForTest(\n initFields: FeeCollectorFactoryImplTypes.Fields,\n asset?: Asset,\n address?: string\n ) {\n return this.stateForTest_(initFields, asset, address, undefined);\n }\n}\n\n// Use this object to test and deploy the contract\nexport const FeeCollectorFactoryImpl = new Factory(\n Contract.fromJson(\n FeeCollectorFactoryImplContractJson,\n \"\",\n \"966f75cddefe774a87dbf778012f4f3f494b3a860f4c975d0c5262a1be185d49\",\n []\n )\n);\nregisterContract(FeeCollectorFactoryImpl);\n\n// Use this class to interact with the blockchain\nexport class FeeCollectorFactoryImplInstance extends ContractInstance {\n constructor(address: Address) {\n super(address);\n }\n\n async fetchState(): Promise<FeeCollectorFactoryImplTypes.State> {\n return fetchContractState(FeeCollectorFactoryImpl, this);\n }\n\n view = {\n createFeeCollector: async (\n params: FeeCollectorFactoryImplTypes.CallMethodParams<\"createFeeCollector\">\n ): Promise<\n FeeCollectorFactoryImplTypes.CallMethodResult<\"createFeeCollector\">\n > => {\n return callMethod(\n FeeCollectorFactoryImpl,\n this,\n \"createFeeCollector\",\n params,\n getContractByCodeHash\n );\n },\n };\n\n transact = {\n createFeeCollector: async (\n params: FeeCollectorFactoryImplTypes.SignExecuteMethodParams<\"createFeeCollector\">\n ): Promise<\n FeeCollectorFactoryImplTypes.SignExecuteMethodResult<\"createFeeCollector\">\n > => {\n return signExecuteMethod(\n FeeCollectorFactoryImpl,\n this,\n \"createFeeCollector\",\n params\n );\n },\n };\n\n async multicall<Calls extends FeeCollectorFactoryImplTypes.MultiCallParams>(\n calls: Calls\n ): Promise<FeeCollectorFactoryImplTypes.MultiCallResults<Calls>>;\n async multicall<\n Callss extends FeeCollectorFactoryImplTypes.MultiCallParams[]\n >(\n callss: Narrow<Callss>\n ): Promise<FeeCollectorFactoryImplTypes.MulticallReturnType<Callss>>;\n async multicall<\n Callss extends\n | FeeCollectorFactoryImplTypes.MultiCallParams\n | FeeCollectorFactoryImplTypes.MultiCallParams[]\n >(callss: Callss): Promise<unknown> {\n return await multicallMethods(\n FeeCollectorFactoryImpl,\n this,\n callss,\n getContractByCodeHash\n );\n }\n}\n","{\n \"version\": \"v4.2.5\",\n \"name\": \"FeeCollectorFactoryImpl\",\n \"bytecode\": \"0201402a010303050116b3ce014113107bce0116021302641300641704170316001601a21602ce0016031604c102\",\n \"codeHash\": \"966f75cddefe774a87dbf778012f4f3f494b3a860f4c975d0c5262a1be185d49\",\n \"fieldsSig\": {\n \"names\": [\n \"feeCollectorPerTokenPairTemplateId\",\n \"tokenPairFactory\"\n ],\n \"types\": [\n \"ByteVec\",\n \"TokenPairFactory\"\n ],\n \"isMutable\": [\n false,\n false\n ]\n },\n \"eventsSig\": [],\n \"functions\": [\n {\n \"name\": \"createFeeCollector\",\n \"paramNames\": [\n \"caller\",\n \"alphAmount\",\n \"tokenPair\"\n ],\n \"paramTypes\": [\n \"Address\",\n \"U256\",\n \"TokenPair\"\n ],\n \"paramIsMutable\": [\n false,\n false,\n false\n ],\n \"returnTypes\": [\n \"ByteVec\"\n ]\n }\n ],\n \"constants\": [],\n \"enums\": [\n {\n \"name\": \"ErrorCodes\",\n \"fields\": [\n {\n \"name\": \"ReserveOverflow\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"0\"\n }\n },\n {\n \"name\": \"InsufficientInitLiquidity\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"1\"\n }\n },\n {\n \"name\": \"InsufficientLiquidityMinted\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"2\"\n }\n },\n {\n \"name\": \"InsufficientLiquidityBurned\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"3\"\n }\n },\n {\n \"name\": \"InvalidToAddress\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"4\"\n }\n },\n {\n \"name\": \"InsufficientLiquidity\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"5\"\n }\n },\n {\n \"name\": \"InvalidTokenInId\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"6\"\n }\n },\n {\n \"name\": \"InvalidCalleeId\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"7\"\n }\n },\n {\n \"name\": \"InvalidK\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"8\"\n }\n },\n {\n \"name\": \"InsufficientOutputAmount\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"9\"\n }\n },\n {\n \"name\": \"InsufficientInputAmount\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"10\"\n }\n },\n {\n \"name\": \"IdenticalTokenIds\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"11\"\n }\n },\n {\n \"name\": \"Expired\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"12\"\n }\n },\n {\n \"name\": \"InsufficientToken0Amount\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"13\"\n }\n },\n {\n \"name\": \"InsufficientToken1Amount\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"14\"\n }\n },\n {\n \"name\": \"TokenNotExist\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"15\"\n }\n },\n {\n \"name\": \"InvalidCaller\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"16\"\n }\n },\n {\n \"name\": \"FeeCollectorNotEnabled\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"17\"\n }\n },\n {\n \"name\": \"InvalidAccount\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"18\"\n }\n }\n ]\n }\n ]\n}","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport {\n Address,\n Contract,\n ContractState,\n TestContractResult,\n HexString,\n ContractFactory,\n EventSubscribeOptions,\n EventSubscription,\n CallContractParams,\n CallContractResult,\n TestContractParams,\n ContractEvent,\n subscribeContractEvent,\n subscribeContractEvents,\n testMethod,\n callMethod,\n multicallMethods,\n fetchContractState,\n Asset,\n ContractInstance,\n getContractEventsCurrentCount,\n TestContractParamsWithoutMaps,\n TestContractResultWithoutMaps,\n SignExecuteContractMethodParams,\n SignExecuteScriptTxResult,\n signExecuteMethod,\n addStdIdToFields,\n encodeContractFields,\n Narrow,\n} from \"@alephium/web3\";\nimport { default as FeeCollectorPerTokenPairImplContractJson } from \"../examples/FeeCollectorPerTokenPairImpl.ral.json\";\nimport { getContractByCodeHash, registerContract } from \"./contracts\";\n\n// Custom types for the contract\nexport namespace FeeCollectorPerTokenPairImplTypes {\n export type Fields = {\n tokenPairFactory: HexString;\n tokenPair: HexString;\n };\n\n export type State = ContractState<Fields>;\n\n export interface CallMethodTable {\n collectFee: {\n params: CallContractParams<{ from: Address; amount: bigint }>;\n result: CallContractResult<null>;\n };\n withdraw: {\n params: CallContractParams<{ to: Address; amount: bigint }>;\n result: CallContractResult<null>;\n };\n destroy: {\n params: CallContractParams<{ to: Address }>;\n result: CallContractResult<null>;\n };\n collectFeeManually: {\n params: Omit<CallContractParams<{}>, \"args\">;\n result: CallContractResult<null>;\n };\n }\n export type CallMethodParams<T extends keyof CallMethodTable> =\n CallMethodTable[T][\"params\"];\n export type CallMethodResult<T extends keyof CallMethodTable> =\n CallMethodTable[T][\"result\"];\n export type MultiCallParams = Partial<{\n [Name in keyof CallMethodTable]: CallMethodTable[Name][\"params\"];\n }>;\n export type MultiCallResults<T extends MultiCallParams> = {\n [MaybeName in keyof T]: MaybeName extends keyof CallMethodTable\n ? CallMethodTable[MaybeName][\"result\"]\n : undefined;\n };\n export type MulticallReturnType<Callss extends MultiCallParams[]> = {\n [index in keyof Callss]: MultiCallResults<Callss[index]>;\n };\n\n export interface SignExecuteMethodTable {\n collectFee: {\n params: SignExecuteContractMethodParams<{\n from: Address;\n amount: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n withdraw: {\n params: SignExecuteContractMethodParams<{ to: Address; amount: bigint }>;\n result: SignExecuteScriptTxResult;\n };\n destroy: {\n params: SignExecuteContractMethodParams<{ to: Address }>;\n result: SignExecuteScriptTxResult;\n };\n collectFeeManually: {\n params: Omit<SignExecuteContractMethodParams<{}>, \"args\">;\n result: SignExecuteScriptTxResult;\n };\n }\n export type SignExecuteMethodParams<T extends keyof SignExecuteMethodTable> =\n SignExecuteMethodTable[T][\"params\"];\n export type SignExecuteMethodResult<T extends keyof SignExecuteMethodTable> =\n SignExecuteMethodTable[T][\"result\"];\n}\n\nclass Factory extends ContractFactory<\n FeeCollectorPerTokenPairImplInstance,\n FeeCollectorPerTokenPairImplTypes.Fields\n> {\n encodeFields(fields: FeeCollectorPerTokenPairImplTypes.Fields) {\n return encodeContractFields(\n addStdIdToFields(this.contract, fields),\n this.contract.fieldsSig,\n []\n );\n }\n\n consts = {\n ErrorCodes: {\n ReserveOverflow: BigInt(\"0\"),\n InsufficientInitLiquidity: BigInt(\"1\"),\n InsufficientLiquidityMinted: BigInt(\"2\"),\n InsufficientLiquidityBurned: BigInt(\"3\"),\n InvalidToAddress: BigInt(\"4\"),\n InsufficientLiquidity: BigInt(\"5\"),\n InvalidTokenInId: BigInt(\"6\"),\n InvalidCalleeId: BigInt(\"7\"),\n InvalidK: BigInt(\"8\"),\n InsufficientOutputAmount: BigInt(\"9\"),\n InsufficientInputAmount: BigInt(\"10\"),\n IdenticalTokenIds: BigInt(\"11\"),\n Expired: BigInt(\"12\"),\n InsufficientToken0Amount: BigInt(\"13\"),\n InsufficientToken1Amount: BigInt(\"14\"),\n TokenNotExist: BigInt(\"15\"),\n InvalidCaller: BigInt(\"16\"),\n FeeCollectorNotEnabled: BigInt(\"17\"),\n InvalidAccount: BigInt(\"18\"),\n },\n };\n\n at(address: string): FeeCollectorPerTokenPairImplInstance {\n return new FeeCollectorPerTokenPairImplInstance(address);\n }\n\n tests = {\n collectFee: async (\n params: TestContractParamsWithoutMaps<\n FeeCollectorPerTokenPairImplTypes.Fields,\n { from: Address; amount: bigint }\n >\n ): Promise<TestContractResultWithoutMaps<null>> => {\n return testMethod(this, \"collectFee\", params, getContractByCodeHash);\n },\n withdraw: async (\n params: TestContractParamsWithoutMaps<\n FeeCollectorPerTokenPairImplTypes.Fields,\n { to: Address; amount: bigint }\n >\n ): Promise<TestContractResultWithoutMaps<null>> => {\n return testMethod(this, \"withdraw\", params, getContractByCodeHash);\n },\n destroy: async (\n params: TestContractParamsWithoutMaps<\n FeeCollectorPerTokenPairImplTypes.Fields,\n { to: Address }\n >\n ): Promise<TestContractResultWithoutMaps<null>> => {\n return testMethod(this, \"destroy\", params, getContractByCodeHash);\n },\n collectFeeManually: async (\n params: Omit<\n TestContractParamsWithoutMaps<\n FeeCollectorPerTokenPairImplTypes.Fields,\n never\n >,\n \"args\"\n >\n ): Promise<TestContractResultWithoutMaps<null>> => {\n return testMethod(\n this,\n \"collectFeeManually\",\n params,\n getContractByCodeHash\n );\n },\n };\n\n stateForTest(\n initFields: FeeCollectorPerTokenPairImplTypes.Fields,\n asset?: Asset,\n address?: string\n ) {\n return this.stateForTest_(initFields, asset, address, undefined);\n }\n}\n\n// Use this object to test and deploy the contract\nexport const FeeCollectorPerTokenPairImpl = new Factory(\n Contract.fromJson(\n FeeCollectorPerTokenPairImplContractJson,\n \"\",\n \"a2326c414551281d90194411b00b614c3fc07cb568020e1ed2e1852099e6996e\",\n []\n )\n);\nregisterContract(FeeCollectorPerTokenPairImpl);\n\n// Use this class to interact with the blockchain\nexport class FeeCollectorPerTokenPairImplInstance extends ContractInstance {\n constructor(address: Address) {\n super(address);\n }\n\n async fetchState(): Promise<FeeCollectorPerTokenPairImplTypes.State> {\n return fetchContractState(FeeCollectorPerTokenPairImpl, this);\n }\n\n view = {\n collectFee: async (\n params: FeeCollectorPerTokenPairImplTypes.CallMethodParams<\"collectFee\">\n ): Promise<\n FeeCollectorPerTokenPairImplTypes.CallMethodResult<\"collectFee\">\n > => {\n return callMethod(\n FeeCollectorPerTokenPairImpl,\n this,\n \"collectFee\",\n params,\n getContractByCodeHash\n );\n },\n withdraw: async (\n params: FeeCollectorPerTokenPairImplTypes.CallMethodParams<\"withdraw\">\n ): Promise<\n FeeCollectorPerTokenPairImplTypes.CallMethodResult<\"withdraw\">\n > => {\n return callMethod(\n FeeCollectorPerTokenPairImpl,\n this,\n \"withdraw\",\n params,\n getContractByCodeHash\n );\n },\n destroy: async (\n params: FeeCollectorPerTokenPairImplTypes.CallMethodParams<\"destroy\">\n ): Promise<\n FeeCollectorPerTokenPairImplTypes.CallMethodResult<\"destroy\">\n > => {\n return callMethod(\n FeeCollectorPerTokenPairImpl,\n this,\n \"destroy\",\n params,\n getContractByCodeHash\n );\n },\n collectFeeManually: async (\n params?: FeeCollectorPerTokenPairImplTypes.CallMethodParams<\"collectFeeManually\">\n ): Promise<\n FeeCollectorPerTokenPairImplTypes.CallMethodResult<\"collectFeeManually\">\n > => {\n return callMethod(\n FeeCollectorPerTokenPairImpl,\n this,\n \"collectFeeManually\",\n params === undefined ? {} : params,\n getContractByCodeHash\n );\n },\n };\n\n transact = {\n collectFee: async (\n params: FeeCollectorPerTokenPairImplTypes.SignExecuteMethodParams<\"collectFee\">\n ): Promise<\n FeeCollectorPerTokenPairImplTypes.SignExecuteMethodResult<\"collectFee\">\n > => {\n return signExecuteMethod(\n FeeCollectorPerTokenPairImpl,\n this,\n \"collectFee\",\n params\n );\n },\n withdraw: async (\n params: FeeCollectorPerTokenPairImplTypes.SignExecuteMethodParams<\"withdraw\">\n ): Promise<\n FeeCollectorPerTokenPairImplTypes.SignExecuteMethodResult<\"withdraw\">\n > => {\n return signExecuteMethod(\n FeeCollectorPerTokenPairImpl,\n this,\n \"withdraw\",\n params\n );\n },\n destroy: async (\n params: FeeCollectorPerTokenPairImplTypes.SignExecuteMethodParams<\"destroy\">\n ): Promise<\n FeeCollectorPerTokenPairImplTypes.SignExecuteMethodResult<\"destroy\">\n > => {\n return signExecuteMethod(\n FeeCollectorPerTokenPairImpl,\n this,\n \"destroy\",\n params\n );\n },\n collectFeeManually: async (\n params: FeeCollectorPerTokenPairImplTypes.SignExecuteMethodParams<\"collectFeeManually\">\n ): Promise<\n FeeCollectorPerTokenPairImplTypes.SignExecuteMethodResult<\"collectFeeManually\">\n > => {\n return signExecuteMethod(\n FeeCollectorPerTokenPairImpl,\n this,\n \"collectFeeManually\",\n params\n );\n },\n };\n}\n","{\n \"version\": \"v4.2.5\",\n \"name\": \"FeeCollectorPerTokenPairImpl\",\n \"bytecode\": \"0204154032404b406701010202000ab3ce014113107b1600b2ce011601aa01020202000dd3f1ab4760b40c0dce0001024513107b1600ce011601ab01020101000bd320f98f62b40c0dce0001024513107b1600b001000000000dd3f2c71c4bb40c0dce0001024513107b0c0cce010111\",\n \"codeHash\": \"a2326c414551281d90194411b00b614c3fc07cb568020e1ed2e1852099e6996e\",\n \"fieldsSig\": {\n \"names\": [\n \"tokenPairFactory\",\n \"tokenPair\"\n ],\n \"types\": [\n \"TokenPairFactory\",\n \"TokenPair\"\n ],\n \"isMutable\": [\n false,\n false\n ]\n },\n \"eventsSig\": [],\n \"functions\": [\n {\n \"name\": \"collectFee\",\n \"paramNames\": [\n \"from\",\n \"amount\"\n ],\n \"paramTypes\": [\n \"Address\",\n \"U256\"\n ],\n \"paramIsMutable\": [\n false,\n false\n ],\n \"returnTypes\": []\n },\n {\n \"name\": \"withdraw\",\n \"paramNames\": [\n \"to\",\n \"amount\"\n ],\n \"paramTypes\": [\n \"Address\",\n \"U256\"\n ],\n \"paramIsMutable\": [\n false,\n false\n ],\n \"returnTypes\": []\n },\n {\n \"name\": \"destroy\",\n \"paramNames\": [\n \"to\"\n ],\n \"paramTypes\": [\n \"Address\"\n ],\n \"paramIsMutable\": [\n false\n ],\n \"returnTypes\": []\n },\n {\n \"name\": \"collectFeeManually\",\n \"paramNames\": [],\n \"paramTypes\": [],\n \"paramIsMutable\": [],\n \"returnTypes\": []\n }\n ],\n \"constants\": [],\n \"enums\": [\n {\n \"name\": \"ErrorCodes\",\n \"fields\": [\n {\n \"name\": \"ReserveOverflow\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"0\"\n }\n },\n {\n \"name\": \"InsufficientInitLiquidity\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"1\"\n }\n },\n {\n \"name\": \"InsufficientLiquidityMinted\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"2\"\n }\n },\n {\n \"name\": \"InsufficientLiquidityBurned\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"3\"\n }\n },\n {\n \"name\": \"InvalidToAddress\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"4\"\n }\n },\n {\n \"name\": \"InsufficientLiquidity\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"5\"\n }\n },\n {\n \"name\": \"InvalidTokenInId\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"6\"\n }\n },\n {\n \"name\": \"InvalidCalleeId\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"7\"\n }\n },\n {\n \"name\": \"InvalidK\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"8\"\n }\n },\n {\n \"name\": \"InsufficientOutputAmount\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"9\"\n }\n },\n {\n \"name\": \"InsufficientInputAmount\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"10\"\n }\n },\n {\n \"name\": \"IdenticalTokenIds\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"11\"\n }\n },\n {\n \"name\": \"Expired\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"12\"\n }\n },\n {\n \"name\": \"InsufficientToken0Amount\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"13\"\n }\n },\n {\n \"name\": \"InsufficientToken1Amount\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"14\"\n }\n },\n {\n \"name\": \"TokenNotExist\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"15\"\n }\n },\n {\n \"name\": \"InvalidCaller\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"16\"\n }\n },\n {\n \"name\": \"FeeCollectorNotEnabled\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"17\"\n }\n },\n {\n \"name\": \"InvalidAccount\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"18\"\n }\n }\n ]\n }\n ]\n}","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport {\n Address,\n Contract,\n ContractState,\n TestContractResult,\n HexString,\n ContractFactory,\n EventSubscribeOptions,\n EventSubscription,\n CallContractParams,\n CallContractResult,\n TestContractParams,\n ContractEvent,\n subscribeContractEvent,\n subscribeContractEvents,\n testMethod,\n callMethod,\n multicallMethods,\n fetchContractState,\n Asset,\n ContractInstance,\n getContractEventsCurrentCount,\n TestContractParamsWithoutMaps,\n TestContractResultWithoutMaps,\n SignExecuteContractMethodParams,\n SignExecuteScriptTxResult,\n signExecuteMethod,\n addStdIdToFields,\n encodeContractFields,\n Narrow,\n} from \"@alephium/web3\";\nimport { default as FullMathTestContractJson } from \"../examples/FullMathTest.ral.json\";\nimport { getContractByCodeHash, registerContract } from \"./contracts\";\n\n// Custom types for the contract\nexport namespace FullMathTestTypes {\n export type State = Omit<ContractState<any>, \"fields\">;\n\n export interface CallMethodTable {\n fullMul: {\n params: CallContractParams<{ x: bigint; y: bigint }>;\n result: CallContractResult<[bigint, bigint]>;\n };\n mulDiv: {\n params: CallContractParams<{ a: bigint; b: bigint; denominator: bigint }>;\n result: CallContractResult<bigint>;\n };\n fraction: {\n params: CallContractParams<{ numerator: bigint; denominator: bigint }>;\n result: CallContractResult<bigint>;\n };\n }\n export type CallMethodParams<T extends keyof CallMethodTable> =\n CallMethodTable[T][\"params\"];\n export type CallMethodResult<T extends keyof CallMethodTable> =\n CallMethodTable[T][\"result\"];\n export type MultiCallParams = Partial<{\n [Name in keyof CallMethodTable]: CallMethodTable[Name][\"params\"];\n }>;\n export type MultiCallResults<T extends MultiCallParams> = {\n [MaybeName in keyof T]: MaybeName extends keyof CallMethodTable\n ? CallMethodTable[MaybeName][\"result\"]\n : undefined;\n };\n export type MulticallReturnType<Callss extends MultiCallParams[]> = {\n [index in keyof Callss]: MultiCallResults<Callss[index]>;\n };\n\n export interface SignExecuteMethodTable {\n fullMul: {\n params: SignExecuteContractMethodParams<{ x: bigint; y: bigint }>;\n result: SignExecuteScriptTxResult;\n };\n mulDiv: {\n params: SignExecuteContractMethodParams<{\n a: bigint;\n b: bigint;\n denominator: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n fraction: {\n params: SignExecuteContractMethodParams<{\n numerator: bigint;\n denominator: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n }\n export type SignExecuteMethodParams<T extends keyof SignExecuteMethodTable> =\n SignExecuteMethodTable[T][\"params\"];\n export type SignExecuteMethodResult<T extends keyof SignExecuteMethodTable> =\n SignExecuteMethodTable[T][\"result\"];\n}\n\nclass Factory extends ContractFactory<FullMathTestInstance, {}> {\n encodeFields() {\n return encodeContractFields({}, this.contract.fieldsSig, []);\n }\n\n consts = {\n Resolution: BigInt(\"112\"),\n ErrorCodes: {\n FullDivOverflow: BigInt(\"0\"),\n DivByZero: BigInt(\"1\"),\n FractionOverflow: BigInt(\"2\"),\n PeriodNotElapsed: BigInt(\"3\"),\n InvalidToken: BigInt(\"4\"),\n },\n };\n\n at(address: string): FullMathTestInstance {\n return new FullMathTestInstance(address);\n }\n\n tests = {\n fullMul: async (\n params: Omit<\n TestContractParamsWithoutMaps<never, { x: bigint; y: bigint }>,\n \"initialFields\"\n >\n ): Promise<TestContractResultWithoutMaps<[bigint, bigint]>> => {\n return testMethod(this, \"fullMul\", params, getContractByCodeHash);\n },\n mulDiv: async (\n params: Omit<\n TestContractParamsWithoutMaps<\n never,\n { a: bigint; b: bigint; denominator: bigint }\n >,\n \"initialFields\"\n >\n ): Promise<TestContractResultWithoutMaps<bigint>> => {\n return testMethod(this, \"mulDiv\", params, getContractByCodeHash);\n },\n fraction: async (\n params: Omit<\n TestContractParamsWithoutMaps<\n never,\n { numerator: bigint; denominator: bigint }\n >,\n \"initialFields\"\n >\n ): Promise<TestContractResultWithoutMaps<bigint>> => {\n return testMethod(this, \"fraction\", params, getContractByCodeHash);\n },\n };\n\n stateForTest(initFields: {}, asset?: Asset, address?: string) {\n return this.stateForTest_(initFields, asset, address, undefined);\n }\n}\n\n// Use this object to test and deploy the contract\nexport const FullMathTest = new Factory(\n Contract.fromJson(\n FullMathTestContractJson,\n \"\",\n \"4e6bd23542804a31c9fdc85b4a0065857c11fcd0b7a40a7ce2c66558001e2040\",\n []\n )\n);\nregisterContract(FullMathTest);\n\n// Use this class to interact with the blockchain\nexport class FullMathTestInstance extends ContractInstance {\n constructor(address: Address) {\n super(address);\n }\n\n async fetchState(): Promise<FullMathTestTypes.State> {\n return fetchContractState(FullMathTest, this);\n }\n\n view = {\n fullMul: async (\n params: FullMathTestTypes.CallMethodParams<\"fullMul\">\n ): Promise<FullMathTestTypes.CallMethodResult<\"fullMul\">> => {\n return callMethod(\n FullMathTest,\n this,\n \"fullMul\",\n params,\n getContractByCodeHash\n );\n },\n mulDiv: async (\n params: FullMathTestTypes.CallMethodParams<\"mulDiv\">\n ): Promise<FullMathTestTypes.CallMethodResult<\"mulDiv\">> => {\n return callMethod(\n FullMathTest,\n this,\n \"mulDiv\",\n params,\n getContractByCodeHash\n );\n },\n fraction: async (\n params: FullMathTestTypes.CallMethodParams<\"fraction\">\n ): Promise<FullMathTestTypes.CallMethodResult<\"fraction\">> => {\n return callMethod(\n FullMathTest,\n this,\n \"fraction\",\n params,\n getContractByCodeHash\n );\n },\n };\n\n transact = {\n fullMul: async (\n params: FullMathTestTypes.SignExecuteMethodParams<\"fullMul\">\n ): Promise<FullMathTestTypes.SignExecuteMethodResult<\"fullMul\">> => {\n return signExecuteMethod(FullMathTest, this, \"fullMul\", params);\n },\n mulDiv: async (\n params: FullMathTestTypes.SignExecuteMethodParams<\"mulDiv\">\n ): Promise<FullMathTestTypes.SignExecuteMethodResult<\"mulDiv\">> => {\n return signExecuteMethod(FullMathTest, this, \"mulDiv\", params);\n },\n fraction: async (\n params: FullMathTestTypes.SignExecuteMethodParams<\"fraction\">\n ): Promise<FullMathTestTypes.SignExecuteMethodResult<\"fraction\">> => {\n return signExecuteMethod(FullMathTest, this, \"fraction\", params);\n },\n };\n\n async multicall<Calls extends FullMathTestTypes.MultiCallParams>(\n calls: Calls\n ): Promise<FullMathTestTypes.MultiCallResults<Calls>>;\n async multicall<Callss extends FullMathTestTypes.MultiCallParams[]>(\n callss: Narrow<Callss>\n ): Promise<FullMathTestTypes.MulticallReturnType<Callss>>;\n async multicall<\n Callss extends\n | FullMathTestTypes.MultiCallParams\n | FullMathTestTypes.MultiCallParams[]\n >(callss: Callss): Promise<unknown> {\n return await multicallMethods(\n FullMathTest,\n this,\n callss,\n getContractByCodeHash\n );\n }\n}\n","{\n \"version\": \"v4.0.0\",\n \"name\": \"FullMathTest\",\n \"bytecode\": \"000340354103414c01000205021bd3ebaef653160016010c0d36871702160016013717031602160336170416021603314c0416040d36170416031604020100030801407fd340d735c316020c300d7b1600160100001704170316040c2f4c04160316022d0216021604330c7b16001601160287170516051603334c0416040d361704160316053617030c1602361602381706160216062d1702160316062d17030c16063616062d0d351706160316041606373917030f1602370e3a170716070e16021607373637170716070e16021607373637170716070e16021607373637170716070e16021607373637170716070e16021607373637170716070e16021607373637170716031607370201000203014028d30dcd6a6a16010c300d7b16000c2f4c020c0216000d1340903b314c0616001340703b16012d4a0616000d1340703b16010001170216020d1340e03b310e7b160202\",\n \"codeHash\": \"4e6bd23542804a31c9fdc85b4a0065857c11fcd0b7a40a7ce2c66558001e2040\",\n \"fieldsSig\": {\n \"names\": [],\n \"types\": [],\n \"isMutable\": []\n },\n \"eventsSig\": [],\n \"functions\": [\n {\n \"name\": \"fullMul\",\n \"paramNames\": [\n \"x\",\n \"y\"\n ],\n \"paramTypes\": [\n \"U256\",\n \"U256\"\n ],\n \"paramIsMutable\": [\n false,\n false\n ],\n \"returnTypes\": [\n \"U256\",\n \"U256\"\n ]\n },\n {\n \"name\": \"mulDiv\",\n \"paramNames\": [\n \"a\",\n \"b\",\n \"denominator\"\n ],\n \"paramTypes\": [\n \"U256\",\n \"U256\",\n \"U256\"\n ],\n \"paramIsMutable\": [\n false,\n false,\n true\n ],\n \"returnTypes\": [\n \"U256\"\n ]\n },\n {\n \"name\": \"fraction\",\n \"paramNames\": [\n \"numerator\",\n \"denominator\"\n ],\n \"paramTypes\": [\n \"U256\",\n \"U256\"\n ],\n \"paramIsMutable\": [\n false,\n false\n ],\n \"returnTypes\": [\n \"U256\"\n ]\n }\n ],\n \"constants\": [\n {\n \"name\": \"Resolution\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"112\"\n }\n }\n ],\n \"enums\": [\n {\n \"name\": \"ErrorCodes\",\n \"fields\": [\n {\n \"name\": \"FullDivOverflow\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"0\"\n }\n },\n {\n \"name\": \"DivByZero\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"1\"\n }\n },\n {\n \"name\": \"FractionOverflow\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"2\"\n }\n },\n {\n \"name\": \"PeriodNotElapsed\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"3\"\n }\n },\n {\n \"name\": \"InvalidToken\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"4\"\n }\n }\n ]\n }\n ]\n}","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport {\n Address,\n Contract,\n ContractState,\n TestContractResult,\n HexString,\n ContractFactory,\n EventSubscribeOptions,\n EventSubscription,\n CallContractParams,\n CallContractResult,\n TestContractParams,\n ContractEvent,\n subscribeContractEvent,\n subscribeContractEvents,\n testMethod,\n callMethod,\n multicallMethods,\n fetchContractState,\n Asset,\n ContractInstance,\n getContractEventsCurrentCount,\n TestContractParamsWithoutMaps,\n TestContractResultWithoutMaps,\n SignExecuteContractMethodParams,\n SignExecuteScriptTxResult,\n signExecuteMethod,\n addStdIdToFields,\n encodeContractFields,\n Narrow,\n} from \"@alephium/web3\";\nimport { default as MathTestContractJson } from \"../test/MathTest.ral.json\";\nimport { getContractByCodeHash, registerContract } from \"./contracts\";\n\n// Custom types for the contract\nexport namespace MathTestTypes {\n export type State = Omit<ContractState<any>, \"fields\">;\n\n export interface CallMethodTable {\n uqdiv: {\n params: CallContractParams<{ a: bigint; b: bigint }>;\n result: CallContractResult<bigint>;\n };\n sqrt: {\n params: CallContractParams<{ y: bigint }>;\n result: CallContractResult<bigint>;\n };\n }\n export type CallMethodParams<T extends keyof CallMethodTable> =\n CallMethodTable[T][\"params\"];\n export type CallMethodResult<T extends keyof CallMethodTable> =\n CallMethodTable[T][\"result\"];\n export type MultiCallParams = Partial<{\n [Name in keyof CallMethodTable]: CallMethodTable[Name][\"params\"];\n }>;\n export type MultiCallResults<T extends MultiCallParams> = {\n [MaybeName in keyof T]: MaybeName extends keyof CallMethodTable\n ? CallMethodTable[MaybeName][\"result\"]\n : undefined;\n };\n export type MulticallReturnType<Callss extends MultiCallParams[]> = {\n [index in keyof Callss]: MultiCallResults<Callss[index]>;\n };\n\n export interface SignExecuteMethodTable {\n uqdiv: {\n params: SignExecuteContractMethodParams<{ a: bigint; b: bigint }>;\n result: SignExecuteScriptTxResult;\n };\n sqrt: {\n params: SignExecuteContractMethodParams<{ y: bigint }>;\n result: SignExecuteScriptTxResult;\n };\n }\n export type SignExecuteMethodParams<T extends keyof SignExecuteMethodTable> =\n SignExecuteMethodTable[T][\"params\"];\n export type SignExecuteMethodResult<T extends keyof SignExecuteMethodTable> =\n SignExecuteMethodTable[T][\"result\"];\n}\n\nclass Factory extends ContractFactory<MathTestInstance, {}> {\n encodeFields() {\n return encodeContractFields({}, this.contract.fieldsSig, []);\n }\n\n at(address: string): MathTestInstance {\n return new MathTestInstance(address);\n }\n\n tests = {\n uqdiv: async (\n params: Omit<\n TestContractParamsWithoutMaps<never, { a: bigint; b: bigint }>,\n \"initialFields\"\n >\n ): Promise<TestContractResultWithoutMaps<bigint>> => {\n return testMethod(this, \"uqdiv\", params, getContractByCodeHash);\n },\n sqrt: async (\n params: Omit<\n TestContractParamsWithoutMaps<never, { y: bigint }>,\n \"initialFields\"\n >\n ): Promise<TestContractResultWithoutMaps<bigint>> => {\n return testMethod(this, \"sqrt\", params, getContractByCodeHash);\n },\n };\n\n stateForTest(initFields: {}, asset?: Asset, address?: string) {\n return this.stateForTest_(initFields, asset, address, undefined);\n }\n}\n\n// Use this object to test and deploy the contract\nexport const MathTest = new Factory(\n Contract.fromJson(\n MathTestContractJson,\n \"\",\n \"732c8ff5b38eadaa96074453394619cb78ddf7371ff94ce7fb3dbe5fe332655c\",\n []\n )\n);\nregisterContract(MathTest);\n\n// Use this class to interact with the blockchain\nexport class MathTestInstance extends ContractInstance {\n constructor(address: Address) {\n super(address);\n }\n\n async fetchState(): Promise<MathTestTypes.State> {\n return fetchContractState(MathTest, this);\n }\n\n view = {\n uqdiv: async (\n params: MathTestTypes.CallMethodParams<\"uqdiv\">\n ): Promise<MathTestTypes.CallMethodResult<\"uqdiv\">> => {\n return callMethod(MathTest, this, \"uqdiv\", params, getContractByCodeHash);\n },\n sqrt: async (\n params: MathTestTypes.CallMethodParams<\"sqrt\">\n ): Promise<MathTestTypes.CallMethodResult<\"sqrt\">> => {\n return callMethod(MathTest, this, \"sqrt\", params, getContractByCodeHash);\n },\n };\n\n transact = {\n uqdiv: async (\n params: MathTestTypes.SignExecuteMethodParams<\"uqdiv\">\n ): Promise<MathTestTypes.SignExecuteMethodResult<\"uqdiv\">> => {\n return signExecuteMethod(MathTest, this, \"uqdiv\", params);\n },\n sqrt: async (\n params: MathTestTypes.SignExecuteMethodParams<\"sqrt\">\n ): Promise<MathTestTypes.SignExecuteMethodResult<\"sqrt\">> => {\n return signExecuteMethod(MathTest, this, \"sqrt\", params);\n },\n };\n\n async multicall<Calls extends MathTestTypes.MultiCallParams>(\n calls: Calls\n ): Promise<MathTestTypes.MultiCallResults<Calls>>;\n async multicall<Callss extends MathTestTypes.MultiCallParams[]>(\n callss: Narrow<Callss>\n ): Promise<MathTestTypes.MulticallReturnType<Callss>>;\n async multicall<\n Callss extends\n | MathTestTypes.MultiCallParams\n | MathTestTypes.MultiCallParams[]\n >(callss: Callss): Promise<unknown> {\n return await multicallMethods(\n MathTest,\n this,\n callss,\n getContractByCodeHash\n );\n }\n}\n","{\n \"version\": \"v4.0.0\",\n \"name\": \"MathTest\",\n \"bytecode\": \"0002174053010002020109d38c844efd16000d1340703b2c16012d0201000103014020d36ae1998016000f334c191600170116000e2d0d2a170216021601314c0b16021701160016022d16022a0e2d17024a311601020d02\",\n \"codeHash\": \"732c8ff5b38eadaa96074453394619cb78ddf7371ff94ce7fb3dbe5fe332655c\",\n \"fieldsSig\": {\n \"names\": [],\n \"types\": [],\n \"isMutable\": []\n },\n \"eventsSig\": [],\n \"functions\": [\n {\n \"name\": \"uqdiv\",\n \"paramNames\": [\n \"a\",\n \"b\"\n ],\n \"paramTypes\": [\n \"U256\",\n \"U256\"\n ],\n \"paramIsMutable\": [\n false,\n false\n ],\n \"returnTypes\": [\n \"U256\"\n ]\n },\n {\n \"name\": \"sqrt\",\n \"paramNames\": [\n \"y\"\n ],\n \"paramTypes\": [\n \"U256\"\n ],\n \"paramIsMutable\": [\n false\n ],\n \"returnTypes\": [\n \"U256\"\n ]\n }\n ],\n \"constants\": [],\n \"enums\": []\n}","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport {\n Address,\n Contract,\n ContractState,\n TestContractResult,\n HexString,\n ContractFactory,\n EventSubscribeOptions,\n EventSubscription,\n CallContractParams,\n CallContractResult,\n TestContractParams,\n ContractEvent,\n subscribeContractEvent,\n subscribeContractEvents,\n testMethod,\n callMethod,\n multicallMethods,\n fetchContractState,\n Asset,\n ContractInstance,\n getContractEventsCurrentCount,\n TestContractParamsWithoutMaps,\n TestContractResultWithoutMaps,\n SignExecuteContractMethodParams,\n SignExecuteScriptTxResult,\n signExecuteMethod,\n addStdIdToFields,\n encodeContractFields,\n Narrow,\n} from \"@alephium/web3\";\nimport { default as RouterContractJson } from \"../dex/Router.ral.json\";\nimport { getContractByCodeHash, registerContract } from \"./contracts\";\n\n// Custom types for the contract\nexport namespace RouterTypes {\n export type State = Omit<ContractState<any>, \"fields\">;\n\n export interface CallMethodTable {\n addLiquidity_: {\n params: CallContractParams<{\n reserve0: bigint;\n reserve1: bigint;\n amount0Desired: bigint;\n amount1Desired: bigint;\n amount0Min: bigint;\n amount1Min: bigint;\n }>;\n result: CallContractResult<[bigint, bigint]>;\n };\n addLiquidity: {\n params: CallContractParams<{\n tokenPair: HexString;\n sender: Address;\n amount0Desired: bigint;\n amount1Desired: bigint;\n amount0Min: bigint;\n amount1Min: bigint;\n deadline: bigint;\n }>;\n result: CallContractResult<[bigint, bigint, bigint]>;\n };\n removeLiquidity: {\n params: CallContractParams<{\n tokenPairId: HexString;\n sender: Address;\n liquidity: bigint;\n amount0Min: bigint;\n amount1Min: bigint;\n deadline: bigint;\n }>;\n result: CallContractResult<[bigint, bigint]>;\n };\n getReserveInAndReserveOut: {\n params: CallContractParams<{\n tokenPair: HexString;\n tokenInId: HexString;\n }>;\n result: CallContractResult<[bigint, bigint]>;\n };\n swapExactTokenForToken: {\n params: CallContractParams<{\n tokenPair: HexString;\n sender: Address;\n tokenInId: HexString;\n amountIn: bigint;\n amountOutMin: bigint;\n to: Address;\n deadline: bigint;\n }>;\n result: CallContractResult<null>;\n };\n swapTokenForExactToken: {\n params: CallContractParams<{\n tokenPair: HexString;\n sender: Address;\n tokenInId: HexString;\n amountInMax: bigint;\n amountOut: bigint;\n to: Address;\n deadline: bigint;\n }>;\n result: CallContractResult<null>;\n };\n swap: {\n params: CallContractParams<{\n tokenPair: HexString;\n sender: Address;\n to: Address;\n tokenInId: HexString;\n amountIn: bigint;\n amountOut: bigint;\n }>;\n result: CallContractResult<null>;\n };\n }\n export type CallMethodParams<T extends keyof CallMethodTable> =\n CallMethodTable[T][\"params\"];\n export type CallMethodResult<T extends keyof CallMethodTable> =\n CallMethodTable[T][\"result\"];\n export type MultiCallParams = Partial<{\n [Name in keyof CallMethodTable]: CallMethodTable[Name][\"params\"];\n }>;\n export type MultiCallResults<T extends MultiCallParams> = {\n [MaybeName in keyof T]: MaybeName extends keyof CallMethodTable\n ? CallMethodTable[MaybeName][\"result\"]\n : undefined;\n };\n export type MulticallReturnType<Callss extends MultiCallParams[]> = {\n [index in keyof Callss]: MultiCallResults<Callss[index]>;\n };\n\n export interface SignExecuteMethodTable {\n addLiquidity_: {\n params: SignExecuteContractMethodParams<{\n reserve0: bigint;\n reserve1: bigint;\n amount0Desired: bigint;\n amount1Desired: bigint;\n amount0Min: bigint;\n amount1Min: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n addLiquidity: {\n params: SignExecuteContractMethodParams<{\n tokenPair: HexString;\n sender: Address;\n amount0Desired: bigint;\n amount1Desired: bigint;\n amount0Min: bigint;\n amount1Min: bigint;\n deadline: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n removeLiquidity: {\n params: SignExecuteContractMethodParams<{\n tokenPairId: HexString;\n sender: Address;\n liquidity: bigint;\n amount0Min: bigint;\n amount1Min: bigint;\n deadline: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n getReserveInAndReserveOut: {\n params: SignExecuteContractMethodParams<{\n tokenPair: HexString;\n tokenInId: HexString;\n }>;\n result: SignExecuteScriptTxResult;\n };\n swapExactTokenForToken: {\n params: SignExecuteContractMethodParams<{\n tokenPair: HexString;\n sender: Address;\n tokenInId: HexString;\n amountIn: bigint;\n amountOutMin: bigint;\n to: Address;\n deadline: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n swapTokenForExactToken: {\n params: SignExecuteContractMethodParams<{\n tokenPair: HexString;\n sender: Address;\n tokenInId: HexString;\n amountInMax: bigint;\n amountOut: bigint;\n to: Address;\n deadline: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n swap: {\n params: SignExecuteContractMethodParams<{\n tokenPair: HexString;\n sender: Address;\n to: Address;\n tokenInId: HexString;\n amountIn: bigint;\n amountOut: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n }\n export type SignExecuteMethodParams<T extends keyof SignExecuteMethodTable> =\n SignExecuteMethodTable[T][\"params\"];\n export type SignExecuteMethodResult<T extends keyof SignExecuteMethodTable> =\n SignExecuteMethodTable[T][\"result\"];\n}\n\nclass Factory extends ContractFactory<RouterInstance, {}> {\n encodeFields() {\n return encodeContractFields({}, this.contract.fieldsSig, []);\n }\n\n consts = {\n ErrorCodes: {\n ReserveOverflow: BigInt(\"0\"),\n InsufficientInitLiquidity: BigInt(\"1\"),\n InsufficientLiquidityMinted: BigInt(\"2\"),\n InsufficientLiquidityBurned: BigInt(\"3\"),\n InvalidToAddress: BigInt(\"4\"),\n InsufficientLiquidity: BigInt(\"5\"),\n InvalidTokenInId: BigInt(\"6\"),\n InvalidCalleeId: BigInt(\"7\"),\n InvalidK: BigInt(\"8\"),\n InsufficientOutputAmount: BigInt(\"9\"),\n InsufficientInputAmount: BigInt(\"10\"),\n IdenticalTokenIds: BigInt(\"11\"),\n Expired: BigInt(\"12\"),\n InsufficientToken0Amount: BigInt(\"13\"),\n InsufficientToken1Amount: BigInt(\"14\"),\n TokenNotExist: BigInt(\"15\"),\n InvalidCaller: BigInt(\"16\"),\n FeeCollectorNotEnabled: BigInt(\"17\"),\n InvalidAccount: BigInt(\"18\"),\n },\n };\n\n at(address: string): RouterInstance {\n return new RouterInstance(address);\n }\n\n tests = {\n addLiquidity_: async (\n params: Omit<\n TestContractParamsWithoutMaps<\n never,\n {\n reserve0: bigint;\n reserve1: bigint;\n amount0Desired: bigint;\n amount1Desired: bigint;\n amount0Min: bigint;\n amount1Min: bigint;\n }\n >,\n \"initialFields\"\n >\n ): Promise<TestContractResultWithoutMaps<[bigint, bigint]>> => {\n return testMethod(this, \"addLiquidity_\", params, getContractByCodeHash);\n },\n addLiquidity: async (\n params: Omit<\n TestContractParamsWithoutMaps<\n never,\n {\n tokenPair: HexString;\n sender: Address;\n amount0Desired: bigint;\n amount1Desired: bigint;\n amount0Min: bigint;\n amount1Min: bigint;\n deadline: bigint;\n }\n >,\n \"initialFields\"\n >\n ): Promise<TestContractResultWithoutMaps<[bigint, bigint, bigint]>> => {\n return testMethod(this, \"addLiquidity\", params, getContractByCodeHash);\n },\n removeLiquidity: async (\n params: Omit<\n TestContractParamsWithoutMaps<\n never,\n {\n tokenPairId: HexString;\n sender: Address;\n liquidity: bigint;\n amount0Min: bigint;\n amount1Min: bigint;\n deadline: bigint;\n }\n >,\n \"initialFields\"\n >\n ): Promise<TestContractResultWithoutMaps<[bigint, bigint]>> => {\n return testMethod(this, \"removeLiquidity\", params, getContractByCodeHash);\n },\n getReserveInAndReserveOut: async (\n params: Omit<\n TestContractParamsWithoutMaps<\n never,\n { tokenPair: HexString; tokenInId: HexString }\n >,\n \"initialFields\"\n >\n ): Promise<TestContractResultWithoutMaps<[bigint, bigint]>> => {\n return testMethod(\n this,\n \"getReserveInAndReserveOut\",\n params,\n getContractByCodeHash\n );\n },\n swapExactTokenForToken: async (\n params: Omit<\n TestContractParamsWithoutMaps<\n never,\n {\n tokenPair: HexString;\n sender: Address;\n tokenInId: HexString;\n amountIn: bigint;\n amountOutMin: bigint;\n to: Address;\n deadline: bigint;\n }\n >,\n \"initialFields\"\n >\n ): Promise<TestContractResultWithoutMaps<null>> => {\n return testMethod(\n this,\n \"swapExactTokenForToken\",\n params,\n getContractByCodeHash\n );\n },\n swapTokenForExactToken: async (\n params: Omit<\n TestContractParamsWithoutMaps<\n never,\n {\n tokenPair: HexString;\n sender: Address;\n tokenInId: HexString;\n amountInMax: bigint;\n amountOut: bigint;\n to: Address;\n deadline: bigint;\n }\n >,\n \"initialFields\"\n >\n ): Promise<TestContractResultWithoutMaps<null>> => {\n return testMethod(\n this,\n \"swapTokenForExactToken\",\n params,\n getContractByCodeHash\n );\n },\n swap: async (\n params: Omit<\n TestContractParamsWithoutMaps<\n never,\n {\n tokenPair: HexString;\n sender: Address;\n to: Address;\n tokenInId: HexString;\n amountIn: bigint;\n amountOut: bigint;\n }\n >,\n \"initialFields\"\n >\n ): Promise<TestContractResultWithoutMaps<null>> => {\n return testMethod(this, \"swap\", params, getContractByCodeHash);\n },\n };\n\n stateForTest(initFields: {}, asset?: Asset, address?: string) {\n return this.stateForTest_(initFields, asset, address, undefined);\n }\n}\n\n// Use this object to test and deploy the contract\nexport const Router = new Factory(\n Contract.fromJson(\n RouterContractJson,\n \"\",\n \"e1ef7a11988dd23f3815d376e474266e3e9f69c9ad289974b9c45ed4ad986a6d\",\n []\n )\n);\nregisterContract(Router);\n\n// Use this class to interact with the blockchain\nexport class RouterInstance extends ContractInstance {\n constructor(address: Address) {\n super(address);\n }\n\n async fetchState(): Promise<RouterTypes.State> {\n return fetchContractState(Router, this);\n }\n\n view = {\n addLiquidity_: async (\n params: RouterTypes.CallMethodParams<\"addLiquidity_\">\n ): Promise<RouterTypes.CallMethodResult<\"addLiquidity_\">> => {\n return callMethod(\n Router,\n this,\n \"addLiquidity_\",\n params,\n getContractByCodeHash\n );\n },\n addLiquidity: async (\n params: RouterTypes.CallMethodParams<\"addLiquidity\">\n ): Promise<RouterTypes.CallMethodResult<\"addLiquidity\">> => {\n return callMethod(\n Router,\n this,\n \"addLiquidity\",\n params,\n getContractByCodeHash\n );\n },\n removeLiquidity: async (\n params: RouterTypes.CallMethodParams<\"removeLiquidity\">\n ): Promise<RouterTypes.CallMethodResult<\"removeLiquidity\">> => {\n return callMethod(\n Router,\n this,\n \"removeLiquidity\",\n params,\n getContractByCodeHash\n );\n },\n getReserveInAndReserveOut: async (\n params: RouterTypes.CallMethodParams<\"getReserveInAndReserveOut\">\n ): Promise<RouterTypes.CallMethodResult<\"getReserveInAndReserveOut\">> => {\n return callMethod(\n Router,\n this,\n \"getReserveInAndReserveOut\",\n params,\n getContractByCodeHash\n );\n },\n swapExactTokenForToken: async (\n params: RouterTypes.CallMethodParams<\"swapExactTokenForToken\">\n ): Promise<RouterTypes.CallMethodResult<\"swapExactTokenForToken\">> => {\n return callMethod(\n Router,\n this,\n \"swapExactTokenForToken\",\n params,\n getContractByCodeHash\n );\n },\n swapTokenForExactToken: async (\n params: RouterTypes.CallMethodParams<\"swapTokenForExactToken\">\n ): Promise<RouterTypes.CallMethodResult<\"swapTokenForExactToken\">> => {\n return callMethod(\n Router,\n this,\n \"swapTokenForExactToken\",\n params,\n getContractByCodeHash\n );\n },\n swap: async (\n params: RouterTypes.CallMethodParams<\"swap\">\n ): Promise<RouterTypes.CallMethodResult<\"swap\">> => {\n return callMethod(Router, this, \"swap\", params, getContractByCodeHash);\n },\n };\n\n transact = {\n addLiquidity_: async (\n params: RouterTypes.SignExecuteMethodParams<\"addLiquidity_\">\n ): Promise<RouterTypes.SignExecuteMethodResult<\"addLiquidity_\">> => {\n return signExecuteMethod(Router, this, \"addLiquidity_\", params);\n },\n addLiquidity: async (\n params: RouterTypes.SignExecuteMethodParams<\"addLiquidity\">\n ): Promise<RouterTypes.SignExecuteMethodResult<\"addLiquidity\">> => {\n return signExecuteMethod(Router, this, \"addLiquidity\", params);\n },\n removeLiquidity: async (\n params: RouterTypes.SignExecuteMethodParams<\"removeLiquidity\">\n ): Promise<RouterTypes.SignExecuteMethodResult<\"removeLiquidity\">> => {\n return signExecuteMethod(Router, this, \"removeLiquidity\", params);\n },\n getReserveInAndReserveOut: async (\n params: RouterTypes.SignExecuteMethodParams<\"getReserveInAndReserveOut\">\n ): Promise<\n RouterTypes.SignExecuteMethodResult<\"getReserveInAndReserveOut\">\n > => {\n return signExecuteMethod(\n Router,\n this,\n \"getReserveInAndReserveOut\",\n params\n );\n },\n swapExactTokenForToken: async (\n params: RouterTypes.SignExecuteMethodParams<\"swapExactTokenForToken\">\n ): Promise<\n RouterTypes.SignExecuteMethodResult<\"swapExactTokenForToken\">\n > => {\n return signExecuteMethod(Router, this, \"swapExactTokenForToken\", params);\n },\n swapTokenForExactToken: async (\n params: RouterTypes.SignExecuteMethodParams<\"swapTokenForExactToken\">\n ): Promise<\n RouterTypes.SignExecuteMethodResult<\"swapTokenForExactToken\">\n > => {\n return signExecuteMethod(Router, this, \"swapTokenForExactToken\", params);\n },\n swap: async (\n params: RouterTypes.SignExecuteMethodParams<\"swap\">\n ): Promise<RouterTypes.SignExecuteMethodResult<\"swap\">> => {\n return signExecuteMethod(Router, this, \"swap\", params);\n },\n };\n\n async multicall<Calls extends RouterTypes.MultiCallParams>(\n calls: Calls\n ): Promise<RouterTypes.MultiCallResults<Calls>>;\n async multicall<Callss extends RouterTypes.MultiCallParams[]>(\n callss: Narrow<Callss>\n ): Promise<RouterTypes.MulticallReturnType<Callss>>;\n async multicall<\n Callss extends RouterTypes.MultiCallParams | RouterTypes.MultiCallParams[]\n >(callss: Callss): Promise<unknown> {\n return await multicallMethods(Router, this, callss, getContractByCodeHash);\n }\n}\n","{\n \"version\": \"v4.2.5\",\n \"name\": \"Router\",\n \"bytecode\": \"0007405840b340ef4119416c41bd42060000060802403316000c2f7a4c041816010c2f4c031602160302160216012c16002d170616061603324c081606160534130e7b1602160602160316002c16012d170716071604347a4c04181607160232130d7b16071603020103070e03402fd3c2b1ca2116065634130c7b0c0e16000107170817070c0e16000108170a17091609160a16021603160416050000170c170b16017a1607160ba31608160ca31601160b160c0f0d1600010e170d160b160c160d0201030608021fd3b9fb57ea16055634130c7b160116001602a3160116020e0e1600010f170717061606160334130d7b1607160434130e7b16061607020000020502160c0e16000108170317020c0e1600010718170416011604414c03160216030216031602020103070b004029d364342a1916065634130c7b160016020003170817071343e516032c1709160916082c16091343e816072c2a2d170a160a16043413097b160116021603a316001601160516021603160a00060103070a004029d31937d61916065634130c7b16001602000317081707160716042c1343e82c160816042b1343e52c2d0d2a17091609160332130a7b160116021609a31600160116051602160916040006000306070040270c0e1600010718170616031606414c0f160116031604a31601160216040c0c160513060c160001104a0e160116031604a3160116020c160416050c13060c16000110\",\n \"codeHash\": \"e1ef7a11988dd23f3815d376e474266e3e9f69c9ad289974b9c45ed4ad986a6d\",\n \"fieldsSig\": {\n \"names\": [],\n \"types\": [],\n \"isMutable\": []\n },\n \"eventsSig\": [],\n \"functions\": [\n {\n \"name\": \"addLiquidity_\",\n \"paramNames\": [\n \"reserve0\",\n \"reserve1\",\n \"amount0Desired\",\n \"amount1Desired\",\n \"amount0Min\",\n \"amount1Min\"\n ],\n \"paramTypes\": [\n \"U256\",\n \"U256\",\n \"U256\",\n \"U256\",\n \"U256\",\n \"U256\"\n ],\n \"paramIsMutable\": [\n false,\n false,\n false,\n false,\n false,\n false\n ],\n \"returnTypes\": [\n \"U256\",\n \"U256\"\n ]\n },\n {\n \"name\": \"addLiquidity\",\n \"paramNames\": [\n \"tokenPair\",\n \"sender\",\n \"amount0Desired\",\n \"amount1Desired\",\n \"amount0Min\",\n \"amount1Min\",\n \"deadline\"\n ],\n \"paramTypes\": [\n \"TokenPair\",\n \"Address\",\n \"U256\",\n \"U256\",\n \"U256\",\n \"U256\",\n \"U256\"\n ],\n \"paramIsMutable\": [\n false,\n false,\n false,\n false,\n false,\n false,\n false\n ],\n \"returnTypes\": [\n \"U256\",\n \"U256\",\n \"U256\"\n ]\n },\n {\n \"name\": \"removeLiquidity\",\n \"paramNames\": [\n \"tokenPairId\",\n \"sender\",\n \"liquidity\",\n \"amount0Min\",\n \"amount1Min\",\n \"deadline\"\n ],\n \"paramTypes\": [\n \"ByteVec\",\n \"Address\",\n \"U256\",\n \"U256\",\n \"U256\",\n \"U256\"\n ],\n \"paramIsMutable\": [\n false,\n false,\n false,\n false,\n false,\n false\n ],\n \"returnTypes\": [\n \"U256\",\n \"U256\"\n ]\n },\n {\n \"name\": \"getReserveInAndReserveOut\",\n \"paramNames\": [\n \"tokenPair\",\n \"tokenInId\"\n ],\n \"paramTypes\": [\n \"TokenPair\",\n \"ByteVec\"\n ],\n \"paramIsMutable\": [\n false,\n false\n ],\n \"returnTypes\": [\n \"U256\",\n \"U256\"\n ]\n },\n {\n \"name\": \"swapExactTokenForToken\",\n \"paramNames\": [\n \"tokenPair\",\n \"sender\",\n \"tokenInId\",\n \"amountIn\",\n \"amountOutMin\",\n \"to\",\n \"deadline\"\n ],\n \"paramTypes\": [\n \"TokenPair\",\n \"Address\",\n \"ByteVec\",\n \"U256\",\n \"U256\",\n \"Address\",\n \"U256\"\n ],\n \"paramIsMutable\": [\n false,\n false,\n false,\n false,\n false,\n false,\n false\n ],\n \"returnTypes\": []\n },\n {\n \"name\": \"swapTokenForExactToken\",\n \"paramNames\": [\n \"tokenPair\",\n \"sender\",\n \"tokenInId\",\n \"amountInMax\",\n \"amountOut\",\n \"to\",\n \"deadline\"\n ],\n \"paramTypes\": [\n \"TokenPair\",\n \"Address\",\n \"ByteVec\",\n \"U256\",\n \"U256\",\n \"Address\",\n \"U256\"\n ],\n \"paramIsMutable\": [\n false,\n false,\n false,\n false,\n false,\n false,\n false\n ],\n \"returnTypes\": []\n },\n {\n \"name\": \"swap\",\n \"paramNames\": [\n \"tokenPair\",\n \"sender\",\n \"to\",\n \"tokenInId\",\n \"amountIn\",\n \"amountOut\"\n ],\n \"paramTypes\": [\n \"TokenPair\",\n \"Address\",\n \"Address\",\n \"ByteVec\",\n \"U256\",\n \"U256\"\n ],\n \"paramIsMutable\": [\n false,\n false,\n false,\n false,\n false,\n false\n ],\n \"returnTypes\": []\n }\n ],\n \"constants\": [],\n \"enums\": [\n {\n \"name\": \"ErrorCodes\",\n \"fields\": [\n {\n \"name\": \"ReserveOverflow\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"0\"\n }\n },\n {\n \"name\": \"InsufficientInitLiquidity\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"1\"\n }\n },\n {\n \"name\": \"InsufficientLiquidityMinted\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"2\"\n }\n },\n {\n \"name\": \"InsufficientLiquidityBurned\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"3\"\n }\n },\n {\n \"name\": \"InvalidToAddress\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"4\"\n }\n },\n {\n \"name\": \"InsufficientLiquidity\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"5\"\n }\n },\n {\n \"name\": \"InvalidTokenInId\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"6\"\n }\n },\n {\n \"name\": \"InvalidCalleeId\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"7\"\n }\n },\n {\n \"name\": \"InvalidK\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"8\"\n }\n },\n {\n \"name\": \"InsufficientOutputAmount\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"9\"\n }\n },\n {\n \"name\": \"InsufficientInputAmount\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"10\"\n }\n },\n {\n \"name\": \"IdenticalTokenIds\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"11\"\n }\n },\n {\n \"name\": \"Expired\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"12\"\n }\n },\n {\n \"name\": \"InsufficientToken0Amount\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"13\"\n }\n },\n {\n \"name\": \"InsufficientToken1Amount\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"14\"\n }\n },\n {\n \"name\": \"TokenNotExist\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"15\"\n }\n },\n {\n \"name\": \"InvalidCaller\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"16\"\n }\n },\n {\n \"name\": \"FeeCollectorNotEnabled\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"17\"\n }\n },\n {\n \"name\": \"InvalidAccount\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"18\"\n }\n }\n ]\n }\n ]\n}","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport {\n Address,\n Contract,\n ContractState,\n TestContractResult,\n HexString,\n ContractFactory,\n EventSubscribeOptions,\n EventSubscription,\n CallContractParams,\n CallContractResult,\n TestContractParams,\n ContractEvent,\n subscribeContractEvent,\n subscribeContractEvents,\n testMethod,\n callMethod,\n multicallMethods,\n fetchContractState,\n Asset,\n ContractInstance,\n getContractEventsCurrentCount,\n TestContractParamsWithoutMaps,\n TestContractResultWithoutMaps,\n SignExecuteContractMethodParams,\n SignExecuteScriptTxResult,\n signExecuteMethod,\n addStdIdToFields,\n encodeContractFields,\n Narrow,\n} from \"@alephium/web3\";\nimport { default as TestTokenContractJson } from \"../test/TestToken.ral.json\";\nimport { getContractByCodeHash, registerContract } from \"./contracts\";\n\n// Custom types for the contract\nexport namespace TestTokenTypes {\n export type Fields = {\n symbol: HexString;\n name: HexString;\n decimals: bigint;\n totalSupply: bigint;\n };\n\n export type State = ContractState<Fields>;\n\n export interface CallMethodTable {\n getSymbol: {\n params: Omit<CallContractParams<{}>, \"args\">;\n result: CallContractResult<HexString>;\n };\n getName: {\n params: Omit<CallContractParams<{}>, \"args\">;\n result: CallContractResult<HexString>;\n };\n getDecimals: {\n params: Omit<CallContractParams<{}>, \"args\">;\n result: CallContractResult<bigint>;\n };\n getTotalSupply: {\n params: Omit<CallContractParams<{}>, \"args\">;\n result: CallContractResult<bigint>;\n };\n getToken: {\n params: CallContractParams<{ sender: Address; amount: bigint }>;\n result: CallContractResult<null>;\n };\n }\n export type CallMethodParams<T extends keyof CallMethodTable> =\n CallMethodTable[T][\"params\"];\n export type CallMethodResult<T extends keyof CallMethodTable> =\n CallMethodTable[T][\"result\"];\n export type MultiCallParams = Partial<{\n [Name in keyof CallMethodTable]: CallMethodTable[Name][\"params\"];\n }>;\n export type MultiCallResults<T extends MultiCallParams> = {\n [MaybeName in keyof T]: MaybeName extends keyof CallMethodTable\n ? CallMethodTable[MaybeName][\"result\"]\n : undefined;\n };\n export type MulticallReturnType<Callss extends MultiCallParams[]> = {\n [index in keyof Callss]: MultiCallResults<Callss[index]>;\n };\n\n export interface SignExecuteMethodTable {\n getSymbol: {\n params: Omit<SignExecuteContractMethodParams<{}>, \"args\">;\n result: SignExecuteScriptTxResult;\n };\n getName: {\n params: Omit<SignExecuteContractMethodParams<{}>, \"args\">;\n result: SignExecuteScriptTxResult;\n };\n getDecimals: {\n params: Omit<SignExecuteContractMethodParams<{}>, \"args\">;\n result: SignExecuteScriptTxResult;\n };\n getTotalSupply: {\n params: Omit<SignExecuteContractMethodParams<{}>, \"args\">;\n result: SignExecuteScriptTxResult;\n };\n getToken: {\n params: SignExecuteContractMethodParams<{\n sender: Address;\n amount: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n }\n export type SignExecuteMethodParams<T extends keyof SignExecuteMethodTable> =\n SignExecuteMethodTable[T][\"params\"];\n export type SignExecuteMethodResult<T extends keyof SignExecuteMethodTable> =\n SignExecuteMethodTable[T][\"result\"];\n}\n\nclass Factory extends ContractFactory<\n TestTokenInstance,\n TestTokenTypes.Fields\n> {\n encodeFields(fields: TestTokenTypes.Fields) {\n return encodeContractFields(\n addStdIdToFields(this.contract, fields),\n this.contract.fieldsSig,\n []\n );\n }\n\n at(address: string): TestTokenInstance {\n return new TestTokenInstance(address);\n }\n\n tests = {\n getSymbol: async (\n params: Omit<\n TestContractParamsWithoutMaps<TestTokenTypes.Fields, never>,\n \"args\"\n >\n ): Promise<TestContractResultWithoutMaps<HexString>> => {\n return testMethod(this, \"getSymbol\", params, getContractByCodeHash);\n },\n getName: async (\n params: Omit<\n TestContractParamsWithoutMaps<TestTokenTypes.Fields, never>,\n \"args\"\n >\n ): Promise<TestContractResultWithoutMaps<HexString>> => {\n return testMethod(this, \"getName\", params, getContractByCodeHash);\n },\n getDecimals: async (\n params: Omit<\n TestContractParamsWithoutMaps<TestTokenTypes.Fields, never>,\n \"args\"\n >\n ): Promise<TestContractResultWithoutMaps<bigint>> => {\n return testMethod(this, \"getDecimals\", params, getContractByCodeHash);\n },\n getTotalSupply: async (\n params: Omit<\n TestContractParamsWithoutMaps<TestTokenTypes.Fields, never>,\n \"args\"\n >\n ): Promise<TestContractResultWithoutMaps<bigint>> => {\n return testMethod(this, \"getTotalSupply\", params, getContractByCodeHash);\n },\n getToken: async (\n params: TestContractParamsWithoutMaps<\n TestTokenTypes.Fields,\n { sender: Address; amount: bigint }\n >\n ): Promise<TestContractResultWithoutMaps<null>> => {\n return testMethod(this, \"getToken\", params, getContractByCodeHash);\n },\n };\n\n stateForTest(\n initFields: TestTokenTypes.Fields,\n asset?: Asset,\n address?: string\n ) {\n return this.stateForTest_(initFields, asset, address, undefined);\n }\n}\n\n// Use this object to test and deploy the contract\nexport const TestToken = new Factory(\n Contract.fromJson(\n TestTokenContractJson,\n \"\",\n \"f9dac4e7d0bf28a2bc019f43138339e23afadde322d50441cdfe029993bf35f3\",\n []\n )\n);\nregisterContract(TestToken);\n\n// Use this class to interact with the blockchain\nexport class TestTokenInstance extends ContractInstance {\n constructor(address: Address) {\n super(address);\n }\n\n async fetchState(): Promise<TestTokenTypes.State> {\n return fetchContractState(TestToken, this);\n }\n\n view = {\n getSymbol: async (\n params?: TestTokenTypes.CallMethodParams<\"getSymbol\">\n ): Promise<TestTokenTypes.CallMethodResult<\"getSymbol\">> => {\n return callMethod(\n TestToken,\n this,\n \"getSymbol\",\n params === undefined ? {} : params,\n getContractByCodeHash\n );\n },\n getName: async (\n params?: TestTokenTypes.CallMethodParams<\"getName\">\n ): Promise<TestTokenTypes.CallMethodResult<\"getName\">> => {\n return callMethod(\n TestToken,\n this,\n \"getName\",\n params === undefined ? {} : params,\n getContractByCodeHash\n );\n },\n getDecimals: async (\n params?: TestTokenTypes.CallMethodParams<\"getDecimals\">\n ): Promise<TestTokenTypes.CallMethodResult<\"getDecimals\">> => {\n return callMethod(\n TestToken,\n this,\n \"getDecimals\",\n params === undefined ? {} : params,\n getContractByCodeHash\n );\n },\n getTotalSupply: async (\n params?: TestTokenTypes.CallMethodParams<\"getTotalSupply\">\n ): Promise<TestTokenTypes.CallMethodResult<\"getTotalSupply\">> => {\n return callMethod(\n TestToken,\n this,\n \"getTotalSupply\",\n params === undefined ? {} : params,\n getContractByCodeHash\n );\n },\n getToken: async (\n params: TestTokenTypes.CallMethodParams<\"getToken\">\n ): Promise<TestTokenTypes.CallMethodResult<\"getToken\">> => {\n return callMethod(\n TestToken,\n this,\n \"getToken\",\n params,\n getContractByCodeHash\n );\n },\n };\n\n transact = {\n getSymbol: async (\n params: TestTokenTypes.SignExecuteMethodParams<\"getSymbol\">\n ): Promise<TestTokenTypes.SignExecuteMethodResult<\"getSymbol\">> => {\n return signExecuteMethod(TestToken, this, \"getSymbol\", params);\n },\n getName: async (\n params: TestTokenTypes.SignExecuteMethodParams<\"getName\">\n ): Promise<TestTokenTypes.SignExecuteMethodResult<\"getName\">> => {\n return signExecuteMethod(TestToken, this, \"getName\", params);\n },\n getDecimals: async (\n params: TestTokenTypes.SignExecuteMethodParams<\"getDecimals\">\n ): Promise<TestTokenTypes.SignExecuteMethodResult<\"getDecimals\">> => {\n return signExecuteMethod(TestToken, this, \"getDecimals\", params);\n },\n getTotalSupply: async (\n params: TestTokenTypes.SignExecuteMethodParams<\"getTotalSupply\">\n ): Promise<TestTokenTypes.SignExecuteMethodResult<\"getTotalSupply\">> => {\n return signExecuteMethod(TestToken, this, \"getTotalSupply\", params);\n },\n getToken: async (\n params: TestTokenTypes.SignExecuteMethodParams<\"getToken\">\n ): Promise<TestTokenTypes.SignExecuteMethodResult<\"getToken\">> => {\n return signExecuteMethod(TestToken, this, \"getToken\", params);\n },\n };\n\n async multicall<Calls extends TestTokenTypes.MultiCallParams>(\n calls: Calls\n ): Promise<TestTokenTypes.MultiCallResults<Calls>>;\n async multicall<Callss extends TestTokenTypes.MultiCallParams[]>(\n callss: Narrow<Callss>\n ): Promise<TestTokenTypes.MulticallReturnType<Callss>>;\n async multicall<\n Callss extends\n | TestTokenTypes.MultiCallParams\n | TestTokenTypes.MultiCallParams[]\n >(callss: Callss): Promise<unknown> {\n return await multicallMethods(\n TestToken,\n this,\n callss,\n getContractByCodeHash\n );\n }\n}\n","{\n \"version\": \"v4.0.0\",\n \"name\": \"TestToken\",\n \"bytecode\": \"050509121b40244035010000000102ce0002010000000102ce0102010000000102ce0202010000000102ce0302010202020005d359e9ded71600b11601ab\",\n \"codeHash\": \"f9dac4e7d0bf28a2bc019f43138339e23afadde322d50441cdfe029993bf35f3\",\n \"fieldsSig\": {\n \"names\": [\n \"symbol\",\n \"name\",\n \"decimals\",\n \"totalSupply\",\n \"__stdInterfaceId\"\n ],\n \"types\": [\n \"ByteVec\",\n \"ByteVec\",\n \"U256\",\n \"U256\",\n \"ByteVec\"\n ],\n \"isMutable\": [\n false,\n false,\n false,\n false,\n false\n ]\n },\n \"eventsSig\": [],\n \"functions\": [\n {\n \"name\": \"getSymbol\",\n \"paramNames\": [],\n \"paramTypes\": [],\n \"paramIsMutable\": [],\n \"returnTypes\": [\n \"ByteVec\"\n ]\n },\n {\n \"name\": \"getName\",\n \"paramNames\": [],\n \"paramTypes\": [],\n \"paramIsMutable\": [],\n \"returnTypes\": [\n \"ByteVec\"\n ]\n },\n {\n \"name\": \"getDecimals\",\n \"paramNames\": [],\n \"paramTypes\": [],\n \"paramIsMutable\": [],\n \"returnTypes\": [\n \"U256\"\n ]\n },\n {\n \"name\": \"getTotalSupply\",\n \"paramNames\": [],\n \"paramTypes\": [],\n \"paramIsMutable\": [],\n \"returnTypes\": [\n \"U256\"\n ]\n },\n {\n \"name\": \"getToken\",\n \"paramNames\": [\n \"sender\",\n \"amount\"\n ],\n \"paramTypes\": [\n \"Address\",\n \"U256\"\n ],\n \"paramIsMutable\": [\n false,\n false\n ],\n \"returnTypes\": []\n }\n ],\n \"constants\": [],\n \"enums\": [],\n \"stdInterfaceId\": \"0001\"\n}","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport {\n Address,\n Contract,\n ContractState,\n TestContractResult,\n HexString,\n ContractFactory,\n EventSubscribeOptions,\n EventSubscription,\n CallContractParams,\n CallContractResult,\n TestContractParams,\n ContractEvent,\n subscribeContractEvent,\n subscribeContractEvents,\n testMethod,\n callMethod,\n multicallMethods,\n fetchContractState,\n Asset,\n ContractInstance,\n getContractEventsCurrentCount,\n TestContractParamsWithoutMaps,\n TestContractResultWithoutMaps,\n SignExecuteContractMethodParams,\n SignExecuteScriptTxResult,\n signExecuteMethod,\n addStdIdToFields,\n encodeContractFields,\n Narrow,\n} from \"@alephium/web3\";\nimport { default as TokenPairContractJson } from \"../dex/TokenPair.ral.json\";\nimport { getContractByCodeHash, registerContract } from \"./contracts\";\n\n// Custom types for the contract\nexport namespace TokenPairTypes {\n export type Fields = {\n tokenPairFactory: HexString;\n token0Id: HexString;\n token1Id: HexString;\n dexAccount0: HexString;\n reserve0: bigint;\n reserve1: bigint;\n blockTimeStampLast: bigint;\n price0CumulativeLast: bigint;\n price1CumulativeLast: bigint;\n totalSupply: bigint;\n kLast: bigint;\n feeCollectorId: HexString;\n };\n\n export type State = ContractState<Fields>;\n\n export type MintEvent = ContractEvent<{\n sender: Address;\n amount0: bigint;\n amount1: bigint;\n liquidity: bigint;\n totalSupply: bigint;\n }>;\n export type BurnEvent = ContractEvent<{\n sender: Address;\n amount0: bigint;\n amount1: bigint;\n liquidity: bigint;\n totalSupply: bigint;\n }>;\n export type SwapEvent = ContractEvent<{\n sender: Address;\n amount0In: bigint;\n amount1In: bigint;\n amount0Out: bigint;\n amount1Out: bigint;\n to: Address;\n }>;\n\n export interface CallMethodTable {\n getSymbol: {\n params: Omit<CallContractParams<{}>, \"args\">;\n result: CallContractResult<HexString>;\n };\n getName: {\n params: Omit<CallContractParams<{}>, \"args\">;\n result: CallContractResult<HexString>;\n };\n getDecimals: {\n params: Omit<CallContractParams<{}>, \"args\">;\n result: CallContractResult<bigint>;\n };\n getTotalSupply: {\n params: Omit<CallContractParams<{}>, \"args\">;\n result: CallContractResult<bigint>;\n };\n uqdiv: {\n params: CallContractParams<{ a: bigint; b: bigint }>;\n result: CallContractResult<bigint>;\n };\n sqrt: {\n params: CallContractParams<{ y: bigint }>;\n result: CallContractResult<bigint>;\n };\n setFeeCollectorId: {\n params: CallContractParams<{ id: HexString }>;\n result: CallContractResult<null>;\n };\n getTokenPair: {\n params: Omit<CallContractParams<{}>, \"args\">;\n result: CallContractResult<[HexString, HexString]>;\n };\n getReserves: {\n params: Omit<CallContractParams<{}>, \"args\">;\n result: CallContractResult<[bigint, bigint]>;\n };\n getBlockTimeStampLast: {\n params: Omit<CallContractParams<{}>, \"args\">;\n result: CallContractResult<bigint>;\n };\n getPrice0CumulativeLast: {\n params: Omit<CallContractParams<{}>, \"args\">;\n result: CallContractResult<bigint>;\n };\n getPrice1CumulativeLast: {\n params: Omit<CallContractParams<{}>, \"args\">;\n result: CallContractResult<bigint>;\n };\n update: {\n params: CallContractParams<{ newReserve0: bigint; newReserve1: bigint }>;\n result: CallContractResult<null>;\n };\n mintFee: {\n params: CallContractParams<{ reserve0_: bigint; reserve1_: bigint }>;\n result: CallContractResult<[boolean, bigint]>;\n };\n mint: {\n params: CallContractParams<{\n sender: Address;\n amount0: bigint;\n amount1: bigint;\n }>;\n result: CallContractResult<bigint>;\n };\n burn: {\n params: CallContractParams<{ sender: Address; liquidity: bigint }>;\n result: CallContractResult<[bigint, bigint]>;\n };\n swap: {\n params: CallContractParams<{\n sender: Address;\n to: Address;\n amount0In: bigint;\n amount1In: bigint;\n amount0Out: bigint;\n amount1Out: bigint;\n }>;\n result: CallContractResult<null>;\n };\n collectFeeManually: {\n params: Omit<CallContractParams<{}>, \"args\">;\n result: CallContractResult<null>;\n };\n collectFeeAndUpdateKLast: {\n params: CallContractParams<{ feeAmount: bigint }>;\n result: CallContractResult<null>;\n };\n }\n export type CallMethodParams<T extends keyof CallMethodTable> =\n CallMethodTable[T][\"params\"];\n export type CallMethodResult<T extends keyof CallMethodTable> =\n CallMethodTable[T][\"result\"];\n export type MultiCallParams = Partial<{\n [Name in keyof CallMethodTable]: CallMethodTable[Name][\"params\"];\n }>;\n export type MultiCallResults<T extends MultiCallParams> = {\n [MaybeName in keyof T]: MaybeName extends keyof CallMethodTable\n ? CallMethodTable[MaybeName][\"result\"]\n : undefined;\n };\n export type MulticallReturnType<Callss extends MultiCallParams[]> = {\n [index in keyof Callss]: MultiCallResults<Callss[index]>;\n };\n\n export interface SignExecuteMethodTable {\n getSymbol: {\n params: Omit<SignExecuteContractMethodParams<{}>, \"args\">;\n result: SignExecuteScriptTxResult;\n };\n getName: {\n params: Omit<SignExecuteContractMethodParams<{}>, \"args\">;\n result: SignExecuteScriptTxResult;\n };\n getDecimals: {\n params: Omit<SignExecuteContractMethodParams<{}>, \"args\">;\n result: SignExecuteScriptTxResult;\n };\n getTotalSupply: {\n params: Omit<SignExecuteContractMethodParams<{}>, \"args\">;\n result: SignExecuteScriptTxResult;\n };\n uqdiv: {\n params: SignExecuteContractMethodParams<{ a: bigint; b: bigint }>;\n result: SignExecuteScriptTxResult;\n };\n sqrt: {\n params: SignExecuteContractMethodParams<{ y: bigint }>;\n result: SignExecuteScriptTxResult;\n };\n setFeeCollectorId: {\n params: SignExecuteContractMethodParams<{ id: HexString }>;\n result: SignExecuteScriptTxResult;\n };\n getTokenPair: {\n params: Omit<SignExecuteContractMethodParams<{}>, \"args\">;\n result: SignExecuteScriptTxResult;\n };\n getReserves: {\n params: Omit<SignExecuteContractMethodParams<{}>, \"args\">;\n result: SignExecuteScriptTxResult;\n };\n getBlockTimeStampLast: {\n params: Omit<SignExecuteContractMethodParams<{}>, \"args\">;\n result: SignExecuteScriptTxResult;\n };\n getPrice0CumulativeLast: {\n params: Omit<SignExecuteContractMethodParams<{}>, \"args\">;\n result: SignExecuteScriptTxResult;\n };\n getPrice1CumulativeLast: {\n params: Omit<SignExecuteContractMethodParams<{}>, \"args\">;\n result: SignExecuteScriptTxResult;\n };\n update: {\n params: SignExecuteContractMethodParams<{\n newReserve0: bigint;\n newReserve1: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n mintFee: {\n params: SignExecuteContractMethodParams<{\n reserve0_: bigint;\n reserve1_: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n mint: {\n params: SignExecuteContractMethodParams<{\n sender: Address;\n amount0: bigint;\n amount1: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n burn: {\n params: SignExecuteContractMethodParams<{\n sender: Address;\n liquidity: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n swap: {\n params: SignExecuteContractMethodParams<{\n sender: Address;\n to: Address;\n amount0In: bigint;\n amount1In: bigint;\n amount0Out: bigint;\n amount1Out: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n collectFeeManually: {\n params: Omit<SignExecuteContractMethodParams<{}>, \"args\">;\n result: SignExecuteScriptTxResult;\n };\n collectFeeAndUpdateKLast: {\n params: SignExecuteContractMethodParams<{ feeAmount: bigint }>;\n result: SignExecuteScriptTxResult;\n };\n }\n export type SignExecuteMethodParams<T extends keyof SignExecuteMethodTable> =\n SignExecuteMethodTable[T][\"params\"];\n export type SignExecuteMethodResult<T extends keyof SignExecuteMethodTable> =\n SignExecuteMethodTable[T][\"result\"];\n}\n\nclass Factory extends ContractFactory<\n TokenPairInstance,\n TokenPairTypes.Fields\n> {\n encodeFields(fields: TokenPairTypes.Fields) {\n return encodeContractFields(\n addStdIdToFields(this.contract, fields),\n this.contract.fieldsSig,\n []\n );\n }\n\n eventIndex = { Mint: 0, Burn: 1, Swap: 2 };\n consts = {\n MINIMUM_LIQUIDITY: BigInt(\"1000\"),\n ErrorCodes: {\n ReserveOverflow: BigInt(\"0\"),\n InsufficientInitLiquidity: BigInt(\"1\"),\n InsufficientLiquidityMinted: BigInt(\"2\"),\n InsufficientLiquidityBurned: BigInt(\"3\"),\n InvalidToAddress: BigInt(\"4\"),\n InsufficientLiquidity: BigInt(\"5\"),\n InvalidTokenInId: BigInt(\"6\"),\n InvalidCalleeId: BigInt(\"7\"),\n InvalidK: BigInt(\"8\"),\n InsufficientOutputAmount: BigInt(\"9\"),\n InsufficientInputAmount: BigInt(\"10\"),\n IdenticalTokenIds: BigInt(\"11\"),\n Expired: BigInt(\"12\"),\n InsufficientToken0Amount: BigInt(\"13\"),\n InsufficientToken1Amount: BigInt(\"14\"),\n TokenNotExist: BigInt(\"15\"),\n InvalidCaller: BigInt(\"16\"),\n FeeCollectorNotEnabled: BigInt(\"17\"),\n InvalidAccount: BigInt(\"18\"),\n },\n };\n\n at(address: string): TokenPairInstance {\n return new TokenPairInstance(address);\n }\n\n tests = {\n getSymbol: async (\n params: Omit<\n TestContractParamsWithoutMaps<TokenPairTypes.Fields, never>,\n \"args\"\n >\n ): Promise<TestContractResultWithoutMaps<HexString>> => {\n return testMethod(this, \"getSymbol\", params, getContractByCodeHash);\n },\n getName: async (\n params: Omit<\n TestContractParamsWithoutMaps<TokenPairTypes.Fields, never>,\n \"args\"\n >\n ): Promise<TestContractResultWithoutMaps<HexString>> => {\n return testMethod(this, \"getName\", params, getContractByCodeHash);\n },\n getDecimals: async (\n params: Omit<\n TestContractParamsWithoutMaps<TokenPairTypes.Fields, never>,\n \"args\"\n >\n ): Promise<TestContractResultWithoutMaps<bigint>> => {\n return testMethod(this, \"getDecimals\", params, getContractByCodeHash);\n },\n getTotalSupply: async (\n params: Omit<\n TestContractParamsWithoutMaps<TokenPairTypes.Fields, never>,\n \"args\"\n >\n ): Promise<TestContractResultWithoutMaps<bigint>> => {\n return testMethod(this, \"getTotalSupply\", params, getContractByCodeHash);\n },\n uqdiv: async (\n params: TestContractParamsWithoutMaps<\n TokenPairTypes.Fields,\n { a: bigint; b: bigint }\n >\n ): Promise<TestContractResultWithoutMaps<bigint>> => {\n return testMethod(this, \"uqdiv\", params, getContractByCodeHash);\n },\n sqrt: async (\n params: TestContractParamsWithoutMaps<\n TokenPairTypes.Fields,\n { y: bigint }\n >\n ): Promise<TestContractResultWithoutMaps<bigint>> => {\n return testMethod(this, \"sqrt\", params, getContractByCodeHash);\n },\n setFeeCollectorId: async (\n params: TestContractParamsWithoutMaps<\n TokenPairTypes.Fields,\n { id: HexString }\n >\n ): Promise<TestContractResultWithoutMaps<null>> => {\n return testMethod(\n this,\n \"setFeeCollectorId\",\n params,\n getContractByCodeHash\n );\n },\n getTokenPair: async (\n params: Omit<\n TestContractParamsWithoutMaps<TokenPairTypes.Fields, never>,\n \"args\"\n >\n ): Promise<TestContractResultWithoutMaps<[HexString, HexString]>> => {\n return testMethod(this, \"getTokenPair\", params, getContractByCodeHash);\n },\n getReserves: async (\n params: Omit<\n TestContractParamsWithoutMaps<TokenPairTypes.Fields, never>,\n \"args\"\n >\n ): Promise<TestContractResultWithoutMaps<[bigint, bigint]>> => {\n return testMethod(this, \"getReserves\", params, getContractByCodeHash);\n },\n getBlockTimeStampLast: async (\n params: Omit<\n TestContractParamsWithoutMaps<TokenPairTypes.Fields, never>,\n \"args\"\n >\n ): Promise<TestContractResultWithoutMaps<bigint>> => {\n return testMethod(\n this,\n \"getBlockTimeStampLast\",\n params,\n getContractByCodeHash\n );\n },\n getPrice0CumulativeLast: async (\n params: Omit<\n TestContractParamsWithoutMaps<TokenPairTypes.Fields, never>,\n \"args\"\n >\n ): Promise<TestContractResultWithoutMaps<bigint>> => {\n return testMethod(\n this,\n \"getPrice0CumulativeLast\",\n params,\n getContractByCodeHash\n );\n },\n getPrice1CumulativeLast: async (\n params: Omit<\n TestContractParamsWithoutMaps<TokenPairTypes.Fields, never>,\n \"args\"\n >\n ): Promise<TestContractResultWithoutMaps<bigint>> => {\n return testMethod(\n this,\n \"getPrice1CumulativeLast\",\n params,\n getContractByCodeHash\n );\n },\n update: async (\n params: TestContractParamsWithoutMaps<\n TokenPairTypes.Fields,\n { newReserve0: bigint; newReserve1: bigint }\n >\n ): Promise<TestContractResultWithoutMaps<null>> => {\n return testMethod(this, \"update\", params, getContractByCodeHash);\n },\n mintFee: async (\n params: TestContractParamsWithoutMaps<\n TokenPairTypes.Fields,\n { reserve0_: bigint; reserve1_: bigint }\n >\n ): Promise<TestContractResultWithoutMaps<[boolean, bigint]>> => {\n return testMethod(this, \"mintFee\", params, getContractByCodeHash);\n },\n mint: async (\n params: TestContractParamsWithoutMaps<\n TokenPairTypes.Fields,\n { sender: Address; amount0: bigint; amount1: bigint }\n >\n ): Promise<TestContractResultWithoutMaps<bigint>> => {\n return testMethod(this, \"mint\", params, getContractByCodeHash);\n },\n burn: async (\n params: TestContractParamsWithoutMaps<\n TokenPairTypes.Fields,\n { sender: Address; liquidity: bigint }\n >\n ): Promise<TestContractResultWithoutMaps<[bigint, bigint]>> => {\n return testMethod(this, \"burn\", params, getContractByCodeHash);\n },\n swap: async (\n params: TestContractParamsWithoutMaps<\n TokenPairTypes.Fields,\n {\n sender: Address;\n to: Address;\n amount0In: bigint;\n amount1In: bigint;\n amount0Out: bigint;\n amount1Out: bigint;\n }\n >\n ): Promise<TestContractResultWithoutMaps<null>> => {\n return testMethod(this, \"swap\", params, getContractByCodeHash);\n },\n collectFeeManually: async (\n params: Omit<\n TestContractParamsWithoutMaps<TokenPairTypes.Fields, never>,\n \"args\"\n >\n ): Promise<TestContractResultWithoutMaps<null>> => {\n return testMethod(\n this,\n \"collectFeeManually\",\n params,\n getContractByCodeHash\n );\n },\n collectFeeAndUpdateKLast: async (\n params: TestContractParamsWithoutMaps<\n TokenPairTypes.Fields,\n { feeAmount: bigint }\n >\n ): Promise<TestContractResultWithoutMaps<null>> => {\n return testMethod(\n this,\n \"collectFeeAndUpdateKLast\",\n params,\n getContractByCodeHash\n );\n },\n };\n\n stateForTest(\n initFields: TokenPairTypes.Fields,\n asset?: Asset,\n address?: string\n ) {\n return this.stateForTest_(initFields, asset, address, undefined);\n }\n}\n\n// Use this object to test and deploy the contract\nexport const TokenPair = new Factory(\n Contract.fromJson(\n TokenPairContractJson,\n \"\",\n \"3a4ac01ae47b1c84a567e7ef467fc4f7f8e5da32c6546192f0e2b2af3d79891f\",\n []\n )\n);\nregisterContract(TokenPair);\n\n// Use this class to interact with the blockchain\nexport class TokenPairInstance extends ContractInstance {\n constructor(address: Address) {\n super(address);\n }\n\n async fetchState(): Promise<TokenPairTypes.State> {\n return fetchContractState(TokenPair, this);\n }\n\n async getContractEventsCurrentCount(): Promise<number> {\n return getContractEventsCurrentCount(this.address);\n }\n\n subscribeMintEvent(\n options: EventSubscribeOptions<TokenPairTypes.MintEvent>,\n fromCount?: number\n ): EventSubscription {\n return subscribeContractEvent(\n TokenPair.contract,\n this,\n options,\n \"Mint\",\n fromCount\n );\n }\n\n subscribeBurnEvent(\n options: EventSubscribeOptions<TokenPairTypes.BurnEvent>,\n fromCount?: number\n ): EventSubscription {\n return subscribeContractEvent(\n TokenPair.contract,\n this,\n options,\n \"Burn\",\n fromCount\n );\n }\n\n subscribeSwapEvent(\n options: EventSubscribeOptions<TokenPairTypes.SwapEvent>,\n fromCount?: number\n ): EventSubscription {\n return subscribeContractEvent(\n TokenPair.contract,\n this,\n options,\n \"Swap\",\n fromCount\n );\n }\n\n subscribeAllEvents(\n options: EventSubscribeOptions<\n | TokenPairTypes.MintEvent\n | TokenPairTypes.BurnEvent\n | TokenPairTypes.SwapEvent\n >,\n fromCount?: number\n ): EventSubscription {\n return subscribeContractEvents(\n TokenPair.contract,\n this,\n options,\n fromCount\n );\n }\n\n view = {\n getSymbol: async (\n params?: TokenPairTypes.CallMethodParams<\"getSymbol\">\n ): Promise<TokenPairTypes.CallMethodResult<\"getSymbol\">> => {\n return callMethod(\n TokenPair,\n this,\n \"getSymbol\",\n params === undefined ? {} : params,\n getContractByCodeHash\n );\n },\n getName: async (\n params?: TokenPairTypes.CallMethodParams<\"getName\">\n ): Promise<TokenPairTypes.CallMethodResult<\"getName\">> => {\n return callMethod(\n TokenPair,\n this,\n \"getName\",\n params === undefined ? {} : params,\n getContractByCodeHash\n );\n },\n getDecimals: async (\n params?: TokenPairTypes.CallMethodParams<\"getDecimals\">\n ): Promise<TokenPairTypes.CallMethodResult<\"getDecimals\">> => {\n return callMethod(\n TokenPair,\n this,\n \"getDecimals\",\n params === undefined ? {} : params,\n getContractByCodeHash\n );\n },\n getTotalSupply: async (\n params?: TokenPairTypes.CallMethodParams<\"getTotalSupply\">\n ): Promise<TokenPairTypes.CallMethodResult<\"getTotalSupply\">> => {\n return callMethod(\n TokenPair,\n this,\n \"getTotalSupply\",\n params === undefined ? {} : params,\n getContractByCodeHash\n );\n },\n uqdiv: async (\n params: TokenPairTypes.CallMethodParams<\"uqdiv\">\n ): Promise<TokenPairTypes.CallMethodResult<\"uqdiv\">> => {\n return callMethod(\n TokenPair,\n this,\n \"uqdiv\",\n params,\n getContractByCodeHash\n );\n },\n sqrt: async (\n params: TokenPairTypes.CallMethodParams<\"sqrt\">\n ): Promise<TokenPairTypes.CallMethodResult<\"sqrt\">> => {\n return callMethod(TokenPair, this, \"sqrt\", params, getContractByCodeHash);\n },\n setFeeCollectorId: async (\n params: TokenPairTypes.CallMethodParams<\"setFeeCollectorId\">\n ): Promise<TokenPairTypes.CallMethodResult<\"setFeeCollectorId\">> => {\n return callMethod(\n TokenPair,\n this,\n \"setFeeCollectorId\",\n params,\n getContractByCodeHash\n );\n },\n getTokenPair: async (\n params?: TokenPairTypes.CallMethodParams<\"getTokenPair\">\n ): Promise<TokenPairTypes.CallMethodResult<\"getTokenPair\">> => {\n return callMethod(\n TokenPair,\n this,\n \"getTokenPair\",\n params === undefined ? {} : params,\n getContractByCodeHash\n );\n },\n getReserves: async (\n params?: TokenPairTypes.CallMethodParams<\"getReserves\">\n ): Promise<TokenPairTypes.CallMethodResult<\"getReserves\">> => {\n return callMethod(\n TokenPair,\n this,\n \"getReserves\",\n params === undefined ? {} : params,\n getContractByCodeHash\n );\n },\n getBlockTimeStampLast: async (\n params?: TokenPairTypes.CallMethodParams<\"getBlockTimeStampLast\">\n ): Promise<TokenPairTypes.CallMethodResult<\"getBlockTimeStampLast\">> => {\n return callMethod(\n TokenPair,\n this,\n \"getBlockTimeStampLast\",\n params === undefined ? {} : params,\n getContractByCodeHash\n );\n },\n getPrice0CumulativeLast: async (\n params?: TokenPairTypes.CallMethodParams<\"getPrice0CumulativeLast\">\n ): Promise<TokenPairTypes.CallMethodResult<\"getPrice0CumulativeLast\">> => {\n return callMethod(\n TokenPair,\n this,\n \"getPrice0CumulativeLast\",\n params === undefined ? {} : params,\n getContractByCodeHash\n );\n },\n getPrice1CumulativeLast: async (\n params?: TokenPairTypes.CallMethodParams<\"getPrice1CumulativeLast\">\n ): Promise<TokenPairTypes.CallMethodResult<\"getPrice1CumulativeLast\">> => {\n return callMethod(\n TokenPair,\n this,\n \"getPrice1CumulativeLast\",\n params === undefined ? {} : params,\n getContractByCodeHash\n );\n },\n update: async (\n params: TokenPairTypes.CallMethodParams<\"update\">\n ): Promise<TokenPairTypes.CallMethodResult<\"update\">> => {\n return callMethod(\n TokenPair,\n this,\n \"update\",\n params,\n getContractByCodeHash\n );\n },\n mintFee: async (\n params: TokenPairTypes.CallMethodParams<\"mintFee\">\n ): Promise<TokenPairTypes.CallMethodResult<\"mintFee\">> => {\n return callMethod(\n TokenPair,\n this,\n \"mintFee\",\n params,\n getContractByCodeHash\n );\n },\n mint: async (\n params: TokenPairTypes.CallMethodParams<\"mint\">\n ): Promise<TokenPairTypes.CallMethodResult<\"mint\">> => {\n return callMethod(TokenPair, this, \"mint\", params, getContractByCodeHash);\n },\n burn: async (\n params: TokenPairTypes.CallMethodParams<\"burn\">\n ): Promise<TokenPairTypes.CallMethodResult<\"burn\">> => {\n return callMethod(TokenPair, this, \"burn\", params, getContractByCodeHash);\n },\n swap: async (\n params: TokenPairTypes.CallMethodParams<\"swap\">\n ): Promise<TokenPairTypes.CallMethodResult<\"swap\">> => {\n return callMethod(TokenPair, this, \"swap\", params, getContractByCodeHash);\n },\n collectFeeManually: async (\n params?: TokenPairTypes.CallMethodParams<\"collectFeeManually\">\n ): Promise<TokenPairTypes.CallMethodResult<\"collectFeeManually\">> => {\n return callMethod(\n TokenPair,\n this,\n \"collectFeeManually\",\n params === undefined ? {} : params,\n getContractByCodeHash\n );\n },\n collectFeeAndUpdateKLast: async (\n params: TokenPairTypes.CallMethodParams<\"collectFeeAndUpdateKLast\">\n ): Promise<TokenPairTypes.CallMethodResult<\"collectFeeAndUpdateKLast\">> => {\n return callMethod(\n TokenPair,\n this,\n \"collectFeeAndUpdateKLast\",\n params,\n getContractByCodeHash\n );\n },\n };\n\n transact = {\n getSymbol: async (\n params: TokenPairTypes.SignExecuteMethodParams<\"getSymbol\">\n ): Promise<TokenPairTypes.SignExecuteMethodResult<\"getSymbol\">> => {\n return signExecuteMethod(TokenPair, this, \"getSymbol\", params);\n },\n getName: async (\n params: TokenPairTypes.SignExecuteMethodParams<\"getName\">\n ): Promise<TokenPairTypes.SignExecuteMethodResult<\"getName\">> => {\n return signExecuteMethod(TokenPair, this, \"getName\", params);\n },\n getDecimals: async (\n params: TokenPairTypes.SignExecuteMethodParams<\"getDecimals\">\n ): Promise<TokenPairTypes.SignExecuteMethodResult<\"getDecimals\">> => {\n return signExecuteMethod(TokenPair, this, \"getDecimals\", params);\n },\n getTotalSupply: async (\n params: TokenPairTypes.SignExecuteMethodParams<\"getTotalSupply\">\n ): Promise<TokenPairTypes.SignExecuteMethodResult<\"getTotalSupply\">> => {\n return signExecuteMethod(TokenPair, this, \"getTotalSupply\", params);\n },\n uqdiv: async (\n params: TokenPairTypes.SignExecuteMethodParams<\"uqdiv\">\n ): Promise<TokenPairTypes.SignExecuteMethodResult<\"uqdiv\">> => {\n return signExecuteMethod(TokenPair, this, \"uqdiv\", params);\n },\n sqrt: async (\n params: TokenPairTypes.SignExecuteMethodParams<\"sqrt\">\n ): Promise<TokenPairTypes.SignExecuteMethodResult<\"sqrt\">> => {\n return signExecuteMethod(TokenPair, this, \"sqrt\", params);\n },\n setFeeCollectorId: async (\n params: TokenPairTypes.SignExecuteMethodParams<\"setFeeCollectorId\">\n ): Promise<TokenPairTypes.SignExecuteMethodResult<\"setFeeCollectorId\">> => {\n return signExecuteMethod(TokenPair, this, \"setFeeCollectorId\", params);\n },\n getTokenPair: async (\n params: TokenPairTypes.SignExecuteMethodParams<\"getTokenPair\">\n ): Promise<TokenPairTypes.SignExecuteMethodResult<\"getTokenPair\">> => {\n return signExecuteMethod(TokenPair, this, \"getTokenPair\", params);\n },\n getReserves: async (\n params: TokenPairTypes.SignExecuteMethodParams<\"getReserves\">\n ): Promise<TokenPairTypes.SignExecuteMethodResult<\"getReserves\">> => {\n return signExecuteMethod(TokenPair, this, \"getReserves\", params);\n },\n getBlockTimeStampLast: async (\n params: TokenPairTypes.SignExecuteMethodParams<\"getBlockTimeStampLast\">\n ): Promise<\n TokenPairTypes.SignExecuteMethodResult<\"getBlockTimeStampLast\">\n > => {\n return signExecuteMethod(\n TokenPair,\n this,\n \"getBlockTimeStampLast\",\n params\n );\n },\n getPrice0CumulativeLast: async (\n params: TokenPairTypes.SignExecuteMethodParams<\"getPrice0CumulativeLast\">\n ): Promise<\n TokenPairTypes.SignExecuteMethodResult<\"getPrice0CumulativeLast\">\n > => {\n return signExecuteMethod(\n TokenPair,\n this,\n \"getPrice0CumulativeLast\",\n params\n );\n },\n getPrice1CumulativeLast: async (\n params: TokenPairTypes.SignExecuteMethodParams<\"getPrice1CumulativeLast\">\n ): Promise<\n TokenPairTypes.SignExecuteMethodResult<\"getPrice1CumulativeLast\">\n > => {\n return signExecuteMethod(\n TokenPair,\n this,\n \"getPrice1CumulativeLast\",\n params\n );\n },\n update: async (\n params: TokenPairTypes.SignExecuteMethodParams<\"update\">\n ): Promise<TokenPairTypes.SignExecuteMethodResult<\"update\">> => {\n return signExecuteMethod(TokenPair, this, \"update\", params);\n },\n mintFee: async (\n params: TokenPairTypes.SignExecuteMethodParams<\"mintFee\">\n ): Promise<TokenPairTypes.SignExecuteMethodResult<\"mintFee\">> => {\n return signExecuteMethod(TokenPair, this, \"mintFee\", params);\n },\n mint: async (\n params: TokenPairTypes.SignExecuteMethodParams<\"mint\">\n ): Promise<TokenPairTypes.SignExecuteMethodResult<\"mint\">> => {\n return signExecuteMethod(TokenPair, this, \"mint\", params);\n },\n burn: async (\n params: TokenPairTypes.SignExecuteMethodParams<\"burn\">\n ): Promise<TokenPairTypes.SignExecuteMethodResult<\"burn\">> => {\n return signExecuteMethod(TokenPair, this, \"burn\", params);\n },\n swap: async (\n params: TokenPairTypes.SignExecuteMethodParams<\"swap\">\n ): Promise<TokenPairTypes.SignExecuteMethodResult<\"swap\">> => {\n return signExecuteMethod(TokenPair, this, \"swap\", params);\n },\n collectFeeManually: async (\n params: TokenPairTypes.SignExecuteMethodParams<\"collectFeeManually\">\n ): Promise<\n TokenPairTypes.SignExecuteMethodResult<\"collectFeeManually\">\n > => {\n return signExecuteMethod(TokenPair, this, \"collectFeeManually\", params);\n },\n collectFeeAndUpdateKLast: async (\n params: TokenPairTypes.SignExecuteMethodParams<\"collectFeeAndUpdateKLast\">\n ): Promise<\n TokenPairTypes.SignExecuteMethodResult<\"collectFeeAndUpdateKLast\">\n > => {\n return signExecuteMethod(\n TokenPair,\n this,\n \"collectFeeAndUpdateKLast\",\n params\n );\n },\n };\n\n async multicall<Calls extends TokenPairTypes.MultiCallParams>(\n calls: Calls\n ): Promise<TokenPairTypes.MultiCallResults<Calls>>;\n async multicall<Callss extends TokenPairTypes.MultiCallParams[]>(\n callss: Narrow<Callss>\n ): Promise<TokenPairTypes.MulticallReturnType<Callss>>;\n async multicall<\n Callss extends\n | TokenPairTypes.MultiCallParams\n | TokenPairTypes.MultiCallParams[]\n >(callss: Callss): Promise<unknown> {\n return await multicallMethods(\n TokenPair,\n this,\n callss,\n getContractByCodeHash\n );\n }\n}\n","{\n \"version\": \"v4.2.5\",\n \"name\": \"TokenPair\",\n \"bytecode\": \"0d13114022402b4034404b4087409d40ad40bd40cb40d940e7415641b4426842e54420444a446b0100000001021408414c50482d444558020100000001021408414c50482d44455802010000000102131202010000000102a00502010002020109d38c844efd16000d1340703b2c16012d0201000103014020d36ae1998016000f334c191600170116000e2d0d2a170216021601314c0b16021701160016022d16022a0e2d17024a311601020d02010001010008d347fff8f4b3ce004113107b1600a107010000000204d373c3e78fce01ce0202010000000204d37de99ed1a000a00102010000000103d355097b37a00202010000000103d3d3cf0c5aa00302010000000103d37fe75f5ba00402000002050040410d1340703b170216001602317a4c041816011602310c7b561343e82d0d13203b2e17031603a0022b170416040c337a4c0418a0000c337a4c0418a0010c334c10a003a001a000000416042c35a103a004a000a001000416042c35a1041600a1001601a1011603a102000002080240320c1702a007140042170316034c4025a0060c304c4020160016012c00051704a0060005170516041605334c14a005160416052b2c17061604112c16052a1707160616072d1702a00516022aa1054a020ca106160316020201010309014064d393ef503ea000a001000d170417030c1705a0050c2f4c17160116022c0005170616061343e8330d7b16061343e82b1705a0051343e82aa105b2b11343e8bd4a141601a0052ca0002d17071602a0052ca0012d170816071608334c0216084a011607170516050c330e7b1600b11605ab1600ce011601ac1600ce021602aca00516052aa105a00016012aa00116022a000c16034c06b2b11604a316040012051600160116021605a0057316050201010206024046d349c452fda000a001000d170317021601a0002ca0052d17041601a0012ca0052d170516040c337a4c041816050c330f7b1600b11601ac1600ce011604ab1600ce021605aba00516012ba105a00016042ba00116052b000c16024c06b2b11603a316030012061600160416051601a005731604160502010106120040b5d32570119d16040c337a4b041816050c3313097b1604a000317a4c04181605a00131117ba00016022a16042b1706a00116032a16052b17070c1708160216082c1367102d1709160316082c1367102d170a16061343e82c16020f2c2b170b16071343e82c16030f2c2b170ca000a0012c13800f42402c170d160b160c2c160d3413087b160616092b170e1607160a2b170f160e160f2ca000a0012c3413087bce03160047cc17101610c513127bce01ce0244171116020c334c131600ce01160216092bac1600ce011609a31600ce01160916110d110c1610d4bd48152816030c334c131600ce021603160a2bac1600ce02160aa31600ce02160a16110d110c1610d4bd48152816040c334c041601ce011604ab16050c334c041601ce021605ab160e160f000c0716001602160316041605160174010200020014d3f2c71c4bb3a0074113107ba000a001000d17011700160013117bb2b11601a31601001200030101001216000c334c0ab2b11600a3b216000e0ca0070100a000a0012ca106\",\n \"codeHash\": \"3a4ac01ae47b1c84a567e7ef467fc4f7f8e5da32c6546192f0e2b2af3d79891f\",\n \"fieldsSig\": {\n \"names\": [\n \"tokenPairFactory\",\n \"token0Id\",\n \"token1Id\",\n \"dexAccount0\",\n \"reserve0\",\n \"reserve1\",\n \"blockTimeStampLast\",\n \"price0CumulativeLast\",\n \"price1CumulativeLast\",\n \"totalSupply\",\n \"kLast\",\n \"feeCollectorId\",\n \"__stdInterfaceId\"\n ],\n \"types\": [\n \"TokenPairFactory\",\n \"ByteVec\",\n \"ByteVec\",\n \"IDexAccount\",\n \"U256\",\n \"U256\",\n \"U256\",\n \"U256\",\n \"U256\",\n \"U256\",\n \"U256\",\n \"ByteVec\",\n \"ByteVec\"\n ],\n \"isMutable\": [\n false,\n false,\n false,\n false,\n true,\n true,\n true,\n true,\n true,\n true,\n true,\n true,\n false\n ]\n },\n \"eventsSig\": [\n {\n \"name\": \"Mint\",\n \"fieldNames\": [\n \"sender\",\n \"amount0\",\n \"amount1\",\n \"liquidity\",\n \"totalSupply\"\n ],\n \"fieldTypes\": [\n \"Address\",\n \"U256\",\n \"U256\",\n \"U256\",\n \"U256\"\n ]\n },\n {\n \"name\": \"Burn\",\n \"fieldNames\": [\n \"sender\",\n \"amount0\",\n \"amount1\",\n \"liquidity\",\n \"totalSupply\"\n ],\n \"fieldTypes\": [\n \"Address\",\n \"U256\",\n \"U256\",\n \"U256\",\n \"U256\"\n ]\n },\n {\n \"name\": \"Swap\",\n \"fieldNames\": [\n \"sender\",\n \"amount0In\",\n \"amount1In\",\n \"amount0Out\",\n \"amount1Out\",\n \"to\"\n ],\n \"fieldTypes\": [\n \"Address\",\n \"U256\",\n \"U256\",\n \"U256\",\n \"U256\",\n \"Address\"\n ]\n }\n ],\n \"functions\": [\n {\n \"name\": \"getSymbol\",\n \"paramNames\": [],\n \"paramTypes\": [],\n \"paramIsMutable\": [],\n \"returnTypes\": [\n \"ByteVec\"\n ]\n },\n {\n \"name\": \"getName\",\n \"paramNames\": [],\n \"paramTypes\": [],\n \"paramIsMutable\": [],\n \"returnTypes\": [\n \"ByteVec\"\n ]\n },\n {\n \"name\": \"getDecimals\",\n \"paramNames\": [],\n \"paramTypes\": [],\n \"paramIsMutable\": [],\n \"returnTypes\": [\n \"U256\"\n ]\n },\n {\n \"name\": \"getTotalSupply\",\n \"paramNames\": [],\n \"paramTypes\": [],\n \"paramIsMutable\": [],\n \"returnTypes\": [\n \"U256\"\n ]\n },\n {\n \"name\": \"uqdiv\",\n \"paramNames\": [\n \"a\",\n \"b\"\n ],\n \"paramTypes\": [\n \"U256\",\n \"U256\"\n ],\n \"paramIsMutable\": [\n false,\n false\n ],\n \"returnTypes\": [\n \"U256\"\n ]\n },\n {\n \"name\": \"sqrt\",\n \"paramNames\": [\n \"y\"\n ],\n \"paramTypes\": [\n \"U256\"\n ],\n \"paramIsMutable\": [\n false\n ],\n \"returnTypes\": [\n \"U256\"\n ]\n },\n {\n \"name\": \"setFeeCollectorId\",\n \"paramNames\": [\n \"id\"\n ],\n \"paramTypes\": [\n \"ByteVec\"\n ],\n \"paramIsMutable\": [\n false\n ],\n \"returnTypes\": []\n },\n {\n \"name\": \"getTokenPair\",\n \"paramNames\": [],\n \"paramTypes\": [],\n \"paramIsMutable\": [],\n \"returnTypes\": [\n \"ByteVec\",\n \"ByteVec\"\n ]\n },\n {\n \"name\": \"getReserves\",\n \"paramNames\": [],\n \"paramTypes\": [],\n \"paramIsMutable\": [],\n \"returnTypes\": [\n \"U256\",\n \"U256\"\n ]\n },\n {\n \"name\": \"getBlockTimeStampLast\",\n \"paramNames\": [],\n \"paramTypes\": [],\n \"paramIsMutable\": [],\n \"returnTypes\": [\n \"U256\"\n ]\n },\n {\n \"name\": \"getPrice0CumulativeLast\",\n \"paramNames\": [],\n \"paramTypes\": [],\n \"paramIsMutable\": [],\n \"returnTypes\": [\n \"U256\"\n ]\n },\n {\n \"name\": \"getPrice1CumulativeLast\",\n \"paramNames\": [],\n \"paramTypes\": [],\n \"paramIsMutable\": [],\n \"returnTypes\": [\n \"U256\"\n ]\n },\n {\n \"name\": \"update\",\n \"paramNames\": [\n \"newReserve0\",\n \"newReserve1\"\n ],\n \"paramTypes\": [\n \"U256\",\n \"U256\"\n ],\n \"paramIsMutable\": [\n false,\n false\n ],\n \"returnTypes\": []\n },\n {\n \"name\": \"mintFee\",\n \"paramNames\": [\n \"reserve0_\",\n \"reserve1_\"\n ],\n \"paramTypes\": [\n \"U256\",\n \"U256\"\n ],\n \"paramIsMutable\": [\n false,\n false\n ],\n \"returnTypes\": [\n \"Bool\",\n \"U256\"\n ]\n },\n {\n \"name\": \"mint\",\n \"paramNames\": [\n \"sender\",\n \"amount0\",\n \"amount1\"\n ],\n \"paramTypes\": [\n \"Address\",\n \"U256\",\n \"U256\"\n ],\n \"paramIsMutable\": [\n false,\n false,\n false\n ],\n \"returnTypes\": [\n \"U256\"\n ]\n },\n {\n \"name\": \"burn\",\n \"paramNames\": [\n \"sender\",\n \"liquidity\"\n ],\n \"paramTypes\": [\n \"Address\",\n \"U256\"\n ],\n \"paramIsMutable\": [\n false,\n false\n ],\n \"returnTypes\": [\n \"U256\",\n \"U256\"\n ]\n },\n {\n \"name\": \"swap\",\n \"paramNames\": [\n \"sender\",\n \"to\",\n \"amount0In\",\n \"amount1In\",\n \"amount0Out\",\n \"amount1Out\"\n ],\n \"paramTypes\": [\n \"Address\",\n \"Address\",\n \"U256\",\n \"U256\",\n \"U256\",\n \"U256\"\n ],\n \"paramIsMutable\": [\n false,\n false,\n false,\n false,\n false,\n false\n ],\n \"returnTypes\": []\n },\n {\n \"name\": \"collectFeeManually\",\n \"paramNames\": [],\n \"paramTypes\": [],\n \"paramIsMutable\": [],\n \"returnTypes\": []\n },\n {\n \"name\": \"collectFeeAndUpdateKLast\",\n \"paramNames\": [\n \"feeAmount\"\n ],\n \"paramTypes\": [\n \"U256\"\n ],\n \"paramIsMutable\": [\n false\n ],\n \"returnTypes\": []\n }\n ],\n \"constants\": [\n {\n \"name\": \"MINIMUM_LIQUIDITY\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"1000\"\n }\n }\n ],\n \"enums\": [\n {\n \"name\": \"ErrorCodes\",\n \"fields\": [\n {\n \"name\": \"ReserveOverflow\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"0\"\n }\n },\n {\n \"name\": \"InsufficientInitLiquidity\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"1\"\n }\n },\n {\n \"name\": \"InsufficientLiquidityMinted\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"2\"\n }\n },\n {\n \"name\": \"InsufficientLiquidityBurned\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"3\"\n }\n },\n {\n \"name\": \"InvalidToAddress\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"4\"\n }\n },\n {\n \"name\": \"InsufficientLiquidity\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"5\"\n }\n },\n {\n \"name\": \"InvalidTokenInId\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"6\"\n }\n },\n {\n \"name\": \"InvalidCalleeId\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"7\"\n }\n },\n {\n \"name\": \"InvalidK\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"8\"\n }\n },\n {\n \"name\": \"InsufficientOutputAmount\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"9\"\n }\n },\n {\n \"name\": \"InsufficientInputAmount\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"10\"\n }\n },\n {\n \"name\": \"IdenticalTokenIds\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"11\"\n }\n },\n {\n \"name\": \"Expired\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"12\"\n }\n },\n {\n \"name\": \"InsufficientToken0Amount\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"13\"\n }\n },\n {\n \"name\": \"InsufficientToken1Amount\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"14\"\n }\n },\n {\n \"name\": \"TokenNotExist\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"15\"\n }\n },\n {\n \"name\": \"InvalidCaller\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"16\"\n }\n },\n {\n \"name\": \"FeeCollectorNotEnabled\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"17\"\n }\n },\n {\n \"name\": \"InvalidAccount\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"18\"\n }\n }\n ]\n }\n ],\n \"stdInterfaceId\": \"0001\"\n}","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport {\n Address,\n Contract,\n ContractState,\n TestContractResult,\n HexString,\n ContractFactory,\n EventSubscribeOptions,\n EventSubscription,\n CallContractParams,\n CallContractResult,\n TestContractParams,\n ContractEvent,\n subscribeContractEvent,\n subscribeContractEvents,\n testMethod,\n callMethod,\n multicallMethods,\n fetchContractState,\n Asset,\n ContractInstance,\n getContractEventsCurrentCount,\n TestContractParamsWithoutMaps,\n TestContractResultWithoutMaps,\n SignExecuteContractMethodParams,\n SignExecuteScriptTxResult,\n signExecuteMethod,\n addStdIdToFields,\n encodeContractFields,\n Narrow,\n} from \"@alephium/web3\";\nimport { default as TokenPairFactoryContractJson } from \"../dex/TokenPairFactory.ral.json\";\nimport { getContractByCodeHash, registerContract } from \"./contracts\";\n\n// Custom types for the contract\nexport namespace TokenPairFactoryTypes {\n export type Fields = {\n pairTemplateId: HexString;\n dexAccount0: HexString;\n pairSize: bigint;\n feeSetter: Address;\n feeCollectorFactory: HexString;\n };\n\n export type State = ContractState<Fields>;\n\n export type PairCreatedEvent = ContractEvent<{\n token0: HexString;\n token1: HexString;\n pair: HexString;\n currentPairSize: bigint;\n }>;\n\n export interface CallMethodTable {\n setFeeCollectorFactory: {\n params: CallContractParams<{ factory: HexString }>;\n result: CallContractResult<null>;\n };\n updateFeeSetter: {\n params: CallContractParams<{ newFeeSetter: Address }>;\n result: CallContractResult<null>;\n };\n getFeeSetter: {\n params: Omit<CallContractParams<{}>, \"args\">;\n result: CallContractResult<Address>;\n };\n enableFeeCollector: {\n params: CallContractParams<{ tokenPair: HexString; alphAmount: bigint }>;\n result: CallContractResult<null>;\n };\n updateFeeCollector: {\n params: CallContractParams<{\n tokenPair: HexString;\n newFeeCollectorId: HexString;\n }>;\n result: CallContractResult<null>;\n };\n sortTokens: {\n params: CallContractParams<{ tokenA: HexString; tokenB: HexString }>;\n result: CallContractResult<[HexString, HexString]>;\n };\n createPair: {\n params: CallContractParams<{\n payer: Address;\n alphAmount: bigint;\n tokenAId: HexString;\n tokenBId: HexString;\n }>;\n result: CallContractResult<null>;\n };\n }\n export type CallMethodParams<T extends keyof CallMethodTable> =\n CallMethodTable[T][\"params\"];\n export type CallMethodResult<T extends keyof CallMethodTable> =\n CallMethodTable[T][\"result\"];\n export type MultiCallParams = Partial<{\n [Name in keyof CallMethodTable]: CallMethodTable[Name][\"params\"];\n }>;\n export type MultiCallResults<T extends MultiCallParams> = {\n [MaybeName in keyof T]: MaybeName extends keyof CallMethodTable\n ? CallMethodTable[MaybeName][\"result\"]\n : undefined;\n };\n export type MulticallReturnType<Callss extends MultiCallParams[]> = {\n [index in keyof Callss]: MultiCallResults<Callss[index]>;\n };\n\n export interface SignExecuteMethodTable {\n setFeeCollectorFactory: {\n params: SignExecuteContractMethodParams<{ factory: HexString }>;\n result: SignExecuteScriptTxResult;\n };\n updateFeeSetter: {\n params: SignExecuteContractMethodParams<{ newFeeSetter: Address }>;\n result: SignExecuteScriptTxResult;\n };\n getFeeSetter: {\n params: Omit<SignExecuteContractMethodParams<{}>, \"args\">;\n result: SignExecuteScriptTxResult;\n };\n enableFeeCollector: {\n params: SignExecuteContractMethodParams<{\n tokenPair: HexString;\n alphAmount: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n updateFeeCollector: {\n params: SignExecuteContractMethodParams<{\n tokenPair: HexString;\n newFeeCollectorId: HexString;\n }>;\n result: SignExecuteScriptTxResult;\n };\n sortTokens: {\n params: SignExecuteContractMethodParams<{\n tokenA: HexString;\n tokenB: HexString;\n }>;\n result: SignExecuteScriptTxResult;\n };\n createPair: {\n params: SignExecuteContractMethodParams<{\n payer: Address;\n alphAmount: bigint;\n tokenAId: HexString;\n tokenBId: HexString;\n }>;\n result: SignExecuteScriptTxResult;\n };\n }\n export type SignExecuteMethodParams<T extends keyof SignExecuteMethodTable> =\n SignExecuteMethodTable[T][\"params\"];\n export type SignExecuteMethodResult<T extends keyof SignExecuteMethodTable> =\n SignExecuteMethodTable[T][\"result\"];\n}\n\nclass Factory extends ContractFactory<\n TokenPairFactoryInstance,\n TokenPairFactoryTypes.Fields\n> {\n encodeFields(fields: TokenPairFactoryTypes.Fields) {\n return encodeContractFields(\n addStdIdToFields(this.contract, fields),\n this.contract.fieldsSig,\n []\n );\n }\n\n eventIndex = { PairCreated: 0 };\n consts = {\n ErrorCodes: {\n ReserveOverflow: BigInt(\"0\"),\n InsufficientInitLiquidity: BigInt(\"1\"),\n InsufficientLiquidityMinted: BigInt(\"2\"),\n InsufficientLiquidityBurned: BigInt(\"3\"),\n InvalidToAddress: BigInt(\"4\"),\n InsufficientLiquidity: BigInt(\"5\"),\n InvalidTokenInId: BigInt(\"6\"),\n InvalidCalleeId: BigInt(\"7\"),\n InvalidK: BigInt(\"8\"),\n InsufficientOutputAmount: BigInt(\"9\"),\n InsufficientInputAmount: BigInt(\"10\"),\n IdenticalTokenIds: BigInt(\"11\"),\n Expired: BigInt(\"12\"),\n InsufficientToken0Amount: BigInt(\"13\"),\n InsufficientToken1Amount: BigInt(\"14\"),\n TokenNotExist: BigInt(\"15\"),\n InvalidCaller: BigInt(\"16\"),\n FeeCollectorNotEnabled: BigInt(\"17\"),\n InvalidAccount: BigInt(\"18\"),\n },\n };\n\n at(address: string): TokenPairFactoryInstance {\n return new TokenPairFactoryInstance(address);\n }\n\n tests = {\n setFeeCollectorFactory: async (\n params: TestContractParamsWithoutMaps<\n TokenPairFactoryTypes.Fields,\n { factory: HexString }\n >\n ): Promise<TestContractResultWithoutMaps<null>> => {\n return testMethod(\n this,\n \"setFeeCollectorFactory\",\n params,\n getContractByCodeHash\n );\n },\n updateFeeSetter: async (\n params: TestContractParamsWithoutMaps<\n TokenPairFactoryTypes.Fields,\n { newFeeSetter: Address }\n >\n ): Promise<TestContractResultWithoutMaps<null>> => {\n return testMethod(this, \"updateFeeSetter\", params, getContractByCodeHash);\n },\n getFeeSetter: async (\n params: Omit<\n TestContractParamsWithoutMaps<TokenPairFactoryTypes.Fields, never>,\n \"args\"\n >\n ): Promise<TestContractResultWithoutMaps<Address>> => {\n return testMethod(this, \"getFeeSetter\", params, getContractByCodeHash);\n },\n enableFeeCollector: async (\n params: TestContractParamsWithoutMaps<\n TokenPairFactoryTypes.Fields,\n { tokenPair: HexString; alphAmount: bigint }\n >\n ): Promise<TestContractResultWithoutMaps<null>> => {\n return testMethod(\n this,\n \"enableFeeCollector\",\n params,\n getContractByCodeHash\n );\n },\n updateFeeCollector: async (\n params: TestContractParamsWithoutMaps<\n TokenPairFactoryTypes.Fields,\n { tokenPair: HexString; newFeeCollectorId: HexString }\n >\n ): Promise<TestContractResultWithoutMaps<null>> => {\n return testMethod(\n this,\n \"updateFeeCollector\",\n params,\n getContractByCodeHash\n );\n },\n sortTokens: async (\n params: TestContractParamsWithoutMaps<\n TokenPairFactoryTypes.Fields,\n { tokenA: HexString; tokenB: HexString }\n >\n ): Promise<TestContractResultWithoutMaps<[HexString, HexString]>> => {\n return testMethod(this, \"sortTokens\", params, getContractByCodeHash);\n },\n createPair: async (\n params: TestContractParamsWithoutMaps<\n TokenPairFactoryTypes.Fields,\n {\n payer: Address;\n alphAmount: bigint;\n tokenAId: HexString;\n tokenBId: HexString;\n }\n >\n ): Promise<TestContractResultWithoutMaps<null>> => {\n return testMethod(this, \"createPair\", params, getContractByCodeHash);\n },\n };\n\n stateForTest(\n initFields: TokenPairFactoryTypes.Fields,\n asset?: Asset,\n address?: string\n ) {\n return this.stateForTest_(initFields, asset, address, undefined);\n }\n}\n\n// Use this object to test and deploy the contract\nexport const TokenPairFactory = new Factory(\n Contract.fromJson(\n TokenPairFactoryContractJson,\n \"\",\n \"597644c0643972e3d6e7f5a681e2d9908de74775e9b4e205e15ba39397a9e48c\",\n []\n )\n);\nregisterContract(TokenPairFactory);\n\n// Use this class to interact with the blockchain\nexport class TokenPairFactoryInstance extends ContractInstance {\n constructor(address: Address) {\n super(address);\n }\n\n async fetchState(): Promise<TokenPairFactoryTypes.State> {\n return fetchContractState(TokenPairFactory, this);\n }\n\n async getContractEventsCurrentCount(): Promise<number> {\n return getContractEventsCurrentCount(this.address);\n }\n\n subscribePairCreatedEvent(\n options: EventSubscribeOptions<TokenPairFactoryTypes.PairCreatedEvent>,\n fromCount?: number\n ): EventSubscription {\n return subscribeContractEvent(\n TokenPairFactory.contract,\n this,\n options,\n \"PairCreated\",\n fromCount\n );\n }\n\n view = {\n setFeeCollectorFactory: async (\n params: TokenPairFactoryTypes.CallMethodParams<\"setFeeCollectorFactory\">\n ): Promise<\n TokenPairFactoryTypes.CallMethodResult<\"setFeeCollectorFactory\">\n > => {\n return callMethod(\n TokenPairFactory,\n this,\n \"setFeeCollectorFactory\",\n params,\n getContractByCodeHash\n );\n },\n updateFeeSetter: async (\n params: TokenPairFactoryTypes.CallMethodParams<\"updateFeeSetter\">\n ): Promise<TokenPairFactoryTypes.CallMethodResult<\"updateFeeSetter\">> => {\n return callMethod(\n TokenPairFactory,\n this,\n \"updateFeeSetter\",\n params,\n getContractByCodeHash\n );\n },\n getFeeSetter: async (\n params?: TokenPairFactoryTypes.CallMethodParams<\"getFeeSetter\">\n ): Promise<TokenPairFactoryTypes.CallMethodResult<\"getFeeSetter\">> => {\n return callMethod(\n TokenPairFactory,\n this,\n \"getFeeSetter\",\n params === undefined ? {} : params,\n getContractByCodeHash\n );\n },\n enableFeeCollector: async (\n params: TokenPairFactoryTypes.CallMethodParams<\"enableFeeCollector\">\n ): Promise<\n TokenPairFactoryTypes.CallMethodResult<\"enableFeeCollector\">\n > => {\n return callMethod(\n TokenPairFactory,\n this,\n \"enableFeeCollector\",\n params,\n getContractByCodeHash\n );\n },\n updateFeeCollector: async (\n params: TokenPairFactoryTypes.CallMethodParams<\"updateFeeCollector\">\n ): Promise<\n TokenPairFactoryTypes.CallMethodResult<\"updateFeeCollector\">\n > => {\n return callMethod(\n TokenPairFactory,\n this,\n \"updateFeeCollector\",\n params,\n getContractByCodeHash\n );\n },\n sortTokens: async (\n params: TokenPairFactoryTypes.CallMethodParams<\"sortTokens\">\n ): Promise<TokenPairFactoryTypes.CallMethodResult<\"sortTokens\">> => {\n return callMethod(\n TokenPairFactory,\n this,\n \"sortTokens\",\n params,\n getContractByCodeHash\n );\n },\n createPair: async (\n params: TokenPairFactoryTypes.CallMethodParams<\"createPair\">\n ): Promise<TokenPairFactoryTypes.CallMethodResult<\"createPair\">> => {\n return callMethod(\n TokenPairFactory,\n this,\n \"createPair\",\n params,\n getContractByCodeHash\n );\n },\n };\n\n transact = {\n setFeeCollectorFactory: async (\n params: TokenPairFactoryTypes.SignExecuteMethodParams<\"setFeeCollectorFactory\">\n ): Promise<\n TokenPairFactoryTypes.SignExecuteMethodResult<\"setFeeCollectorFactory\">\n > => {\n return signExecuteMethod(\n TokenPairFactory,\n this,\n \"setFeeCollectorFactory\",\n params\n );\n },\n updateFeeSetter: async (\n params: TokenPairFactoryTypes.SignExecuteMethodParams<\"updateFeeSetter\">\n ): Promise<\n TokenPairFactoryTypes.SignExecuteMethodResult<\"updateFeeSetter\">\n > => {\n return signExecuteMethod(\n TokenPairFactory,\n this,\n \"updateFeeSetter\",\n params\n );\n },\n getFeeSetter: async (\n params: TokenPairFactoryTypes.SignExecuteMethodParams<\"getFeeSetter\">\n ): Promise<\n TokenPairFactoryTypes.SignExecuteMethodResult<\"getFeeSetter\">\n > => {\n return signExecuteMethod(TokenPairFactory, this, \"getFeeSetter\", params);\n },\n enableFeeCollector: async (\n params: TokenPairFactoryTypes.SignExecuteMethodParams<\"enableFeeCollector\">\n ): Promise<\n TokenPairFactoryTypes.SignExecuteMethodResult<\"enableFeeCollector\">\n > => {\n return signExecuteMethod(\n TokenPairFactory,\n this,\n \"enableFeeCollector\",\n params\n );\n },\n updateFeeCollector: async (\n params: TokenPairFactoryTypes.SignExecuteMethodParams<\"updateFeeCollector\">\n ): Promise<\n TokenPairFactoryTypes.SignExecuteMethodResult<\"updateFeeCollector\">\n > => {\n return signExecuteMethod(\n TokenPairFactory,\n this,\n \"updateFeeCollector\",\n params\n );\n },\n sortTokens: async (\n params: TokenPairFactoryTypes.SignExecuteMethodParams<\"sortTokens\">\n ): Promise<TokenPairFactoryTypes.SignExecuteMethodResult<\"sortTokens\">> => {\n return signExecuteMethod(TokenPairFactory, this, \"sortTokens\", params);\n },\n createPair: async (\n params: TokenPairFactoryTypes.SignExecuteMethodParams<\"createPair\">\n ): Promise<TokenPairFactoryTypes.SignExecuteMethodResult<\"createPair\">> => {\n return signExecuteMethod(TokenPairFactory, this, \"createPair\", params);\n },\n };\n\n async multicall<Calls extends TokenPairFactoryTypes.MultiCallParams>(\n calls: Calls\n ): Promise<TokenPairFactoryTypes.MultiCallResults<Calls>>;\n async multicall<Callss extends TokenPairFactoryTypes.MultiCallParams[]>(\n callss: Narrow<Callss>\n ): Promise<TokenPairFactoryTypes.MulticallReturnType<Callss>>;\n async multicall<\n Callss extends\n | TokenPairFactoryTypes.MultiCallParams\n | TokenPairFactoryTypes.MultiCallParams[]\n >(callss: Callss): Promise<unknown> {\n return await multicallMethods(\n TokenPairFactory,\n this,\n callss,\n getContractByCodeHash\n );\n }\n}\n","{\n \"version\": \"v4.2.5\",\n \"name\": \"TokenPairFactory\",\n \"bytecode\": \"050716402c403a406b408540a64123010001010008d302f1c0ffb4a0014513107b1600a102010001010008d34db5e042b4a0014513107b1600a101010000000103d34086275fa00102010302040018d3a2ac8580b417021602a0014513107b16021601a21602160116000f0da0020100170316030d0c1600010601000202000bd3c9a43b3cb4a0014513107b16010d0c160001060000020402101600711702160171170316021603314c031600160102160116000201030409004045d3fd02709216001602a50c337a4c061816001603a50c33130f7b1602160342130b7b16021603000517051704b116041605ce011406414c504800011305640c0c0c0c0c0c0c14001308641707170616001601a21604160544ce00160616070d1340ff3bc2170805160416051608a00061a0000d2aa100\",\n \"codeHash\": \"597644c0643972e3d6e7f5a681e2d9908de74775e9b4e205e15ba39397a9e48c\",\n \"fieldsSig\": {\n \"names\": [\n \"pairTemplateId\",\n \"dexAccount0\",\n \"pairSize\",\n \"feeSetter\",\n \"feeCollectorFactory\"\n ],\n \"types\": [\n \"ByteVec\",\n \"IDexAccount\",\n \"U256\",\n \"Address\",\n \"FeeCollectorFactory\"\n ],\n \"isMutable\": [\n false,\n false,\n true,\n true,\n true\n ]\n },\n \"eventsSig\": [\n {\n \"name\": \"PairCreated\",\n \"fieldNames\": [\n \"token0\",\n \"token1\",\n \"pair\",\n \"currentPairSize\"\n ],\n \"fieldTypes\": [\n \"ByteVec\",\n \"ByteVec\",\n \"ByteVec\",\n \"U256\"\n ]\n }\n ],\n \"functions\": [\n {\n \"name\": \"setFeeCollectorFactory\",\n \"paramNames\": [\n \"factory\"\n ],\n \"paramTypes\": [\n \"FeeCollectorFactory\"\n ],\n \"paramIsMutable\": [\n false\n ],\n \"returnTypes\": []\n },\n {\n \"name\": \"updateFeeSetter\",\n \"paramNames\": [\n \"newFeeSetter\"\n ],\n \"paramTypes\": [\n \"Address\"\n ],\n \"paramIsMutable\": [\n false\n ],\n \"returnTypes\": []\n },\n {\n \"name\": \"getFeeSetter\",\n \"paramNames\": [],\n \"paramTypes\": [],\n \"paramIsMutable\": [],\n \"returnTypes\": [\n \"Address\"\n ]\n },\n {\n \"name\": \"enableFeeCollector\",\n \"paramNames\": [\n \"tokenPair\",\n \"alphAmount\"\n ],\n \"paramTypes\": [\n \"TokenPair\",\n \"U256\"\n ],\n \"paramIsMutable\": [\n false,\n false\n ],\n \"returnTypes\": []\n },\n {\n \"name\": \"updateFeeCollector\",\n \"paramNames\": [\n \"tokenPair\",\n \"newFeeCollectorId\"\n ],\n \"paramTypes\": [\n \"TokenPair\",\n \"ByteVec\"\n ],\n \"paramIsMutable\": [\n false,\n false\n ],\n \"returnTypes\": []\n },\n {\n \"name\": \"sortTokens\",\n \"paramNames\": [\n \"tokenA\",\n \"tokenB\"\n ],\n \"paramTypes\": [\n \"ByteVec\",\n \"ByteVec\"\n ],\n \"paramIsMutable\": [\n false,\n false\n ],\n \"returnTypes\": [\n \"ByteVec\",\n \"ByteVec\"\n ]\n },\n {\n \"name\": \"createPair\",\n \"paramNames\": [\n \"payer\",\n \"alphAmount\",\n \"tokenAId\",\n \"tokenBId\"\n ],\n \"paramTypes\": [\n \"Address\",\n \"U256\",\n \"ByteVec\",\n \"ByteVec\"\n ],\n \"paramIsMutable\": [\n false,\n false,\n false,\n false\n ],\n \"returnTypes\": []\n }\n ],\n \"constants\": [],\n \"enums\": [\n {\n \"name\": \"ErrorCodes\",\n \"fields\": [\n {\n \"name\": \"ReserveOverflow\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"0\"\n }\n },\n {\n \"name\": \"InsufficientInitLiquidity\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"1\"\n }\n },\n {\n \"name\": \"InsufficientLiquidityMinted\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"2\"\n }\n },\n {\n \"name\": \"InsufficientLiquidityBurned\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"3\"\n }\n },\n {\n \"name\": \"InvalidToAddress\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"4\"\n }\n },\n {\n \"name\": \"InsufficientLiquidity\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"5\"\n }\n },\n {\n \"name\": \"InvalidTokenInId\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"6\"\n }\n },\n {\n \"name\": \"InvalidCalleeId\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"7\"\n }\n },\n {\n \"name\": \"InvalidK\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"8\"\n }\n },\n {\n \"name\": \"InsufficientOutputAmount\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"9\"\n }\n },\n {\n \"name\": \"InsufficientInputAmount\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"10\"\n }\n },\n {\n \"name\": \"IdenticalTokenIds\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"11\"\n }\n },\n {\n \"name\": \"Expired\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"12\"\n }\n },\n {\n \"name\": \"InsufficientToken0Amount\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"13\"\n }\n },\n {\n \"name\": \"InsufficientToken1Amount\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"14\"\n }\n },\n {\n \"name\": \"TokenNotExist\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"15\"\n }\n },\n {\n \"name\": \"InvalidCaller\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"16\"\n }\n },\n {\n \"name\": \"FeeCollectorNotEnabled\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"17\"\n }\n },\n {\n \"name\": \"InvalidAccount\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"18\"\n }\n }\n ]\n }\n ]\n}","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport {\n Address,\n ExecutableScript,\n ExecuteScriptParams,\n ExecuteScriptResult,\n Script,\n SignerProvider,\n HexString,\n} from \"@alephium/web3\";\nimport { getContractByCodeHash } from \"./contracts\";\nimport { default as AddLiquidityScriptJson } from \"../scripts/AddLiquidity.ral.json\";\nimport { default as BurnScriptJson } from \"../scripts/Burn.ral.json\";\nimport { default as CollectFeeScriptJson } from \"../scripts/CollectFee.ral.json\";\nimport { default as CreatePairScriptJson } from \"../scripts/CreatePair.ral.json\";\nimport { default as CreatePairAndAddLiquidityScriptJson } from \"../scripts/CreatePairAndAddLiquidity.ral.json\";\nimport { default as EnableFeeCollectorScriptJson } from \"../scripts/EnableFeeCollector.ral.json\";\nimport { default as GetTokenScriptJson } from \"../test/GetToken.ral.json\";\nimport { default as MintScriptJson } from \"../scripts/Mint.ral.json\";\nimport { default as RemoveLiquidityScriptJson } from \"../scripts/RemoveLiquidity.ral.json\";\nimport { default as SetFeeCollectorFactoryScriptJson } from \"../scripts/SetFeeCollectorFactory.ral.json\";\nimport { default as SwapScriptJson } from \"../scripts/Swap.ral.json\";\nimport { default as SwapMaxInScriptJson } from \"../scripts/SwapMaxIn.ral.json\";\nimport { default as SwapMinOutScriptJson } from \"../scripts/SwapMinOut.ral.json\";\n\nexport const AddLiquidity = new ExecutableScript<{\n sender: Address;\n router: HexString;\n pair: HexString;\n amount0Desired: bigint;\n amount1Desired: bigint;\n amount0Min: bigint;\n amount1Min: bigint;\n deadline: bigint;\n}>(Script.fromJson(AddLiquidityScriptJson, \"\", []), getContractByCodeHash);\n\nexport const Burn = new ExecutableScript<{\n tokenPair: HexString;\n sender: Address;\n liquidity: bigint;\n}>(Script.fromJson(BurnScriptJson, \"\", []), getContractByCodeHash);\n\nexport const CollectFee = new ExecutableScript<{ feeCollector: HexString }>(\n Script.fromJson(CollectFeeScriptJson, \"\", []),\n getContractByCodeHash\n);\n\nexport const CreatePair = new ExecutableScript<{\n payer: Address;\n factory: HexString;\n alphAmount: bigint;\n tokenAId: HexString;\n tokenBId: HexString;\n}>(Script.fromJson(CreatePairScriptJson, \"\", []), getContractByCodeHash);\n\nexport const CreatePairAndAddLiquidity = new ExecutableScript<{\n payer: Address;\n factory: HexString;\n alphAmount: bigint;\n token0Id: HexString;\n token1Id: HexString;\n amount0: bigint;\n amount1: bigint;\n}>(\n Script.fromJson(CreatePairAndAddLiquidityScriptJson, \"\", []),\n getContractByCodeHash\n);\n\nexport const EnableFeeCollector = new ExecutableScript<{\n tokenPairFactory: HexString;\n tokenPair: HexString;\n}>(\n Script.fromJson(EnableFeeCollectorScriptJson, \"\", []),\n getContractByCodeHash\n);\n\nexport const GetToken = new ExecutableScript<{\n token: HexString;\n sender: Address;\n amount: bigint;\n}>(Script.fromJson(GetTokenScriptJson, \"\", []), getContractByCodeHash);\n\nexport const Mint = new ExecutableScript<{\n tokenPair: HexString;\n sender: Address;\n amount0: bigint;\n amount1: bigint;\n}>(Script.fromJson(MintScriptJson, \"\", []), getContractByCodeHash);\n\nexport const RemoveLiquidity = new ExecutableScript<{\n sender: Address;\n router: HexString;\n pairId: HexString;\n liquidity: bigint;\n amount0Min: bigint;\n amount1Min: bigint;\n deadline: bigint;\n}>(Script.fromJson(RemoveLiquidityScriptJson, \"\", []), getContractByCodeHash);\n\nexport const SetFeeCollectorFactory = new ExecutableScript<{\n tokenPairFactory: HexString;\n feeCollectorFactory: HexString;\n}>(\n Script.fromJson(SetFeeCollectorFactoryScriptJson, \"\", []),\n getContractByCodeHash\n);\n\nexport const Swap = new ExecutableScript<{\n dexAccount: HexString;\n tokenPair: HexString;\n sender: Address;\n to: Address;\n amount0In: bigint;\n amount1In: bigint;\n amount0Out: bigint;\n amount1Out: bigint;\n}>(Script.fromJson(SwapScriptJson, \"\", []), getContractByCodeHash);\n\nexport const SwapMaxIn = new ExecutableScript<{\n dexAccount: HexString;\n sender: Address;\n router: HexString;\n pair: HexString;\n tokenInId: HexString;\n amountInMax: bigint;\n amountOut: bigint;\n deadline: bigint;\n}>(Script.fromJson(SwapMaxInScriptJson, \"\", []), getContractByCodeHash);\n\nexport const SwapMinOut = new ExecutableScript<{\n dexAccount: HexString;\n sender: Address;\n router: HexString;\n pair: HexString;\n tokenInId: HexString;\n amountIn: bigint;\n amountOutMin: bigint;\n deadline: bigint;\n}>(Script.fromJson(SwapMinOutScriptJson, \"\", []), getContractByCodeHash);\n","{\n \"version\": \"v4.0.0\",\n \"name\": \"AddLiquidity\",\n \"bytecodeTemplate\": \"0101030002001c0c0e{2}010717011700{0}7a1600{3}a31601{4}a3{2}{0}{3}{4}{5}{6}{7}13070f{1}0101181818\",\n \"fieldsSig\": {\n \"names\": [\n \"sender\",\n \"router\",\n \"pair\",\n \"amount0Desired\",\n \"amount1Desired\",\n \"amount0Min\",\n \"amount1Min\",\n \"deadline\"\n ],\n \"types\": [\n \"Address\",\n \"Router\",\n \"TokenPair\",\n \"U256\",\n \"U256\",\n \"U256\",\n \"U256\",\n \"U256\"\n ],\n \"isMutable\": [\n false,\n false,\n false,\n false,\n false,\n false,\n false,\n false\n ]\n },\n \"functions\": [\n {\n \"name\": \"main\",\n \"paramNames\": [],\n \"paramTypes\": [],\n \"paramIsMutable\": [],\n \"returnTypes\": []\n }\n ]\n}","{\n \"version\": \"v4.0.0\",\n \"name\": \"Burn\",\n \"bytecodeTemplate\": \"0101030000000c{1}{0}{2}a3{1}{2}0e0e{0}010f1818\",\n \"fieldsSig\": {\n \"names\": [\n \"tokenPair\",\n \"sender\",\n \"liquidity\"\n ],\n \"types\": [\n \"TokenPair\",\n \"Address\",\n \"U256\"\n ],\n \"isMutable\": [\n false,\n false,\n false\n ]\n },\n \"functions\": [\n {\n \"name\": \"main\",\n \"paramNames\": [],\n \"paramTypes\": [],\n \"paramIsMutable\": [],\n \"returnTypes\": []\n }\n ]\n}","{\n \"version\": \"v4.0.0\",\n \"name\": \"CollectFee\",\n \"bytecodeTemplate\": \"010100000000040c0c{0}0103\",\n \"fieldsSig\": {\n \"names\": [\n \"feeCollector\"\n ],\n \"types\": [\n \"FeeCollectorPerTokenPairImpl\"\n ],\n \"isMutable\": [\n false\n ]\n },\n \"functions\": [\n {\n \"name\": \"main\",\n \"paramNames\": [],\n \"paramTypes\": [],\n \"paramIsMutable\": [],\n \"returnTypes\": []\n }\n ]\n}","{\n \"version\": \"v4.0.0\",\n \"name\": \"CreatePair\",\n \"bytecodeTemplate\": \"01010300000013{0}7a7a{2}a2{3}0da3{4}0da3{0}{2}{3}{4}100c{1}0106\",\n \"fieldsSig\": {\n \"names\": [\n \"payer\",\n \"factory\",\n \"alphAmount\",\n \"tokenAId\",\n \"tokenBId\"\n ],\n \"types\": [\n \"Address\",\n \"TokenPairFactory\",\n \"U256\",\n \"ByteVec\",\n \"ByteVec\"\n ],\n \"isMutable\": [\n false,\n false,\n false,\n false,\n false\n ]\n },\n \"functions\": [\n {\n \"name\": \"main\",\n \"paramNames\": [],\n \"paramTypes\": [],\n \"paramIsMutable\": [],\n \"returnTypes\": []\n }\n ]\n}","{\n \"version\": \"v4.2.5\",\n \"name\": \"CreatePairAndAddLiquidity\",\n \"bytecodeTemplate\": \"0101030001004029{0}7a7a{2}a2{3}0da3{4}0da3{0}{2}{3}{4}100c{1}0106{1}{3}{4}44cc1700{0}7a{3}{5}a3{4}{6}a3{0}{5}{6}0f0d1600010e18\",\n \"fieldsSig\": {\n \"names\": [\n \"payer\",\n \"factory\",\n \"alphAmount\",\n \"token0Id\",\n \"token1Id\",\n \"amount0\",\n \"amount1\"\n ],\n \"types\": [\n \"Address\",\n \"TokenPairFactory\",\n \"U256\",\n \"ByteVec\",\n \"ByteVec\",\n \"U256\",\n \"U256\"\n ],\n \"isMutable\": [\n false,\n false,\n false,\n false,\n false,\n false,\n false\n ]\n },\n \"functions\": [\n {\n \"name\": \"main\",\n \"paramNames\": [],\n \"paramTypes\": [],\n \"paramIsMutable\": [],\n \"returnTypes\": []\n }\n ]\n}","{\n \"version\": \"v4.0.0\",\n \"name\": \"EnableFeeCollector\",\n \"bytecodeTemplate\": \"01010300000009b413c40de0b6b3a7640000a2{1}13c40de0b6b3a76400000e0c{0}0103\",\n \"fieldsSig\": {\n \"names\": [\n \"tokenPairFactory\",\n \"tokenPair\"\n ],\n \"types\": [\n \"TokenPairFactory\",\n \"TokenPair\"\n ],\n \"isMutable\": [\n false,\n false\n ]\n },\n \"functions\": [\n {\n \"name\": \"main\",\n \"paramNames\": [],\n \"paramTypes\": [],\n \"paramIsMutable\": [],\n \"returnTypes\": []\n }\n ]\n}","{\n \"version\": \"v4.0.0\",\n \"name\": \"GetToken\",\n \"bytecodeTemplate\": \"01010300000006{1}{2}0e0c{0}0104\",\n \"fieldsSig\": {\n \"names\": [\n \"token\",\n \"sender\",\n \"amount\"\n ],\n \"types\": [\n \"TestToken\",\n \"Address\",\n \"U256\"\n ],\n \"isMutable\": [\n false,\n false,\n false\n ]\n },\n \"functions\": [\n {\n \"name\": \"main\",\n \"paramNames\": [],\n \"paramTypes\": [],\n \"paramIsMutable\": [],\n \"returnTypes\": []\n }\n ]\n}","{\n \"version\": \"v4.0.0\",\n \"name\": \"Mint\",\n \"bytecodeTemplate\": \"010103000200160c0e{0}010717011700{1}7a1600{2}a31601{3}a3{1}{2}{3}0f0d{0}010e18\",\n \"fieldsSig\": {\n \"names\": [\n \"tokenPair\",\n \"sender\",\n \"amount0\",\n \"amount1\"\n ],\n \"types\": [\n \"TokenPair\",\n \"Address\",\n \"U256\",\n \"U256\"\n ],\n \"isMutable\": [\n false,\n false,\n false,\n false\n ]\n },\n \"functions\": [\n {\n \"name\": \"main\",\n \"paramNames\": [],\n \"paramTypes\": [],\n \"paramIsMutable\": [],\n \"returnTypes\": []\n }\n ]\n}","{\n \"version\": \"v4.0.0\",\n \"name\": \"RemoveLiquidity\",\n \"bytecodeTemplate\": \"01010300000010{0}{2}{3}a3{2}{0}{3}{4}{5}{6}13060e{1}01021818\",\n \"fieldsSig\": {\n \"names\": [\n \"sender\",\n \"router\",\n \"pairId\",\n \"liquidity\",\n \"amount0Min\",\n \"amount1Min\",\n \"deadline\"\n ],\n \"types\": [\n \"Address\",\n \"Router\",\n \"ByteVec\",\n \"U256\",\n \"U256\",\n \"U256\",\n \"U256\"\n ],\n \"isMutable\": [\n false,\n false,\n false,\n false,\n false,\n false,\n false\n ]\n },\n \"functions\": [\n {\n \"name\": \"main\",\n \"paramNames\": [],\n \"paramTypes\": [],\n \"paramIsMutable\": [],\n \"returnTypes\": []\n }\n ]\n}","{\n \"version\": \"v4.0.0\",\n \"name\": \"SetFeeCollectorFactory\",\n \"bytecodeTemplate\": \"01010300000005{1}0d0c{0}0100\",\n \"fieldsSig\": {\n \"names\": [\n \"tokenPairFactory\",\n \"feeCollectorFactory\"\n ],\n \"types\": [\n \"TokenPairFactory\",\n \"FeeCollectorFactory\"\n ],\n \"isMutable\": [\n false,\n false\n ]\n },\n \"functions\": [\n {\n \"name\": \"main\",\n \"paramNames\": [],\n \"paramTypes\": [],\n \"paramIsMutable\": [],\n \"returnTypes\": []\n }\n ]\n}","{\n \"version\": \"v4.2.5\",\n \"name\": \"Swap\",\n \"bytecodeTemplate\": \"0101030004004056b41700{0}160047cc17011601c5194c0516000d0c{0}d465b302f90c0e{1}010717031702{2}{3}464c04{2}{3}13c3038d7ea4c68000a7{4}0c2f4c0f{2}1603{5}a3{2}{3}{4}{5}{6}{7}13060c{1}01104a4025{5}0c2f4c0f{2}1602{4}a3{2}{3}{4}{5}{6}{7}13060c{1}01104a12{2}7a1602{4}a31603{5}a3{2}{3}{4}{5}{6}{7}13060c{1}0110\",\n \"fieldsSig\": {\n \"names\": [\n \"dexAccount\",\n \"tokenPair\",\n \"sender\",\n \"to\",\n \"amount0In\",\n \"amount1In\",\n \"amount0Out\",\n \"amount1Out\"\n ],\n \"types\": [\n \"IDexAccount\",\n \"TokenPair\",\n \"Address\",\n \"Address\",\n \"U256\",\n \"U256\",\n \"U256\",\n \"U256\"\n ],\n \"isMutable\": [\n false,\n false,\n false,\n false,\n false,\n false,\n false,\n false\n ]\n },\n \"functions\": [\n {\n \"name\": \"main\",\n \"paramNames\": [],\n \"paramTypes\": [],\n \"paramIsMutable\": [],\n \"returnTypes\": []\n }\n ]\n}","{\n \"version\": \"v4.2.5\",\n \"name\": \"SwapMaxIn\",\n \"bytecodeTemplate\": \"0101030002001fb41700{0}160047cc17011601c5194c0516000d0c{0}d465b302f9{1}{4}{5}a3{3}{1}{4}{5}{6}{1}{7}13070c{2}0105\",\n \"fieldsSig\": {\n \"names\": [\n \"dexAccount\",\n \"sender\",\n \"router\",\n \"pair\",\n \"tokenInId\",\n \"amountInMax\",\n \"amountOut\",\n \"deadline\"\n ],\n \"types\": [\n \"IDexAccount\",\n \"Address\",\n \"Router\",\n \"TokenPair\",\n \"ByteVec\",\n \"U256\",\n \"U256\",\n \"U256\"\n ],\n \"isMutable\": [\n false,\n false,\n false,\n false,\n false,\n false,\n false,\n false\n ]\n },\n \"functions\": [\n {\n \"name\": \"main\",\n \"paramNames\": [],\n \"paramTypes\": [],\n \"paramIsMutable\": [],\n \"returnTypes\": []\n }\n ]\n}","{\n \"version\": \"v4.2.5\",\n \"name\": \"SwapMinOut\",\n \"bytecodeTemplate\": \"0101030002001fb41700{0}160047cc17011601c5194c0516000d0c{0}d465b302f9{1}{4}{5}a3{3}{1}{4}{5}{6}{1}{7}13070c{2}0104\",\n \"fieldsSig\": {\n \"names\": [\n \"dexAccount\",\n \"sender\",\n \"router\",\n \"pair\",\n \"tokenInId\",\n \"amountIn\",\n \"amountOutMin\",\n \"deadline\"\n ],\n \"types\": [\n \"IDexAccount\",\n \"Address\",\n \"Router\",\n \"TokenPair\",\n \"ByteVec\",\n \"U256\",\n \"U256\",\n \"U256\"\n ],\n \"isMutable\": [\n false,\n false,\n false,\n false,\n false,\n false,\n false,\n false\n ]\n },\n \"functions\": [\n {\n \"name\": \"main\",\n \"paramNames\": [],\n \"paramTypes\": [],\n \"paramIsMutable\": [],\n \"returnTypes\": []\n }\n ]\n}","[\n {\n \"deployerAddress\": \"1GkZ5MphFzHTBpsDBGjYpe6m7KXQMmJ68VQH3vpPznVF1\",\n \"contracts\": {\n \"TokenPair\": {\n \"txId\": \"d462b5c73abcf438e336db24c145ad759801e607ee8da49eab611adcffe19cbe\",\n \"unsignedTx\": \"000101010103000000081500ea078bd2664dae71f816ba8da4e2b400c6dd7e46fe6d9f90bc570662b039b0b413c4016345785d8a0000a214448e0d13114022402b4034404b4087409d40ad40bd40cb40d940e7415641b4426842e5441c444644670100000001021408414c50482d444558020100000001021408414c50482d44455802010000000102131202010000000102a00502010002020109d38c844efd16000d1340703b2c16012d0201000103014020d36ae1998016000f334c191600170116000e2d0d2a170216021601314c0b16021701160016022d16022a0e2d17024a311601020d02010001010008d347fff8f4b3ce004113107b1600a107010000000204d373c3e78fce01ce0202010000000204d37de99ed1a000a00102010000000103d355097b37a00202010000000103d3d3cf0c5aa00302010000000103d37fe75f5ba00402000002050040410d1340703b170216001602317a4c041816011602310c7b561343e82d0d13203b2e17031603a0022b170416040c337a4c0418a0000c337a4c0418a0010c334c10a003a001a000000416042c35a103a004a000a001000416042c35a1041600a1001601a1011603a102000002080240320c1702a007140042170316034c4025a0060c304c4020160016012c00051704a0060005170516041605334c14a005160416052b2c17061604112c16052a1707160616072d1702a00516022aa1054a020ca106160316020201010309014064d393ef503ea000a001000d170417030c1705a0050c2f4c17160116022c0005170616061343e8330d7b16061343e82b1705a0051343e82aa105b2b11343e8bd4a141601a0052ca0002d17071602a0052ca0012d170816071608334c0216084a011607170516050c330e7b1600b11605ab1600ce011601ac1600ce021602aca00516052aa105a00016012aa00116022a000c16034c06b2b11604a316040012051600160116021605a0057316050201010206024046d349c452fda000a001000d170317021601a0002ca0052d17041601a0012ca0052d170516040c337a4c041816050c330f7b1600b11601ac1600ce011604ab1600ce021605aba00516012ba105a00016042ba00116052b000c16024c06b2b11603a316030012061600160416051601a005731604160502010106110040b3d32570119d16040c337a4b041816050c3313097b1604a000317a4c04181605a00131117ba00016022a16042b1706a00116032a16052b170716020f2c1367102d170816030f2c1367102d170916061343e82c16020f2c2b170a16071343e82c16030f2c2b170ba000a0012c13800f42402c170c160a160b2c160c3413087b160616082b170d160716092b170e160d160e2ca000a0012c3413087bce03160147cc170f160fc51341f47bce01ce0244171016020c334c131600ce01160216082bac1600ce011608a31600ce01160816100d110c160fd4bd48152816030c334c131600ce02160316092bac1600ce021609a31600ce02160916100d110c160fd4bd48152816040c334c041601ce011604ab16050c334c041601ce021605ab160d160e000c0716001602160316041605160174010200020014d3f2c71c4bb3a0074113107ba000a001000d17011700160013117bb2b11601a31601001200030101001216000c334c0ab2b11600a3b216000e0ca0070100a000a0012ca10614403205030003000300034020015d9f57975c026d5949f753dbac5b20917fcabf7294f4e9cbcb9562c05297000306414c5048000114110802000200020002000200020002000300ad188000e911c1174876e800026c62bf3d24858653eacf0117caf54d55702fcc13e3051d3aab819093ef07cc01d80a65360002a5cc1442f0535a9b88d0539447bc443c4b2e260cf54e25583b5563340f48421a6c62bf3d9a67e0ea7e7e4337ba770936465a5484286307efd3eb44a249c44d2fbc39c4240301c41aff2d992fa6080000ea078bd2664dae71f816ba8da4e2b400c6dd7e46fe6d9f90bc570662b039b0b400000000000000000000\",\n \"signature\": \"192b043c8bb86a243a51fdf0128e5e6162443d40c3be615ae07f3449cb2afe6f07eab46a0341699777f45349be783e8222ba7eae7a904f3287a2a879bb8301ea\",\n \"gasPrice\": \"100000000000\",\n \"gasAmount\": 59665,\n \"blockHash\": \"0000007a3ee220c20504ba87b53c2ad555b1c802f8e7cee2567e2bdca85e3330\",\n \"codeHash\": \"20cf0074582e5360461a52fbfd2599e8bc699c76a70e65d1c92fdcc552a0eeb7\",\n \"contractInstance\": {\n \"address\": \"yF1DH1rt4sGB53t4rrZ2Ecvf2eopyPTg6cNvJKw8efaw\",\n \"contractId\": \"43a4d6a9880e837a6421897e8f95cd32459996e7218cf059a9e6cf5e63ceec00\",\n \"groupIndex\": 0\n }\n },\n \"TokenPairFactory\": {\n \"txId\": \"d0d23b06ac4f304cd5758b9e44688e2b7fb48697c5d78c8458f64e983b712487\",\n \"unsignedTx\": \"000101010103000000081500ea078bd2664dae71f816ba8da4e2b400c6dd7e46fe6d9f90bc570662b039b0b413c4016345785d8a0000a2144132050716402c403a406b408540a64123010001010008d302f1c0ffb4a0014513107b1600a102010001010008d34db5e042b4a0014513107b1600a101010000000103d34086275fa00102010302040018d3a2ac8580b417021602a0014513107b16021601a21602160116000f0da0020100170316030d0c1600010601000202000bd3c9a43b3cb4a0014513107b16010d0c160001060000020402101600711702160171170316021603314c031600160102160116000201030409004045d3fd02709216001602a50c337a4c061816001603a50c33130f7b1602160342130b7b16021603000517051704b116041605ce011406414c504800011305640c0c0c0c0c0c0c14001308641707170616001601a21604160544ce00160616070d1340ff3bc2170805160416051608a00061a0000d2aa1001440470203402043a4d6a9880e837a6421897e8f95cd32459996e7218cf059a9e6cf5e63ceec00034020015d9f57975c026d5949f753dbac5b20917fcabf7294f4e9cbcb9562c052970014402703020004008568e1012f9fb2bb69aac7ec92d62a9f0c0bcef3bb9a4d0fdb707ac5087752660300ad188000e1ffc1174876e800016c62bf3d3f1a7689e2163480f1830c8fd4f14256165f9fe4f38ca900f2a01f77df2cb1430002a5cc1442f0535a9b88d0539447bc443c4b2e260cf54e25583b5563340f48421a01c419875a3f21c2f00000ea078bd2664dae71f816ba8da4e2b400c6dd7e46fe6d9f90bc570662b039b0b400000000000000000000\",\n \"signature\": \"444d343e69228005ff7e4476ecfcebe1e479dbe4666f4cc9193aefd97621ce8e3fc9e4d4602143245d89d68a872e5ee517102540b9985a89c277062dda3c4d18\",\n \"gasPrice\": \"100000000000\",\n \"gasAmount\": 57855,\n \"blockHash\": \"000000ba8d63f5149b42f75d547e29c261b74e443bb48ca04a2788a11cdbe2d0\",\n \"codeHash\": \"b296b265ec8a4d877b4313ba563d55b528125dbe56b381f4bcdf395ddaa503ae\",\n \"contractInstance\": {\n \"address\": \"237TuFxrrCaiyiBfjaf7tDm9J15vTnDmQYLfrtyxL1kgF\",\n \"contractId\": \"7d251e1404c259c499e2578f4b8f79898ffbc30b5dccccef20c57caeaebd5200\",\n \"groupIndex\": 0\n }\n },\n \"Router\": {\n \"txId\": \"cb8a8e3cf177fded84efded9cdaac80dbc219564a5fe7efa5ec6a1ba06af4783\",\n \"unsignedTx\": \"000101010103000000081500ea078bd2664dae71f816ba8da4e2b400c6dd7e46fe6d9f90bc570662b039b0b413c4016345785d8a0000a21442160007405840b340ef4119416c41bd42060000060802403316000c2f7a4c041816010c2f4c031602160302160216012c16002d170616061603324c081606160534130e7b1602160602160316002c16012d170716071604347a4c04181607160232130d7b16071603020103070e03402fd3c2b1ca2116065634130c7b0c0e16000107170817070c0e16000108170a17091609160a16021603160416050000170c170b16017a1607160ba31608160ca31601160b160c0f0d1600010e170d160b160c160d0201030608021fd3b9fb57ea16055634130c7b160116001602a3160116020e0e1600010f170717061606160334130d7b1607160434130e7b16061607020000020502160c0e16000108170317020c0e1600010718170416011604414c03160216030216031602020103070b004029d364342a1916065634130c7b160016020003170817071343e516032c1709160916082c16091343e816072c2a2d170a160a16043413097b160116021603a316001601160516021603160a00060103070a004029d31937d61916065634130c7b16001602000317081707160716042c1343e82c160816042b1343e52c2d0d2a17091609160332130a7b160116021609a31600160116051602160916040006000306070040270c0e1600010718170616031606414c0f160116031604a31601160216040c0c160513060c160001104a0e160116031604a3160116020c160416050c13060c16000110140100140100ad188000e2d9c1174876e800016c62bf3ddb1da9529b4cdf421d58ea9dd6e843fa8fb7f42ab35a26107a5b40c0104f5c3c0002a5cc1442f0535a9b88d0539447bc443c4b2e260cf54e25583b5563340f48421a01c4180f73115e9e480000ea078bd2664dae71f816ba8da4e2b400c6dd7e46fe6d9f90bc570662b039b0b400000000000000000000\",\n \"signature\": \"ce2b014a31009bf53a89f1bcbdee756488b09bd59ac79b9b276f015ac04f9a2449d83ab13d8d70398f962ffd8183f883db7839e95b3f16cb3339912f7264d321\",\n \"gasPrice\": \"100000000000\",\n \"gasAmount\": 58073,\n \"blockHash\": \"00000080852ea4a17be5bacffb86458c29a25a66d6c3f16833f5b8d29b69e240\",\n \"codeHash\": \"720b48663ba906f7fc6b97b0bea633e6dc213200bdb6b02edeb0fd6f418cf91c\",\n \"contractInstance\": {\n \"address\": \"zuG2u5pnpwe2VLdvArMb3fydmN2BQ1jAMWcn63P4uThy\",\n \"contractId\": \"5c4d5abbdd3fe1a6e1041062268d1a43128a1d58069cc796e489585654a57200\",\n \"groupIndex\": 0\n }\n },\n \"FeeCollectorPerTokenPairImpl\": {\n \"txId\": \"eed96070483afd4fbfc498535624d1dad4d8b843947aa4949695e37d8f100ed3\",\n \"unsignedTx\": \"000101010103000000081500ea078bd2664dae71f816ba8da4e2b400c6dd7e46fe6d9f90bc570662b039b0b413c4016345785d8a0000a21440700204154032404b406701010202000ab3ce014113107b1600b2ce011601aa01020202000dd3f1ab4760b40c0dce0001024513107b1600ce011601ab01020101000bd320f98f62b40c0dce0001024513107b1600b001000000000dd3f2c71c4bb40c0dce0001024513107b0c0cce01011114050203000300140100ad188000df91c1174876e800016c62bf3df833086da8ce51e03166acc576f14bc03238c58bdf0a2e56245fc5fd2bc24cdd0002a5cc1442f0535a9b88d0539447bc443c4b2e260cf54e25583b5563340f48421a01c41697d84961a2e00000ea078bd2664dae71f816ba8da4e2b400c6dd7e46fe6d9f90bc570662b039b0b400000000000000000000\",\n \"signature\": \"76b6cade00fa46b91b4c74670f9a4d62115cb9b20970bb32eb1276d148117d4b4ebe6c67e33fa8997d6593d491a3d47f7571ea93883c47a8678fe14c8bf4d29d\",\n \"gasPrice\": \"100000000000\",\n \"gasAmount\": 57233,\n \"blockHash\": \"000000a79fbd0fa1cb06ae7e6d706294ec5c4c4ce692d07631c7c1c5ea1d3860\",\n \"codeHash\": \"1820b6e23f0ff6c305c58cbbfdb0bfb4f54b9deba1f9d671cc503f49bae39b33\",\n \"contractInstance\": {\n \"address\": \"28hJYMQjLeWxVpdKqb4PcJbKe9NTZzNrgsQa2JZZzq3Ew\",\n \"contractId\": \"d01ab73aa6269bb9a5ec5a43f017dea558d06056f6429b17ae74c3a4f2311300\",\n \"groupIndex\": 0\n }\n },\n \"FeeCollectorFactoryImpl\": {\n \"txId\": \"6429a9c7a48b94217f1520068edd98665182df653d9ae80d52d90053d8dc0850\",\n \"unsignedTx\": \"000101010103000000081500ea078bd2664dae71f816ba8da4e2b400c6dd7e46fe6d9f90bc570662b039b0b413c4016345785d8a0000a214402e0201402a010303050116b3ce014113107bce0116021302641300641704170316001601a21602ce0016031604c10214404702034020d01ab73aa6269bb9a5ec5a43f017dea558d06056f6429b17ae74c3a4f23113000340207d251e1404c259c499e2578f4b8f79898ffbc30b5dccccef20c57caeaebd5200140100ad188000df90c1174876e800016c62bf3d23a96b27d8c1eb480af3207c6873feba492289baf7e717f1d99c92bf278daff30002a5cc1442f0535a9b88d0539447bc443c4b2e260cf54e25583b5563340f48421a01c415203d98ad1e600000ea078bd2664dae71f816ba8da4e2b400c6dd7e46fe6d9f90bc570662b039b0b400000000000000000000\",\n \"signature\": \"2c555c0e73369b086b384e4bbd4108e4ac29fc8d48954bc9e092423180b81f5d7159f0e33c58ba28dcfb6ab3545ec562ce4891ec0939b9228da215f3266bf8e3\",\n \"gasPrice\": \"100000000000\",\n \"gasAmount\": 57232,\n \"blockHash\": \"0000005d00aa79d3e13ac57e949039a8bbbb65db3bbda1f0e7da9f26ac452560\",\n \"codeHash\": \"447887dc44d12777efe786335ba9b1d9772d68a56e04820d657ead19a48d7716\",\n \"contractInstance\": {\n \"address\": \"26pTijM7u1gQHyCkg5k4oEqSpGGHuLTTZG8hAvyqHVJ8f\",\n \"contractId\": \"b438c944b2e3fe73c7cc986cd52b03a9d8c758fee645adf1155197608a569400\",\n \"groupIndex\": 0\n }\n }\n },\n \"scripts\": {},\n \"migrations\": {}\n }\n]","{\n \"deployerAddress\": \"1DrDyTr9RpRsQnDnXo2YRiPzPW4ooHX5LLoqXrqfMrpQH\",\n \"contracts\": {\n \"TokenPair\": {\n \"txId\": \"2f2113d047d049ca144481fbea8187dc303160967eb6ea7b672768e4729cc580\",\n \"unsignedTx\": \"000401010103000000081500bee85f379545a2ed9f6cceb331288842f378cf0f04012ad4ac8824aae7d6f80a13c4016345785d8a0000a214448e0d13114022402b4034404b4087409d40ad40bd40cb40d940e7415641b4426842e5441c444644670100000001021408414c50482d444558020100000001021408414c50482d44455802010000000102131202010000000102a00502010002020109d38c844efd16000d1340703b2c16012d0201000103014020d36ae1998016000f334c191600170116000e2d0d2a170216021601314c0b16021701160016022d16022a0e2d17024a311601020d02010001010008d347fff8f4b3ce004113107b1600a107010000000204d373c3e78fce01ce0202010000000204d37de99ed1a000a00102010000000103d355097b37a00202010000000103d3d3cf0c5aa00302010000000103d37fe75f5ba00402000002050040410d1340703b170216001602317a4c041816011602310c7b561343e82d0d13203b2e17031603a0022b170416040c337a4c0418a0000c337a4c0418a0010c334c10a003a001a000000416042c35a103a004a000a001000416042c35a1041600a1001601a1011603a102000002080240320c1702a007140042170316034c4025a0060c304c4020160016012c00051704a0060005170516041605334c14a005160416052b2c17061604112c16052a1707160616072d1702a00516022aa1054a020ca106160316020201010309014064d393ef503ea000a001000d170417030c1705a0050c2f4c17160116022c0005170616061343e8330d7b16061343e82b1705a0051343e82aa105b2b11343e8bd4a141601a0052ca0002d17071602a0052ca0012d170816071608334c0216084a011607170516050c330e7b1600b11605ab1600ce011601ac1600ce021602aca00516052aa105a00016012aa00116022a000c16034c06b2b11604a316040012051600160116021605a0057316050201010206024046d349c452fda000a001000d170317021601a0002ca0052d17041601a0012ca0052d170516040c337a4c041816050c330f7b1600b11601ac1600ce011604ab1600ce021605aba00516012ba105a00016042ba00116052b000c16024c06b2b11603a316030012061600160416051601a005731604160502010106110040b3d32570119d16040c337a4b041816050c3313097b1604a000317a4c04181605a00131117ba00016022a16042b1706a00116032a16052b170716020f2c1367102d170816030f2c1367102d170916061343e82c16020f2c2b170a16071343e82c16030f2c2b170ba000a0012c13800f42402c170c160a160b2c160c3413087b160616082b170d160716092b170e160d160e2ca000a0012c3413087bce03160147cc170f160fc51341f47bce01ce0244171016020c334c131600ce01160216082bac1600ce011608a31600ce01160816100d110c160fd4bd48152816030c334c131600ce02160316092bac1600ce021609a31600ce02160916100d110c160fd4bd48152816040c334c041601ce011604ab16050c334c041601ce021605ab160d160e000c0716001602160316041605160174010200020014d3f2c71c4bb3a0074113107ba000a001000d17011700160013117bb2b11601a31601001200030101001216000c334c0ab2b11600a3b216000e0ca0070100a000a0012ca106144032050300030003000340203a2bc6ad435bc7485602a8af12bc95afc766ea18f6195d267bd7abfc38af9a000306414c5048000114110802000200020002000200020002000300ad188000e911c1174876e8000137a4444753990d55b04bb5d8be7ab472e5250947f0c0364c6f6f93d6faf44005f0d7bba4000381818e63bd9e35a5489b52a430accefc608fd60aa2c7c0d1b393b5239aedf6b001c6d23f9fff45387e0ff5d100bee85f379545a2ed9f6cceb331288842f378cf0f04012ad4ac8824aae7d6f80a00000000000000000000\",\n \"signature\": \"ccaf52f5cde9640194b105a30aebadb3016510886fa81c002b2e9284b34ef2c76eea574cccfd0ea93f3db6ce6e17d2bec850502bf2bd87d445cceae74e4ebede\",\n \"gasPrice\": \"100000000000\",\n \"gasAmount\": 59665,\n \"blockHash\": \"0140beb5f40db79def3008f4eedf258247ce26419e88a8680ad449bf58fc43a0\",\n \"codeHash\": \"4511a4a64d0aee7fc90e6ba034026001296d700c0061cf82b1b34f169b354fbb\",\n \"contractInstance\": {\n \"address\": \"2A1a8KVBFKfiJYb1isUzbaecikgDBt8gcfTVoBqvE84CF\",\n \"contractId\": \"e3a47adecdd6ae49e3aef8406d6d2268d4901ee15d04054ff252c07011aa6800\",\n \"groupIndex\": 0\n }\n },\n \"TokenPairFactory\": {\n \"txId\": \"83413632657147d47f567f90df7f5cce6e4204d4eb6a6a31e2c184f95a30b26d\",\n \"unsignedTx\": \"000401010103000000081500bee85f379545a2ed9f6cceb331288842f378cf0f04012ad4ac8824aae7d6f80a13c4016345785d8a0000a2144132050716402c403a406b408540a64123010001010008d302f1c0ffb4a0014513107b1600a102010001010008d34db5e042b4a0014513107b1600a101010000000103d34086275fa00102010302040018d3a2ac8580b417021602a0014513107b16021601a21602160116000f0da0020100170316030d0c1600010601000202000bd3c9a43b3cb4a0014513107b16010d0c160001060000020402101600711702160171170316021603314c031600160102160116000201030409004045d3fd02709216001602a50c337a4c061816001603a50c33130f7b1602160342130b7b16021603000517051704b116041605ce011406414c504800011305640c0c0c0c0c0c0c14001308641707170616001601a21604160544ce00160616070d1340ff3bc2170805160416051608a00061a0000d2aa10014404702034020e3a47adecdd6ae49e3aef8406d6d2268d4901ee15d04054ff252c07011aa68000340203a2bc6ad435bc7485602a8af12bc95afc766ea18f6195d267bd7abfc38af9a001440270302000400bee85f379545a2ed9f6cceb331288842f378cf0f04012ad4ac8824aae7d6f80a0300ad188000e1ffc1174876e8000137a444473a936218b4f5ec4c5d65f82ba1259d43535b5b3457f065175458d084bc6059d3000381818e63bd9e35a5489b52a430accefc608fd60aa2c7c0d1b393b5239aedf6b001c6d23f9e8771de702cddd100bee85f379545a2ed9f6cceb331288842f378cf0f04012ad4ac8824aae7d6f80a00000000000000000000\",\n \"signature\": \"cdd1253862ac882bd76799f8787b52327a0069ad4bd2a66d827dedaebe28ed51771140401762fab58fabad057bfbfa2c73be910939c40ebc0b51a6279aff32c6\",\n \"gasPrice\": \"100000000000\",\n \"gasAmount\": 57855,\n \"blockHash\": \"013c9c5e1b9a734d474f39d8e1ad0259dd56f84bc1eb22ed740b8bb9809274a0\",\n \"codeHash\": \"511a3877f5db08042f7079f65d76135f95edc85fd70f2fce161ed05950db1245\",\n \"contractInstance\": {\n \"address\": \"22x2ytsMC9Dc7hX1yoWsFKBMfmNCigSrQga3SNWEHmh8B\",\n \"contractId\": \"7abab68781ed3cc4fd2e2ca59f8da296958fef5a31e1db88525374dace1aa300\",\n \"groupIndex\": 0\n }\n },\n \"Router\": {\n \"txId\": \"47266b9f5252fc095f6314dada5f3d2608f9675454c4000010a41dbeb5973c3d\",\n \"unsignedTx\": \"000401010103000000081500bee85f379545a2ed9f6cceb331288842f378cf0f04012ad4ac8824aae7d6f80a13c4016345785d8a0000a21442160007405840b340ef4119416c41bd42060000060802403316000c2f7a4c041816010c2f4c031602160302160216012c16002d170616061603324c081606160534130e7b1602160602160316002c16012d170716071604347a4c04181607160232130d7b16071603020103070e03402fd3c2b1ca2116065634130c7b0c0e16000107170817070c0e16000108170a17091609160a16021603160416050000170c170b16017a1607160ba31608160ca31601160b160c0f0d1600010e170d160b160c160d0201030608021fd3b9fb57ea16055634130c7b160116001602a3160116020e0e1600010f170717061606160334130d7b1607160434130e7b16061607020000020502160c0e16000108170317020c0e1600010718170416011604414c03160216030216031602020103070b004029d364342a1916065634130c7b160016020003170817071343e516032c1709160916082c16091343e816072c2a2d170a160a16043413097b160116021603a316001601160516021603160a00060103070a004029d31937d61916065634130c7b16001602000317081707160716042c1343e82c160816042b1343e52c2d0d2a17091609160332130a7b160116021609a31600160116051602160916040006000306070040270c0e1600010718170616031606414c0f160116031604a31601160216040c0c160513060c160001104a0e160116031604a3160116020c160416050c13060c16000110140100140100ad188000e2d9c1174876e8000137a444479020a2e25e02cbe614a912fcf810e04e85a213136e2c6f4ad0b90ef127fc9f98000381818e63bd9e35a5489b52a430accefc608fd60aa2c7c0d1b393b5239aedf6b001c6d3c1e821e216e09fa00000bee85f379545a2ed9f6cceb331288842f378cf0f04012ad4ac8824aae7d6f80a00000000000000000000\",\n \"signature\": \"1ef38fd124879f208f2a60b322c8ec6cf6c816ba773e79d18e3e7a4b8e622e12126003150b550a34c69056c001e78fc697849a6f1e135f08a6dc5edf4e30c4d5\",\n \"gasPrice\": \"100000000000\",\n \"gasAmount\": 58073,\n \"blockHash\": \"c0bad3d18e97f0a353b7fea22e8ac5ae49b8c51ef55863181504f7de72cda800\",\n \"codeHash\": \"720b48663ba906f7fc6b97b0bea633e6dc213200bdb6b02edeb0fd6f418cf91c\",\n \"contractInstance\": {\n \"address\": \"zyyvPYaHLfLLik1xi8p6jEFYyZdwPqJ4rQX7ebmqFHmR\",\n \"contractId\": \"5d830a5256db563c67389db55c77465995f8841859844075062eadf9f44c3400\",\n \"groupIndex\": 0\n }\n },\n \"FeeCollectorPerTokenPairImpl\": {\n \"txId\": \"b9cb58b57b6c36b13cc46b85b842f4cb425931ecd2a17716bd89db02e7939efe\",\n \"unsignedTx\": \"000401010103000000081500bee85f379545a2ed9f6cceb331288842f378cf0f04012ad4ac8824aae7d6f80a13c4016345785d8a0000a21440700204154032404b406701010202000ab3ce014113107b1600b2ce011601aa01020202000dd3f1ab4760b40c0dce0001024513107b1600ce011601ab01020101000bd320f98f62b40c0dce0001024513107b1600b001000000000dd3f2c71c4bb40c0dce0001024513107b0c0cce01011114050203000300140100ad188000df91c1174876e8000137a44447271ad56a8747d06f159ebbf8e4bddd6ee7ce0a7b89888961d9a7466438bad654000381818e63bd9e35a5489b52a430accefc608fd60aa2c7c0d1b393b5239aedf6b001c6d3c1e6aa474ee3a4380000bee85f379545a2ed9f6cceb331288842f378cf0f04012ad4ac8824aae7d6f80a00000000000000000000\",\n \"signature\": \"8a0c925ca2579bed383095902ed7e1b0bd81055994a538bd1a34c2f83cf1198e6523570a07fde5969bccba530404565ffa622cacbab800c48f8283cc2e4ce61e\",\n \"gasPrice\": \"100000000000\",\n \"gasAmount\": 57233,\n \"blockHash\": \"6cf0f2c13accc29204d359c97e1ff439a6fa53e471ae7832d4a3a629595a8550\",\n \"codeHash\": \"1820b6e23f0ff6c305c58cbbfdb0bfb4f54b9deba1f9d671cc503f49bae39b33\",\n \"contractInstance\": {\n \"address\": \"25cz5W3ahmmox3998aJ45Zg2zsP728zWssBpT4GNXC5io\",\n \"contractId\": \"a26c74a2213fd01bfa909d05b65daba091c6aded18f83fa74a73adccc34ae100\",\n \"groupIndex\": 0\n }\n },\n \"FeeCollectorFactoryImpl\": {\n \"txId\": \"6624410db752ce7a038419524bf826a0922be1a3ce3fa9138953acd970ce93ca\",\n \"unsignedTx\": \"000401010103000000081500bee85f379545a2ed9f6cceb331288842f378cf0f04012ad4ac8824aae7d6f80a13c4016345785d8a0000a214402e0201402a010303050116b3ce014113107bce0116021302641300641704170316001601a21602ce0016031604c10214404702034020a26c74a2213fd01bfa909d05b65daba091c6aded18f83fa74a73adccc34ae1000340207abab68781ed3cc4fd2e2ca59f8da296958fef5a31e1db88525374dace1aa300140100ad188000df90c1174876e8000137a44447f30c4724ce600b084b4aa2023ac72085ac2c3362e4f2ac13e67e183d48430ee7000381818e63bd9e35a5489b52a430accefc608fd60aa2c7c0d1b393b5239aedf6b001c6d23f9d0fd72dbba85dd100bee85f379545a2ed9f6cceb331288842f378cf0f04012ad4ac8824aae7d6f80a00000000000000000000\",\n \"signature\": \"028b5501cba7f022a06c1d65a5a1490f50efd125bb25a7a418545db253d9ed9025b5fdccf5b8b3efef8da893167b7f32ba56fbe277ef20cf268b22acba3c6815\",\n \"gasPrice\": \"100000000000\",\n \"gasAmount\": 57232,\n \"blockHash\": \"02bb858e329bc2eba0d896690ecd9d8cdda699bd3c3690f4563dea2dcb34a310\",\n \"codeHash\": \"f4164dacb696e1cd9c2bb771ea16c9a23ac33eb9dba83b43e58e8b3cfc8b3153\",\n \"contractInstance\": {\n \"address\": \"ynaAdt4Xn8P6FDH9UJWGNoTu7Ggn3UEgA72rJovLSwd9\",\n \"contractId\": \"4bbb1af86e54a2552dfb00e72e33e1e7be51b2becc451fe30a72bd1c79833b00\",\n \"groupIndex\": 0\n }\n }\n },\n \"scripts\": {},\n \"migrations\": {}\n}","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport {\n RunScriptResult,\n DeployContractExecutionResult,\n NetworkId,\n} from \"@alephium/web3\";\nimport {\n TokenPair,\n TokenPairInstance,\n TokenPairFactory,\n TokenPairFactoryInstance,\n Router,\n RouterInstance,\n FeeCollectorPerTokenPairImpl,\n FeeCollectorPerTokenPairImplInstance,\n FeeCollectorFactoryImpl,\n FeeCollectorFactoryImplInstance,\n} from \".\";\nimport { default as testnetDeployments } from \"../../deployments/.deployments.testnet.json\";\nimport { default as devnetDeployments } from \"../../deployments/.deployments.devnet.json\";\n\nexport type Deployments = {\n deployerAddress: string;\n contracts: {\n TokenPair: DeployContractExecutionResult<TokenPairInstance>;\n TokenPairFactory: DeployContractExecutionResult<TokenPairFactoryInstance>;\n Router: DeployContractExecutionResult<RouterInstance>;\n FeeCollectorPerTokenPairImpl: DeployContractExecutionResult<FeeCollectorPerTokenPairImplInstance>;\n FeeCollectorFactoryImpl: DeployContractExecutionResult<FeeCollectorFactoryImplInstance>;\n };\n};\n\nfunction toDeployments(json: any): Deployments {\n const contracts = {\n TokenPair: {\n ...json.contracts[\"TokenPair\"],\n contractInstance: TokenPair.at(\n json.contracts[\"TokenPair\"].contractInstance.address\n ),\n },\n TokenPairFactory: {\n ...json.contracts[\"TokenPairFactory\"],\n contractInstance: TokenPairFactory.at(\n json.contracts[\"TokenPairFactory\"].contractInstance.address\n ),\n },\n Router: {\n ...json.contracts[\"Router\"],\n contractInstance: Router.at(\n json.contracts[\"Router\"].contractInstance.address\n ),\n },\n FeeCollectorPerTokenPairImpl: {\n ...json.contracts[\"FeeCollectorPerTokenPairImpl\"],\n contractInstance: FeeCollectorPerTokenPairImpl.at(\n json.contracts[\"FeeCollectorPerTokenPairImpl\"].contractInstance.address\n ),\n },\n FeeCollectorFactoryImpl: {\n ...json.contracts[\"FeeCollectorFactoryImpl\"],\n contractInstance: FeeCollectorFactoryImpl.at(\n json.contracts[\"FeeCollectorFactoryImpl\"].contractInstance.address\n ),\n },\n };\n return {\n ...json,\n contracts: contracts as Deployments[\"contracts\"],\n };\n}\n\nexport function loadDeployments(\n networkId: NetworkId,\n deployerAddress?: string\n): Deployments {\n const deployments =\n networkId === \"testnet\"\n ? testnetDeployments\n : networkId === \"devnet\"\n ? devnetDeployments\n : undefined;\n if (deployments === undefined) {\n throw Error(\"The contract has not been deployed to the \" + networkId);\n }\n const allDeployments: any[] = Array.isArray(deployments)\n ? deployments\n : [deployments];\n if (deployerAddress === undefined) {\n if (allDeployments.length > 1) {\n throw Error(\n \"The contract has been deployed multiple times on \" +\n networkId +\n \", please specify the deployer address\"\n );\n } else {\n return toDeployments(allDeployments[0]);\n }\n }\n const result = allDeployments.find(\n (d) => d.deployerAddress === deployerAddress\n );\n if (result === undefined) {\n throw Error(\"The contract deployment result does not exist\");\n }\n return toDeployments(result);\n}\n","export function sortTokens(tokenAId: string, tokenBId: string): [string, string] {\n return tokenAId < tokenBId ? [tokenAId, tokenBId] : [tokenBId, tokenAId];\n}\n","export const MAX_PRICE_IMPACT = 5; // 5%\nexport const MINIMUM_LIQUIDITY = 1000n;\n","export class ZetaSDKError extends Error {\n constructor(message: string, options?: ErrorOptions) {\n super(message, options);\n this.name = 'ZetaSDKError';\n }\n}\n\nexport class InsufficientLiquidityError extends ZetaSDKError {\n constructor(message: string = 'Insufficient liquidity') {\n super(message);\n this.name = 'InsufficientLiquidityError';\n }\n}\n\nexport class PriceImpactTooHighError extends ZetaSDKError {\n constructor(priceImpact: number, maxPriceImpact: number) {\n super(`Price impact too high: ${priceImpact.toFixed(2)}% > ${maxPriceImpact}%`);\n this.name = 'PriceImpactTooHighError';\n }\n}\n\nexport class PoolNotFoundError extends ZetaSDKError {\n constructor(poolId: string) {\n super(`Pool does not exist for ${poolId}`);\n this.name = 'PoolNotFoundError';\n }\n}\n\nexport class InsufficientBalanceError extends ZetaSDKError {\n constructor(token: string, required: string, available: string) {\n super(`Not enough ${token} balance. Required: ${required}, Available: ${available}`);\n this.name = 'InsufficientBalanceError';\n }\n}\n\nexport class TokenListFetchError extends ZetaSDKError {\n public readonly status?: number;\n\n constructor(url: string, options?: { status?: number; cause?: unknown }) {\n const statusPart = options?.status !== undefined ? ` (status ${options.status})` : '';\n const errorOptions = options?.cause !== undefined ? { cause: options.cause } : undefined;\n super(`Failed to fetch token list from ${url}${statusPart}`, errorOptions);\n this.name = 'TokenListFetchError';\n this.status = options?.status;\n }\n}\n","export enum LogLevel {\n Error,\n Warning,\n Info,\n Debug,\n}\n\nexport class Logger {\n private logLevel: LogLevel;\n private name: string;\n\n constructor(params: { name: string; logLevel?: LogLevel }) {\n this.logLevel = params.logLevel !== undefined ? params.logLevel : LogLevel.Error;\n this.name = params.name;\n }\n\n set level(logLevel: LogLevel) {\n this.logLevel = logLevel;\n }\n\n get time(): string {\n return new Date().toISOString();\n }\n\n get moduleName(): string {\n return this.name;\n }\n\n private isLogLevel(level: LogLevel): boolean {\n return level <= this.logLevel;\n }\n\n public error(...props: unknown[]): Logger {\n if (!this.isLogLevel(LogLevel.Error)) return this;\n console.error(this.time, this.name, 'error', ...props);\n return this;\n }\n\n public logWithError(...props: unknown[]): Logger {\n const msg = props\n .map((arg) => (typeof arg === 'object' ? JSON.stringify(arg) : arg))\n .join(', ');\n throw new Error(msg);\n }\n\n public warning(...props: unknown[]): Logger {\n if (!this.isLogLevel(LogLevel.Warning)) return this;\n console.warn(this.time, this.name, 'warning', ...props);\n return this;\n }\n\n public info(...props: unknown[]): Logger {\n if (!this.isLogLevel(LogLevel.Info)) return this;\n console.info(this.time, this.name, 'info', ...props);\n return this;\n }\n\n public debug(...props: unknown[]): Logger {\n if (!this.isLogLevel(LogLevel.Debug)) return this;\n console.debug(this.time, this.name, 'debug', ...props);\n return this;\n }\n}\n\nconst moduleLoggers: { [key: string]: Logger } = {};\nconst moduleLevels: { [key: string]: LogLevel } = {};\n\nexport function createLogger(moduleName: string): Logger {\n let logger = moduleLoggers[moduleName];\n if (!logger) {\n const logLevel = moduleLevels[moduleName];\n logger = new Logger({ name: moduleName, logLevel });\n moduleLoggers[moduleName] = logger;\n }\n return logger;\n}\n\nexport function setLoggerLevel(moduleName: string, level: LogLevel): void {\n moduleLevels[moduleName] = level;\n const logger = moduleLoggers[moduleName];\n if (logger) logger.level = level;\n}\n","import type { Logger } from './common/logger';\nimport { createLogger } from './common/logger';\nimport type { Zeta } from './zeta';\n\nexport interface ModuleBaseProps {\n scope: Zeta;\n moduleName: string;\n}\n\nconst joinMsg = (...args: unknown[]): string =>\n args\n .map((arg) => {\n if (arg instanceof Error) {\n const base = arg.message ?? arg.name;\n return arg.stack ? `${base}\\n${arg.stack}` : base;\n }\n\n if (typeof arg === 'object' && arg !== null) {\n try {\n return JSON.stringify(arg);\n } catch {\n return String(arg);\n }\n }\n\n return String(arg);\n })\n .join(', ');\n\nexport default class ModuleBase {\n public scope: Zeta;\n private disabled = false;\n protected logger: Logger;\n\n constructor({ scope, moduleName }: ModuleBaseProps) {\n this.scope = scope;\n this.logger = createLogger(moduleName);\n }\n\n public logDebug(...args: unknown[]): void {\n this.logger.debug(joinMsg(...args));\n }\n\n public logInfo(...args: unknown[]): void {\n this.logger.info(joinMsg(...args));\n }\n\n public logWarning(...args: unknown[]): void {\n this.logger.warning(joinMsg(...args));\n }\n\n public logError(...args: unknown[]): void {\n this.logger.error(joinMsg(...args));\n }\n\n public logAndThrowError(...args: unknown[]): never {\n const message = joinMsg(...args);\n throw new Error(message);\n }\n\n public checkDisabled(): void {\n if (this.disabled || !this.scope) this.logAndThrowError('module not working');\n }\n}\n","/*\r\n * bignumber.js v9.3.1\r\n * A JavaScript library for arbitrary-precision arithmetic.\r\n * https://github.com/MikeMcl/bignumber.js\r\n * Copyright (c) 2025 Michael Mclaughlin <M8ch88l@gmail.com>\r\n * MIT Licensed.\r\n *\r\n * BigNumber.prototype methods | BigNumber methods\r\n * |\r\n * absoluteValue abs | clone\r\n * comparedTo | config set\r\n * decimalPlaces dp | DECIMAL_PLACES\r\n * dividedBy div | ROUNDING_MODE\r\n * dividedToIntegerBy idiv | EXPONENTIAL_AT\r\n * exponentiatedBy pow | RANGE\r\n * integerValue | CRYPTO\r\n * isEqualTo eq | MODULO_MODE\r\n * isFinite | POW_PRECISION\r\n * isGreaterThan gt | FORMAT\r\n * isGreaterThanOrEqualTo gte | ALPHABET\r\n * isInteger | isBigNumber\r\n * isLessThan lt | maximum max\r\n * isLessThanOrEqualTo lte | minimum min\r\n * isNaN | random\r\n * isNegative | sum\r\n * isPositive |\r\n * isZero |\r\n * minus |\r\n * modulo mod |\r\n * multipliedBy times |\r\n * negated |\r\n * plus |\r\n * precision sd |\r\n * shiftedBy |\r\n * squareRoot sqrt |\r\n * toExponential |\r\n * toFixed |\r\n * toFormat |\r\n * toFraction |\r\n * toJSON |\r\n * toNumber |\r\n * toPrecision |\r\n * toString |\r\n * valueOf |\r\n *\r\n */\r\n\r\n\r\nvar\r\n isNumeric = /^-?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?$/i,\r\n mathceil = Math.ceil,\r\n mathfloor = Math.floor,\r\n\r\n bignumberError = '[BigNumber Error] ',\r\n tooManyDigits = bignumberError + 'Number primitive has more than 15 significant digits: ',\r\n\r\n BASE = 1e14,\r\n LOG_BASE = 14,\r\n MAX_SAFE_INTEGER = 0x1fffffffffffff, // 2^53 - 1\r\n // MAX_INT32 = 0x7fffffff, // 2^31 - 1\r\n POWS_TEN = [1, 10, 100, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9, 1e10, 1e11, 1e12, 1e13],\r\n SQRT_BASE = 1e7,\r\n\r\n // EDITABLE\r\n // The limit on the value of DECIMAL_PLACES, TO_EXP_NEG, TO_EXP_POS, MIN_EXP, MAX_EXP, and\r\n // the arguments to toExponential, toFixed, toFormat, and toPrecision.\r\n MAX = 1E9; // 0 to MAX_INT32\r\n\r\n\r\n/*\r\n * Create and return a BigNumber constructor.\r\n */\r\nfunction clone(configObject) {\r\n var div, convertBase, parseNumeric,\r\n P = BigNumber.prototype = { constructor: BigNumber, toString: null, valueOf: null },\r\n ONE = new BigNumber(1),\r\n\r\n\r\n //----------------------------- EDITABLE CONFIG DEFAULTS -------------------------------\r\n\r\n\r\n // The default values below must be integers within the inclusive ranges stated.\r\n // The values can also be changed at run-time using BigNumber.set.\r\n\r\n // The maximum number of decimal places for operations involving division.\r\n DECIMAL_PLACES = 20, // 0 to MAX\r\n\r\n // The rounding mode used when rounding to the above decimal places, and when using\r\n // toExponential, toFixed, toFormat and toPrecision, and round (default value).\r\n // UP 0 Away from zero.\r\n // DOWN 1 Towards zero.\r\n // CEIL 2 Towards +Infinity.\r\n // FLOOR 3 Towards -Infinity.\r\n // HALF_UP 4 Towards nearest neighbour. If equidistant, up.\r\n // HALF_DOWN 5 Towards nearest neighbour. If equidistant, down.\r\n // HALF_EVEN 6 Towards nearest neighbour. If equidistant, towards even neighbour.\r\n // HALF_CEIL 7 Towards nearest neighbour. If equidistant, towards +Infinity.\r\n // HALF_FLOOR 8 Towards nearest neighbour. If equidistant, towards -Infinity.\r\n ROUNDING_MODE = 4, // 0 to 8\r\n\r\n // EXPONENTIAL_AT : [TO_EXP_NEG , TO_EXP_POS]\r\n\r\n // The exponent value at and beneath which toString returns exponential notation.\r\n // Number type: -7\r\n TO_EXP_NEG = -7, // 0 to -MAX\r\n\r\n // The exponent value at and above which toString returns exponential notation.\r\n // Number type: 21\r\n TO_EXP_POS = 21, // 0 to MAX\r\n\r\n // RANGE : [MIN_EXP, MAX_EXP]\r\n\r\n // The minimum exponent value, beneath which underflow to zero occurs.\r\n // Number type: -324 (5e-324)\r\n MIN_EXP = -1e7, // -1 to -MAX\r\n\r\n // The maximum exponent value, above which overflow to Infinity occurs.\r\n // Number type: 308 (1.7976931348623157e+308)\r\n // For MAX_EXP > 1e7, e.g. new BigNumber('1e100000000').plus(1) may be slow.\r\n MAX_EXP = 1e7, // 1 to MAX\r\n\r\n // Whether to use cryptographically-secure random number generation, if available.\r\n CRYPTO = false, // true or false\r\n\r\n // The modulo mode used when calculating the modulus: a mod n.\r\n // The quotient (q = a / n) is calculated according to the corresponding rounding mode.\r\n // The remainder (r) is calculated as: r = a - n * q.\r\n //\r\n // UP 0 The remainder is positive if the dividend is negative, else is negative.\r\n // DOWN 1 The remainder has the same sign as the dividend.\r\n // This modulo mode is commonly known as 'truncated division' and is\r\n // equivalent to (a % n) in JavaScript.\r\n // FLOOR 3 The remainder has the same sign as the divisor (Python %).\r\n // HALF_EVEN 6 This modulo mode implements the IEEE 754 remainder function.\r\n // EUCLID 9 Euclidian division. q = sign(n) * floor(a / abs(n)).\r\n // The remainder is always positive.\r\n //\r\n // The truncated division, floored division, Euclidian division and IEEE 754 remainder\r\n // modes are commonly used for the modulus operation.\r\n // Although the other rounding modes can also be used, they may not give useful results.\r\n MODULO_MODE = 1, // 0 to 9\r\n\r\n // The maximum number of significant digits of the result of the exponentiatedBy operation.\r\n // If POW_PRECISION is 0, there will be unlimited significant digits.\r\n POW_PRECISION = 0, // 0 to MAX\r\n\r\n // The format specification used by the BigNumber.prototype.toFormat method.\r\n FORMAT = {\r\n prefix: '',\r\n groupSize: 3,\r\n secondaryGroupSize: 0,\r\n groupSeparator: ',',\r\n decimalSeparator: '.',\r\n fractionGroupSize: 0,\r\n fractionGroupSeparator: '\\xA0', // non-breaking space\r\n suffix: ''\r\n },\r\n\r\n // The alphabet used for base conversion. It must be at least 2 characters long, with no '+',\r\n // '-', '.', whitespace, or repeated character.\r\n // '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$_'\r\n ALPHABET = '0123456789abcdefghijklmnopqrstuvwxyz',\r\n alphabetHasNormalDecimalDigits = true;\r\n\r\n\r\n //------------------------------------------------------------------------------------------\r\n\r\n\r\n // CONSTRUCTOR\r\n\r\n\r\n /*\r\n * The BigNumber constructor and exported function.\r\n * Create and return a new instance of a BigNumber object.\r\n *\r\n * v {number|string|BigNumber} A numeric value.\r\n * [b] {number} The base of v. Integer, 2 to ALPHABET.length inclusive.\r\n */\r\n function BigNumber(v, b) {\r\n var alphabet, c, caseChanged, e, i, isNum, len, str,\r\n x = this;\r\n\r\n // Enable constructor call without `new`.\r\n if (!(x instanceof BigNumber)) return new BigNumber(v, b);\r\n\r\n if (b == null) {\r\n\r\n if (v && v._isBigNumber === true) {\r\n x.s = v.s;\r\n\r\n if (!v.c || v.e > MAX_EXP) {\r\n x.c = x.e = null;\r\n } else if (v.e < MIN_EXP) {\r\n x.c = [x.e = 0];\r\n } else {\r\n x.e = v.e;\r\n x.c = v.c.slice();\r\n }\r\n\r\n return;\r\n }\r\n\r\n if ((isNum = typeof v == 'number') && v * 0 == 0) {\r\n\r\n // Use `1 / n` to handle minus zero also.\r\n x.s = 1 / v < 0 ? (v = -v, -1) : 1;\r\n\r\n // Fast path for integers, where n < 2147483648 (2**31).\r\n if (v === ~~v) {\r\n for (e = 0, i = v; i >= 10; i /= 10, e++);\r\n\r\n if (e > MAX_EXP) {\r\n x.c = x.e = null;\r\n } else {\r\n x.e = e;\r\n x.c = [v];\r\n }\r\n\r\n return;\r\n }\r\n\r\n str = String(v);\r\n } else {\r\n\r\n if (!isNumeric.test(str = String(v))) return parseNumeric(x, str, isNum);\r\n\r\n x.s = str.charCodeAt(0) == 45 ? (str = str.slice(1), -1) : 1;\r\n }\r\n\r\n // Decimal point?\r\n if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n\r\n // Exponential form?\r\n if ((i = str.search(/e/i)) > 0) {\r\n\r\n // Determine exponent.\r\n if (e < 0) e = i;\r\n e += +str.slice(i + 1);\r\n str = str.substring(0, i);\r\n } else if (e < 0) {\r\n\r\n // Integer.\r\n e = str.length;\r\n }\r\n\r\n } else {\r\n\r\n // '[BigNumber Error] Base {not a primitive number|not an integer|out of range}: {b}'\r\n intCheck(b, 2, ALPHABET.length, 'Base');\r\n\r\n // Allow exponential notation to be used with base 10 argument, while\r\n // also rounding to DECIMAL_PLACES as with other bases.\r\n if (b == 10 && alphabetHasNormalDecimalDigits) {\r\n x = new BigNumber(v);\r\n return round(x, DECIMAL_PLACES + x.e + 1, ROUNDING_MODE);\r\n }\r\n\r\n str = String(v);\r\n\r\n if (isNum = typeof v == 'number') {\r\n\r\n // Avoid potential interpretation of Infinity and NaN as base 44+ values.\r\n if (v * 0 != 0) return parseNumeric(x, str, isNum, b);\r\n\r\n x.s = 1 / v < 0 ? (str = str.slice(1), -1) : 1;\r\n\r\n // '[BigNumber Error] Number primitive has more than 15 significant digits: {n}'\r\n if (BigNumber.DEBUG && str.replace(/^0\\.0*|\\./, '').length > 15) {\r\n throw Error\r\n (tooManyDigits + v);\r\n }\r\n } else {\r\n x.s = str.charCodeAt(0) === 45 ? (str = str.slice(1), -1) : 1;\r\n }\r\n\r\n alphabet = ALPHABET.slice(0, b);\r\n e = i = 0;\r\n\r\n // Check that str is a valid base b number.\r\n // Don't use RegExp, so alphabet can contain special characters.\r\n for (len = str.length; i < len; i++) {\r\n if (alphabet.indexOf(c = str.charAt(i)) < 0) {\r\n if (c == '.') {\r\n\r\n // If '.' is not the first character and it has not be found before.\r\n if (i > e) {\r\n e = len;\r\n continue;\r\n }\r\n } else if (!caseChanged) {\r\n\r\n // Allow e.g. hexadecimal 'FF' as well as 'ff'.\r\n if (str == str.toUpperCase() && (str = str.toLowerCase()) ||\r\n str == str.toLowerCase() && (str = str.toUpperCase())) {\r\n caseChanged = true;\r\n i = -1;\r\n e = 0;\r\n continue;\r\n }\r\n }\r\n\r\n return parseNumeric(x, String(v), isNum, b);\r\n }\r\n }\r\n\r\n // Prevent later check for length on converted number.\r\n isNum = false;\r\n str = convertBase(str, b, 10, x.s);\r\n\r\n // Decimal point?\r\n if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n else e = str.length;\r\n }\r\n\r\n // Determine leading zeros.\r\n for (i = 0; str.charCodeAt(i) === 48; i++);\r\n\r\n // Determine trailing zeros.\r\n for (len = str.length; str.charCodeAt(--len) === 48;);\r\n\r\n if (str = str.slice(i, ++len)) {\r\n len -= i;\r\n\r\n // '[BigNumber Error] Number primitive has more than 15 significant digits: {n}'\r\n if (isNum && BigNumber.DEBUG &&\r\n len > 15 && (v > MAX_SAFE_INTEGER || v !== mathfloor(v))) {\r\n throw Error\r\n (tooManyDigits + (x.s * v));\r\n }\r\n\r\n // Overflow?\r\n if ((e = e - i - 1) > MAX_EXP) {\r\n\r\n // Infinity.\r\n x.c = x.e = null;\r\n\r\n // Underflow?\r\n } else if (e < MIN_EXP) {\r\n\r\n // Zero.\r\n x.c = [x.e = 0];\r\n } else {\r\n x.e = e;\r\n x.c = [];\r\n\r\n // Transform base\r\n\r\n // e is the base 10 exponent.\r\n // i is where to slice str to get the first element of the coefficient array.\r\n i = (e + 1) % LOG_BASE;\r\n if (e < 0) i += LOG_BASE; // i < 1\r\n\r\n if (i < len) {\r\n if (i) x.c.push(+str.slice(0, i));\r\n\r\n for (len -= LOG_BASE; i < len;) {\r\n x.c.push(+str.slice(i, i += LOG_BASE));\r\n }\r\n\r\n i = LOG_BASE - (str = str.slice(i)).length;\r\n } else {\r\n i -= len;\r\n }\r\n\r\n for (; i--; str += '0');\r\n x.c.push(+str);\r\n }\r\n } else {\r\n\r\n // Zero.\r\n x.c = [x.e = 0];\r\n }\r\n }\r\n\r\n\r\n // CONSTRUCTOR PROPERTIES\r\n\r\n\r\n BigNumber.clone = clone;\r\n\r\n BigNumber.ROUND_UP = 0;\r\n BigNumber.ROUND_DOWN = 1;\r\n BigNumber.ROUND_CEIL = 2;\r\n BigNumber.ROUND_FLOOR = 3;\r\n BigNumber.ROUND_HALF_UP = 4;\r\n BigNumber.ROUND_HALF_DOWN = 5;\r\n BigNumber.ROUND_HALF_EVEN = 6;\r\n BigNumber.ROUND_HALF_CEIL = 7;\r\n BigNumber.ROUND_HALF_FLOOR = 8;\r\n BigNumber.EUCLID = 9;\r\n\r\n\r\n /*\r\n * Configure infrequently-changing library-wide settings.\r\n *\r\n * Accept an object with the following optional properties (if the value of a property is\r\n * a number, it must be an integer within the inclusive range stated):\r\n *\r\n * DECIMAL_PLACES {number} 0 to MAX\r\n * ROUNDING_MODE {number} 0 to 8\r\n * EXPONENTIAL_AT {number|number[]} -MAX to MAX or [-MAX to 0, 0 to MAX]\r\n * RANGE {number|number[]} -MAX to MAX (not zero) or [-MAX to -1, 1 to MAX]\r\n * CRYPTO {boolean} true or false\r\n * MODULO_MODE {number} 0 to 9\r\n * POW_PRECISION {number} 0 to MAX\r\n * ALPHABET {string} A string of two or more unique characters which does\r\n * not contain '.'.\r\n * FORMAT {object} An object with some of the following properties:\r\n * prefix {string}\r\n * groupSize {number}\r\n * secondaryGroupSize {number}\r\n * groupSeparator {string}\r\n * decimalSeparator {string}\r\n * fractionGroupSize {number}\r\n * fractionGroupSeparator {string}\r\n * suffix {string}\r\n *\r\n * (The values assigned to the above FORMAT object properties are not checked for validity.)\r\n *\r\n * E.g.\r\n * BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 4 })\r\n *\r\n * Ignore properties/parameters set to null or undefined, except for ALPHABET.\r\n *\r\n * Return an object with the properties current values.\r\n */\r\n BigNumber.config = BigNumber.set = function (obj) {\r\n var p, v;\r\n\r\n if (obj != null) {\r\n\r\n if (typeof obj == 'object') {\r\n\r\n // DECIMAL_PLACES {number} Integer, 0 to MAX inclusive.\r\n // '[BigNumber Error] DECIMAL_PLACES {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'DECIMAL_PLACES')) {\r\n v = obj[p];\r\n intCheck(v, 0, MAX, p);\r\n DECIMAL_PLACES = v;\r\n }\r\n\r\n // ROUNDING_MODE {number} Integer, 0 to 8 inclusive.\r\n // '[BigNumber Error] ROUNDING_MODE {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'ROUNDING_MODE')) {\r\n v = obj[p];\r\n intCheck(v, 0, 8, p);\r\n ROUNDING_MODE = v;\r\n }\r\n\r\n // EXPONENTIAL_AT {number|number[]}\r\n // Integer, -MAX to MAX inclusive or\r\n // [integer -MAX to 0 inclusive, 0 to MAX inclusive].\r\n // '[BigNumber Error] EXPONENTIAL_AT {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'EXPONENTIAL_AT')) {\r\n v = obj[p];\r\n if (v && v.pop) {\r\n intCheck(v[0], -MAX, 0, p);\r\n intCheck(v[1], 0, MAX, p);\r\n TO_EXP_NEG = v[0];\r\n TO_EXP_POS = v[1];\r\n } else {\r\n intCheck(v, -MAX, MAX, p);\r\n TO_EXP_NEG = -(TO_EXP_POS = v < 0 ? -v : v);\r\n }\r\n }\r\n\r\n // RANGE {number|number[]} Non-zero integer, -MAX to MAX inclusive or\r\n // [integer -MAX to -1 inclusive, integer 1 to MAX inclusive].\r\n // '[BigNumber Error] RANGE {not a primitive number|not an integer|out of range|cannot be zero}: {v}'\r\n if (obj.hasOwnProperty(p = 'RANGE')) {\r\n v = obj[p];\r\n if (v && v.pop) {\r\n intCheck(v[0], -MAX, -1, p);\r\n intCheck(v[1], 1, MAX, p);\r\n MIN_EXP = v[0];\r\n MAX_EXP = v[1];\r\n } else {\r\n intCheck(v, -MAX, MAX, p);\r\n if (v) {\r\n MIN_EXP = -(MAX_EXP = v < 0 ? -v : v);\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' cannot be zero: ' + v);\r\n }\r\n }\r\n }\r\n\r\n // CRYPTO {boolean} true or false.\r\n // '[BigNumber Error] CRYPTO not true or false: {v}'\r\n // '[BigNumber Error] crypto unavailable'\r\n if (obj.hasOwnProperty(p = 'CRYPTO')) {\r\n v = obj[p];\r\n if (v === !!v) {\r\n if (v) {\r\n if (typeof crypto != 'undefined' && crypto &&\r\n (crypto.getRandomValues || crypto.randomBytes)) {\r\n CRYPTO = v;\r\n } else {\r\n CRYPTO = !v;\r\n throw Error\r\n (bignumberError + 'crypto unavailable');\r\n }\r\n } else {\r\n CRYPTO = v;\r\n }\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' not true or false: ' + v);\r\n }\r\n }\r\n\r\n // MODULO_MODE {number} Integer, 0 to 9 inclusive.\r\n // '[BigNumber Error] MODULO_MODE {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'MODULO_MODE')) {\r\n v = obj[p];\r\n intCheck(v, 0, 9, p);\r\n MODULO_MODE = v;\r\n }\r\n\r\n // POW_PRECISION {number} Integer, 0 to MAX inclusive.\r\n // '[BigNumber Error] POW_PRECISION {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'POW_PRECISION')) {\r\n v = obj[p];\r\n intCheck(v, 0, MAX, p);\r\n POW_PRECISION = v;\r\n }\r\n\r\n // FORMAT {object}\r\n // '[BigNumber Error] FORMAT not an object: {v}'\r\n if (obj.hasOwnProperty(p = 'FORMAT')) {\r\n v = obj[p];\r\n if (typeof v == 'object') FORMAT = v;\r\n else throw Error\r\n (bignumberError + p + ' not an object: ' + v);\r\n }\r\n\r\n // ALPHABET {string}\r\n // '[BigNumber Error] ALPHABET invalid: {v}'\r\n if (obj.hasOwnProperty(p = 'ALPHABET')) {\r\n v = obj[p];\r\n\r\n // Disallow if less than two characters,\r\n // or if it contains '+', '-', '.', whitespace, or a repeated character.\r\n if (typeof v == 'string' && !/^.?$|[+\\-.\\s]|(.).*\\1/.test(v)) {\r\n alphabetHasNormalDecimalDigits = v.slice(0, 10) == '0123456789';\r\n ALPHABET = v;\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' invalid: ' + v);\r\n }\r\n }\r\n\r\n } else {\r\n\r\n // '[BigNumber Error] Object expected: {v}'\r\n throw Error\r\n (bignumberError + 'Object expected: ' + obj);\r\n }\r\n }\r\n\r\n return {\r\n DECIMAL_PLACES: DECIMAL_PLACES,\r\n ROUNDING_MODE: ROUNDING_MODE,\r\n EXPONENTIAL_AT: [TO_EXP_NEG, TO_EXP_POS],\r\n RANGE: [MIN_EXP, MAX_EXP],\r\n CRYPTO: CRYPTO,\r\n MODULO_MODE: MODULO_MODE,\r\n POW_PRECISION: POW_PRECISION,\r\n FORMAT: FORMAT,\r\n ALPHABET: ALPHABET\r\n };\r\n };\r\n\r\n\r\n /*\r\n * Return true if v is a BigNumber instance, otherwise return false.\r\n *\r\n * If BigNumber.DEBUG is true, throw if a BigNumber instance is not well-formed.\r\n *\r\n * v {any}\r\n *\r\n * '[BigNumber Error] Invalid BigNumber: {v}'\r\n */\r\n BigNumber.isBigNumber = function (v) {\r\n if (!v || v._isBigNumber !== true) return false;\r\n if (!BigNumber.DEBUG) return true;\r\n\r\n var i, n,\r\n c = v.c,\r\n e = v.e,\r\n s = v.s;\r\n\r\n out: if ({}.toString.call(c) == '[object Array]') {\r\n\r\n if ((s === 1 || s === -1) && e >= -MAX && e <= MAX && e === mathfloor(e)) {\r\n\r\n // If the first element is zero, the BigNumber value must be zero.\r\n if (c[0] === 0) {\r\n if (e === 0 && c.length === 1) return true;\r\n break out;\r\n }\r\n\r\n // Calculate number of digits that c[0] should have, based on the exponent.\r\n i = (e + 1) % LOG_BASE;\r\n if (i < 1) i += LOG_BASE;\r\n\r\n // Calculate number of digits of c[0].\r\n //if (Math.ceil(Math.log(c[0] + 1) / Math.LN10) == i) {\r\n if (String(c[0]).length == i) {\r\n\r\n for (i = 0; i < c.length; i++) {\r\n n = c[i];\r\n if (n < 0 || n >= BASE || n !== mathfloor(n)) break out;\r\n }\r\n\r\n // Last element cannot be zero, unless it is the only element.\r\n if (n !== 0) return true;\r\n }\r\n }\r\n\r\n // Infinity/NaN\r\n } else if (c === null && e === null && (s === null || s === 1 || s === -1)) {\r\n return true;\r\n }\r\n\r\n throw Error\r\n (bignumberError + 'Invalid BigNumber: ' + v);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the maximum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.maximum = BigNumber.max = function () {\r\n return maxOrMin(arguments, -1);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the minimum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.minimum = BigNumber.min = function () {\r\n return maxOrMin(arguments, 1);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber with a random value equal to or greater than 0 and less than 1,\r\n * and with dp, or DECIMAL_PLACES if dp is omitted, decimal places (or less if trailing\r\n * zeros are produced).\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp}'\r\n * '[BigNumber Error] crypto unavailable'\r\n */\r\n BigNumber.random = (function () {\r\n var pow2_53 = 0x20000000000000;\r\n\r\n // Return a 53 bit integer n, where 0 <= n < 9007199254740992.\r\n // Check if Math.random() produces more than 32 bits of randomness.\r\n // If it does, assume at least 53 bits are produced, otherwise assume at least 30 bits.\r\n // 0x40000000 is 2^30, 0x800000 is 2^23, 0x1fffff is 2^21 - 1.\r\n var random53bitInt = (Math.random() * pow2_53) & 0x1fffff\r\n ? function () { return mathfloor(Math.random() * pow2_53); }\r\n : function () { return ((Math.random() * 0x40000000 | 0) * 0x800000) +\r\n (Math.random() * 0x800000 | 0); };\r\n\r\n return function (dp) {\r\n var a, b, e, k, v,\r\n i = 0,\r\n c = [],\r\n rand = new BigNumber(ONE);\r\n\r\n if (dp == null) dp = DECIMAL_PLACES;\r\n else intCheck(dp, 0, MAX);\r\n\r\n k = mathceil(dp / LOG_BASE);\r\n\r\n if (CRYPTO) {\r\n\r\n // Browsers supporting crypto.getRandomValues.\r\n if (crypto.getRandomValues) {\r\n\r\n a = crypto.getRandomValues(new Uint32Array(k *= 2));\r\n\r\n for (; i < k;) {\r\n\r\n // 53 bits:\r\n // ((Math.pow(2, 32) - 1) * Math.pow(2, 21)).toString(2)\r\n // 11111 11111111 11111111 11111111 11100000 00000000 00000000\r\n // ((Math.pow(2, 32) - 1) >>> 11).toString(2)\r\n // 11111 11111111 11111111\r\n // 0x20000 is 2^21.\r\n v = a[i] * 0x20000 + (a[i + 1] >>> 11);\r\n\r\n // Rejection sampling:\r\n // 0 <= v < 9007199254740992\r\n // Probability that v >= 9e15, is\r\n // 7199254740992 / 9007199254740992 ~= 0.0008, i.e. 1 in 1251\r\n if (v >= 9e15) {\r\n b = crypto.getRandomValues(new Uint32Array(2));\r\n a[i] = b[0];\r\n a[i + 1] = b[1];\r\n } else {\r\n\r\n // 0 <= v <= 8999999999999999\r\n // 0 <= (v % 1e14) <= 99999999999999\r\n c.push(v % 1e14);\r\n i += 2;\r\n }\r\n }\r\n i = k / 2;\r\n\r\n // Node.js supporting crypto.randomBytes.\r\n } else if (crypto.randomBytes) {\r\n\r\n // buffer\r\n a = crypto.randomBytes(k *= 7);\r\n\r\n for (; i < k;) {\r\n\r\n // 0x1000000000000 is 2^48, 0x10000000000 is 2^40\r\n // 0x100000000 is 2^32, 0x1000000 is 2^24\r\n // 11111 11111111 11111111 11111111 11111111 11111111 11111111\r\n // 0 <= v < 9007199254740992\r\n v = ((a[i] & 31) * 0x1000000000000) + (a[i + 1] * 0x10000000000) +\r\n (a[i + 2] * 0x100000000) + (a[i + 3] * 0x1000000) +\r\n (a[i + 4] << 16) + (a[i + 5] << 8) + a[i + 6];\r\n\r\n if (v >= 9e15) {\r\n crypto.randomBytes(7).copy(a, i);\r\n } else {\r\n\r\n // 0 <= (v % 1e14) <= 99999999999999\r\n c.push(v % 1e14);\r\n i += 7;\r\n }\r\n }\r\n i = k / 7;\r\n } else {\r\n CRYPTO = false;\r\n throw Error\r\n (bignumberError + 'crypto unavailable');\r\n }\r\n }\r\n\r\n // Use Math.random.\r\n if (!CRYPTO) {\r\n\r\n for (; i < k;) {\r\n v = random53bitInt();\r\n if (v < 9e15) c[i++] = v % 1e14;\r\n }\r\n }\r\n\r\n k = c[--i];\r\n dp %= LOG_BASE;\r\n\r\n // Convert trailing digits to zeros according to dp.\r\n if (k && dp) {\r\n v = POWS_TEN[LOG_BASE - dp];\r\n c[i] = mathfloor(k / v) * v;\r\n }\r\n\r\n // Remove trailing elements which are zero.\r\n for (; c[i] === 0; c.pop(), i--);\r\n\r\n // Zero?\r\n if (i < 0) {\r\n c = [e = 0];\r\n } else {\r\n\r\n // Remove leading elements which are zero and adjust exponent accordingly.\r\n for (e = -1 ; c[0] === 0; c.splice(0, 1), e -= LOG_BASE);\r\n\r\n // Count the digits of the first element of c to determine leading zeros, and...\r\n for (i = 1, v = c[0]; v >= 10; v /= 10, i++);\r\n\r\n // adjust the exponent accordingly.\r\n if (i < LOG_BASE) e -= LOG_BASE - i;\r\n }\r\n\r\n rand.e = e;\r\n rand.c = c;\r\n return rand;\r\n };\r\n })();\r\n\r\n\r\n /*\r\n * Return a BigNumber whose value is the sum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.sum = function () {\r\n var i = 1,\r\n args = arguments,\r\n sum = new BigNumber(args[0]);\r\n for (; i < args.length;) sum = sum.plus(args[i++]);\r\n return sum;\r\n };\r\n\r\n\r\n // PRIVATE FUNCTIONS\r\n\r\n\r\n // Called by BigNumber and BigNumber.prototype.toString.\r\n convertBase = (function () {\r\n var decimal = '0123456789';\r\n\r\n /*\r\n * Convert string of baseIn to an array of numbers of baseOut.\r\n * Eg. toBaseOut('255', 10, 16) returns [15, 15].\r\n * Eg. toBaseOut('ff', 16, 10) returns [2, 5, 5].\r\n */\r\n function toBaseOut(str, baseIn, baseOut, alphabet) {\r\n var j,\r\n arr = [0],\r\n arrL,\r\n i = 0,\r\n len = str.length;\r\n\r\n for (; i < len;) {\r\n for (arrL = arr.length; arrL--; arr[arrL] *= baseIn);\r\n\r\n arr[0] += alphabet.indexOf(str.charAt(i++));\r\n\r\n for (j = 0; j < arr.length; j++) {\r\n\r\n if (arr[j] > baseOut - 1) {\r\n if (arr[j + 1] == null) arr[j + 1] = 0;\r\n arr[j + 1] += arr[j] / baseOut | 0;\r\n arr[j] %= baseOut;\r\n }\r\n }\r\n }\r\n\r\n return arr.reverse();\r\n }\r\n\r\n // Convert a numeric string of baseIn to a numeric string of baseOut.\r\n // If the caller is toString, we are converting from base 10 to baseOut.\r\n // If the caller is BigNumber, we are converting from baseIn to base 10.\r\n return function (str, baseIn, baseOut, sign, callerIsToString) {\r\n var alphabet, d, e, k, r, x, xc, y,\r\n i = str.indexOf('.'),\r\n dp = DECIMAL_PLACES,\r\n rm = ROUNDING_MODE;\r\n\r\n // Non-integer.\r\n if (i >= 0) {\r\n k = POW_PRECISION;\r\n\r\n // Unlimited precision.\r\n POW_PRECISION = 0;\r\n str = str.replace('.', '');\r\n y = new BigNumber(baseIn);\r\n x = y.pow(str.length - i);\r\n POW_PRECISION = k;\r\n\r\n // Convert str as if an integer, then restore the fraction part by dividing the\r\n // result by its base raised to a power.\r\n\r\n y.c = toBaseOut(toFixedPoint(coeffToString(x.c), x.e, '0'),\r\n 10, baseOut, decimal);\r\n y.e = y.c.length;\r\n }\r\n\r\n // Convert the number as integer.\r\n\r\n xc = toBaseOut(str, baseIn, baseOut, callerIsToString\r\n ? (alphabet = ALPHABET, decimal)\r\n : (alphabet = decimal, ALPHABET));\r\n\r\n // xc now represents str as an integer and converted to baseOut. e is the exponent.\r\n e = k = xc.length;\r\n\r\n // Remove trailing zeros.\r\n for (; xc[--k] == 0; xc.pop());\r\n\r\n // Zero?\r\n if (!xc[0]) return alphabet.charAt(0);\r\n\r\n // Does str represent an integer? If so, no need for the division.\r\n if (i < 0) {\r\n --e;\r\n } else {\r\n x.c = xc;\r\n x.e = e;\r\n\r\n // The sign is needed for correct rounding.\r\n x.s = sign;\r\n x = div(x, y, dp, rm, baseOut);\r\n xc = x.c;\r\n r = x.r;\r\n e = x.e;\r\n }\r\n\r\n // xc now represents str converted to baseOut.\r\n\r\n // The index of the rounding digit.\r\n d = e + dp + 1;\r\n\r\n // The rounding digit: the digit to the right of the digit that may be rounded up.\r\n i = xc[d];\r\n\r\n // Look at the rounding digits and mode to determine whether to round up.\r\n\r\n k = baseOut / 2;\r\n r = r || d < 0 || xc[d + 1] != null;\r\n\r\n r = rm < 4 ? (i != null || r) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n : i > k || i == k &&(rm == 4 || r || rm == 6 && xc[d - 1] & 1 ||\r\n rm == (x.s < 0 ? 8 : 7));\r\n\r\n // If the index of the rounding digit is not greater than zero, or xc represents\r\n // zero, then the result of the base conversion is zero or, if rounding up, a value\r\n // such as 0.00001.\r\n if (d < 1 || !xc[0]) {\r\n\r\n // 1^-dp or 0\r\n str = r ? toFixedPoint(alphabet.charAt(1), -dp, alphabet.charAt(0)) : alphabet.charAt(0);\r\n } else {\r\n\r\n // Truncate xc to the required number of decimal places.\r\n xc.length = d;\r\n\r\n // Round up?\r\n if (r) {\r\n\r\n // Rounding up may mean the previous digit has to be rounded up and so on.\r\n for (--baseOut; ++xc[--d] > baseOut;) {\r\n xc[d] = 0;\r\n\r\n if (!d) {\r\n ++e;\r\n xc = [1].concat(xc);\r\n }\r\n }\r\n }\r\n\r\n // Determine trailing zeros.\r\n for (k = xc.length; !xc[--k];);\r\n\r\n // E.g. [4, 11, 15] becomes 4bf.\r\n for (i = 0, str = ''; i <= k; str += alphabet.charAt(xc[i++]));\r\n\r\n // Add leading zeros, decimal point and trailing zeros as required.\r\n str = toFixedPoint(str, e, alphabet.charAt(0));\r\n }\r\n\r\n // The caller will add the sign.\r\n return str;\r\n };\r\n })();\r\n\r\n\r\n // Perform division in the specified base. Called by div and convertBase.\r\n div = (function () {\r\n\r\n // Assume non-zero x and k.\r\n function multiply(x, k, base) {\r\n var m, temp, xlo, xhi,\r\n carry = 0,\r\n i = x.length,\r\n klo = k % SQRT_BASE,\r\n khi = k / SQRT_BASE | 0;\r\n\r\n for (x = x.slice(); i--;) {\r\n xlo = x[i] % SQRT_BASE;\r\n xhi = x[i] / SQRT_BASE | 0;\r\n m = khi * xlo + xhi * klo;\r\n temp = klo * xlo + ((m % SQRT_BASE) * SQRT_BASE) + carry;\r\n carry = (temp / base | 0) + (m / SQRT_BASE | 0) + khi * xhi;\r\n x[i] = temp % base;\r\n }\r\n\r\n if (carry) x = [carry].concat(x);\r\n\r\n return x;\r\n }\r\n\r\n function compare(a, b, aL, bL) {\r\n var i, cmp;\r\n\r\n if (aL != bL) {\r\n cmp = aL > bL ? 1 : -1;\r\n } else {\r\n\r\n for (i = cmp = 0; i < aL; i++) {\r\n\r\n if (a[i] != b[i]) {\r\n cmp = a[i] > b[i] ? 1 : -1;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return cmp;\r\n }\r\n\r\n function subtract(a, b, aL, base) {\r\n var i = 0;\r\n\r\n // Subtract b from a.\r\n for (; aL--;) {\r\n a[aL] -= i;\r\n i = a[aL] < b[aL] ? 1 : 0;\r\n a[aL] = i * base + a[aL] - b[aL];\r\n }\r\n\r\n // Remove leading zeros.\r\n for (; !a[0] && a.length > 1; a.splice(0, 1));\r\n }\r\n\r\n // x: dividend, y: divisor.\r\n return function (x, y, dp, rm, base) {\r\n var cmp, e, i, more, n, prod, prodL, q, qc, rem, remL, rem0, xi, xL, yc0,\r\n yL, yz,\r\n s = x.s == y.s ? 1 : -1,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n // Either NaN, Infinity or 0?\r\n if (!xc || !xc[0] || !yc || !yc[0]) {\r\n\r\n return new BigNumber(\r\n\r\n // Return NaN if either NaN, or both Infinity or 0.\r\n !x.s || !y.s || (xc ? yc && xc[0] == yc[0] : !yc) ? NaN :\r\n\r\n // Return ±0 if x is ±0 or y is ±Infinity, or return ±Infinity as y is ±0.\r\n xc && xc[0] == 0 || !yc ? s * 0 : s / 0\r\n );\r\n }\r\n\r\n q = new BigNumber(s);\r\n qc = q.c = [];\r\n e = x.e - y.e;\r\n s = dp + e + 1;\r\n\r\n if (!base) {\r\n base = BASE;\r\n e = bitFloor(x.e / LOG_BASE) - bitFloor(y.e / LOG_BASE);\r\n s = s / LOG_BASE | 0;\r\n }\r\n\r\n // Result exponent may be one less then the current value of e.\r\n // The coefficients of the BigNumbers from convertBase may have trailing zeros.\r\n for (i = 0; yc[i] == (xc[i] || 0); i++);\r\n\r\n if (yc[i] > (xc[i] || 0)) e--;\r\n\r\n if (s < 0) {\r\n qc.push(1);\r\n more = true;\r\n } else {\r\n xL = xc.length;\r\n yL = yc.length;\r\n i = 0;\r\n s += 2;\r\n\r\n // Normalise xc and yc so highest order digit of yc is >= base / 2.\r\n\r\n n = mathfloor(base / (yc[0] + 1));\r\n\r\n // Not necessary, but to handle odd bases where yc[0] == (base / 2) - 1.\r\n // if (n > 1 || n++ == 1 && yc[0] < base / 2) {\r\n if (n > 1) {\r\n yc = multiply(yc, n, base);\r\n xc = multiply(xc, n, base);\r\n yL = yc.length;\r\n xL = xc.length;\r\n }\r\n\r\n xi = yL;\r\n rem = xc.slice(0, yL);\r\n remL = rem.length;\r\n\r\n // Add zeros to make remainder as long as divisor.\r\n for (; remL < yL; rem[remL++] = 0);\r\n yz = yc.slice();\r\n yz = [0].concat(yz);\r\n yc0 = yc[0];\r\n if (yc[1] >= base / 2) yc0++;\r\n // Not necessary, but to prevent trial digit n > base, when using base 3.\r\n // else if (base == 3 && yc0 == 1) yc0 = 1 + 1e-15;\r\n\r\n do {\r\n n = 0;\r\n\r\n // Compare divisor and remainder.\r\n cmp = compare(yc, rem, yL, remL);\r\n\r\n // If divisor < remainder.\r\n if (cmp < 0) {\r\n\r\n // Calculate trial digit, n.\r\n\r\n rem0 = rem[0];\r\n if (yL != remL) rem0 = rem0 * base + (rem[1] || 0);\r\n\r\n // n is how many times the divisor goes into the current remainder.\r\n n = mathfloor(rem0 / yc0);\r\n\r\n // Algorithm:\r\n // product = divisor multiplied by trial digit (n).\r\n // Compare product and remainder.\r\n // If product is greater than remainder:\r\n // Subtract divisor from product, decrement trial digit.\r\n // Subtract product from remainder.\r\n // If product was less than remainder at the last compare:\r\n // Compare new remainder and divisor.\r\n // If remainder is greater than divisor:\r\n // Subtract divisor from remainder, increment trial digit.\r\n\r\n if (n > 1) {\r\n\r\n // n may be > base only when base is 3.\r\n if (n >= base) n = base - 1;\r\n\r\n // product = divisor * trial digit.\r\n prod = multiply(yc, n, base);\r\n prodL = prod.length;\r\n remL = rem.length;\r\n\r\n // Compare product and remainder.\r\n // If product > remainder then trial digit n too high.\r\n // n is 1 too high about 5% of the time, and is not known to have\r\n // ever been more than 1 too high.\r\n while (compare(prod, rem, prodL, remL) == 1) {\r\n n--;\r\n\r\n // Subtract divisor from product.\r\n subtract(prod, yL < prodL ? yz : yc, prodL, base);\r\n prodL = prod.length;\r\n cmp = 1;\r\n }\r\n } else {\r\n\r\n // n is 0 or 1, cmp is -1.\r\n // If n is 0, there is no need to compare yc and rem again below,\r\n // so change cmp to 1 to avoid it.\r\n // If n is 1, leave cmp as -1, so yc and rem are compared again.\r\n if (n == 0) {\r\n\r\n // divisor < remainder, so n must be at least 1.\r\n cmp = n = 1;\r\n }\r\n\r\n // product = divisor\r\n prod = yc.slice();\r\n prodL = prod.length;\r\n }\r\n\r\n if (prodL < remL) prod = [0].concat(prod);\r\n\r\n // Subtract product from remainder.\r\n subtract(rem, prod, remL, base);\r\n remL = rem.length;\r\n\r\n // If product was < remainder.\r\n if (cmp == -1) {\r\n\r\n // Compare divisor and new remainder.\r\n // If divisor < new remainder, subtract divisor from remainder.\r\n // Trial digit n too low.\r\n // n is 1 too low about 5% of the time, and very rarely 2 too low.\r\n while (compare(yc, rem, yL, remL) < 1) {\r\n n++;\r\n\r\n // Subtract divisor from remainder.\r\n subtract(rem, yL < remL ? yz : yc, remL, base);\r\n remL = rem.length;\r\n }\r\n }\r\n } else if (cmp === 0) {\r\n n++;\r\n rem = [0];\r\n } // else cmp === 1 and n will be 0\r\n\r\n // Add the next digit, n, to the result array.\r\n qc[i++] = n;\r\n\r\n // Update the remainder.\r\n if (rem[0]) {\r\n rem[remL++] = xc[xi] || 0;\r\n } else {\r\n rem = [xc[xi]];\r\n remL = 1;\r\n }\r\n } while ((xi++ < xL || rem[0] != null) && s--);\r\n\r\n more = rem[0] != null;\r\n\r\n // Leading zero?\r\n if (!qc[0]) qc.splice(0, 1);\r\n }\r\n\r\n if (base == BASE) {\r\n\r\n // To calculate q.e, first get the number of digits of qc[0].\r\n for (i = 1, s = qc[0]; s >= 10; s /= 10, i++);\r\n\r\n round(q, dp + (q.e = i + e * LOG_BASE - 1) + 1, rm, more);\r\n\r\n // Caller is convertBase.\r\n } else {\r\n q.e = e;\r\n q.r = +more;\r\n }\r\n\r\n return q;\r\n };\r\n })();\r\n\r\n\r\n /*\r\n * Return a string representing the value of BigNumber n in fixed-point or exponential\r\n * notation rounded to the specified decimal places or significant digits.\r\n *\r\n * n: a BigNumber.\r\n * i: the index of the last digit required (i.e. the digit that may be rounded up).\r\n * rm: the rounding mode.\r\n * id: 1 (toExponential) or 2 (toPrecision).\r\n */\r\n function format(n, i, rm, id) {\r\n var c0, e, ne, len, str;\r\n\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n if (!n.c) return n.toString();\r\n\r\n c0 = n.c[0];\r\n ne = n.e;\r\n\r\n if (i == null) {\r\n str = coeffToString(n.c);\r\n str = id == 1 || id == 2 && (ne <= TO_EXP_NEG || ne >= TO_EXP_POS)\r\n ? toExponential(str, ne)\r\n : toFixedPoint(str, ne, '0');\r\n } else {\r\n n = round(new BigNumber(n), i, rm);\r\n\r\n // n.e may have changed if the value was rounded up.\r\n e = n.e;\r\n\r\n str = coeffToString(n.c);\r\n len = str.length;\r\n\r\n // toPrecision returns exponential notation if the number of significant digits\r\n // specified is less than the number of digits necessary to represent the integer\r\n // part of the value in fixed-point notation.\r\n\r\n // Exponential notation.\r\n if (id == 1 || id == 2 && (i <= e || e <= TO_EXP_NEG)) {\r\n\r\n // Append zeros?\r\n for (; len < i; str += '0', len++);\r\n str = toExponential(str, e);\r\n\r\n // Fixed-point notation.\r\n } else {\r\n i -= ne + (id === 2 && e > ne);\r\n str = toFixedPoint(str, e, '0');\r\n\r\n // Append zeros?\r\n if (e + 1 > len) {\r\n if (--i > 0) for (str += '.'; i--; str += '0');\r\n } else {\r\n i += e - len;\r\n if (i > 0) {\r\n if (e + 1 == len) str += '.';\r\n for (; i--; str += '0');\r\n }\r\n }\r\n }\r\n }\r\n\r\n return n.s < 0 && c0 ? '-' + str : str;\r\n }\r\n\r\n\r\n // Handle BigNumber.max and BigNumber.min.\r\n // If any number is NaN, return NaN.\r\n function maxOrMin(args, n) {\r\n var k, y,\r\n i = 1,\r\n x = new BigNumber(args[0]);\r\n\r\n for (; i < args.length; i++) {\r\n y = new BigNumber(args[i]);\r\n if (!y.s || (k = compare(x, y)) === n || k === 0 && x.s === n) {\r\n x = y;\r\n }\r\n }\r\n\r\n return x;\r\n }\r\n\r\n\r\n /*\r\n * Strip trailing zeros, calculate base 10 exponent and check against MIN_EXP and MAX_EXP.\r\n * Called by minus, plus and times.\r\n */\r\n function normalise(n, c, e) {\r\n var i = 1,\r\n j = c.length;\r\n\r\n // Remove trailing zeros.\r\n for (; !c[--j]; c.pop());\r\n\r\n // Calculate the base 10 exponent. First get the number of digits of c[0].\r\n for (j = c[0]; j >= 10; j /= 10, i++);\r\n\r\n // Overflow?\r\n if ((e = i + e * LOG_BASE - 1) > MAX_EXP) {\r\n\r\n // Infinity.\r\n n.c = n.e = null;\r\n\r\n // Underflow?\r\n } else if (e < MIN_EXP) {\r\n\r\n // Zero.\r\n n.c = [n.e = 0];\r\n } else {\r\n n.e = e;\r\n n.c = c;\r\n }\r\n\r\n return n;\r\n }\r\n\r\n\r\n // Handle values that fail the validity test in BigNumber.\r\n parseNumeric = (function () {\r\n var basePrefix = /^(-?)0([xbo])(?=\\w[\\w.]*$)/i,\r\n dotAfter = /^([^.]+)\\.$/,\r\n dotBefore = /^\\.([^.]+)$/,\r\n isInfinityOrNaN = /^-?(Infinity|NaN)$/,\r\n whitespaceOrPlus = /^\\s*\\+(?=[\\w.])|^\\s+|\\s+$/g;\r\n\r\n return function (x, str, isNum, b) {\r\n var base,\r\n s = isNum ? str : str.replace(whitespaceOrPlus, '');\r\n\r\n // No exception on ±Infinity or NaN.\r\n if (isInfinityOrNaN.test(s)) {\r\n x.s = isNaN(s) ? null : s < 0 ? -1 : 1;\r\n } else {\r\n if (!isNum) {\r\n\r\n // basePrefix = /^(-?)0([xbo])(?=\\w[\\w.]*$)/i\r\n s = s.replace(basePrefix, function (m, p1, p2) {\r\n base = (p2 = p2.toLowerCase()) == 'x' ? 16 : p2 == 'b' ? 2 : 8;\r\n return !b || b == base ? p1 : m;\r\n });\r\n\r\n if (b) {\r\n base = b;\r\n\r\n // E.g. '1.' to '1', '.1' to '0.1'\r\n s = s.replace(dotAfter, '$1').replace(dotBefore, '0.$1');\r\n }\r\n\r\n if (str != s) return new BigNumber(s, base);\r\n }\r\n\r\n // '[BigNumber Error] Not a number: {n}'\r\n // '[BigNumber Error] Not a base {b} number: {n}'\r\n if (BigNumber.DEBUG) {\r\n throw Error\r\n (bignumberError + 'Not a' + (b ? ' base ' + b : '') + ' number: ' + str);\r\n }\r\n\r\n // NaN\r\n x.s = null;\r\n }\r\n\r\n x.c = x.e = null;\r\n }\r\n })();\r\n\r\n\r\n /*\r\n * Round x to sd significant digits using rounding mode rm. Check for over/under-flow.\r\n * If r is truthy, it is known that there are more digits after the rounding digit.\r\n */\r\n function round(x, sd, rm, r) {\r\n var d, i, j, k, n, ni, rd,\r\n xc = x.c,\r\n pows10 = POWS_TEN;\r\n\r\n // if x is not Infinity or NaN...\r\n if (xc) {\r\n\r\n // rd is the rounding digit, i.e. the digit after the digit that may be rounded up.\r\n // n is a base 1e14 number, the value of the element of array x.c containing rd.\r\n // ni is the index of n within x.c.\r\n // d is the number of digits of n.\r\n // i is the index of rd within n including leading zeros.\r\n // j is the actual index of rd within n (if < 0, rd is a leading zero).\r\n out: {\r\n\r\n // Get the number of digits of the first element of xc.\r\n for (d = 1, k = xc[0]; k >= 10; k /= 10, d++);\r\n i = sd - d;\r\n\r\n // If the rounding digit is in the first element of xc...\r\n if (i < 0) {\r\n i += LOG_BASE;\r\n j = sd;\r\n n = xc[ni = 0];\r\n\r\n // Get the rounding digit at index j of n.\r\n rd = mathfloor(n / pows10[d - j - 1] % 10);\r\n } else {\r\n ni = mathceil((i + 1) / LOG_BASE);\r\n\r\n if (ni >= xc.length) {\r\n\r\n if (r) {\r\n\r\n // Needed by sqrt.\r\n for (; xc.length <= ni; xc.push(0));\r\n n = rd = 0;\r\n d = 1;\r\n i %= LOG_BASE;\r\n j = i - LOG_BASE + 1;\r\n } else {\r\n break out;\r\n }\r\n } else {\r\n n = k = xc[ni];\r\n\r\n // Get the number of digits of n.\r\n for (d = 1; k >= 10; k /= 10, d++);\r\n\r\n // Get the index of rd within n.\r\n i %= LOG_BASE;\r\n\r\n // Get the index of rd within n, adjusted for leading zeros.\r\n // The number of leading zeros of n is given by LOG_BASE - d.\r\n j = i - LOG_BASE + d;\r\n\r\n // Get the rounding digit at index j of n.\r\n rd = j < 0 ? 0 : mathfloor(n / pows10[d - j - 1] % 10);\r\n }\r\n }\r\n\r\n r = r || sd < 0 ||\r\n\r\n // Are there any non-zero digits after the rounding digit?\r\n // The expression n % pows10[d - j - 1] returns all digits of n to the right\r\n // of the digit at j, e.g. if n is 908714 and j is 2, the expression gives 714.\r\n xc[ni + 1] != null || (j < 0 ? n : n % pows10[d - j - 1]);\r\n\r\n r = rm < 4\r\n ? (rd || r) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n : rd > 5 || rd == 5 && (rm == 4 || r || rm == 6 &&\r\n\r\n // Check whether the digit to the left of the rounding digit is odd.\r\n ((i > 0 ? j > 0 ? n / pows10[d - j] : 0 : xc[ni - 1]) % 10) & 1 ||\r\n rm == (x.s < 0 ? 8 : 7));\r\n\r\n if (sd < 1 || !xc[0]) {\r\n xc.length = 0;\r\n\r\n if (r) {\r\n\r\n // Convert sd to decimal places.\r\n sd -= x.e + 1;\r\n\r\n // 1, 0.1, 0.01, 0.001, 0.0001 etc.\r\n xc[0] = pows10[(LOG_BASE - sd % LOG_BASE) % LOG_BASE];\r\n x.e = -sd || 0;\r\n } else {\r\n\r\n // Zero.\r\n xc[0] = x.e = 0;\r\n }\r\n\r\n return x;\r\n }\r\n\r\n // Remove excess digits.\r\n if (i == 0) {\r\n xc.length = ni;\r\n k = 1;\r\n ni--;\r\n } else {\r\n xc.length = ni + 1;\r\n k = pows10[LOG_BASE - i];\r\n\r\n // E.g. 56700 becomes 56000 if 7 is the rounding digit.\r\n // j > 0 means i > number of leading zeros of n.\r\n xc[ni] = j > 0 ? mathfloor(n / pows10[d - j] % pows10[j]) * k : 0;\r\n }\r\n\r\n // Round up?\r\n if (r) {\r\n\r\n for (; ;) {\r\n\r\n // If the digit to be rounded up is in the first element of xc...\r\n if (ni == 0) {\r\n\r\n // i will be the length of xc[0] before k is added.\r\n for (i = 1, j = xc[0]; j >= 10; j /= 10, i++);\r\n j = xc[0] += k;\r\n for (k = 1; j >= 10; j /= 10, k++);\r\n\r\n // if i != k the length has increased.\r\n if (i != k) {\r\n x.e++;\r\n if (xc[0] == BASE) xc[0] = 1;\r\n }\r\n\r\n break;\r\n } else {\r\n xc[ni] += k;\r\n if (xc[ni] != BASE) break;\r\n xc[ni--] = 0;\r\n k = 1;\r\n }\r\n }\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (i = xc.length; xc[--i] === 0; xc.pop());\r\n }\r\n\r\n // Overflow? Infinity.\r\n if (x.e > MAX_EXP) {\r\n x.c = x.e = null;\r\n\r\n // Underflow? Zero.\r\n } else if (x.e < MIN_EXP) {\r\n x.c = [x.e = 0];\r\n }\r\n }\r\n\r\n return x;\r\n }\r\n\r\n\r\n function valueOf(n) {\r\n var str,\r\n e = n.e;\r\n\r\n if (e === null) return n.toString();\r\n\r\n str = coeffToString(n.c);\r\n\r\n str = e <= TO_EXP_NEG || e >= TO_EXP_POS\r\n ? toExponential(str, e)\r\n : toFixedPoint(str, e, '0');\r\n\r\n return n.s < 0 ? '-' + str : str;\r\n }\r\n\r\n\r\n // PROTOTYPE/INSTANCE METHODS\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the absolute value of this BigNumber.\r\n */\r\n P.absoluteValue = P.abs = function () {\r\n var x = new BigNumber(this);\r\n if (x.s < 0) x.s = 1;\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * Return\r\n * 1 if the value of this BigNumber is greater than the value of BigNumber(y, b),\r\n * -1 if the value of this BigNumber is less than the value of BigNumber(y, b),\r\n * 0 if they have the same value,\r\n * or null if the value of either is NaN.\r\n */\r\n P.comparedTo = function (y, b) {\r\n return compare(this, new BigNumber(y, b));\r\n };\r\n\r\n\r\n /*\r\n * If dp is undefined or null or true or false, return the number of decimal places of the\r\n * value of this BigNumber, or null if the value of this BigNumber is ±Infinity or NaN.\r\n *\r\n * Otherwise, if dp is a number, return a new BigNumber whose value is the value of this\r\n * BigNumber rounded to a maximum of dp decimal places using rounding mode rm, or\r\n * ROUNDING_MODE if rm is omitted.\r\n *\r\n * [dp] {number} Decimal places: integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.decimalPlaces = P.dp = function (dp, rm) {\r\n var c, n, v,\r\n x = this;\r\n\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n return round(new BigNumber(x), dp + x.e + 1, rm);\r\n }\r\n\r\n if (!(c = x.c)) return null;\r\n n = ((v = c.length - 1) - bitFloor(this.e / LOG_BASE)) * LOG_BASE;\r\n\r\n // Subtract the number of trailing zeros of the last number.\r\n if (v = c[v]) for (; v % 10 == 0; v /= 10, n--);\r\n if (n < 0) n = 0;\r\n\r\n return n;\r\n };\r\n\r\n\r\n /*\r\n * n / 0 = I\r\n * n / N = N\r\n * n / I = 0\r\n * 0 / n = 0\r\n * 0 / 0 = N\r\n * 0 / N = N\r\n * 0 / I = 0\r\n * N / n = N\r\n * N / 0 = N\r\n * N / N = N\r\n * N / I = N\r\n * I / n = I\r\n * I / 0 = I\r\n * I / N = N\r\n * I / I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber divided by the value of\r\n * BigNumber(y, b), rounded according to DECIMAL_PLACES and ROUNDING_MODE.\r\n */\r\n P.dividedBy = P.div = function (y, b) {\r\n return div(this, new BigNumber(y, b), DECIMAL_PLACES, ROUNDING_MODE);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the integer part of dividing the value of this\r\n * BigNumber by the value of BigNumber(y, b).\r\n */\r\n P.dividedToIntegerBy = P.idiv = function (y, b) {\r\n return div(this, new BigNumber(y, b), 0, 1);\r\n };\r\n\r\n\r\n /*\r\n * Return a BigNumber whose value is the value of this BigNumber exponentiated by n.\r\n *\r\n * If m is present, return the result modulo m.\r\n * If n is negative round according to DECIMAL_PLACES and ROUNDING_MODE.\r\n * If POW_PRECISION is non-zero and m is not present, round to POW_PRECISION using ROUNDING_MODE.\r\n *\r\n * The modular power operation works efficiently when x, n, and m are integers, otherwise it\r\n * is equivalent to calculating x.exponentiatedBy(n).modulo(m) with a POW_PRECISION of 0.\r\n *\r\n * n {number|string|BigNumber} The exponent. An integer.\r\n * [m] {number|string|BigNumber} The modulus.\r\n *\r\n * '[BigNumber Error] Exponent not an integer: {n}'\r\n */\r\n P.exponentiatedBy = P.pow = function (n, m) {\r\n var half, isModExp, i, k, more, nIsBig, nIsNeg, nIsOdd, y,\r\n x = this;\r\n\r\n n = new BigNumber(n);\r\n\r\n // Allow NaN and ±Infinity, but not other non-integers.\r\n if (n.c && !n.isInteger()) {\r\n throw Error\r\n (bignumberError + 'Exponent not an integer: ' + valueOf(n));\r\n }\r\n\r\n if (m != null) m = new BigNumber(m);\r\n\r\n // Exponent of MAX_SAFE_INTEGER is 15.\r\n nIsBig = n.e > 14;\r\n\r\n // If x is NaN, ±Infinity, ±0 or ±1, or n is ±Infinity, NaN or ±0.\r\n if (!x.c || !x.c[0] || x.c[0] == 1 && !x.e && x.c.length == 1 || !n.c || !n.c[0]) {\r\n\r\n // The sign of the result of pow when x is negative depends on the evenness of n.\r\n // If +n overflows to ±Infinity, the evenness of n would be not be known.\r\n y = new BigNumber(Math.pow(+valueOf(x), nIsBig ? n.s * (2 - isOdd(n)) : +valueOf(n)));\r\n return m ? y.mod(m) : y;\r\n }\r\n\r\n nIsNeg = n.s < 0;\r\n\r\n if (m) {\r\n\r\n // x % m returns NaN if abs(m) is zero, or m is NaN.\r\n if (m.c ? !m.c[0] : !m.s) return new BigNumber(NaN);\r\n\r\n isModExp = !nIsNeg && x.isInteger() && m.isInteger();\r\n\r\n if (isModExp) x = x.mod(m);\r\n\r\n // Overflow to ±Infinity: >=2**1e10 or >=1.0000024**1e15.\r\n // Underflow to ±0: <=0.79**1e10 or <=0.9999975**1e15.\r\n } else if (n.e > 9 && (x.e > 0 || x.e < -1 || (x.e == 0\r\n // [1, 240000000]\r\n ? x.c[0] > 1 || nIsBig && x.c[1] >= 24e7\r\n // [80000000000000] [99999750000000]\r\n : x.c[0] < 8e13 || nIsBig && x.c[0] <= 9999975e7))) {\r\n\r\n // If x is negative and n is odd, k = -0, else k = 0.\r\n k = x.s < 0 && isOdd(n) ? -0 : 0;\r\n\r\n // If x >= 1, k = ±Infinity.\r\n if (x.e > -1) k = 1 / k;\r\n\r\n // If n is negative return ±0, else return ±Infinity.\r\n return new BigNumber(nIsNeg ? 1 / k : k);\r\n\r\n } else if (POW_PRECISION) {\r\n\r\n // Truncating each coefficient array to a length of k after each multiplication\r\n // equates to truncating significant digits to POW_PRECISION + [28, 41],\r\n // i.e. there will be a minimum of 28 guard digits retained.\r\n k = mathceil(POW_PRECISION / LOG_BASE + 2);\r\n }\r\n\r\n if (nIsBig) {\r\n half = new BigNumber(0.5);\r\n if (nIsNeg) n.s = 1;\r\n nIsOdd = isOdd(n);\r\n } else {\r\n i = Math.abs(+valueOf(n));\r\n nIsOdd = i % 2;\r\n }\r\n\r\n y = new BigNumber(ONE);\r\n\r\n // Performs 54 loop iterations for n of 9007199254740991.\r\n for (; ;) {\r\n\r\n if (nIsOdd) {\r\n y = y.times(x);\r\n if (!y.c) break;\r\n\r\n if (k) {\r\n if (y.c.length > k) y.c.length = k;\r\n } else if (isModExp) {\r\n y = y.mod(m); //y = y.minus(div(y, m, 0, MODULO_MODE).times(m));\r\n }\r\n }\r\n\r\n if (i) {\r\n i = mathfloor(i / 2);\r\n if (i === 0) break;\r\n nIsOdd = i % 2;\r\n } else {\r\n n = n.times(half);\r\n round(n, n.e + 1, 1);\r\n\r\n if (n.e > 14) {\r\n nIsOdd = isOdd(n);\r\n } else {\r\n i = +valueOf(n);\r\n if (i === 0) break;\r\n nIsOdd = i % 2;\r\n }\r\n }\r\n\r\n x = x.times(x);\r\n\r\n if (k) {\r\n if (x.c && x.c.length > k) x.c.length = k;\r\n } else if (isModExp) {\r\n x = x.mod(m); //x = x.minus(div(x, m, 0, MODULO_MODE).times(m));\r\n }\r\n }\r\n\r\n if (isModExp) return y;\r\n if (nIsNeg) y = ONE.div(y);\r\n\r\n return m ? y.mod(m) : k ? round(y, POW_PRECISION, ROUNDING_MODE, more) : y;\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber rounded to an integer\r\n * using rounding mode rm, or ROUNDING_MODE if rm is omitted.\r\n *\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {rm}'\r\n */\r\n P.integerValue = function (rm) {\r\n var n = new BigNumber(this);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n return round(n, n.e + 1, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is equal to the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isEqualTo = P.eq = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) === 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is a finite number, otherwise return false.\r\n */\r\n P.isFinite = function () {\r\n return !!this.c;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is greater than the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isGreaterThan = P.gt = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is greater than or equal to the value of\r\n * BigNumber(y, b), otherwise return false.\r\n */\r\n P.isGreaterThanOrEqualTo = P.gte = function (y, b) {\r\n return (b = compare(this, new BigNumber(y, b))) === 1 || b === 0;\r\n\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is an integer, otherwise return false.\r\n */\r\n P.isInteger = function () {\r\n return !!this.c && bitFloor(this.e / LOG_BASE) > this.c.length - 2;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is less than the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isLessThan = P.lt = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is less than or equal to the value of\r\n * BigNumber(y, b), otherwise return false.\r\n */\r\n P.isLessThanOrEqualTo = P.lte = function (y, b) {\r\n return (b = compare(this, new BigNumber(y, b))) === -1 || b === 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is NaN, otherwise return false.\r\n */\r\n P.isNaN = function () {\r\n return !this.s;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is negative, otherwise return false.\r\n */\r\n P.isNegative = function () {\r\n return this.s < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is positive, otherwise return false.\r\n */\r\n P.isPositive = function () {\r\n return this.s > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is 0 or -0, otherwise return false.\r\n */\r\n P.isZero = function () {\r\n return !!this.c && this.c[0] == 0;\r\n };\r\n\r\n\r\n /*\r\n * n - 0 = n\r\n * n - N = N\r\n * n - I = -I\r\n * 0 - n = -n\r\n * 0 - 0 = 0\r\n * 0 - N = N\r\n * 0 - I = -I\r\n * N - n = N\r\n * N - 0 = N\r\n * N - N = N\r\n * N - I = N\r\n * I - n = I\r\n * I - 0 = I\r\n * I - N = N\r\n * I - I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber minus the value of\r\n * BigNumber(y, b).\r\n */\r\n P.minus = function (y, b) {\r\n var i, j, t, xLTy,\r\n x = this,\r\n a = x.s;\r\n\r\n y = new BigNumber(y, b);\r\n b = y.s;\r\n\r\n // Either NaN?\r\n if (!a || !b) return new BigNumber(NaN);\r\n\r\n // Signs differ?\r\n if (a != b) {\r\n y.s = -b;\r\n return x.plus(y);\r\n }\r\n\r\n var xe = x.e / LOG_BASE,\r\n ye = y.e / LOG_BASE,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n if (!xe || !ye) {\r\n\r\n // Either Infinity?\r\n if (!xc || !yc) return xc ? (y.s = -b, y) : new BigNumber(yc ? x : NaN);\r\n\r\n // Either zero?\r\n if (!xc[0] || !yc[0]) {\r\n\r\n // Return y if y is non-zero, x if x is non-zero, or zero if both are zero.\r\n return yc[0] ? (y.s = -b, y) : new BigNumber(xc[0] ? x :\r\n\r\n // IEEE 754 (2008) 6.3: n - n = -0 when rounding to -Infinity\r\n ROUNDING_MODE == 3 ? -0 : 0);\r\n }\r\n }\r\n\r\n xe = bitFloor(xe);\r\n ye = bitFloor(ye);\r\n xc = xc.slice();\r\n\r\n // Determine which is the bigger number.\r\n if (a = xe - ye) {\r\n\r\n if (xLTy = a < 0) {\r\n a = -a;\r\n t = xc;\r\n } else {\r\n ye = xe;\r\n t = yc;\r\n }\r\n\r\n t.reverse();\r\n\r\n // Prepend zeros to equalise exponents.\r\n for (b = a; b--; t.push(0));\r\n t.reverse();\r\n } else {\r\n\r\n // Exponents equal. Check digit by digit.\r\n j = (xLTy = (a = xc.length) < (b = yc.length)) ? a : b;\r\n\r\n for (a = b = 0; b < j; b++) {\r\n\r\n if (xc[b] != yc[b]) {\r\n xLTy = xc[b] < yc[b];\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // x < y? Point xc to the array of the bigger number.\r\n if (xLTy) {\r\n t = xc;\r\n xc = yc;\r\n yc = t;\r\n y.s = -y.s;\r\n }\r\n\r\n b = (j = yc.length) - (i = xc.length);\r\n\r\n // Append zeros to xc if shorter.\r\n // No need to add zeros to yc if shorter as subtract only needs to start at yc.length.\r\n if (b > 0) for (; b--; xc[i++] = 0);\r\n b = BASE - 1;\r\n\r\n // Subtract yc from xc.\r\n for (; j > a;) {\r\n\r\n if (xc[--j] < yc[j]) {\r\n for (i = j; i && !xc[--i]; xc[i] = b);\r\n --xc[i];\r\n xc[j] += BASE;\r\n }\r\n\r\n xc[j] -= yc[j];\r\n }\r\n\r\n // Remove leading zeros and adjust exponent accordingly.\r\n for (; xc[0] == 0; xc.splice(0, 1), --ye);\r\n\r\n // Zero?\r\n if (!xc[0]) {\r\n\r\n // Following IEEE 754 (2008) 6.3,\r\n // n - n = +0 but n - n = -0 when rounding towards -Infinity.\r\n y.s = ROUNDING_MODE == 3 ? -1 : 1;\r\n y.c = [y.e = 0];\r\n return y;\r\n }\r\n\r\n // No need to check for Infinity as +x - +y != Infinity && -x - -y != Infinity\r\n // for finite x and y.\r\n return normalise(y, xc, ye);\r\n };\r\n\r\n\r\n /*\r\n * n % 0 = N\r\n * n % N = N\r\n * n % I = n\r\n * 0 % n = 0\r\n * -0 % n = -0\r\n * 0 % 0 = N\r\n * 0 % N = N\r\n * 0 % I = 0\r\n * N % n = N\r\n * N % 0 = N\r\n * N % N = N\r\n * N % I = N\r\n * I % n = N\r\n * I % 0 = N\r\n * I % N = N\r\n * I % I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber modulo the value of\r\n * BigNumber(y, b). The result depends on the value of MODULO_MODE.\r\n */\r\n P.modulo = P.mod = function (y, b) {\r\n var q, s,\r\n x = this;\r\n\r\n y = new BigNumber(y, b);\r\n\r\n // Return NaN if x is Infinity or NaN, or y is NaN or zero.\r\n if (!x.c || !y.s || y.c && !y.c[0]) {\r\n return new BigNumber(NaN);\r\n\r\n // Return x if y is Infinity or x is zero.\r\n } else if (!y.c || x.c && !x.c[0]) {\r\n return new BigNumber(x);\r\n }\r\n\r\n if (MODULO_MODE == 9) {\r\n\r\n // Euclidian division: q = sign(y) * floor(x / abs(y))\r\n // r = x - qy where 0 <= r < abs(y)\r\n s = y.s;\r\n y.s = 1;\r\n q = div(x, y, 0, 3);\r\n y.s = s;\r\n q.s *= s;\r\n } else {\r\n q = div(x, y, 0, MODULO_MODE);\r\n }\r\n\r\n y = x.minus(q.times(y));\r\n\r\n // To match JavaScript %, ensure sign of zero is sign of dividend.\r\n if (!y.c[0] && MODULO_MODE == 1) y.s = x.s;\r\n\r\n return y;\r\n };\r\n\r\n\r\n /*\r\n * n * 0 = 0\r\n * n * N = N\r\n * n * I = I\r\n * 0 * n = 0\r\n * 0 * 0 = 0\r\n * 0 * N = N\r\n * 0 * I = N\r\n * N * n = N\r\n * N * 0 = N\r\n * N * N = N\r\n * N * I = N\r\n * I * n = I\r\n * I * 0 = N\r\n * I * N = N\r\n * I * I = I\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber multiplied by the value\r\n * of BigNumber(y, b).\r\n */\r\n P.multipliedBy = P.times = function (y, b) {\r\n var c, e, i, j, k, m, xcL, xlo, xhi, ycL, ylo, yhi, zc,\r\n base, sqrtBase,\r\n x = this,\r\n xc = x.c,\r\n yc = (y = new BigNumber(y, b)).c;\r\n\r\n // Either NaN, ±Infinity or ±0?\r\n if (!xc || !yc || !xc[0] || !yc[0]) {\r\n\r\n // Return NaN if either is NaN, or one is 0 and the other is Infinity.\r\n if (!x.s || !y.s || xc && !xc[0] && !yc || yc && !yc[0] && !xc) {\r\n y.c = y.e = y.s = null;\r\n } else {\r\n y.s *= x.s;\r\n\r\n // Return ±Infinity if either is ±Infinity.\r\n if (!xc || !yc) {\r\n y.c = y.e = null;\r\n\r\n // Return ±0 if either is ±0.\r\n } else {\r\n y.c = [0];\r\n y.e = 0;\r\n }\r\n }\r\n\r\n return y;\r\n }\r\n\r\n e = bitFloor(x.e / LOG_BASE) + bitFloor(y.e / LOG_BASE);\r\n y.s *= x.s;\r\n xcL = xc.length;\r\n ycL = yc.length;\r\n\r\n // Ensure xc points to longer array and xcL to its length.\r\n if (xcL < ycL) {\r\n zc = xc;\r\n xc = yc;\r\n yc = zc;\r\n i = xcL;\r\n xcL = ycL;\r\n ycL = i;\r\n }\r\n\r\n // Initialise the result array with zeros.\r\n for (i = xcL + ycL, zc = []; i--; zc.push(0));\r\n\r\n base = BASE;\r\n sqrtBase = SQRT_BASE;\r\n\r\n for (i = ycL; --i >= 0;) {\r\n c = 0;\r\n ylo = yc[i] % sqrtBase;\r\n yhi = yc[i] / sqrtBase | 0;\r\n\r\n for (k = xcL, j = i + k; j > i;) {\r\n xlo = xc[--k] % sqrtBase;\r\n xhi = xc[k] / sqrtBase | 0;\r\n m = yhi * xlo + xhi * ylo;\r\n xlo = ylo * xlo + ((m % sqrtBase) * sqrtBase) + zc[j] + c;\r\n c = (xlo / base | 0) + (m / sqrtBase | 0) + yhi * xhi;\r\n zc[j--] = xlo % base;\r\n }\r\n\r\n zc[j] = c;\r\n }\r\n\r\n if (c) {\r\n ++e;\r\n } else {\r\n zc.splice(0, 1);\r\n }\r\n\r\n return normalise(y, zc, e);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber negated,\r\n * i.e. multiplied by -1.\r\n */\r\n P.negated = function () {\r\n var x = new BigNumber(this);\r\n x.s = -x.s || null;\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * n + 0 = n\r\n * n + N = N\r\n * n + I = I\r\n * 0 + n = n\r\n * 0 + 0 = 0\r\n * 0 + N = N\r\n * 0 + I = I\r\n * N + n = N\r\n * N + 0 = N\r\n * N + N = N\r\n * N + I = N\r\n * I + n = I\r\n * I + 0 = I\r\n * I + N = N\r\n * I + I = I\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber plus the value of\r\n * BigNumber(y, b).\r\n */\r\n P.plus = function (y, b) {\r\n var t,\r\n x = this,\r\n a = x.s;\r\n\r\n y = new BigNumber(y, b);\r\n b = y.s;\r\n\r\n // Either NaN?\r\n if (!a || !b) return new BigNumber(NaN);\r\n\r\n // Signs differ?\r\n if (a != b) {\r\n y.s = -b;\r\n return x.minus(y);\r\n }\r\n\r\n var xe = x.e / LOG_BASE,\r\n ye = y.e / LOG_BASE,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n if (!xe || !ye) {\r\n\r\n // Return ±Infinity if either ±Infinity.\r\n if (!xc || !yc) return new BigNumber(a / 0);\r\n\r\n // Either zero?\r\n // Return y if y is non-zero, x if x is non-zero, or zero if both are zero.\r\n if (!xc[0] || !yc[0]) return yc[0] ? y : new BigNumber(xc[0] ? x : a * 0);\r\n }\r\n\r\n xe = bitFloor(xe);\r\n ye = bitFloor(ye);\r\n xc = xc.slice();\r\n\r\n // Prepend zeros to equalise exponents. Faster to use reverse then do unshifts.\r\n if (a = xe - ye) {\r\n if (a > 0) {\r\n ye = xe;\r\n t = yc;\r\n } else {\r\n a = -a;\r\n t = xc;\r\n }\r\n\r\n t.reverse();\r\n for (; a--; t.push(0));\r\n t.reverse();\r\n }\r\n\r\n a = xc.length;\r\n b = yc.length;\r\n\r\n // Point xc to the longer array, and b to the shorter length.\r\n if (a - b < 0) {\r\n t = yc;\r\n yc = xc;\r\n xc = t;\r\n b = a;\r\n }\r\n\r\n // Only start adding at yc.length - 1 as the further digits of xc can be ignored.\r\n for (a = 0; b;) {\r\n a = (xc[--b] = xc[b] + yc[b] + a) / BASE | 0;\r\n xc[b] = BASE === xc[b] ? 0 : xc[b] % BASE;\r\n }\r\n\r\n if (a) {\r\n xc = [a].concat(xc);\r\n ++ye;\r\n }\r\n\r\n // No need to check for zero, as +x + +y != 0 && -x + -y != 0\r\n // ye = MAX_EXP + 1 possible\r\n return normalise(y, xc, ye);\r\n };\r\n\r\n\r\n /*\r\n * If sd is undefined or null or true or false, return the number of significant digits of\r\n * the value of this BigNumber, or null if the value of this BigNumber is ±Infinity or NaN.\r\n * If sd is true include integer-part trailing zeros in the count.\r\n *\r\n * Otherwise, if sd is a number, return a new BigNumber whose value is the value of this\r\n * BigNumber rounded to a maximum of sd significant digits using rounding mode rm, or\r\n * ROUNDING_MODE if rm is omitted.\r\n *\r\n * sd {number|boolean} number: significant digits: integer, 1 to MAX inclusive.\r\n * boolean: whether to count integer-part trailing zeros: true or false.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {sd|rm}'\r\n */\r\n P.precision = P.sd = function (sd, rm) {\r\n var c, n, v,\r\n x = this;\r\n\r\n if (sd != null && sd !== !!sd) {\r\n intCheck(sd, 1, MAX);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n return round(new BigNumber(x), sd, rm);\r\n }\r\n\r\n if (!(c = x.c)) return null;\r\n v = c.length - 1;\r\n n = v * LOG_BASE + 1;\r\n\r\n if (v = c[v]) {\r\n\r\n // Subtract the number of trailing zeros of the last element.\r\n for (; v % 10 == 0; v /= 10, n--);\r\n\r\n // Add the number of digits of the first element.\r\n for (v = c[0]; v >= 10; v /= 10, n++);\r\n }\r\n\r\n if (sd && x.e + 1 > n) n = x.e + 1;\r\n\r\n return n;\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber shifted by k places\r\n * (powers of 10). Shift to the right if n > 0, and to the left if n < 0.\r\n *\r\n * k {number} Integer, -MAX_SAFE_INTEGER to MAX_SAFE_INTEGER inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {k}'\r\n */\r\n P.shiftedBy = function (k) {\r\n intCheck(k, -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER);\r\n return this.times('1e' + k);\r\n };\r\n\r\n\r\n /*\r\n * sqrt(-n) = N\r\n * sqrt(N) = N\r\n * sqrt(-I) = N\r\n * sqrt(I) = I\r\n * sqrt(0) = 0\r\n * sqrt(-0) = -0\r\n *\r\n * Return a new BigNumber whose value is the square root of the value of this BigNumber,\r\n * rounded according to DECIMAL_PLACES and ROUNDING_MODE.\r\n */\r\n P.squareRoot = P.sqrt = function () {\r\n var m, n, r, rep, t,\r\n x = this,\r\n c = x.c,\r\n s = x.s,\r\n e = x.e,\r\n dp = DECIMAL_PLACES + 4,\r\n half = new BigNumber('0.5');\r\n\r\n // Negative/NaN/Infinity/zero?\r\n if (s !== 1 || !c || !c[0]) {\r\n return new BigNumber(!s || s < 0 && (!c || c[0]) ? NaN : c ? x : 1 / 0);\r\n }\r\n\r\n // Initial estimate.\r\n s = Math.sqrt(+valueOf(x));\r\n\r\n // Math.sqrt underflow/overflow?\r\n // Pass x to Math.sqrt as integer, then adjust the exponent of the result.\r\n if (s == 0 || s == 1 / 0) {\r\n n = coeffToString(c);\r\n if ((n.length + e) % 2 == 0) n += '0';\r\n s = Math.sqrt(+n);\r\n e = bitFloor((e + 1) / 2) - (e < 0 || e % 2);\r\n\r\n if (s == 1 / 0) {\r\n n = '5e' + e;\r\n } else {\r\n n = s.toExponential();\r\n n = n.slice(0, n.indexOf('e') + 1) + e;\r\n }\r\n\r\n r = new BigNumber(n);\r\n } else {\r\n r = new BigNumber(s + '');\r\n }\r\n\r\n // Check for zero.\r\n // r could be zero if MIN_EXP is changed after the this value was created.\r\n // This would cause a division by zero (x/t) and hence Infinity below, which would cause\r\n // coeffToString to throw.\r\n if (r.c[0]) {\r\n e = r.e;\r\n s = e + dp;\r\n if (s < 3) s = 0;\r\n\r\n // Newton-Raphson iteration.\r\n for (; ;) {\r\n t = r;\r\n r = half.times(t.plus(div(x, t, dp, 1)));\r\n\r\n if (coeffToString(t.c).slice(0, s) === (n = coeffToString(r.c)).slice(0, s)) {\r\n\r\n // The exponent of r may here be one less than the final result exponent,\r\n // e.g 0.0009999 (e-4) --> 0.001 (e-3), so adjust s so the rounding digits\r\n // are indexed correctly.\r\n if (r.e < e) --s;\r\n n = n.slice(s - 3, s + 1);\r\n\r\n // The 4th rounding digit may be in error by -1 so if the 4 rounding digits\r\n // are 9999 or 4999 (i.e. approaching a rounding boundary) continue the\r\n // iteration.\r\n if (n == '9999' || !rep && n == '4999') {\r\n\r\n // On the first iteration only, check to see if rounding up gives the\r\n // exact result as the nines may infinitely repeat.\r\n if (!rep) {\r\n round(t, t.e + DECIMAL_PLACES + 2, 0);\r\n\r\n if (t.times(t).eq(x)) {\r\n r = t;\r\n break;\r\n }\r\n }\r\n\r\n dp += 4;\r\n s += 4;\r\n rep = 1;\r\n } else {\r\n\r\n // If rounding digits are null, 0{0,4} or 50{0,3}, check for exact\r\n // result. If not, then there are further digits and m will be truthy.\r\n if (!+n || !+n.slice(1) && n.charAt(0) == '5') {\r\n\r\n // Truncate to the first rounding digit.\r\n round(r, r.e + DECIMAL_PLACES + 2, 1);\r\n m = !r.times(r).eq(x);\r\n }\r\n\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return round(r, r.e + DECIMAL_PLACES + 1, ROUNDING_MODE, m);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in exponential notation and\r\n * rounded using ROUNDING_MODE to dp fixed decimal places.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.toExponential = function (dp, rm) {\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n dp++;\r\n }\r\n return format(this, dp, rm, 1);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in fixed-point notation rounding\r\n * to dp fixed decimal places using rounding mode rm, or ROUNDING_MODE if rm is omitted.\r\n *\r\n * Note: as with JavaScript's number type, (-0).toFixed(0) is '0',\r\n * but e.g. (-0.00001).toFixed(0) is '-0'.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.toFixed = function (dp, rm) {\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n dp = dp + this.e + 1;\r\n }\r\n return format(this, dp, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in fixed-point notation rounded\r\n * using rm or ROUNDING_MODE to dp decimal places, and formatted according to the properties\r\n * of the format or FORMAT object (see BigNumber.set).\r\n *\r\n * The formatting object may contain some or all of the properties shown below.\r\n *\r\n * FORMAT = {\r\n * prefix: '',\r\n * groupSize: 3,\r\n * secondaryGroupSize: 0,\r\n * groupSeparator: ',',\r\n * decimalSeparator: '.',\r\n * fractionGroupSize: 0,\r\n * fractionGroupSeparator: '\\xA0', // non-breaking space\r\n * suffix: ''\r\n * };\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n * [format] {object} Formatting options. See FORMAT pbject above.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n * '[BigNumber Error] Argument not an object: {format}'\r\n */\r\n P.toFormat = function (dp, rm, format) {\r\n var str,\r\n x = this;\r\n\r\n if (format == null) {\r\n if (dp != null && rm && typeof rm == 'object') {\r\n format = rm;\r\n rm = null;\r\n } else if (dp && typeof dp == 'object') {\r\n format = dp;\r\n dp = rm = null;\r\n } else {\r\n format = FORMAT;\r\n }\r\n } else if (typeof format != 'object') {\r\n throw Error\r\n (bignumberError + 'Argument not an object: ' + format);\r\n }\r\n\r\n str = x.toFixed(dp, rm);\r\n\r\n if (x.c) {\r\n var i,\r\n arr = str.split('.'),\r\n g1 = +format.groupSize,\r\n g2 = +format.secondaryGroupSize,\r\n groupSeparator = format.groupSeparator || '',\r\n intPart = arr[0],\r\n fractionPart = arr[1],\r\n isNeg = x.s < 0,\r\n intDigits = isNeg ? intPart.slice(1) : intPart,\r\n len = intDigits.length;\r\n\r\n if (g2) {\r\n i = g1;\r\n g1 = g2;\r\n g2 = i;\r\n len -= i;\r\n }\r\n\r\n if (g1 > 0 && len > 0) {\r\n i = len % g1 || g1;\r\n intPart = intDigits.substr(0, i);\r\n for (; i < len; i += g1) intPart += groupSeparator + intDigits.substr(i, g1);\r\n if (g2 > 0) intPart += groupSeparator + intDigits.slice(i);\r\n if (isNeg) intPart = '-' + intPart;\r\n }\r\n\r\n str = fractionPart\r\n ? intPart + (format.decimalSeparator || '') + ((g2 = +format.fractionGroupSize)\r\n ? fractionPart.replace(new RegExp('\\\\d{' + g2 + '}\\\\B', 'g'),\r\n '$&' + (format.fractionGroupSeparator || ''))\r\n : fractionPart)\r\n : intPart;\r\n }\r\n\r\n return (format.prefix || '') + str + (format.suffix || '');\r\n };\r\n\r\n\r\n /*\r\n * Return an array of two BigNumbers representing the value of this BigNumber as a simple\r\n * fraction with an integer numerator and an integer denominator.\r\n * The denominator will be a positive non-zero value less than or equal to the specified\r\n * maximum denominator. If a maximum denominator is not specified, the denominator will be\r\n * the lowest value necessary to represent the number exactly.\r\n *\r\n * [md] {number|string|BigNumber} Integer >= 1, or Infinity. The maximum denominator.\r\n *\r\n * '[BigNumber Error] Argument {not an integer|out of range} : {md}'\r\n */\r\n P.toFraction = function (md) {\r\n var d, d0, d1, d2, e, exp, n, n0, n1, q, r, s,\r\n x = this,\r\n xc = x.c;\r\n\r\n if (md != null) {\r\n n = new BigNumber(md);\r\n\r\n // Throw if md is less than one or is not an integer, unless it is Infinity.\r\n if (!n.isInteger() && (n.c || n.s !== 1) || n.lt(ONE)) {\r\n throw Error\r\n (bignumberError + 'Argument ' +\r\n (n.isInteger() ? 'out of range: ' : 'not an integer: ') + valueOf(n));\r\n }\r\n }\r\n\r\n if (!xc) return new BigNumber(x);\r\n\r\n d = new BigNumber(ONE);\r\n n1 = d0 = new BigNumber(ONE);\r\n d1 = n0 = new BigNumber(ONE);\r\n s = coeffToString(xc);\r\n\r\n // Determine initial denominator.\r\n // d is a power of 10 and the minimum max denominator that specifies the value exactly.\r\n e = d.e = s.length - x.e - 1;\r\n d.c[0] = POWS_TEN[(exp = e % LOG_BASE) < 0 ? LOG_BASE + exp : exp];\r\n md = !md || n.comparedTo(d) > 0 ? (e > 0 ? d : n1) : n;\r\n\r\n exp = MAX_EXP;\r\n MAX_EXP = 1 / 0;\r\n n = new BigNumber(s);\r\n\r\n // n0 = d1 = 0\r\n n0.c[0] = 0;\r\n\r\n for (; ;) {\r\n q = div(n, d, 0, 1);\r\n d2 = d0.plus(q.times(d1));\r\n if (d2.comparedTo(md) == 1) break;\r\n d0 = d1;\r\n d1 = d2;\r\n n1 = n0.plus(q.times(d2 = n1));\r\n n0 = d2;\r\n d = n.minus(q.times(d2 = d));\r\n n = d2;\r\n }\r\n\r\n d2 = div(md.minus(d0), d1, 0, 1);\r\n n0 = n0.plus(d2.times(n1));\r\n d0 = d0.plus(d2.times(d1));\r\n n0.s = n1.s = x.s;\r\n e = e * 2;\r\n\r\n // Determine which fraction is closer to x, n0/d0 or n1/d1\r\n r = div(n1, d1, e, ROUNDING_MODE).minus(x).abs().comparedTo(\r\n div(n0, d0, e, ROUNDING_MODE).minus(x).abs()) < 1 ? [n1, d1] : [n0, d0];\r\n\r\n MAX_EXP = exp;\r\n\r\n return r;\r\n };\r\n\r\n\r\n /*\r\n * Return the value of this BigNumber converted to a number primitive.\r\n */\r\n P.toNumber = function () {\r\n return +valueOf(this);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber rounded to sd significant digits\r\n * using rounding mode rm or ROUNDING_MODE. If sd is less than the number of digits\r\n * necessary to represent the integer part of the value in fixed-point notation, then use\r\n * exponential notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {sd|rm}'\r\n */\r\n P.toPrecision = function (sd, rm) {\r\n if (sd != null) intCheck(sd, 1, MAX);\r\n return format(this, sd, rm, 2);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in base b, or base 10 if b is\r\n * omitted. If a base is specified, including base 10, round according to DECIMAL_PLACES and\r\n * ROUNDING_MODE. If a base is not specified, and this BigNumber has a positive exponent\r\n * that is equal to or greater than TO_EXP_POS, or a negative exponent equal to or less than\r\n * TO_EXP_NEG, return exponential notation.\r\n *\r\n * [b] {number} Integer, 2 to ALPHABET.length inclusive.\r\n *\r\n * '[BigNumber Error] Base {not a primitive number|not an integer|out of range}: {b}'\r\n */\r\n P.toString = function (b) {\r\n var str,\r\n n = this,\r\n s = n.s,\r\n e = n.e;\r\n\r\n // Infinity or NaN?\r\n if (e === null) {\r\n if (s) {\r\n str = 'Infinity';\r\n if (s < 0) str = '-' + str;\r\n } else {\r\n str = 'NaN';\r\n }\r\n } else {\r\n if (b == null) {\r\n str = e <= TO_EXP_NEG || e >= TO_EXP_POS\r\n ? toExponential(coeffToString(n.c), e)\r\n : toFixedPoint(coeffToString(n.c), e, '0');\r\n } else if (b === 10 && alphabetHasNormalDecimalDigits) {\r\n n = round(new BigNumber(n), DECIMAL_PLACES + e + 1, ROUNDING_MODE);\r\n str = toFixedPoint(coeffToString(n.c), n.e, '0');\r\n } else {\r\n intCheck(b, 2, ALPHABET.length, 'Base');\r\n str = convertBase(toFixedPoint(coeffToString(n.c), e, '0'), 10, b, s, true);\r\n }\r\n\r\n if (s < 0 && n.c[0]) str = '-' + str;\r\n }\r\n\r\n return str;\r\n };\r\n\r\n\r\n /*\r\n * Return as toString, but do not accept a base argument, and include the minus sign for\r\n * negative zero.\r\n */\r\n P.valueOf = P.toJSON = function () {\r\n return valueOf(this);\r\n };\r\n\r\n\r\n P._isBigNumber = true;\r\n\r\n P[Symbol.toStringTag] = 'BigNumber';\r\n\r\n // Node.js v10.12.0+\r\n P[Symbol.for('nodejs.util.inspect.custom')] = P.valueOf;\r\n\r\n if (configObject != null) BigNumber.set(configObject);\r\n\r\n return BigNumber;\r\n}\r\n\r\n\r\n// PRIVATE HELPER FUNCTIONS\r\n\r\n// These functions don't need access to variables,\r\n// e.g. DECIMAL_PLACES, in the scope of the `clone` function above.\r\n\r\n\r\nfunction bitFloor(n) {\r\n var i = n | 0;\r\n return n > 0 || n === i ? i : i - 1;\r\n}\r\n\r\n\r\n// Return a coefficient array as a string of base 10 digits.\r\nfunction coeffToString(a) {\r\n var s, z,\r\n i = 1,\r\n j = a.length,\r\n r = a[0] + '';\r\n\r\n for (; i < j;) {\r\n s = a[i++] + '';\r\n z = LOG_BASE - s.length;\r\n for (; z--; s = '0' + s);\r\n r += s;\r\n }\r\n\r\n // Determine trailing zeros.\r\n for (j = r.length; r.charCodeAt(--j) === 48;);\r\n\r\n return r.slice(0, j + 1 || 1);\r\n}\r\n\r\n\r\n// Compare the value of BigNumbers x and y.\r\nfunction compare(x, y) {\r\n var a, b,\r\n xc = x.c,\r\n yc = y.c,\r\n i = x.s,\r\n j = y.s,\r\n k = x.e,\r\n l = y.e;\r\n\r\n // Either NaN?\r\n if (!i || !j) return null;\r\n\r\n a = xc && !xc[0];\r\n b = yc && !yc[0];\r\n\r\n // Either zero?\r\n if (a || b) return a ? b ? 0 : -j : i;\r\n\r\n // Signs differ?\r\n if (i != j) return i;\r\n\r\n a = i < 0;\r\n b = k == l;\r\n\r\n // Either Infinity?\r\n if (!xc || !yc) return b ? 0 : !xc ^ a ? 1 : -1;\r\n\r\n // Compare exponents.\r\n if (!b) return k > l ^ a ? 1 : -1;\r\n\r\n j = (k = xc.length) < (l = yc.length) ? k : l;\r\n\r\n // Compare digit by digit.\r\n for (i = 0; i < j; i++) if (xc[i] != yc[i]) return xc[i] > yc[i] ^ a ? 1 : -1;\r\n\r\n // Compare lengths.\r\n return k == l ? 0 : k > l ^ a ? 1 : -1;\r\n}\r\n\r\n\r\n/*\r\n * Check that n is a primitive number, an integer, and in range, otherwise throw.\r\n */\r\nfunction intCheck(n, min, max, name) {\r\n if (n < min || n > max || n !== mathfloor(n)) {\r\n throw Error\r\n (bignumberError + (name || 'Argument') + (typeof n == 'number'\r\n ? n < min || n > max ? ' out of range: ' : ' not an integer: '\r\n : ' not a primitive number: ') + String(n));\r\n }\r\n}\r\n\r\n\r\n// Assumes finite n.\r\nfunction isOdd(n) {\r\n var k = n.c.length - 1;\r\n return bitFloor(n.e / LOG_BASE) == k && n.c[k] % 2 != 0;\r\n}\r\n\r\n\r\nfunction toExponential(str, e) {\r\n return (str.length > 1 ? str.charAt(0) + '.' + str.slice(1) : str) +\r\n (e < 0 ? 'e' : 'e+') + e;\r\n}\r\n\r\n\r\nfunction toFixedPoint(str, e, z) {\r\n var len, zs;\r\n\r\n // Negative exponent?\r\n if (e < 0) {\r\n\r\n // Prepend zeros.\r\n for (zs = z + '.'; ++e; zs += z);\r\n str = zs + str;\r\n\r\n // Positive exponent\r\n } else {\r\n len = str.length;\r\n\r\n // Append zeros.\r\n if (++e > len) {\r\n for (zs = z, e -= len; --e; zs += z);\r\n str += zs;\r\n } else if (e < len) {\r\n str = str.slice(0, e) + '.' + str.slice(e);\r\n }\r\n }\r\n\r\n return str;\r\n}\r\n\r\n\r\n// EXPORT\r\n\r\n\r\nexport var BigNumber = clone();\r\n\r\nexport default BigNumber;\r\n","export type Rounding = 'floor' | 'ceil';\n\nexport class MathUtil {\n // Copied from https://github.com/Aisse-258/bigint-isqrt/blob/master/main.js\n static sqrt = function (value: bigint): bigint {\n if (value < 2n) {\n return value;\n }\n\n if (value < 16n) {\n return BigInt(Math.sqrt(Number(value)) | 0);\n }\n\n let x0, x1;\n if (value < 4503599627370496n) {\n //1n<<52n\n x1 = BigInt(Math.sqrt(Number(value)) | 0) - 3n;\n } else {\n const vlen = value.toString().length;\n if (!(vlen & 1)) {\n x1 = 10n ** BigInt(vlen / 2);\n } else {\n x1 = 4n * 10n ** BigInt((vlen / 2) | 0);\n }\n }\n\n do {\n x0 = x1;\n x1 = (value / x0 + x0) >> 1n;\n } while (x0 !== x1 && x0 !== x1 - 1n);\n\n return x0;\n };\n\n static alphDiv(a: bigint, b: bigint): bigint {\n const result = a / b;\n if (a * b < 0n) return result - BigInt(a % b != 0n);\n return result;\n }\n\n static alphCeil(a: bigint, b: bigint): bigint {\n const result = a / b;\n const rem = a % b;\n return result + BigInt(rem != 0n) * BigInt(rem < 0n ? -1n : 1n);\n }\n\n static divFloor(a: bigint, b: bigint): bigint {\n return this.divWithRounding(a, b, 'floor');\n }\n\n static divCeil(a: bigint, b: bigint): bigint {\n return this.divWithRounding(a, b, 'ceil');\n }\n\n static mulDivFloor(a: bigint, b: bigint, d: bigint): bigint {\n if (d === 0n) {\n throw new Error(`Division by zero in mulDivFloor: ${a} * ${b} / ${d}`);\n }\n const product = a * b;\n return this.divFloor(product, d);\n }\n\n static mulDivCeil(a: bigint, b: bigint, d: bigint): bigint {\n if (d === 0n) {\n throw new Error(`Division by zero in mulDivCeil: ${a} * ${b} / ${d}`);\n }\n const product = a * b;\n return this.divCeil(product, d);\n }\n\n private static divWithRounding = (a: bigint, b: bigint, mode: Rounding): bigint => {\n if (b === 0n) {\n throw new Error(`Division by zero: ${a} / ${b}`);\n }\n\n const quotient = a / b;\n const remainder = a % b;\n if (remainder === 0n) {\n return quotient;\n }\n\n const signsMatch = a >= 0n === b >= 0n;\n if (mode === 'floor') {\n return signsMatch ? quotient : quotient - 1n;\n }\n return signsMatch ? quotient + 1n : quotient;\n };\n}\n","export const BPS = 10_000n; // basis points denominator\n","import type { SignerProvider, NetworkId } from '@alephium/web3';\n\nexport interface Network {\n id: NetworkId;\n name: string;\n nodeUrl: string;\n nodeApiKey?: string;\n explorerApiUrl: string;\n explorerUrl: string;\n tokenListUrl: string;\n}\n\nexport const DEVNET = {\n id: 'devnet' as NetworkId,\n nodeUrl: 'http://127.0.0.1:22973',\n explorerApiUrl: 'http://localhost:9090',\n explorerUrl: 'http://localhost:23000',\n tokenListUrl: 'http://127.0.0.1:4000/token-list/devnet.json', // Temporary solution for devnet\n name: 'Devnet',\n};\n\nexport const defaultNetworks: Network[] = [\n {\n id: 'mainnet',\n nodeUrl: 'https://node.mainnet.alephium.org',\n explorerApiUrl: 'https://backend.mainnet.alephium.org',\n explorerUrl: 'https://explorer.alephium.org',\n tokenListUrl:\n 'https://raw.githubusercontent.com/alephium/token-list/master/tokens/mainnet.json',\n name: 'Mainnet',\n },\n {\n id: 'testnet',\n nodeUrl: 'https://node.testnet.alephium.org',\n explorerApiUrl: 'https://backend.testnet.alephium.org',\n explorerUrl: 'https://testnet.alephium.org',\n tokenListUrl:\n 'https://raw.githubusercontent.com/alephium/token-list/master/tokens/testnet.json',\n name: 'Testnet',\n },\n DEVNET,\n];\nexport type NetworkOverrides = Partial<Omit<Network, 'id'>>;\n\nexport interface ZetaLoadParams {\n networkId: NetworkId;\n signer?: SignerProvider;\n networkOverrides?: NetworkOverrides;\n}\n","import type { SignExecuteScriptTxResult, Token } from '@alephium/web3';\nimport {\n addressFromContractId,\n binToHex,\n DUST_AMOUNT,\n MINIMAL_CONTRACT_DEPOSIT,\n subContractId,\n codec,\n encodePrimitiveValues,\n groupOfAddress,\n isGrouplessAddressWithoutGroupIndex,\n ALPH_TOKEN_ID,\n} from '@alephium/web3';\nimport { loadDeployments } from 'clmm/artifacts/ts/deployments';\nimport ModuleBase from '../moduleBase';\nimport type { Zeta } from '../zeta';\nimport type {\n AddLiquidity,\n ClmmConfig,\n CollectProtocolFees,\n CollectTokens,\n LiquidityDistribution,\n RemoveLiquidity,\n SimulateSwap,\n ClmmSwapParams,\n ClmmPoolContractState,\n ClmmPoolConfig,\n SetRewardParams,\n ExtendRewards,\n PositionPath,\n ClmmPositionInfo,\n} from './types';\nimport type { PoolInstance, PoolTypes } from 'clmm/artifacts/ts';\nimport {\n CreateLiquidPool,\n Pool,\n PoolConfig,\n PoolFactory,\n PositionManager,\n SwapWithoutAccount,\n} from 'clmm/artifacts/ts';\nimport { PoolUtils } from './pool';\nimport { TickUtils } from './tick';\nimport { ClmmLiquidityUtils } from './liquidity';\nimport { PoolNotFoundError, sortTokens } from '../common';\n\nfunction normalizeAddress(address: string, group: number): string {\n return isGrouplessAddressWithoutGroupIndex(address) ? `${address}:${group}` : address;\n}\n\nexport class ClmmModule extends ModuleBase {\n private config: ClmmConfig;\n private configsByIndex = new Map<bigint, ClmmPoolConfig>();\n\n constructor(scope: Zeta) {\n super({ scope, moduleName: 'ClmmModule' });\n\n this.config = this._getClmmConfig();\n }\n\n setConfig(config: ClmmConfig) {\n this.config = config;\n }\n\n getClmmConfig(): ClmmConfig {\n return this.config;\n }\n\n getPoolConfigId(configIndex: bigint): string {\n const rawIndex = codec.u256Codec.encode(configIndex);\n const configPath = binToHex(rawIndex);\n const group = this.config.groupIndex;\n return subContractId(this.config.factoryId, configPath, group);\n }\n\n async getAllPoolConfigs(): Promise<ClmmPoolConfig[]> {\n const factoryAddress = addressFromContractId(this.config.factoryId);\n const factory = PoolFactory.at(factoryAddress);\n const state = await factory.fetchState();\n const nextConfigIndex = state.fields.nextConfigIndex;\n\n const configs: ClmmPoolConfig[] = [];\n for (let i = 0n; i < nextConfigIndex; i++) {\n let config = this.configsByIndex.get(i);\n if (!config) {\n config = await this.fetchConfigFromChain(i);\n this.configsByIndex.set(i, config);\n }\n configs.push(config);\n }\n\n return configs;\n }\n\n async getPoolConfig(configIndex: bigint): Promise<ClmmPoolConfig | undefined> {\n const cached = this.configsByIndex.get(configIndex);\n if (cached) {\n return cached;\n }\n\n try {\n const config = await this.fetchConfigFromChain(configIndex);\n this.configsByIndex.set(configIndex, config);\n return config;\n } catch (error) {\n this.logWarning(`Failed to fetch config ${configIndex.toString()}`, error);\n return undefined;\n }\n }\n\n private async fetchConfigFromChain(configIndex: bigint): Promise<ClmmPoolConfig> {\n const poolConfigId = this.getPoolConfigId(configIndex);\n const poolConfigAddress = addressFromContractId(poolConfigId);\n const poolConfig = PoolConfig.at(poolConfigAddress);\n const poolConfigState = await poolConfig.fetchState();\n return {\n configIndex,\n tickSpacing: poolConfigState.fields.config.tickSpacing,\n tradingFee: poolConfigState.fields.config.fee,\n protocolFee: poolConfigState.fields.config.feeProtocol,\n };\n }\n\n async getPoolState(poolId: string): Promise<ClmmPoolContractState> {\n try {\n const poolAddress = addressFromContractId(poolId);\n const pool = Pool.at(poolAddress);\n const state = await pool.fetchState();\n const token0Info = await this.scope.token.getTokenById(state.fields.token0);\n const token1Info = await this.scope.token.getTokenById(state.fields.token1);\n\n return {\n poolId,\n token0Info,\n token1Info,\n liquidity: state.fields.liquidity,\n tradingFee: state.fields.fee,\n protocolFee: state.fields.slot0.feeProtocol,\n tick: state.fields.slot0.tick,\n tickSpacing: state.fields.tickSpacing,\n sqrtPriceX96: state.fields.slot0.sqrtPriceX96,\n configIndex: state.fields.configIndex,\n };\n } catch (error) {\n if (error instanceof Error && error.message.includes('not found')) {\n throw new PoolNotFoundError(poolId);\n }\n this.logAndThrowError(`Failed to fetch CLMM pool state on ${poolId}`, error);\n }\n }\n\n async getPoolTokenBalances(poolId: string): Promise<{ token0Balance: bigint; token1Balance: bigint }> {\n try {\n const poolAddress = addressFromContractId(poolId);\n const state = await Pool.at(poolAddress).fetchState();\n const { token0, token1 } = state.fields;\n\n const balance = await this.scope.nodeProvider.addresses.getAddressesAddressBalance(poolAddress);\n\n const getBalance = (tokenId: string) =>\n tokenId === ALPH_TOKEN_ID\n ? BigInt(balance.balance)\n : BigInt(balance.tokenBalances?.find((t) => t.id === tokenId)?.amount || '0');\n\n return {\n token0Balance: getBalance(token0),\n token1Balance: getBalance(token1),\n };\n } catch (error) {\n if (error instanceof Error && error.message.includes('not found')) {\n throw new PoolNotFoundError(poolId);\n }\n this.logAndThrowError(`Failed to fetch CLMM pool token balances for ${poolId}`, error);\n }\n }\n\n getPoolId(tokenA: string, tokenB: string, configIndex: bigint): string {\n const [token0, token1] = sortTokens(tokenA, tokenB);\n const group = this.config.groupIndex;\n const factoryId = this.config.factoryId;\n const rawIndex = codec.u256Codec.encode(configIndex);\n const configPath = binToHex(rawIndex);\n const configId = subContractId(factoryId, configPath, group);\n const path = token0 + token1 + configId;\n return subContractId(factoryId, path, group);\n }\n\n getPositionId(poolId: string, owner: string, tickLower: bigint, tickUpper: bigint): string {\n const group = groupOfAddress(addressFromContractId(poolId));\n const path = encodePrimitiveValues([\n { type: 'U256', value: Pool.consts.PathPrefixes.Position },\n { type: 'Address', value: owner },\n { type: 'I256', value: tickLower },\n { type: 'I256', value: tickUpper },\n ]);\n return subContractId(poolId, binToHex(path), group);\n }\n\n getPoolAddress(tokenA: string, tokenB: string, configIndex: bigint): string {\n const poolId = this.getPoolId(tokenA, tokenB, configIndex);\n return addressFromContractId(poolId);\n }\n\n getPool(tokenA: string, tokenB: string, configIndex: bigint): PoolInstance {\n const poolAddress = this.getPoolAddress(tokenA, tokenB, configIndex);\n return Pool.at(poolAddress);\n }\n\n async poolExists(tokenA: string, tokenB: string, configIndex: bigint): Promise<boolean> {\n const poolAddress = this.getPoolAddress(tokenA, tokenB, configIndex);\n const pool = Pool.at(poolAddress);\n try {\n await pool.fetchState();\n return true;\n } catch (error) {\n if (error instanceof Error && error.message.includes('not found')) {\n return false;\n }\n this.logAndThrowError(`Failed to fetch pool state on ${poolAddress}`, error);\n }\n }\n\n async createPool(\n configIndex: bigint,\n token0: string,\n token1: string,\n rewardToken: string,\n tick: bigint,\n amount0: bigint,\n amount1: bigint,\n tickLower: bigint,\n tickUpper: bigint,\n dustAmount?: bigint,\n ): Promise<{ poolAddress: string; result: SignExecuteScriptTxResult }> {\n const sqrtPriceX96 = TickUtils.getSqrtRatioAtTick(tick);\n const tokens = [token0, token1];\n const amounts = [amount0, amount1];\n const ticks = [tickLower, tickUpper];\n if (token0 > token1) {\n tokens.reverse();\n amounts.reverse();\n }\n if (tickLower > tickUpper) {\n ticks.reverse();\n }\n const sqrtPriceX96A = TickUtils.getSqrtRatioAtTick(ticks[0]);\n const sqrtPriceX96B = TickUtils.getSqrtRatioAtTick(ticks[1]);\n const liquidity = ClmmLiquidityUtils.getLiquidityFromAmounts(\n sqrtPriceX96,\n sqrtPriceX96A,\n sqrtPriceX96B,\n amounts[0],\n amounts[1],\n );\n const result = await CreateLiquidPool.execute({\n signer: this.scope.signer,\n initialFields: {\n factory: this.config.factoryId,\n token0: tokens[0],\n token1: tokens[1],\n rewardToken,\n liquidity,\n tickLower: ticks[0],\n tickUpper: ticks[1],\n sqrtPriceX96,\n configIndex,\n amount0: amounts[0],\n amount1: amounts[1],\n },\n attoAlphAmount: MINIMAL_CONTRACT_DEPOSIT * 6n,\n tokens: [\n { id: tokens[0], amount: amounts[0] },\n { id: tokens[1], amount: amounts[1] },\n ],\n dustAmount: dustAmount ?? MINIMAL_CONTRACT_DEPOSIT * 2n,\n });\n const poolAddress = this.getPoolAddress(tokens[0], tokens[1], configIndex);\n return { poolAddress, result };\n }\n\n async addLiquidity(\n p: AddLiquidity,\n ): Promise<{ positionId: string; result: SignExecuteScriptTxResult }> {\n const poolAddress = this.getPoolAddress(p.token0, p.token1, p.configIndex);\n const pool = Pool.at(poolAddress);\n const positionManagerAddress = addressFromContractId(this.config.positionManagerId);\n const positionManager = PositionManager.at(positionManagerAddress);\n\n const signerAccount = await this.scope.signer.getSelectedAccount();\n const owner = p.owner || signerAccount.address;\n\n const group = this.config.groupIndex;\n const normalizedOwner = normalizeAddress(owner, group);\n const normalizedPayer = normalizeAddress(signerAccount.address, group);\n\n const {\n returns: [sqrtPriceX96, sqrtRatioAX96, sqrtRatioBX96, deposit],\n } = await positionManager.view.getSqrtPricesX96({\n args: {\n tickLower: p.tickLower,\n tickUpper: p.tickUpper,\n pool: pool.contractId,\n owner: normalizedOwner,\n },\n });\n const currentTick = TickUtils.getTickAtSqrtRatio(sqrtPriceX96);\n const minTick = currentTick - p.slippage;\n const maxTick = currentTick + p.slippage;\n const minSqrtPriceX96 = TickUtils.getSqrtRatioAtTick(minTick);\n const maxSqrtPriceX96 = TickUtils.getSqrtRatioAtTick(maxTick);\n\n const liquidity = ClmmLiquidityUtils.getLiquidityFromAmounts(\n sqrtPriceX96,\n sqrtRatioAX96,\n sqrtRatioBX96,\n p.amount0,\n p.amount1,\n );\n const [spotAmount0, spotAmount1] = ClmmLiquidityUtils.getAmountsForLiquidity(\n sqrtPriceX96,\n sqrtRatioAX96,\n sqrtRatioBX96,\n -liquidity,\n );\n const [minAmount0, minAmount1] = ClmmLiquidityUtils.getAmountsForLiquidity(\n minSqrtPriceX96,\n sqrtRatioAX96,\n sqrtRatioBX96,\n -liquidity,\n );\n const [maxAmount0, maxAmount1] = ClmmLiquidityUtils.getAmountsForLiquidity(\n maxSqrtPriceX96,\n sqrtRatioAX96,\n sqrtRatioBX96,\n -liquidity,\n );\n\n const positionId = PoolUtils.getPositionId(poolAddress, owner, p.tickLower, p.tickUpper);\n const tokens: Token[] = [\n { id: p.token0, amount: -minAmount0 },\n { id: p.token1, amount: -maxAmount1 },\n ];\n\n if (p.existingPosition) {\n tokens.push({ id: positionId, amount: 1n });\n }\n const result = await positionManager.transact.addLiquidity({\n signer: this.scope.signer,\n args: {\n payer: normalizedPayer,\n p: {\n token0: p.token0,\n token1: p.token1,\n configIndex: p.configIndex,\n owner: normalizedOwner,\n tickLower: p.tickLower,\n tickUpper: p.tickUpper,\n amount0Desired: -spotAmount0,\n amount1Desired: -spotAmount1,\n amount0Min: -maxAmount0,\n amount1Min: -minAmount1,\n },\n },\n tokens,\n attoAlphAmount: deposit,\n });\n\n return { positionId, result };\n }\n\n async removeLiquidity(\n p: RemoveLiquidity,\n ): Promise<{ positionId: string; result: SignExecuteScriptTxResult }> {\n const poolAddress = this.getPoolAddress(p.token0, p.token1, p.configIndex);\n const positionManagerAddress = addressFromContractId(this.config.positionManagerId);\n const positionManager = PositionManager.at(positionManagerAddress);\n const signerAccount = await this.scope.signer.getSelectedAccount();\n\n const group = this.config.groupIndex;\n const normalizedOwner = normalizeAddress(p.owner, group);\n const normalizedOperator = normalizeAddress(signerAccount.address, group);\n\n const positionId = PoolUtils.getPositionId(poolAddress, p.owner, p.tickLower, p.tickUpper);\n\n // Determine minimum amounts based on base token selection (Raydium pattern)\n // For remove liquidity: base amount is what we expect, other amount is the minimum we'll accept\n const amount0Min = p.base === 'token0' ? p.baseAmount : p.otherAmountMax;\n const amount1Min = p.base === 'token0' ? p.otherAmountMax : p.baseAmount;\n\n const result = await positionManager.transact.decreaseLiquidity({\n signer: this.scope.signer,\n args: {\n liquidity: p.liquidity,\n operator: normalizedOperator,\n p: {\n configIndex: p.configIndex,\n token0: p.token0,\n token1: p.token1,\n owner: normalizedOwner,\n tickLower: p.tickLower,\n tickUpper: p.tickUpper,\n amount0Min: amount0Min,\n amount1Min: amount1Min,\n },\n },\n tokens: [{ id: positionId, amount: 1n }],\n attoAlphAmount: DUST_AMOUNT * 3n,\n });\n return { positionId, result };\n }\n\n async positionInfo({ poolId, ...args }: PositionPath): Promise<ClmmPositionInfo> {\n const pool = Pool.at(addressFromContractId(poolId));\n const { returns } = await pool.view.positionInfo({ args });\n return returns;\n }\n async collectTokens(\n p: CollectTokens,\n ): Promise<{ positionId: string; result: SignExecuteScriptTxResult }> {\n const poolAddress = this.getPoolAddress(p.token0, p.token1, p.configIndex);\n const positionId = PoolUtils.getPositionId(poolAddress, p.owner, p.tickLower, p.tickUpper);\n const positionManagerAddress = addressFromContractId(this.config.positionManagerId);\n const signerAccount = await this.scope.signer.getSelectedAccount();\n\n const group = this.config.groupIndex;\n const normalizedOwner = normalizeAddress(p.owner, group);\n const normalizedOperator = normalizeAddress(signerAccount.address, group);\n const normalizedRecipient = normalizeAddress(p.recipient, group);\n\n const positionManager = PositionManager.at(positionManagerAddress);\n const result = await positionManager.transact.collect({\n signer: this.scope.signer,\n args: {\n liquidity: p.liquidity,\n operator: normalizedOperator,\n p: {\n configIndex: p.configIndex,\n token0: p.token0,\n token1: p.token1,\n owner: normalizedOwner,\n recipient: normalizedRecipient,\n tickLower: p.tickLower,\n tickUpper: p.tickUpper,\n amount0Max: p.amount0Max,\n amount1Max: p.amount1Max,\n },\n },\n tokens: [{ id: positionId, amount: 1n }],\n attoAlphAmount: DUST_AMOUNT * 3n,\n });\n\n return { positionId, result };\n }\n\n async findBestRoute(token0: string, token1: string): Promise<bigint> {\n const poolFactoryAddress = addressFromContractId(this.config.factoryId);\n const poolFactory = PoolFactory.at(poolFactoryAddress);\n const state = await poolFactory.fetchState();\n const f = (_: number, i: number) => this.getPoolAddress(token0, token1, BigInt(i));\n const addresses = Array.from({ length: Number(state.fields.nextConfigIndex) }, f);\n const pools = await Promise.all(\n addresses.map(async (addr, i) =>\n (await this.poolExists(token0, token1, BigInt(i))) ? Pool.at(addr).fetchState() : undefined,\n ),\n );\n const [index] = pools.reduce<[bigint, bigint]>(\n ([index, liquidity], pool, i) => {\n const liquidity2 = pool?.fields.liquidity || 0n;\n return liquidity2 > liquidity ? [BigInt(i), liquidity2] : [index, liquidity];\n },\n [-1n, 0n],\n );\n\n if (index === -1n) {\n throw new PoolNotFoundError(`No concentrated liquidity pool found for token pair ${token0}/${token1}`);\n }\n\n return index;\n }\n\n async simulateSwap(p: SimulateSwap): Promise<LiquidityDistribution> {\n const poolAddress = this.getPoolAddress(p.token0, p.token1, p.configIndex);\n const pool = Pool.at(poolAddress);\n const result = await pool.view.simulateSwap({\n args: {\n amountSpecified: p.amount,\n zeroForOne: p.zeroForOne,\n data: '',\n maxSteps: 500n,\n },\n });\n\n const poolState = result.contracts.at(0)?.fields as PoolTypes.Fields;\n const startEvent = result.events.at(0) as PoolTypes.SwapStartEvent;\n return {\n sqrtPriceX96: poolState.slot0.sqrtPriceX96,\n baseSqrtPriceX96: startEvent.fields.sqrtPriceX96,\n liquidity: poolState.liquidity,\n fee: poolState.fee,\n rows: result.events.slice(1).map((e) => {\n const event = e as PoolTypes.SwapStepEvent;\n return {\n sqrtPriceX96: event.fields.sqrtPriceX96,\n liquidity: event.fields.liquidity,\n };\n }),\n };\n }\n\n async swap(p: ClmmSwapParams): Promise<SignExecuteScriptTxResult> {\n const configIndex = p.routePlan[0];\n const pool = this.getPool(p.token0, p.token1, configIndex);\n const poolState = await pool.fetchState();\n const sqrtPriceX96 = poolState.fields.slot0.sqrtPriceX96;\n const zeroForOne = poolState.fields.token0 === p.token0;\n const sqrtPriceLimitX96 = TickUtils.getSqrtPriceLimitX96(sqrtPriceX96, p.slippage, zeroForOne);\n\n const tokens = sortTokens(p.token0, p.token1);\n const [tokenIn, tokenOut] = zeroForOne ? tokens : tokens.reverse();\n return await SwapWithoutAccount.execute({\n signer: this.scope.signer,\n initialFields: {\n dexAccount: this.config.accountRoot,\n pool: pool.contractId,\n tokenIn,\n tokenOut,\n zeroForOne,\n amountSpecified: p.amount,\n sqrtPriceLimitX96,\n data: '',\n },\n tokens: [{ id: tokenIn, amount: p.amount }],\n attoAlphAmount: DUST_AMOUNT * 2n,\n });\n }\n\n async collectProtocolFees(p: CollectProtocolFees): Promise<SignExecuteScriptTxResult> {\n const poolFactoryAddress = addressFromContractId(this.config.factoryId);\n const poolFactory = PoolFactory.at(poolFactoryAddress);\n const result = await poolFactory.transact.collectProtocolFees({\n signer: this.scope.signer,\n args: {\n recipient: p.recipient,\n configIndex: p.configIndex,\n token0: p.token0,\n token1: p.token1,\n },\n });\n return result;\n }\n\n async setRewardParams(p: SetRewardParams): Promise<SignExecuteScriptTxResult> {\n const poolFactoryAddress = addressFromContractId(this.config.factoryId);\n const poolFactory = PoolFactory.at(poolFactoryAddress);\n const index = p.rewardToken === p.token0 ? 0n : p.rewardToken === p.token1 ? 1n : 2n;\n const result = await poolFactory.transact.setRewardParams({\n signer: this.scope.signer,\n args: {\n token0: p.token0,\n token1: p.token1,\n configIndex: p.configIndex,\n amount: p.amount,\n index,\n openTime: p.openTime,\n endTime: p.endTime,\n payer: p.payer,\n tokenId: p.rewardToken,\n },\n tokens: [{ id: p.rewardToken, amount: p.amount }],\n attoAlphAmount: DUST_AMOUNT,\n });\n return result;\n }\n\n async extendRewards(p: ExtendRewards): Promise<SignExecuteScriptTxResult> {\n const poolAddress = this.getPoolAddress(p.token0, p.token1, p.configIndex);\n const pool = Pool.at(poolAddress);\n const index = p.rewardToken === p.token0 ? 0n : p.rewardToken === p.token1 ? 1n : 2n;\n const result = await pool.transact.extendRewards({\n signer: this.scope.signer,\n args: {\n payer: p.payer,\n index,\n amount: p.amount,\n },\n tokens: [{ id: p.rewardToken, amount: p.amount }],\n attoAlphAmount: DUST_AMOUNT,\n });\n return result;\n }\n\n private _getClmmConfig(): ClmmConfig {\n const networkId = this.scope.network.id;\n try {\n const deployments = loadDeployments(networkId);\n return {\n groupIndex: deployments.contracts.PoolFactory.contractInstance.groupIndex,\n factoryId: deployments.contracts.PoolFactory.contractInstance.contractId,\n positionManagerId: deployments.contracts.PositionManager.contractInstance.contractId,\n defaultConfigIndex: 0n,\n accountRoot: deployments.contracts.DexAccount.contractInstance.contractId,\n };\n } catch (error) {\n this.logAndThrowError(`Failed to load deployments on ${networkId}`, error);\n }\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nexport * from \"./BitmapWord\";\nexport * from \"./BitmapWordDeployer\";\nexport * from \"./DexAccount\";\nexport * from \"./LiquidityAmountsTest\";\nexport * from \"./LiquidityManagmentTest\";\nexport * from \"./Pool\";\nexport * from \"./PoolConfig\";\nexport * from \"./PoolFactory\";\nexport * from \"./PoolUser\";\nexport * from \"./Position\";\nexport * from \"./PositionManager\";\nexport * from \"./TestToken\";\nexport * from \"./Tick\";\nexport * from \"./TickBitmapTest\";\nexport * from \"./contracts\";\nexport * from \"./scripts\";\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport {\n Address,\n Contract,\n ContractState,\n TestContractResult,\n HexString,\n ContractFactory,\n EventSubscribeOptions,\n EventSubscription,\n CallContractParams,\n CallContractResult,\n TestContractParams,\n ContractEvent,\n subscribeContractEvent,\n subscribeContractEvents,\n testMethod,\n callMethod,\n multicallMethods,\n fetchContractState,\n Asset,\n ContractInstance,\n getContractEventsCurrentCount,\n TestContractParamsWithoutMaps,\n TestContractResultWithoutMaps,\n SignExecuteContractMethodParams,\n SignExecuteScriptTxResult,\n signExecuteMethod,\n addStdIdToFields,\n encodeContractFields,\n Narrow,\n} from \"@alephium/web3\";\nimport { default as BitmapWordContractJson } from \"../BitmapWord.ral.json\";\nimport { getContractByCodeHash, registerContract } from \"./contracts\";\nimport * as types from \"./types\";\n\n// Custom types for the contract\nexport namespace BitmapWordTypes {\n export type Fields = {\n parent: Address;\n value: bigint;\n };\n\n export type State = ContractState<Fields>;\n\n export interface CallMethodTable {\n mostSignificantBit: {\n params: CallContractParams<{ x: bigint }>;\n result: CallContractResult<bigint>;\n };\n leastSignificantBit: {\n params: CallContractParams<{ x: bigint }>;\n result: CallContractResult<bigint>;\n };\n flip: {\n params: CallContractParams<{ tick: bigint }>;\n result: CallContractResult<null>;\n };\n getNext: {\n params: CallContractParams<{\n compressed: bigint;\n zeroForOne: boolean;\n tickSpacing: bigint;\n }>;\n result: CallContractResult<[bigint, boolean]>;\n };\n getBitPos: {\n params: CallContractParams<{ tick: bigint }>;\n result: CallContractResult<bigint>;\n };\n }\n export type CallMethodParams<T extends keyof CallMethodTable> =\n CallMethodTable[T][\"params\"];\n export type CallMethodResult<T extends keyof CallMethodTable> =\n CallMethodTable[T][\"result\"];\n export type MultiCallParams = Partial<{\n [Name in keyof CallMethodTable]: CallMethodTable[Name][\"params\"];\n }>;\n export type MultiCallResults<T extends MultiCallParams> = {\n [MaybeName in keyof T]: MaybeName extends keyof CallMethodTable\n ? CallMethodTable[MaybeName][\"result\"]\n : undefined;\n };\n export type MulticallReturnType<Callss extends MultiCallParams[]> = {\n [index in keyof Callss]: MultiCallResults<Callss[index]>;\n };\n\n export interface SignExecuteMethodTable {\n mostSignificantBit: {\n params: SignExecuteContractMethodParams<{ x: bigint }>;\n result: SignExecuteScriptTxResult;\n };\n leastSignificantBit: {\n params: SignExecuteContractMethodParams<{ x: bigint }>;\n result: SignExecuteScriptTxResult;\n };\n flip: {\n params: SignExecuteContractMethodParams<{ tick: bigint }>;\n result: SignExecuteScriptTxResult;\n };\n getNext: {\n params: SignExecuteContractMethodParams<{\n compressed: bigint;\n zeroForOne: boolean;\n tickSpacing: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n getBitPos: {\n params: SignExecuteContractMethodParams<{ tick: bigint }>;\n result: SignExecuteScriptTxResult;\n };\n }\n export type SignExecuteMethodParams<T extends keyof SignExecuteMethodTable> =\n SignExecuteMethodTable[T][\"params\"];\n export type SignExecuteMethodResult<T extends keyof SignExecuteMethodTable> =\n SignExecuteMethodTable[T][\"result\"];\n}\n\nclass Factory extends ContractFactory<\n BitmapWordInstance,\n BitmapWordTypes.Fields\n> {\n encodeFields(fields: BitmapWordTypes.Fields) {\n return encodeContractFields(\n addStdIdToFields(this.contract, fields),\n this.contract.fieldsSig,\n types.AllStructs\n );\n }\n\n consts = {\n BitMathError: {\n NoMostSignificantBit: BigInt(\"150\"),\n NoLeastSignificantBit: BigInt(\"151\"),\n },\n };\n\n at(address: string): BitmapWordInstance {\n return new BitmapWordInstance(address);\n }\n\n tests = {\n mostSignificantBit: async (\n params: TestContractParamsWithoutMaps<\n BitmapWordTypes.Fields,\n { x: bigint }\n >\n ): Promise<TestContractResultWithoutMaps<bigint>> => {\n return testMethod(\n this,\n \"mostSignificantBit\",\n params,\n getContractByCodeHash\n );\n },\n leastSignificantBit: async (\n params: TestContractParamsWithoutMaps<\n BitmapWordTypes.Fields,\n { x: bigint }\n >\n ): Promise<TestContractResultWithoutMaps<bigint>> => {\n return testMethod(\n this,\n \"leastSignificantBit\",\n params,\n getContractByCodeHash\n );\n },\n flip: async (\n params: TestContractParamsWithoutMaps<\n BitmapWordTypes.Fields,\n { tick: bigint }\n >\n ): Promise<TestContractResultWithoutMaps<null>> => {\n return testMethod(this, \"flip\", params, getContractByCodeHash);\n },\n getNext: async (\n params: TestContractParamsWithoutMaps<\n BitmapWordTypes.Fields,\n { compressed: bigint; zeroForOne: boolean; tickSpacing: bigint }\n >\n ): Promise<TestContractResultWithoutMaps<[bigint, boolean]>> => {\n return testMethod(this, \"getNext\", params, getContractByCodeHash);\n },\n getBitPos: async (\n params: TestContractParamsWithoutMaps<\n BitmapWordTypes.Fields,\n { tick: bigint }\n >\n ): Promise<TestContractResultWithoutMaps<bigint>> => {\n return testMethod(this, \"getBitPos\", params, getContractByCodeHash);\n },\n };\n\n stateForTest(\n initFields: BitmapWordTypes.Fields,\n asset?: Asset,\n address?: string\n ) {\n return this.stateForTest_(initFields, asset, address, undefined);\n }\n}\n\n// Use this object to test and deploy the contract\nexport const BitmapWord = new Factory(\n Contract.fromJson(\n BitmapWordContractJson,\n \"\",\n \"69fd344eb51899a9bdc30ae94beeb2dcfeb2fc312d39116ebe9d208a55293edd\",\n types.AllStructs\n )\n);\nregisterContract(BitmapWord);\n\n// Use this class to interact with the blockchain\nexport class BitmapWordInstance extends ContractInstance {\n constructor(address: Address) {\n super(address);\n }\n\n async fetchState(): Promise<BitmapWordTypes.State> {\n return fetchContractState(BitmapWord, this);\n }\n\n view = {\n mostSignificantBit: async (\n params: BitmapWordTypes.CallMethodParams<\"mostSignificantBit\">\n ): Promise<BitmapWordTypes.CallMethodResult<\"mostSignificantBit\">> => {\n return callMethod(\n BitmapWord,\n this,\n \"mostSignificantBit\",\n params,\n getContractByCodeHash\n );\n },\n leastSignificantBit: async (\n params: BitmapWordTypes.CallMethodParams<\"leastSignificantBit\">\n ): Promise<BitmapWordTypes.CallMethodResult<\"leastSignificantBit\">> => {\n return callMethod(\n BitmapWord,\n this,\n \"leastSignificantBit\",\n params,\n getContractByCodeHash\n );\n },\n flip: async (\n params: BitmapWordTypes.CallMethodParams<\"flip\">\n ): Promise<BitmapWordTypes.CallMethodResult<\"flip\">> => {\n return callMethod(\n BitmapWord,\n this,\n \"flip\",\n params,\n getContractByCodeHash\n );\n },\n getNext: async (\n params: BitmapWordTypes.CallMethodParams<\"getNext\">\n ): Promise<BitmapWordTypes.CallMethodResult<\"getNext\">> => {\n return callMethod(\n BitmapWord,\n this,\n \"getNext\",\n params,\n getContractByCodeHash\n );\n },\n getBitPos: async (\n params: BitmapWordTypes.CallMethodParams<\"getBitPos\">\n ): Promise<BitmapWordTypes.CallMethodResult<\"getBitPos\">> => {\n return callMethod(\n BitmapWord,\n this,\n \"getBitPos\",\n params,\n getContractByCodeHash\n );\n },\n };\n\n transact = {\n mostSignificantBit: async (\n params: BitmapWordTypes.SignExecuteMethodParams<\"mostSignificantBit\">\n ): Promise<\n BitmapWordTypes.SignExecuteMethodResult<\"mostSignificantBit\">\n > => {\n return signExecuteMethod(BitmapWord, this, \"mostSignificantBit\", params);\n },\n leastSignificantBit: async (\n params: BitmapWordTypes.SignExecuteMethodParams<\"leastSignificantBit\">\n ): Promise<\n BitmapWordTypes.SignExecuteMethodResult<\"leastSignificantBit\">\n > => {\n return signExecuteMethod(BitmapWord, this, \"leastSignificantBit\", params);\n },\n flip: async (\n params: BitmapWordTypes.SignExecuteMethodParams<\"flip\">\n ): Promise<BitmapWordTypes.SignExecuteMethodResult<\"flip\">> => {\n return signExecuteMethod(BitmapWord, this, \"flip\", params);\n },\n getNext: async (\n params: BitmapWordTypes.SignExecuteMethodParams<\"getNext\">\n ): Promise<BitmapWordTypes.SignExecuteMethodResult<\"getNext\">> => {\n return signExecuteMethod(BitmapWord, this, \"getNext\", params);\n },\n getBitPos: async (\n params: BitmapWordTypes.SignExecuteMethodParams<\"getBitPos\">\n ): Promise<BitmapWordTypes.SignExecuteMethodResult<\"getBitPos\">> => {\n return signExecuteMethod(BitmapWord, this, \"getBitPos\", params);\n },\n };\n\n async multicall<Calls extends BitmapWordTypes.MultiCallParams>(\n calls: Calls\n ): Promise<BitmapWordTypes.MultiCallResults<Calls>>;\n async multicall<Callss extends BitmapWordTypes.MultiCallParams[]>(\n callss: Narrow<Callss>\n ): Promise<BitmapWordTypes.MulticallReturnType<Callss>>;\n async multicall<\n Callss extends\n | BitmapWordTypes.MultiCallParams\n | BitmapWordTypes.MultiCallParams[]\n >(callss: Callss): Promise<unknown> {\n return await multicallMethods(\n BitmapWord,\n this,\n callss,\n getContractByCodeHash\n );\n }\n}\n","{\n \"version\": \"v4.3.0\",\n \"name\": \"BitmapWord\",\n \"bytecode\": \"020540d641c941e7429442aa0000010201406516000c301340967b0c1701160013cd0100000000000000000000000000000000344c0816001340803c170016011340802a1701160013c5010000000000000000344c0816001340403c170016011340402a1701160013c10100000000344c08160013203c1700160113202a170116001380010000344c08160013103c1700160113102a17011600134100344c08160013083c1700160113082a170116001310344c081600103c17001601102a1701160010344c0816000e3c170016010e2a170116000e344c0416010d2a17011601020000010201407c16000c301340977b1340ff1701160013ccffffffffffffffffffffffffffffffff380c334c0516011340802b17014a0416001340803c1700160013c4ffffffffffffffff380c334c0516011340402b17014a0416001340403c1700160013c0ffffffff380c334c05160113202b17014a04160013203c17001600138000ffff380c334c05160113102b17014a04160013103c170016001340ff380c334c05160113082b17014a04160013083c17001600130f380c334c051601102b17014a041600103c170016000f380c334c0516010e2b17014a0416000e3c170016000d380c334c0416010d2b170116010201000101000dd3ff38d2a3ce00b4451341937ba0000d160000043b3aa1000100030f024064d327ef6f9f16014c40301600000417030d16033b0d2b0d16033b2a1704a000160438170516050c30170616064c0e16001603160500002b3f20160221170716071606024a0a160016033f20160221170816081606024a40311600000417090d16093b0d2b0c0d363a170aa000160a38170b160b0c30170c160c4c0e1600160b000116092b3f1f160221170d160d160c024a0c16001240ff16093f201f160221170e160e160c020000010101091600124100231241001f124100233d02\",\n \"codeHash\": \"69fd344eb51899a9bdc30ae94beeb2dcfeb2fc312d39116ebe9d208a55293edd\",\n \"fieldsSig\": {\n \"names\": [\n \"parent\",\n \"value\"\n ],\n \"types\": [\n \"Address\",\n \"U256\"\n ],\n \"isMutable\": [\n false,\n true\n ]\n },\n \"eventsSig\": [],\n \"functions\": [\n {\n \"name\": \"mostSignificantBit\",\n \"paramNames\": [\n \"x\"\n ],\n \"paramTypes\": [\n \"U256\"\n ],\n \"paramIsMutable\": [\n true\n ],\n \"returnTypes\": [\n \"U256\"\n ]\n },\n {\n \"name\": \"leastSignificantBit\",\n \"paramNames\": [\n \"x\"\n ],\n \"paramTypes\": [\n \"U256\"\n ],\n \"paramIsMutable\": [\n true\n ],\n \"returnTypes\": [\n \"U256\"\n ]\n },\n {\n \"name\": \"flip\",\n \"paramNames\": [\n \"tick\"\n ],\n \"paramTypes\": [\n \"I256\"\n ],\n \"paramIsMutable\": [\n false\n ],\n \"returnTypes\": []\n },\n {\n \"name\": \"getNext\",\n \"paramNames\": [\n \"compressed\",\n \"zeroForOne\",\n \"tickSpacing\"\n ],\n \"paramTypes\": [\n \"I256\",\n \"Bool\",\n \"I256\"\n ],\n \"paramIsMutable\": [\n false,\n false,\n false\n ],\n \"returnTypes\": [\n \"I256\",\n \"Bool\"\n ]\n },\n {\n \"name\": \"getBitPos\",\n \"paramNames\": [\n \"tick\"\n ],\n \"paramTypes\": [\n \"I256\"\n ],\n \"paramIsMutable\": [\n false\n ],\n \"returnTypes\": [\n \"U256\"\n ]\n }\n ],\n \"constants\": [],\n \"enums\": [\n {\n \"name\": \"BitMathError\",\n \"fields\": [\n {\n \"name\": \"NoMostSignificantBit\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"150\"\n }\n },\n {\n \"name\": \"NoLeastSignificantBit\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"151\"\n }\n }\n ]\n }\n ]\n}","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport { Contract, ContractFactory } from \"@alephium/web3\";\n\nlet contracts: ContractFactory<any>[] | undefined = undefined;\n\nexport function getAllContracts(): ContractFactory<any>[] {\n return contracts ?? [];\n}\n\nexport function registerContract(factory: ContractFactory<any>) {\n if (contracts === undefined) {\n contracts = [factory];\n } else {\n contracts.push(factory);\n }\n}\nexport function getContractByCodeHash(codeHash: string): Contract {\n const c = contracts?.find((c) => c.contract.hasCodeHash(codeHash));\n if (c === undefined) {\n throw new Error(\"Unknown code with code hash: \" + codeHash);\n }\n return c.contract;\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport { Address, HexString, Val, Struct } from \"@alephium/web3\";\nimport { default as allStructsJson } from \"../structs.ral.json\";\nexport const AllStructs = allStructsJson.map((json) => Struct.fromJson(json));\nexport interface CollectParams extends Record<string, Val> {\n token0: HexString;\n token1: HexString;\n configIndex: bigint;\n owner: Address;\n recipient: Address;\n tickLower: bigint;\n tickUpper: bigint;\n amount0Max: bigint;\n amount1Max: bigint;\n}\nexport interface Config extends Record<string, Val> {\n tickSpacing: bigint;\n fee: bigint;\n feeProtocol: bigint;\n}\nexport interface DecreaseLiquidityParams extends Record<string, Val> {\n token0: HexString;\n token1: HexString;\n configIndex: bigint;\n owner: Address;\n tickLower: bigint;\n tickUpper: bigint;\n amount0Min: bigint;\n amount1Min: bigint;\n}\nexport interface ModifyLiquidityParams extends Record<string, Val> {\n token0: HexString;\n token1: HexString;\n configIndex: bigint;\n owner: Address;\n tickLower: bigint;\n tickUpper: bigint;\n amount0Desired: bigint;\n amount1Desired: bigint;\n amount0Min: bigint;\n amount1Min: bigint;\n}\nexport interface ModifyPositionParams extends Record<string, Val> {\n owner: Address;\n tickLower: bigint;\n tickUpper: bigint;\n liquidityDelta: bigint;\n}\nexport interface PositionInfo extends Record<string, Val> {\n amount0: bigint;\n amount1: bigint;\n fees: [bigint, bigint, bigint];\n avgValue: bigint;\n avgFees: bigint;\n avgTime: bigint;\n}\nexport interface ProtocolFees extends Record<string, Val> {\n token0: bigint;\n token1: bigint;\n}\nexport interface Reward extends Record<string, Val> {\n nextOpenTime: bigint;\n endTime: bigint;\n amount: bigint;\n}\nexport interface Slot0 extends Record<string, Val> {\n sqrtPriceX96: bigint;\n tick: bigint;\n feeProtocol: bigint;\n}\nexport interface StepComputations extends Record<string, Val> {\n sqrtPriceStartX96: bigint;\n tickNext: bigint;\n initialized: boolean;\n sqrtPriceNextX96: bigint;\n amountIn: bigint;\n amountOut: bigint;\n feeAmount: bigint;\n}\nexport interface SwapCache extends Record<string, Val> {\n liquidityStart: bigint;\n feeProtocol: bigint;\n}\nexport interface SwapParams extends Record<string, Val> {\n payer: Address;\n recipient: Address;\n token: HexString;\n payToken: HexString;\n toPay: bigint;\n withdrawToken: HexString;\n toWithdraw: bigint;\n data: HexString;\n}\nexport interface SwapState extends Record<string, Val> {\n amountSpecifiedRemaining: bigint;\n amountCalculated: bigint;\n sqrtPriceX96: bigint;\n tick: bigint;\n feeGrowthGlobalX128: bigint;\n liquidity: bigint;\n protocolFee: bigint;\n}\n","[\n {\n \"name\": \"ModifyLiquidityParams\",\n \"fieldNames\": [\n \"token0\",\n \"token1\",\n \"configIndex\",\n \"owner\",\n \"tickLower\",\n \"tickUpper\",\n \"amount0Desired\",\n \"amount1Desired\",\n \"amount0Min\",\n \"amount1Min\"\n ],\n \"fieldTypes\": [\n \"ByteVec\",\n \"ByteVec\",\n \"U256\",\n \"Address\",\n \"I256\",\n \"I256\",\n \"U256\",\n \"U256\",\n \"U256\",\n \"U256\"\n ],\n \"isMutable\": [\n false,\n false,\n false,\n false,\n false,\n false,\n false,\n false,\n false,\n false\n ]\n },\n {\n \"name\": \"Slot0\",\n \"fieldNames\": [\n \"sqrtPriceX96\",\n \"tick\",\n \"feeProtocol\"\n ],\n \"fieldTypes\": [\n \"U256\",\n \"I256\",\n \"U256\"\n ],\n \"isMutable\": [\n true,\n true,\n true\n ]\n },\n {\n \"name\": \"SwapParams\",\n \"fieldNames\": [\n \"payer\",\n \"recipient\",\n \"token\",\n \"payToken\",\n \"toPay\",\n \"withdrawToken\",\n \"toWithdraw\",\n \"data\"\n ],\n \"fieldTypes\": [\n \"Address\",\n \"Address\",\n \"ByteVec\",\n \"ByteVec\",\n \"U256\",\n \"ByteVec\",\n \"U256\",\n \"ByteVec\"\n ],\n \"isMutable\": [\n false,\n false,\n false,\n false,\n false,\n false,\n false,\n false\n ]\n },\n {\n \"name\": \"ModifyPositionParams\",\n \"fieldNames\": [\n \"owner\",\n \"tickLower\",\n \"tickUpper\",\n \"liquidityDelta\"\n ],\n \"fieldTypes\": [\n \"Address\",\n \"I256\",\n \"I256\",\n \"I256\"\n ],\n \"isMutable\": [\n false,\n false,\n false,\n false\n ]\n },\n {\n \"name\": \"SwapCache\",\n \"fieldNames\": [\n \"liquidityStart\",\n \"feeProtocol\"\n ],\n \"fieldTypes\": [\n \"U256\",\n \"U256\"\n ],\n \"isMutable\": [\n false,\n false\n ]\n },\n {\n \"name\": \"SwapState\",\n \"fieldNames\": [\n \"amountSpecifiedRemaining\",\n \"amountCalculated\",\n \"sqrtPriceX96\",\n \"tick\",\n \"feeGrowthGlobalX128\",\n \"liquidity\",\n \"protocolFee\"\n ],\n \"fieldTypes\": [\n \"I256\",\n \"I256\",\n \"U256\",\n \"I256\",\n \"U256\",\n \"U256\",\n \"U256\"\n ],\n \"isMutable\": [\n true,\n true,\n true,\n true,\n true,\n true,\n true\n ]\n },\n {\n \"name\": \"StepComputations\",\n \"fieldNames\": [\n \"sqrtPriceStartX96\",\n \"tickNext\",\n \"initialized\",\n \"sqrtPriceNextX96\",\n \"amountIn\",\n \"amountOut\",\n \"feeAmount\"\n ],\n \"fieldTypes\": [\n \"U256\",\n \"I256\",\n \"Bool\",\n \"U256\",\n \"U256\",\n \"U256\",\n \"U256\"\n ],\n \"isMutable\": [\n true,\n true,\n true,\n true,\n true,\n true,\n true\n ]\n },\n {\n \"name\": \"Reward\",\n \"fieldNames\": [\n \"nextOpenTime\",\n \"endTime\",\n \"amount\"\n ],\n \"fieldTypes\": [\n \"U256\",\n \"U256\",\n \"U256\"\n ],\n \"isMutable\": [\n true,\n true,\n true\n ]\n },\n {\n \"name\": \"ProtocolFees\",\n \"fieldNames\": [\n \"token0\",\n \"token1\"\n ],\n \"fieldTypes\": [\n \"U256\",\n \"U256\"\n ],\n \"isMutable\": [\n true,\n true\n ]\n },\n {\n \"name\": \"PositionInfo\",\n \"fieldNames\": [\n \"amount0\",\n \"amount1\",\n \"fees\",\n \"avgValue\",\n \"avgFees\",\n \"avgTime\"\n ],\n \"fieldTypes\": [\n \"I256\",\n \"I256\",\n \"[U256;3]\",\n \"U256\",\n \"U256\",\n \"U256\"\n ],\n \"isMutable\": [\n false,\n false,\n false,\n false,\n false,\n false\n ]\n },\n {\n \"name\": \"Config\",\n \"fieldNames\": [\n \"tickSpacing\",\n \"fee\",\n \"feeProtocol\"\n ],\n \"fieldTypes\": [\n \"I256\",\n \"U256\",\n \"U256\"\n ],\n \"isMutable\": [\n false,\n false,\n false\n ]\n },\n {\n \"name\": \"DecreaseLiquidityParams\",\n \"fieldNames\": [\n \"token0\",\n \"token1\",\n \"configIndex\",\n \"owner\",\n \"tickLower\",\n \"tickUpper\",\n \"amount0Min\",\n \"amount1Min\"\n ],\n \"fieldTypes\": [\n \"ByteVec\",\n \"ByteVec\",\n \"U256\",\n \"Address\",\n \"I256\",\n \"I256\",\n \"U256\",\n \"U256\"\n ],\n \"isMutable\": [\n false,\n false,\n false,\n false,\n false,\n false,\n false,\n false\n ]\n },\n {\n \"name\": \"CollectParams\",\n \"fieldNames\": [\n \"token0\",\n \"token1\",\n \"configIndex\",\n \"owner\",\n \"recipient\",\n \"tickLower\",\n \"tickUpper\",\n \"amount0Max\",\n \"amount1Max\"\n ],\n \"fieldTypes\": [\n \"ByteVec\",\n \"ByteVec\",\n \"U256\",\n \"Address\",\n \"Address\",\n \"I256\",\n \"I256\",\n \"U256\",\n \"U256\"\n ],\n \"isMutable\": [\n false,\n false,\n false,\n false,\n false,\n false,\n false,\n false,\n false\n ]\n }\n]","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport {\n Address,\n Contract,\n ContractState,\n TestContractResult,\n HexString,\n ContractFactory,\n EventSubscribeOptions,\n EventSubscription,\n CallContractParams,\n CallContractResult,\n TestContractParams,\n ContractEvent,\n subscribeContractEvent,\n subscribeContractEvents,\n testMethod,\n callMethod,\n multicallMethods,\n fetchContractState,\n Asset,\n ContractInstance,\n getContractEventsCurrentCount,\n TestContractParamsWithoutMaps,\n TestContractResultWithoutMaps,\n SignExecuteContractMethodParams,\n SignExecuteScriptTxResult,\n signExecuteMethod,\n addStdIdToFields,\n encodeContractFields,\n Narrow,\n} from \"@alephium/web3\";\nimport { default as BitmapWordDeployerContractJson } from \"../BitmapWordDeployer.ral.json\";\nimport { getContractByCodeHash, registerContract } from \"./contracts\";\nimport * as types from \"./types\";\n\n// Custom types for the contract\nexport namespace BitmapWordDeployerTypes {\n export type State = Omit<ContractState<any>, \"fields\">;\n\n export interface CallMethodTable {\n deploy: {\n params: CallContractParams<{ payer: Address }>;\n result: CallContractResult<HexString>;\n };\n }\n export type CallMethodParams<T extends keyof CallMethodTable> =\n CallMethodTable[T][\"params\"];\n export type CallMethodResult<T extends keyof CallMethodTable> =\n CallMethodTable[T][\"result\"];\n export type MultiCallParams = Partial<{\n [Name in keyof CallMethodTable]: CallMethodTable[Name][\"params\"];\n }>;\n export type MultiCallResults<T extends MultiCallParams> = {\n [MaybeName in keyof T]: MaybeName extends keyof CallMethodTable\n ? CallMethodTable[MaybeName][\"result\"]\n : undefined;\n };\n export type MulticallReturnType<Callss extends MultiCallParams[]> = {\n [index in keyof Callss]: MultiCallResults<Callss[index]>;\n };\n\n export interface SignExecuteMethodTable {\n deploy: {\n params: SignExecuteContractMethodParams<{ payer: Address }>;\n result: SignExecuteScriptTxResult;\n };\n }\n export type SignExecuteMethodParams<T extends keyof SignExecuteMethodTable> =\n SignExecuteMethodTable[T][\"params\"];\n export type SignExecuteMethodResult<T extends keyof SignExecuteMethodTable> =\n SignExecuteMethodTable[T][\"result\"];\n}\n\nclass Factory extends ContractFactory<BitmapWordDeployerInstance, {}> {\n encodeFields() {\n return encodeContractFields({}, this.contract.fieldsSig, types.AllStructs);\n }\n\n at(address: string): BitmapWordDeployerInstance {\n return new BitmapWordDeployerInstance(address);\n }\n\n tests = {\n deploy: async (\n params: Omit<\n TestContractParamsWithoutMaps<never, { payer: Address }>,\n \"initialFields\"\n >\n ): Promise<TestContractResultWithoutMaps<HexString>> => {\n return testMethod(this, \"deploy\", params, getContractByCodeHash);\n },\n };\n\n stateForTest(initFields: {}, asset?: Asset, address?: string) {\n return this.stateForTest_(initFields, asset, address, undefined);\n }\n}\n\n// Use this object to test and deploy the contract\nexport const BitmapWordDeployer = new Factory(\n Contract.fromJson(\n BitmapWordDeployerContractJson,\n \"\",\n \"082de32f22857e094db5658611a1d2ba23e792a7f23a548525e6de2784f2a70b\",\n types.AllStructs\n )\n);\nregisterContract(BitmapWordDeployer);\n\n// Use this class to interact with the blockchain\nexport class BitmapWordDeployerInstance extends ContractInstance {\n constructor(address: Address) {\n super(address);\n }\n\n async fetchState(): Promise<BitmapWordDeployerTypes.State> {\n return fetchContractState(BitmapWordDeployer, this);\n }\n\n view = {\n deploy: async (\n params: BitmapWordDeployerTypes.CallMethodParams<\"deploy\">\n ): Promise<BitmapWordDeployerTypes.CallMethodResult<\"deploy\">> => {\n return callMethod(\n BitmapWordDeployer,\n this,\n \"deploy\",\n params,\n getContractByCodeHash\n );\n },\n };\n\n transact = {\n deploy: async (\n params: BitmapWordDeployerTypes.SignExecuteMethodParams<\"deploy\">\n ): Promise<BitmapWordDeployerTypes.SignExecuteMethodResult<\"deploy\">> => {\n return signExecuteMethod(BitmapWordDeployer, this, \"deploy\", params);\n },\n };\n\n async multicall<Calls extends BitmapWordDeployerTypes.MultiCallParams>(\n calls: Calls\n ): Promise<BitmapWordDeployerTypes.MultiCallResults<Calls>>;\n async multicall<Callss extends BitmapWordDeployerTypes.MultiCallParams[]>(\n callss: Narrow<Callss>\n ): Promise<BitmapWordDeployerTypes.MulticallReturnType<Callss>>;\n async multicall<\n Callss extends\n | BitmapWordDeployerTypes.MultiCallParams\n | BitmapWordDeployerTypes.MultiCallParams[]\n >(callss: Callss): Promise<unknown> {\n return await multicallMethods(\n BitmapWordDeployer,\n this,\n callss,\n getContractByCodeHash\n );\n }\n}\n","{\n \"version\": \"v4.3.0\",\n \"name\": \"BitmapWordDeployer\",\n \"bytecode\": \"00014026010301040113d3c7309617b41301640c130164170217011600d1a2b316011602af1703160302\",\n \"codeHash\": \"082de32f22857e094db5658611a1d2ba23e792a7f23a548525e6de2784f2a70b\",\n \"fieldsSig\": {\n \"names\": [],\n \"types\": [],\n \"isMutable\": []\n },\n \"eventsSig\": [],\n \"functions\": [\n {\n \"name\": \"deploy\",\n \"paramNames\": [\n \"payer\"\n ],\n \"paramTypes\": [\n \"Address\"\n ],\n \"paramIsMutable\": [\n false\n ],\n \"returnTypes\": [\n \"BitmapWord\"\n ]\n }\n ],\n \"constants\": [],\n \"enums\": []\n}","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport {\n Address,\n Contract,\n ContractState,\n TestContractResult,\n HexString,\n ContractFactory,\n EventSubscribeOptions,\n EventSubscription,\n CallContractParams,\n CallContractResult,\n TestContractParams,\n ContractEvent,\n subscribeContractEvent,\n subscribeContractEvents,\n testMethod,\n callMethod,\n multicallMethods,\n fetchContractState,\n Asset,\n ContractInstance,\n getContractEventsCurrentCount,\n TestContractParamsWithoutMaps,\n TestContractResultWithoutMaps,\n SignExecuteContractMethodParams,\n SignExecuteScriptTxResult,\n signExecuteMethod,\n addStdIdToFields,\n encodeContractFields,\n Narrow,\n} from \"@alephium/web3\";\nimport { default as DexAccountContractJson } from \"../DexAccount.ral.json\";\nimport { getContractByCodeHash, registerContract } from \"./contracts\";\nimport * as types from \"./types\";\n\n// Custom types for the contract\nexport namespace DexAccountTypes {\n export type Fields = {\n parents: [HexString, HexString];\n owner: Address;\n refferer: Address;\n counter: bigint;\n };\n\n export type State = ContractState<Fields>;\n\n export interface CallMethodTable {\n deposit: {\n params: CallContractParams<{\n payer: Address;\n tokenId: HexString;\n amount: bigint;\n path: HexString;\n at: bigint;\n }>;\n result: CallContractResult<null>;\n };\n createAccount: {\n params: CallContractParams<{ ref: Address }>;\n result: CallContractResult<null>;\n };\n asRef: {\n params: CallContractParams<{ defaultRef: Address }>;\n result: CallContractResult<Address>;\n };\n updateCounter: {\n params: CallContractParams<{ newCounter: bigint }>;\n result: CallContractResult<null>;\n };\n setParents: {\n params: CallContractParams<{ newParents: [HexString, HexString] }>;\n result: CallContractResult<null>;\n };\n }\n export type CallMethodParams<T extends keyof CallMethodTable> =\n CallMethodTable[T][\"params\"];\n export type CallMethodResult<T extends keyof CallMethodTable> =\n CallMethodTable[T][\"result\"];\n export type MultiCallParams = Partial<{\n [Name in keyof CallMethodTable]: CallMethodTable[Name][\"params\"];\n }>;\n export type MultiCallResults<T extends MultiCallParams> = {\n [MaybeName in keyof T]: MaybeName extends keyof CallMethodTable\n ? CallMethodTable[MaybeName][\"result\"]\n : undefined;\n };\n export type MulticallReturnType<Callss extends MultiCallParams[]> = {\n [index in keyof Callss]: MultiCallResults<Callss[index]>;\n };\n\n export interface SignExecuteMethodTable {\n deposit: {\n params: SignExecuteContractMethodParams<{\n payer: Address;\n tokenId: HexString;\n amount: bigint;\n path: HexString;\n at: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n createAccount: {\n params: SignExecuteContractMethodParams<{ ref: Address }>;\n result: SignExecuteScriptTxResult;\n };\n asRef: {\n params: SignExecuteContractMethodParams<{ defaultRef: Address }>;\n result: SignExecuteScriptTxResult;\n };\n updateCounter: {\n params: SignExecuteContractMethodParams<{ newCounter: bigint }>;\n result: SignExecuteScriptTxResult;\n };\n setParents: {\n params: SignExecuteContractMethodParams<{\n newParents: [HexString, HexString];\n }>;\n result: SignExecuteScriptTxResult;\n };\n }\n export type SignExecuteMethodParams<T extends keyof SignExecuteMethodTable> =\n SignExecuteMethodTable[T][\"params\"];\n export type SignExecuteMethodResult<T extends keyof SignExecuteMethodTable> =\n SignExecuteMethodTable[T][\"result\"];\n}\n\nclass Factory extends ContractFactory<\n DexAccountInstance,\n DexAccountTypes.Fields\n> {\n encodeFields(fields: DexAccountTypes.Fields) {\n return encodeContractFields(\n addStdIdToFields(this.contract, fields),\n this.contract.fieldsSig,\n types.AllStructs\n );\n }\n\n at(address: string): DexAccountInstance {\n return new DexAccountInstance(address);\n }\n\n tests = {\n deposit: async (\n params: TestContractParamsWithoutMaps<\n DexAccountTypes.Fields,\n {\n payer: Address;\n tokenId: HexString;\n amount: bigint;\n path: HexString;\n at: bigint;\n }\n >\n ): Promise<TestContractResultWithoutMaps<null>> => {\n return testMethod(this, \"deposit\", params, getContractByCodeHash);\n },\n createAccount: async (\n params: TestContractParamsWithoutMaps<\n DexAccountTypes.Fields,\n { ref: Address }\n >\n ): Promise<TestContractResultWithoutMaps<null>> => {\n return testMethod(this, \"createAccount\", params, getContractByCodeHash);\n },\n asRef: async (\n params: TestContractParamsWithoutMaps<\n DexAccountTypes.Fields,\n { defaultRef: Address }\n >\n ): Promise<TestContractResultWithoutMaps<Address>> => {\n return testMethod(this, \"asRef\", params, getContractByCodeHash);\n },\n updateCounter: async (\n params: TestContractParamsWithoutMaps<\n DexAccountTypes.Fields,\n { newCounter: bigint }\n >\n ): Promise<TestContractResultWithoutMaps<null>> => {\n return testMethod(this, \"updateCounter\", params, getContractByCodeHash);\n },\n setParents: async (\n params: TestContractParamsWithoutMaps<\n DexAccountTypes.Fields,\n { newParents: [HexString, HexString] }\n >\n ): Promise<TestContractResultWithoutMaps<null>> => {\n return testMethod(this, \"setParents\", params, getContractByCodeHash);\n },\n };\n\n stateForTest(\n initFields: DexAccountTypes.Fields,\n asset?: Asset,\n address?: string\n ) {\n return this.stateForTest_(initFields, asset, address, undefined);\n }\n}\n\n// Use this object to test and deploy the contract\nexport const DexAccount = new Factory(\n Contract.fromJson(\n DexAccountContractJson,\n \"\",\n \"66c27c91033d54a2d3edc97dbc36b35022274ddd8a7b84b724631ac37586ed48\",\n types.AllStructs\n )\n);\nregisterContract(DexAccount);\n\n// Use this class to interact with the blockchain\nexport class DexAccountInstance extends ContractInstance {\n constructor(address: Address) {\n super(address);\n }\n\n async fetchState(): Promise<DexAccountTypes.State> {\n return fetchContractState(DexAccount, this);\n }\n\n view = {\n deposit: async (\n params: DexAccountTypes.CallMethodParams<\"deposit\">\n ): Promise<DexAccountTypes.CallMethodResult<\"deposit\">> => {\n return callMethod(\n DexAccount,\n this,\n \"deposit\",\n params,\n getContractByCodeHash\n );\n },\n createAccount: async (\n params: DexAccountTypes.CallMethodParams<\"createAccount\">\n ): Promise<DexAccountTypes.CallMethodResult<\"createAccount\">> => {\n return callMethod(\n DexAccount,\n this,\n \"createAccount\",\n params,\n getContractByCodeHash\n );\n },\n asRef: async (\n params: DexAccountTypes.CallMethodParams<\"asRef\">\n ): Promise<DexAccountTypes.CallMethodResult<\"asRef\">> => {\n return callMethod(\n DexAccount,\n this,\n \"asRef\",\n params,\n getContractByCodeHash\n );\n },\n updateCounter: async (\n params: DexAccountTypes.CallMethodParams<\"updateCounter\">\n ): Promise<DexAccountTypes.CallMethodResult<\"updateCounter\">> => {\n return callMethod(\n DexAccount,\n this,\n \"updateCounter\",\n params,\n getContractByCodeHash\n );\n },\n setParents: async (\n params: DexAccountTypes.CallMethodParams<\"setParents\">\n ): Promise<DexAccountTypes.CallMethodResult<\"setParents\">> => {\n return callMethod(\n DexAccount,\n this,\n \"setParents\",\n params,\n getContractByCodeHash\n );\n },\n };\n\n transact = {\n deposit: async (\n params: DexAccountTypes.SignExecuteMethodParams<\"deposit\">\n ): Promise<DexAccountTypes.SignExecuteMethodResult<\"deposit\">> => {\n return signExecuteMethod(DexAccount, this, \"deposit\", params);\n },\n createAccount: async (\n params: DexAccountTypes.SignExecuteMethodParams<\"createAccount\">\n ): Promise<DexAccountTypes.SignExecuteMethodResult<\"createAccount\">> => {\n return signExecuteMethod(DexAccount, this, \"createAccount\", params);\n },\n asRef: async (\n params: DexAccountTypes.SignExecuteMethodParams<\"asRef\">\n ): Promise<DexAccountTypes.SignExecuteMethodResult<\"asRef\">> => {\n return signExecuteMethod(DexAccount, this, \"asRef\", params);\n },\n updateCounter: async (\n params: DexAccountTypes.SignExecuteMethodParams<\"updateCounter\">\n ): Promise<DexAccountTypes.SignExecuteMethodResult<\"updateCounter\">> => {\n return signExecuteMethod(DexAccount, this, \"updateCounter\", params);\n },\n setParents: async (\n params: DexAccountTypes.SignExecuteMethodParams<\"setParents\">\n ): Promise<DexAccountTypes.SignExecuteMethodResult<\"setParents\">> => {\n return signExecuteMethod(DexAccount, this, \"setParents\", params);\n },\n };\n\n async multicall<Calls extends DexAccountTypes.MultiCallParams>(\n calls: Calls\n ): Promise<DexAccountTypes.MultiCallResults<Calls>>;\n async multicall<Callss extends DexAccountTypes.MultiCallParams[]>(\n callss: Narrow<Callss>\n ): Promise<DexAccountTypes.MulticallReturnType<Callss>>;\n async multicall<\n Callss extends\n | DexAccountTypes.MultiCallParams\n | DexAccountTypes.MultiCallParams[]\n >(callss: Callss): Promise<unknown> {\n return await multicallMethods(\n DexAccount,\n this,\n callss,\n getContractByCodeHash\n );\n }\n}\n","{\n \"version\": \"v4.3.0\",\n \"name\": \"DexAccount\",\n \"bytecode\": \"0505404b409940b240ca40e60103050800402cd3bd481528b417051600ce0116011602aa16047a0e314dc3170616064313202f4c1816047a0e314dc31603cc17071605160777467a4c0418a0020c304c04a0020d2ba10201000106004029d365b302f9b41701160149191341f47b160047cb17021602c54c06ce000d0d160201024a01ce00170316011603130264a000a001a00213036417051704160147b116041605c11801000101010ad358cbdacfa0020c2f4c03ce00024a0216000201030101000ad3511324a7b4b1a50d2f1341937b1600a10201030202000cd375472acbb4b1a50d2f1341937b16001601a101a100\",\n \"codeHash\": \"66c27c91033d54a2d3edc97dbc36b35022274ddd8a7b84b724631ac37586ed48\",\n \"fieldsSig\": {\n \"names\": [\n \"parents\",\n \"owner\",\n \"refferer\",\n \"counter\"\n ],\n \"types\": [\n \"[ByteVec;2]\",\n \"Address\",\n \"Address\",\n \"U256\"\n ],\n \"isMutable\": [\n true,\n false,\n false,\n true\n ]\n },\n \"eventsSig\": [],\n \"functions\": [\n {\n \"name\": \"deposit\",\n \"paramNames\": [\n \"payer\",\n \"tokenId\",\n \"amount\",\n \"path\",\n \"at\"\n ],\n \"paramTypes\": [\n \"Address\",\n \"ByteVec\",\n \"U256\",\n \"ByteVec\",\n \"U256\"\n ],\n \"paramIsMutable\": [\n false,\n false,\n false,\n false,\n false\n ],\n \"returnTypes\": []\n },\n {\n \"name\": \"createAccount\",\n \"paramNames\": [\n \"ref\"\n ],\n \"paramTypes\": [\n \"Address\"\n ],\n \"paramIsMutable\": [\n false\n ],\n \"returnTypes\": []\n },\n {\n \"name\": \"asRef\",\n \"paramNames\": [\n \"defaultRef\"\n ],\n \"paramTypes\": [\n \"Address\"\n ],\n \"paramIsMutable\": [\n false\n ],\n \"returnTypes\": [\n \"Address\"\n ]\n },\n {\n \"name\": \"updateCounter\",\n \"paramNames\": [\n \"newCounter\"\n ],\n \"paramTypes\": [\n \"U256\"\n ],\n \"paramIsMutable\": [\n false\n ],\n \"returnTypes\": []\n },\n {\n \"name\": \"setParents\",\n \"paramNames\": [\n \"newParents\"\n ],\n \"paramTypes\": [\n \"[ByteVec;2]\"\n ],\n \"paramIsMutable\": [\n false\n ],\n \"returnTypes\": []\n }\n ],\n \"constants\": [],\n \"enums\": []\n}","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport {\n Address,\n Contract,\n ContractState,\n TestContractResult,\n HexString,\n ContractFactory,\n EventSubscribeOptions,\n EventSubscription,\n CallContractParams,\n CallContractResult,\n TestContractParams,\n ContractEvent,\n subscribeContractEvent,\n subscribeContractEvents,\n testMethod,\n callMethod,\n multicallMethods,\n fetchContractState,\n Asset,\n ContractInstance,\n getContractEventsCurrentCount,\n TestContractParamsWithoutMaps,\n TestContractResultWithoutMaps,\n SignExecuteContractMethodParams,\n SignExecuteScriptTxResult,\n signExecuteMethod,\n addStdIdToFields,\n encodeContractFields,\n Narrow,\n} from \"@alephium/web3\";\nimport { default as LiquidityAmountsTestContractJson } from \"../LiquidityAmountsTest.ral.json\";\nimport { getContractByCodeHash, registerContract } from \"./contracts\";\nimport * as types from \"./types\";\n\n// Custom types for the contract\nexport namespace LiquidityAmountsTestTypes {\n export type State = Omit<ContractState<any>, \"fields\">;\n\n export interface CallMethodTable {\n getLiquidityForAmount0: {\n params: CallContractParams<{\n sqrtRatioAX96: bigint;\n sqrtRatioBX96: bigint;\n amount0: bigint;\n }>;\n result: CallContractResult<bigint>;\n };\n getLiquidityForAmount1: {\n params: CallContractParams<{\n sqrtRatioAX96: bigint;\n sqrtRatioBX96: bigint;\n amount1: bigint;\n }>;\n result: CallContractResult<bigint>;\n };\n getLiquidityForAmounts: {\n params: CallContractParams<{\n sqrtRatioX96: bigint;\n sqrtRatioAX96: bigint;\n sqrtRatioBX96: bigint;\n amount0: bigint;\n amount1: bigint;\n }>;\n result: CallContractResult<bigint>;\n };\n getAmount0ForLiquidity: {\n params: CallContractParams<{\n sqrtRatioAX96: bigint;\n sqrtRatioBX96: bigint;\n liquidity: bigint;\n }>;\n result: CallContractResult<bigint>;\n };\n mulDiv: {\n params: CallContractParams<{ a: bigint; b: bigint; denominator: bigint }>;\n result: CallContractResult<bigint>;\n };\n mulDivRoundingUp: {\n params: CallContractParams<{ a: bigint; b: bigint; denominator: bigint }>;\n result: CallContractResult<bigint>;\n };\n }\n export type CallMethodParams<T extends keyof CallMethodTable> =\n CallMethodTable[T][\"params\"];\n export type CallMethodResult<T extends keyof CallMethodTable> =\n CallMethodTable[T][\"result\"];\n export type MultiCallParams = Partial<{\n [Name in keyof CallMethodTable]: CallMethodTable[Name][\"params\"];\n }>;\n export type MultiCallResults<T extends MultiCallParams> = {\n [MaybeName in keyof T]: MaybeName extends keyof CallMethodTable\n ? CallMethodTable[MaybeName][\"result\"]\n : undefined;\n };\n export type MulticallReturnType<Callss extends MultiCallParams[]> = {\n [index in keyof Callss]: MultiCallResults<Callss[index]>;\n };\n\n export interface SignExecuteMethodTable {\n getLiquidityForAmount0: {\n params: SignExecuteContractMethodParams<{\n sqrtRatioAX96: bigint;\n sqrtRatioBX96: bigint;\n amount0: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n getLiquidityForAmount1: {\n params: SignExecuteContractMethodParams<{\n sqrtRatioAX96: bigint;\n sqrtRatioBX96: bigint;\n amount1: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n getLiquidityForAmounts: {\n params: SignExecuteContractMethodParams<{\n sqrtRatioX96: bigint;\n sqrtRatioAX96: bigint;\n sqrtRatioBX96: bigint;\n amount0: bigint;\n amount1: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n getAmount0ForLiquidity: {\n params: SignExecuteContractMethodParams<{\n sqrtRatioAX96: bigint;\n sqrtRatioBX96: bigint;\n liquidity: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n mulDiv: {\n params: SignExecuteContractMethodParams<{\n a: bigint;\n b: bigint;\n denominator: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n mulDivRoundingUp: {\n params: SignExecuteContractMethodParams<{\n a: bigint;\n b: bigint;\n denominator: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n }\n export type SignExecuteMethodParams<T extends keyof SignExecuteMethodTable> =\n SignExecuteMethodTable[T][\"params\"];\n export type SignExecuteMethodResult<T extends keyof SignExecuteMethodTable> =\n SignExecuteMethodTable[T][\"result\"];\n}\n\nclass Factory extends ContractFactory<LiquidityAmountsTestInstance, {}> {\n encodeFields() {\n return encodeContractFields({}, this.contract.fieldsSig, types.AllStructs);\n }\n\n consts = { FullMathError: { MulDivOverflow: BigInt(\"351\") } };\n\n at(address: string): LiquidityAmountsTestInstance {\n return new LiquidityAmountsTestInstance(address);\n }\n\n tests = {\n getLiquidityForAmount0: async (\n params: Omit<\n TestContractParamsWithoutMaps<\n never,\n { sqrtRatioAX96: bigint; sqrtRatioBX96: bigint; amount0: bigint }\n >,\n \"initialFields\"\n >\n ): Promise<TestContractResultWithoutMaps<bigint>> => {\n return testMethod(\n this,\n \"getLiquidityForAmount0\",\n params,\n getContractByCodeHash\n );\n },\n getLiquidityForAmount1: async (\n params: Omit<\n TestContractParamsWithoutMaps<\n never,\n { sqrtRatioAX96: bigint; sqrtRatioBX96: bigint; amount1: bigint }\n >,\n \"initialFields\"\n >\n ): Promise<TestContractResultWithoutMaps<bigint>> => {\n return testMethod(\n this,\n \"getLiquidityForAmount1\",\n params,\n getContractByCodeHash\n );\n },\n getLiquidityForAmounts: async (\n params: Omit<\n TestContractParamsWithoutMaps<\n never,\n {\n sqrtRatioX96: bigint;\n sqrtRatioAX96: bigint;\n sqrtRatioBX96: bigint;\n amount0: bigint;\n amount1: bigint;\n }\n >,\n \"initialFields\"\n >\n ): Promise<TestContractResultWithoutMaps<bigint>> => {\n return testMethod(\n this,\n \"getLiquidityForAmounts\",\n params,\n getContractByCodeHash\n );\n },\n getAmount0ForLiquidity: async (\n params: Omit<\n TestContractParamsWithoutMaps<\n never,\n { sqrtRatioAX96: bigint; sqrtRatioBX96: bigint; liquidity: bigint }\n >,\n \"initialFields\"\n >\n ): Promise<TestContractResultWithoutMaps<bigint>> => {\n return testMethod(\n this,\n \"getAmount0ForLiquidity\",\n params,\n getContractByCodeHash\n );\n },\n mulDiv: async (\n params: Omit<\n TestContractParamsWithoutMaps<\n never,\n { a: bigint; b: bigint; denominator: bigint }\n >,\n \"initialFields\"\n >\n ): Promise<TestContractResultWithoutMaps<bigint>> => {\n return testMethod(this, \"mulDiv\", params, getContractByCodeHash);\n },\n mulDivRoundingUp: async (\n params: Omit<\n TestContractParamsWithoutMaps<\n never,\n { a: bigint; b: bigint; denominator: bigint }\n >,\n \"initialFields\"\n >\n ): Promise<TestContractResultWithoutMaps<bigint>> => {\n return testMethod(\n this,\n \"mulDivRoundingUp\",\n params,\n getContractByCodeHash\n );\n },\n };\n\n stateForTest(initFields: {}, asset?: Asset, address?: string) {\n return this.stateForTest_(initFields, asset, address, undefined);\n }\n}\n\n// Use this object to test and deploy the contract\nexport const LiquidityAmountsTest = new Factory(\n Contract.fromJson(\n LiquidityAmountsTestContractJson,\n \"\",\n \"6a4ba04c81892909e02efe02e9f3ebf139cf27afd40f5fca01f4a9b98a9003da\",\n types.AllStructs\n )\n);\nregisterContract(LiquidityAmountsTest);\n\n// Use this class to interact with the blockchain\nexport class LiquidityAmountsTestInstance extends ContractInstance {\n constructor(address: Address) {\n super(address);\n }\n\n async fetchState(): Promise<LiquidityAmountsTestTypes.State> {\n return fetchContractState(LiquidityAmountsTest, this);\n }\n\n view = {\n getLiquidityForAmount0: async (\n params: LiquidityAmountsTestTypes.CallMethodParams<\"getLiquidityForAmount0\">\n ): Promise<\n LiquidityAmountsTestTypes.CallMethodResult<\"getLiquidityForAmount0\">\n > => {\n return callMethod(\n LiquidityAmountsTest,\n this,\n \"getLiquidityForAmount0\",\n params,\n getContractByCodeHash\n );\n },\n getLiquidityForAmount1: async (\n params: LiquidityAmountsTestTypes.CallMethodParams<\"getLiquidityForAmount1\">\n ): Promise<\n LiquidityAmountsTestTypes.CallMethodResult<\"getLiquidityForAmount1\">\n > => {\n return callMethod(\n LiquidityAmountsTest,\n this,\n \"getLiquidityForAmount1\",\n params,\n getContractByCodeHash\n );\n },\n getLiquidityForAmounts: async (\n params: LiquidityAmountsTestTypes.CallMethodParams<\"getLiquidityForAmounts\">\n ): Promise<\n LiquidityAmountsTestTypes.CallMethodResult<\"getLiquidityForAmounts\">\n > => {\n return callMethod(\n LiquidityAmountsTest,\n this,\n \"getLiquidityForAmounts\",\n params,\n getContractByCodeHash\n );\n },\n getAmount0ForLiquidity: async (\n params: LiquidityAmountsTestTypes.CallMethodParams<\"getAmount0ForLiquidity\">\n ): Promise<\n LiquidityAmountsTestTypes.CallMethodResult<\"getAmount0ForLiquidity\">\n > => {\n return callMethod(\n LiquidityAmountsTest,\n this,\n \"getAmount0ForLiquidity\",\n params,\n getContractByCodeHash\n );\n },\n mulDiv: async (\n params: LiquidityAmountsTestTypes.CallMethodParams<\"mulDiv\">\n ): Promise<LiquidityAmountsTestTypes.CallMethodResult<\"mulDiv\">> => {\n return callMethod(\n LiquidityAmountsTest,\n this,\n \"mulDiv\",\n params,\n getContractByCodeHash\n );\n },\n mulDivRoundingUp: async (\n params: LiquidityAmountsTestTypes.CallMethodParams<\"mulDivRoundingUp\">\n ): Promise<\n LiquidityAmountsTestTypes.CallMethodResult<\"mulDivRoundingUp\">\n > => {\n return callMethod(\n LiquidityAmountsTest,\n this,\n \"mulDivRoundingUp\",\n params,\n getContractByCodeHash\n );\n },\n };\n\n transact = {\n getLiquidityForAmount0: async (\n params: LiquidityAmountsTestTypes.SignExecuteMethodParams<\"getLiquidityForAmount0\">\n ): Promise<\n LiquidityAmountsTestTypes.SignExecuteMethodResult<\"getLiquidityForAmount0\">\n > => {\n return signExecuteMethod(\n LiquidityAmountsTest,\n this,\n \"getLiquidityForAmount0\",\n params\n );\n },\n getLiquidityForAmount1: async (\n params: LiquidityAmountsTestTypes.SignExecuteMethodParams<\"getLiquidityForAmount1\">\n ): Promise<\n LiquidityAmountsTestTypes.SignExecuteMethodResult<\"getLiquidityForAmount1\">\n > => {\n return signExecuteMethod(\n LiquidityAmountsTest,\n this,\n \"getLiquidityForAmount1\",\n params\n );\n },\n getLiquidityForAmounts: async (\n params: LiquidityAmountsTestTypes.SignExecuteMethodParams<\"getLiquidityForAmounts\">\n ): Promise<\n LiquidityAmountsTestTypes.SignExecuteMethodResult<\"getLiquidityForAmounts\">\n > => {\n return signExecuteMethod(\n LiquidityAmountsTest,\n this,\n \"getLiquidityForAmounts\",\n params\n );\n },\n getAmount0ForLiquidity: async (\n params: LiquidityAmountsTestTypes.SignExecuteMethodParams<\"getAmount0ForLiquidity\">\n ): Promise<\n LiquidityAmountsTestTypes.SignExecuteMethodResult<\"getAmount0ForLiquidity\">\n > => {\n return signExecuteMethod(\n LiquidityAmountsTest,\n this,\n \"getAmount0ForLiquidity\",\n params\n );\n },\n mulDiv: async (\n params: LiquidityAmountsTestTypes.SignExecuteMethodParams<\"mulDiv\">\n ): Promise<LiquidityAmountsTestTypes.SignExecuteMethodResult<\"mulDiv\">> => {\n return signExecuteMethod(LiquidityAmountsTest, this, \"mulDiv\", params);\n },\n mulDivRoundingUp: async (\n params: LiquidityAmountsTestTypes.SignExecuteMethodParams<\"mulDivRoundingUp\">\n ): Promise<\n LiquidityAmountsTestTypes.SignExecuteMethodResult<\"mulDivRoundingUp\">\n > => {\n return signExecuteMethod(\n LiquidityAmountsTest,\n this,\n \"mulDivRoundingUp\",\n params\n );\n },\n };\n\n async multicall<Calls extends LiquidityAmountsTestTypes.MultiCallParams>(\n calls: Calls\n ): Promise<LiquidityAmountsTestTypes.MultiCallResults<Calls>>;\n async multicall<Callss extends LiquidityAmountsTestTypes.MultiCallParams[]>(\n callss: Narrow<Callss>\n ): Promise<LiquidityAmountsTestTypes.MulticallReturnType<Callss>>;\n async multicall<\n Callss extends\n | LiquidityAmountsTestTypes.MultiCallParams\n | LiquidityAmountsTestTypes.MultiCallParams[]\n >(callss: Callss): Promise<unknown> {\n return await multicallMethods(\n LiquidityAmountsTest,\n this,\n callss,\n getContractByCodeHash\n );\n }\n}\n","{\n \"version\": \"v4.3.0\",\n \"name\": \"LiquidityAmountsTest\",\n \"bytecode\": \"0006402e405240a440d241b441d701000304010dd3b8a5f4fb1600160113c9010000000000000000000000000004170316021603160116002b000402010003030108d364be47fc160213c901000000000000000000000000160116002b00040201000507014027d345f12d7a16001601324c061601160216030000024a1c16001602314c13160016021603000017051601160016040001170616051606314c0216054a011606024a0516011602160400010201000304010ed374e08b3b160213c9010000000000000000000000002c160116002b160100041703160316002d020000030901408d160016010c0d3687170316001601371704160316043616031604314c020d4a010c36170516050c2f4c04160416022d02160216053313415f7b160016011602871706160516061604334c020d4a010c361705160416063617040c1602361602381707160216072d1702160416072d17040c16073616072d0d351707160416051607373917040f1602370e3a170816080e16021608373637170816080e16021608373637170816080e16021608373637170816080e16021608373637170816080e16021608373637170816080e16021608373637170816041608370200000304011216001601160200041703160016011602870c334c0416030d2a02160302\",\n \"codeHash\": \"6a4ba04c81892909e02efe02e9f3ebf139cf27afd40f5fca01f4a9b98a9003da\",\n \"fieldsSig\": {\n \"names\": [],\n \"types\": [],\n \"isMutable\": []\n },\n \"eventsSig\": [],\n \"functions\": [\n {\n \"name\": \"getLiquidityForAmount0\",\n \"paramNames\": [\n \"sqrtRatioAX96\",\n \"sqrtRatioBX96\",\n \"amount0\"\n ],\n \"paramTypes\": [\n \"U256\",\n \"U256\",\n \"U256\"\n ],\n \"paramIsMutable\": [\n false,\n false,\n false\n ],\n \"returnTypes\": [\n \"U256\"\n ]\n },\n {\n \"name\": \"getLiquidityForAmount1\",\n \"paramNames\": [\n \"sqrtRatioAX96\",\n \"sqrtRatioBX96\",\n \"amount1\"\n ],\n \"paramTypes\": [\n \"U256\",\n \"U256\",\n \"U256\"\n ],\n \"paramIsMutable\": [\n false,\n false,\n false\n ],\n \"returnTypes\": [\n \"U256\"\n ]\n },\n {\n \"name\": \"getLiquidityForAmounts\",\n \"paramNames\": [\n \"sqrtRatioX96\",\n \"sqrtRatioAX96\",\n \"sqrtRatioBX96\",\n \"amount0\",\n \"amount1\"\n ],\n \"paramTypes\": [\n \"U256\",\n \"U256\",\n \"U256\",\n \"U256\",\n \"U256\"\n ],\n \"paramIsMutable\": [\n false,\n false,\n false,\n false,\n false\n ],\n \"returnTypes\": [\n \"U256\"\n ]\n },\n {\n \"name\": \"getAmount0ForLiquidity\",\n \"paramNames\": [\n \"sqrtRatioAX96\",\n \"sqrtRatioBX96\",\n \"liquidity\"\n ],\n \"paramTypes\": [\n \"U256\",\n \"U256\",\n \"U256\"\n ],\n \"paramIsMutable\": [\n false,\n false,\n false\n ],\n \"returnTypes\": [\n \"U256\"\n ]\n },\n {\n \"name\": \"mulDiv\",\n \"paramNames\": [\n \"a\",\n \"b\",\n \"denominator\"\n ],\n \"paramTypes\": [\n \"U256\",\n \"U256\",\n \"U256\"\n ],\n \"paramIsMutable\": [\n false,\n false,\n true\n ],\n \"returnTypes\": [\n \"U256\"\n ]\n },\n {\n \"name\": \"mulDivRoundingUp\",\n \"paramNames\": [\n \"a\",\n \"b\",\n \"denominator\"\n ],\n \"paramTypes\": [\n \"U256\",\n \"U256\",\n \"U256\"\n ],\n \"paramIsMutable\": [\n false,\n false,\n false\n ],\n \"returnTypes\": [\n \"U256\"\n ]\n }\n ],\n \"constants\": [],\n \"enums\": [\n {\n \"name\": \"FullMathError\",\n \"fields\": [\n {\n \"name\": \"MulDivOverflow\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"351\"\n }\n }\n ]\n }\n ]\n}","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport {\n Address,\n Contract,\n ContractState,\n TestContractResult,\n HexString,\n ContractFactory,\n EventSubscribeOptions,\n EventSubscription,\n CallContractParams,\n CallContractResult,\n TestContractParams,\n ContractEvent,\n subscribeContractEvent,\n subscribeContractEvents,\n testMethod,\n callMethod,\n multicallMethods,\n fetchContractState,\n Asset,\n ContractInstance,\n getContractEventsCurrentCount,\n TestContractParamsWithoutMaps,\n TestContractResultWithoutMaps,\n SignExecuteContractMethodParams,\n SignExecuteScriptTxResult,\n signExecuteMethod,\n addStdIdToFields,\n encodeContractFields,\n Narrow,\n} from \"@alephium/web3\";\nimport { default as LiquidityManagmentTestContractJson } from \"../LiquidityManagmentTest.ral.json\";\nimport { getContractByCodeHash, registerContract } from \"./contracts\";\nimport * as types from \"./types\";\n\n// Custom types for the contract\nexport namespace LiquidityManagmentTestTypes {\n export type Fields = {\n parent: HexString;\n };\n\n export type State = ContractState<Fields>;\n\n export interface CallMethodTable {\n addLiquidity: {\n params: CallContractParams<{\n payer: Address;\n p: types.ModifyLiquidityParams;\n }>;\n result: CallContractResult<[bigint, bigint, bigint, HexString]>;\n };\n getLiquidityForAmount0: {\n params: CallContractParams<{\n sqrtRatioAX96: bigint;\n sqrtRatioBX96: bigint;\n amount0: bigint;\n }>;\n result: CallContractResult<bigint>;\n };\n getLiquidityForAmount1: {\n params: CallContractParams<{\n sqrtRatioAX96: bigint;\n sqrtRatioBX96: bigint;\n amount1: bigint;\n }>;\n result: CallContractResult<bigint>;\n };\n getLiquidityForAmounts: {\n params: CallContractParams<{\n sqrtRatioX96: bigint;\n sqrtRatioAX96: bigint;\n sqrtRatioBX96: bigint;\n amount0: bigint;\n amount1: bigint;\n }>;\n result: CallContractResult<bigint>;\n };\n getAmount0ForLiquidity: {\n params: CallContractParams<{\n sqrtRatioAX96: bigint;\n sqrtRatioBX96: bigint;\n liquidity: bigint;\n }>;\n result: CallContractResult<bigint>;\n };\n mulDiv: {\n params: CallContractParams<{ a: bigint; b: bigint; denominator: bigint }>;\n result: CallContractResult<bigint>;\n };\n mulDivRoundingUp: {\n params: CallContractParams<{ a: bigint; b: bigint; denominator: bigint }>;\n result: CallContractResult<bigint>;\n };\n configPath: {\n params: CallContractParams<{ configIndex_: bigint }>;\n result: CallContractResult<HexString>;\n };\n poolPath: {\n params: CallContractParams<{\n factory: HexString;\n tokens: HexString;\n configIndex_: bigint;\n }>;\n result: CallContractResult<HexString>;\n };\n poolContractId: {\n params: CallContractParams<{\n factory: HexString;\n tokens: HexString;\n configIndex_: bigint;\n }>;\n result: CallContractResult<HexString>;\n };\n positionPath: {\n params: CallContractParams<{\n o: Address;\n tickLower: bigint;\n tickUpper: bigint;\n }>;\n result: CallContractResult<HexString>;\n };\n positionContractId: {\n params: CallContractParams<{\n pool: HexString;\n o: Address;\n tickLower: bigint;\n tickUpper: bigint;\n }>;\n result: CallContractResult<HexString>;\n };\n getSqrtRatioAtTick: {\n params: CallContractParams<{ tick: bigint }>;\n result: CallContractResult<bigint>;\n };\n getTickAtSqrtRatio: {\n params: CallContractParams<{ sqrtPriceX96: bigint }>;\n result: CallContractResult<bigint>;\n };\n }\n export type CallMethodParams<T extends keyof CallMethodTable> =\n CallMethodTable[T][\"params\"];\n export type CallMethodResult<T extends keyof CallMethodTable> =\n CallMethodTable[T][\"result\"];\n export type MultiCallParams = Partial<{\n [Name in keyof CallMethodTable]: CallMethodTable[Name][\"params\"];\n }>;\n export type MultiCallResults<T extends MultiCallParams> = {\n [MaybeName in keyof T]: MaybeName extends keyof CallMethodTable\n ? CallMethodTable[MaybeName][\"result\"]\n : undefined;\n };\n export type MulticallReturnType<Callss extends MultiCallParams[]> = {\n [index in keyof Callss]: MultiCallResults<Callss[index]>;\n };\n\n export interface SignExecuteMethodTable {\n addLiquidity: {\n params: SignExecuteContractMethodParams<{\n payer: Address;\n p: types.ModifyLiquidityParams;\n }>;\n result: SignExecuteScriptTxResult;\n };\n getLiquidityForAmount0: {\n params: SignExecuteContractMethodParams<{\n sqrtRatioAX96: bigint;\n sqrtRatioBX96: bigint;\n amount0: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n getLiquidityForAmount1: {\n params: SignExecuteContractMethodParams<{\n sqrtRatioAX96: bigint;\n sqrtRatioBX96: bigint;\n amount1: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n getLiquidityForAmounts: {\n params: SignExecuteContractMethodParams<{\n sqrtRatioX96: bigint;\n sqrtRatioAX96: bigint;\n sqrtRatioBX96: bigint;\n amount0: bigint;\n amount1: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n getAmount0ForLiquidity: {\n params: SignExecuteContractMethodParams<{\n sqrtRatioAX96: bigint;\n sqrtRatioBX96: bigint;\n liquidity: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n mulDiv: {\n params: SignExecuteContractMethodParams<{\n a: bigint;\n b: bigint;\n denominator: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n mulDivRoundingUp: {\n params: SignExecuteContractMethodParams<{\n a: bigint;\n b: bigint;\n denominator: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n configPath: {\n params: SignExecuteContractMethodParams<{ configIndex_: bigint }>;\n result: SignExecuteScriptTxResult;\n };\n poolPath: {\n params: SignExecuteContractMethodParams<{\n factory: HexString;\n tokens: HexString;\n configIndex_: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n poolContractId: {\n params: SignExecuteContractMethodParams<{\n factory: HexString;\n tokens: HexString;\n configIndex_: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n positionPath: {\n params: SignExecuteContractMethodParams<{\n o: Address;\n tickLower: bigint;\n tickUpper: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n positionContractId: {\n params: SignExecuteContractMethodParams<{\n pool: HexString;\n o: Address;\n tickLower: bigint;\n tickUpper: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n getSqrtRatioAtTick: {\n params: SignExecuteContractMethodParams<{ tick: bigint }>;\n result: SignExecuteScriptTxResult;\n };\n getTickAtSqrtRatio: {\n params: SignExecuteContractMethodParams<{ sqrtPriceX96: bigint }>;\n result: SignExecuteScriptTxResult;\n };\n }\n export type SignExecuteMethodParams<T extends keyof SignExecuteMethodTable> =\n SignExecuteMethodTable[T][\"params\"];\n export type SignExecuteMethodResult<T extends keyof SignExecuteMethodTable> =\n SignExecuteMethodTable[T][\"result\"];\n}\n\nclass Factory extends ContractFactory<\n LiquidityManagmentTestInstance,\n LiquidityManagmentTestTypes.Fields\n> {\n encodeFields(fields: LiquidityManagmentTestTypes.Fields) {\n return encodeContractFields(\n addStdIdToFields(this.contract, fields),\n this.contract.fieldsSig,\n types.AllStructs\n );\n }\n\n consts = {\n LiquidityManagmentError: {\n MintSlippage: BigInt(\"850\"),\n BurnSlippage: BigInt(\"851\"),\n },\n FullMathError: { MulDivOverflow: BigInt(\"351\") },\n PathPrefixes: {\n Tick: BigInt(\"0\"),\n Position: BigInt(\"1\"),\n Word: BigInt(\"2\"),\n },\n TickMathError: {\n SqrtPriceX96OutOfBounds: BigInt(\"201\"),\n TickOutOfBounds: BigInt(\"202\"),\n },\n };\n\n at(address: string): LiquidityManagmentTestInstance {\n return new LiquidityManagmentTestInstance(address);\n }\n\n tests = {\n addLiquidity: async (\n params: TestContractParamsWithoutMaps<\n LiquidityManagmentTestTypes.Fields,\n { payer: Address; p: types.ModifyLiquidityParams }\n >\n ): Promise<\n TestContractResultWithoutMaps<[bigint, bigint, bigint, HexString]>\n > => {\n return testMethod(this, \"addLiquidity\", params, getContractByCodeHash);\n },\n getLiquidityForAmount0: async (\n params: TestContractParamsWithoutMaps<\n LiquidityManagmentTestTypes.Fields,\n { sqrtRatioAX96: bigint; sqrtRatioBX96: bigint; amount0: bigint }\n >\n ): Promise<TestContractResultWithoutMaps<bigint>> => {\n return testMethod(\n this,\n \"getLiquidityForAmount0\",\n params,\n getContractByCodeHash\n );\n },\n getLiquidityForAmount1: async (\n params: TestContractParamsWithoutMaps<\n LiquidityManagmentTestTypes.Fields,\n { sqrtRatioAX96: bigint; sqrtRatioBX96: bigint; amount1: bigint }\n >\n ): Promise<TestContractResultWithoutMaps<bigint>> => {\n return testMethod(\n this,\n \"getLiquidityForAmount1\",\n params,\n getContractByCodeHash\n );\n },\n getLiquidityForAmounts: async (\n params: TestContractParamsWithoutMaps<\n LiquidityManagmentTestTypes.Fields,\n {\n sqrtRatioX96: bigint;\n sqrtRatioAX96: bigint;\n sqrtRatioBX96: bigint;\n amount0: bigint;\n amount1: bigint;\n }\n >\n ): Promise<TestContractResultWithoutMaps<bigint>> => {\n return testMethod(\n this,\n \"getLiquidityForAmounts\",\n params,\n getContractByCodeHash\n );\n },\n getAmount0ForLiquidity: async (\n params: TestContractParamsWithoutMaps<\n LiquidityManagmentTestTypes.Fields,\n { sqrtRatioAX96: bigint; sqrtRatioBX96: bigint; liquidity: bigint }\n >\n ): Promise<TestContractResultWithoutMaps<bigint>> => {\n return testMethod(\n this,\n \"getAmount0ForLiquidity\",\n params,\n getContractByCodeHash\n );\n },\n mulDiv: async (\n params: TestContractParamsWithoutMaps<\n LiquidityManagmentTestTypes.Fields,\n { a: bigint; b: bigint; denominator: bigint }\n >\n ): Promise<TestContractResultWithoutMaps<bigint>> => {\n return testMethod(this, \"mulDiv\", params, getContractByCodeHash);\n },\n mulDivRoundingUp: async (\n params: TestContractParamsWithoutMaps<\n LiquidityManagmentTestTypes.Fields,\n { a: bigint; b: bigint; denominator: bigint }\n >\n ): Promise<TestContractResultWithoutMaps<bigint>> => {\n return testMethod(\n this,\n \"mulDivRoundingUp\",\n params,\n getContractByCodeHash\n );\n },\n configPath: async (\n params: TestContractParamsWithoutMaps<\n LiquidityManagmentTestTypes.Fields,\n { configIndex_: bigint }\n >\n ): Promise<TestContractResultWithoutMaps<HexString>> => {\n return testMethod(this, \"configPath\", params, getContractByCodeHash);\n },\n poolPath: async (\n params: TestContractParamsWithoutMaps<\n LiquidityManagmentTestTypes.Fields,\n { factory: HexString; tokens: HexString; configIndex_: bigint }\n >\n ): Promise<TestContractResultWithoutMaps<HexString>> => {\n return testMethod(this, \"poolPath\", params, getContractByCodeHash);\n },\n poolContractId: async (\n params: TestContractParamsWithoutMaps<\n LiquidityManagmentTestTypes.Fields,\n { factory: HexString; tokens: HexString; configIndex_: bigint }\n >\n ): Promise<TestContractResultWithoutMaps<HexString>> => {\n return testMethod(this, \"poolContractId\", params, getContractByCodeHash);\n },\n positionPath: async (\n params: TestContractParamsWithoutMaps<\n LiquidityManagmentTestTypes.Fields,\n { o: Address; tickLower: bigint; tickUpper: bigint }\n >\n ): Promise<TestContractResultWithoutMaps<HexString>> => {\n return testMethod(this, \"positionPath\", params, getContractByCodeHash);\n },\n positionContractId: async (\n params: TestContractParamsWithoutMaps<\n LiquidityManagmentTestTypes.Fields,\n { pool: HexString; o: Address; tickLower: bigint; tickUpper: bigint }\n >\n ): Promise<TestContractResultWithoutMaps<HexString>> => {\n return testMethod(\n this,\n \"positionContractId\",\n params,\n getContractByCodeHash\n );\n },\n getSqrtRatioAtTick: async (\n params: TestContractParamsWithoutMaps<\n LiquidityManagmentTestTypes.Fields,\n { tick: bigint }\n >\n ): Promise<TestContractResultWithoutMaps<bigint>> => {\n return testMethod(\n this,\n \"getSqrtRatioAtTick\",\n params,\n getContractByCodeHash\n );\n },\n getTickAtSqrtRatio: async (\n params: TestContractParamsWithoutMaps<\n LiquidityManagmentTestTypes.Fields,\n { sqrtPriceX96: bigint }\n >\n ): Promise<TestContractResultWithoutMaps<bigint>> => {\n return testMethod(\n this,\n \"getTickAtSqrtRatio\",\n params,\n getContractByCodeHash\n );\n },\n };\n\n stateForTest(\n initFields: LiquidityManagmentTestTypes.Fields,\n asset?: Asset,\n address?: string\n ) {\n return this.stateForTest_(initFields, asset, address, undefined);\n }\n}\n\n// Use this object to test and deploy the contract\nexport const LiquidityManagmentTest = new Factory(\n Contract.fromJson(\n LiquidityManagmentTestContractJson,\n \"\",\n \"8824caa1efe83247812dfa7f32a80ae3d4603937df2b062437581ac421fa817d\",\n types.AllStructs\n )\n);\nregisterContract(LiquidityManagmentTest);\n\n// Use this class to interact with the blockchain\nexport class LiquidityManagmentTestInstance extends ContractInstance {\n constructor(address: Address) {\n super(address);\n }\n\n async fetchState(): Promise<LiquidityManagmentTestTypes.State> {\n return fetchContractState(LiquidityManagmentTest, this);\n }\n\n view = {\n addLiquidity: async (\n params: LiquidityManagmentTestTypes.CallMethodParams<\"addLiquidity\">\n ): Promise<\n LiquidityManagmentTestTypes.CallMethodResult<\"addLiquidity\">\n > => {\n return callMethod(\n LiquidityManagmentTest,\n this,\n \"addLiquidity\",\n params,\n getContractByCodeHash\n );\n },\n getLiquidityForAmount0: async (\n params: LiquidityManagmentTestTypes.CallMethodParams<\"getLiquidityForAmount0\">\n ): Promise<\n LiquidityManagmentTestTypes.CallMethodResult<\"getLiquidityForAmount0\">\n > => {\n return callMethod(\n LiquidityManagmentTest,\n this,\n \"getLiquidityForAmount0\",\n params,\n getContractByCodeHash\n );\n },\n getLiquidityForAmount1: async (\n params: LiquidityManagmentTestTypes.CallMethodParams<\"getLiquidityForAmount1\">\n ): Promise<\n LiquidityManagmentTestTypes.CallMethodResult<\"getLiquidityForAmount1\">\n > => {\n return callMethod(\n LiquidityManagmentTest,\n this,\n \"getLiquidityForAmount1\",\n params,\n getContractByCodeHash\n );\n },\n getLiquidityForAmounts: async (\n params: LiquidityManagmentTestTypes.CallMethodParams<\"getLiquidityForAmounts\">\n ): Promise<\n LiquidityManagmentTestTypes.CallMethodResult<\"getLiquidityForAmounts\">\n > => {\n return callMethod(\n LiquidityManagmentTest,\n this,\n \"getLiquidityForAmounts\",\n params,\n getContractByCodeHash\n );\n },\n getAmount0ForLiquidity: async (\n params: LiquidityManagmentTestTypes.CallMethodParams<\"getAmount0ForLiquidity\">\n ): Promise<\n LiquidityManagmentTestTypes.CallMethodResult<\"getAmount0ForLiquidity\">\n > => {\n return callMethod(\n LiquidityManagmentTest,\n this,\n \"getAmount0ForLiquidity\",\n params,\n getContractByCodeHash\n );\n },\n mulDiv: async (\n params: LiquidityManagmentTestTypes.CallMethodParams<\"mulDiv\">\n ): Promise<LiquidityManagmentTestTypes.CallMethodResult<\"mulDiv\">> => {\n return callMethod(\n LiquidityManagmentTest,\n this,\n \"mulDiv\",\n params,\n getContractByCodeHash\n );\n },\n mulDivRoundingUp: async (\n params: LiquidityManagmentTestTypes.CallMethodParams<\"mulDivRoundingUp\">\n ): Promise<\n LiquidityManagmentTestTypes.CallMethodResult<\"mulDivRoundingUp\">\n > => {\n return callMethod(\n LiquidityManagmentTest,\n this,\n \"mulDivRoundingUp\",\n params,\n getContractByCodeHash\n );\n },\n configPath: async (\n params: LiquidityManagmentTestTypes.CallMethodParams<\"configPath\">\n ): Promise<LiquidityManagmentTestTypes.CallMethodResult<\"configPath\">> => {\n return callMethod(\n LiquidityManagmentTest,\n this,\n \"configPath\",\n params,\n getContractByCodeHash\n );\n },\n poolPath: async (\n params: LiquidityManagmentTestTypes.CallMethodParams<\"poolPath\">\n ): Promise<LiquidityManagmentTestTypes.CallMethodResult<\"poolPath\">> => {\n return callMethod(\n LiquidityManagmentTest,\n this,\n \"poolPath\",\n params,\n getContractByCodeHash\n );\n },\n poolContractId: async (\n params: LiquidityManagmentTestTypes.CallMethodParams<\"poolContractId\">\n ): Promise<\n LiquidityManagmentTestTypes.CallMethodResult<\"poolContractId\">\n > => {\n return callMethod(\n LiquidityManagmentTest,\n this,\n \"poolContractId\",\n params,\n getContractByCodeHash\n );\n },\n positionPath: async (\n params: LiquidityManagmentTestTypes.CallMethodParams<\"positionPath\">\n ): Promise<\n LiquidityManagmentTestTypes.CallMethodResult<\"positionPath\">\n > => {\n return callMethod(\n LiquidityManagmentTest,\n this,\n \"positionPath\",\n params,\n getContractByCodeHash\n );\n },\n positionContractId: async (\n params: LiquidityManagmentTestTypes.CallMethodParams<\"positionContractId\">\n ): Promise<\n LiquidityManagmentTestTypes.CallMethodResult<\"positionContractId\">\n > => {\n return callMethod(\n LiquidityManagmentTest,\n this,\n \"positionContractId\",\n params,\n getContractByCodeHash\n );\n },\n getSqrtRatioAtTick: async (\n params: LiquidityManagmentTestTypes.CallMethodParams<\"getSqrtRatioAtTick\">\n ): Promise<\n LiquidityManagmentTestTypes.CallMethodResult<\"getSqrtRatioAtTick\">\n > => {\n return callMethod(\n LiquidityManagmentTest,\n this,\n \"getSqrtRatioAtTick\",\n params,\n getContractByCodeHash\n );\n },\n getTickAtSqrtRatio: async (\n params: LiquidityManagmentTestTypes.CallMethodParams<\"getTickAtSqrtRatio\">\n ): Promise<\n LiquidityManagmentTestTypes.CallMethodResult<\"getTickAtSqrtRatio\">\n > => {\n return callMethod(\n LiquidityManagmentTest,\n this,\n \"getTickAtSqrtRatio\",\n params,\n getContractByCodeHash\n );\n },\n };\n\n transact = {\n addLiquidity: async (\n params: LiquidityManagmentTestTypes.SignExecuteMethodParams<\"addLiquidity\">\n ): Promise<\n LiquidityManagmentTestTypes.SignExecuteMethodResult<\"addLiquidity\">\n > => {\n return signExecuteMethod(\n LiquidityManagmentTest,\n this,\n \"addLiquidity\",\n params\n );\n },\n getLiquidityForAmount0: async (\n params: LiquidityManagmentTestTypes.SignExecuteMethodParams<\"getLiquidityForAmount0\">\n ): Promise<\n LiquidityManagmentTestTypes.SignExecuteMethodResult<\"getLiquidityForAmount0\">\n > => {\n return signExecuteMethod(\n LiquidityManagmentTest,\n this,\n \"getLiquidityForAmount0\",\n params\n );\n },\n getLiquidityForAmount1: async (\n params: LiquidityManagmentTestTypes.SignExecuteMethodParams<\"getLiquidityForAmount1\">\n ): Promise<\n LiquidityManagmentTestTypes.SignExecuteMethodResult<\"getLiquidityForAmount1\">\n > => {\n return signExecuteMethod(\n LiquidityManagmentTest,\n this,\n \"getLiquidityForAmount1\",\n params\n );\n },\n getLiquidityForAmounts: async (\n params: LiquidityManagmentTestTypes.SignExecuteMethodParams<\"getLiquidityForAmounts\">\n ): Promise<\n LiquidityManagmentTestTypes.SignExecuteMethodResult<\"getLiquidityForAmounts\">\n > => {\n return signExecuteMethod(\n LiquidityManagmentTest,\n this,\n \"getLiquidityForAmounts\",\n params\n );\n },\n getAmount0ForLiquidity: async (\n params: LiquidityManagmentTestTypes.SignExecuteMethodParams<\"getAmount0ForLiquidity\">\n ): Promise<\n LiquidityManagmentTestTypes.SignExecuteMethodResult<\"getAmount0ForLiquidity\">\n > => {\n return signExecuteMethod(\n LiquidityManagmentTest,\n this,\n \"getAmount0ForLiquidity\",\n params\n );\n },\n mulDiv: async (\n params: LiquidityManagmentTestTypes.SignExecuteMethodParams<\"mulDiv\">\n ): Promise<\n LiquidityManagmentTestTypes.SignExecuteMethodResult<\"mulDiv\">\n > => {\n return signExecuteMethod(LiquidityManagmentTest, this, \"mulDiv\", params);\n },\n mulDivRoundingUp: async (\n params: LiquidityManagmentTestTypes.SignExecuteMethodParams<\"mulDivRoundingUp\">\n ): Promise<\n LiquidityManagmentTestTypes.SignExecuteMethodResult<\"mulDivRoundingUp\">\n > => {\n return signExecuteMethod(\n LiquidityManagmentTest,\n this,\n \"mulDivRoundingUp\",\n params\n );\n },\n configPath: async (\n params: LiquidityManagmentTestTypes.SignExecuteMethodParams<\"configPath\">\n ): Promise<\n LiquidityManagmentTestTypes.SignExecuteMethodResult<\"configPath\">\n > => {\n return signExecuteMethod(\n LiquidityManagmentTest,\n this,\n \"configPath\",\n params\n );\n },\n poolPath: async (\n params: LiquidityManagmentTestTypes.SignExecuteMethodParams<\"poolPath\">\n ): Promise<\n LiquidityManagmentTestTypes.SignExecuteMethodResult<\"poolPath\">\n > => {\n return signExecuteMethod(\n LiquidityManagmentTest,\n this,\n \"poolPath\",\n params\n );\n },\n poolContractId: async (\n params: LiquidityManagmentTestTypes.SignExecuteMethodParams<\"poolContractId\">\n ): Promise<\n LiquidityManagmentTestTypes.SignExecuteMethodResult<\"poolContractId\">\n > => {\n return signExecuteMethod(\n LiquidityManagmentTest,\n this,\n \"poolContractId\",\n params\n );\n },\n positionPath: async (\n params: LiquidityManagmentTestTypes.SignExecuteMethodParams<\"positionPath\">\n ): Promise<\n LiquidityManagmentTestTypes.SignExecuteMethodResult<\"positionPath\">\n > => {\n return signExecuteMethod(\n LiquidityManagmentTest,\n this,\n \"positionPath\",\n params\n );\n },\n positionContractId: async (\n params: LiquidityManagmentTestTypes.SignExecuteMethodParams<\"positionContractId\">\n ): Promise<\n LiquidityManagmentTestTypes.SignExecuteMethodResult<\"positionContractId\">\n > => {\n return signExecuteMethod(\n LiquidityManagmentTest,\n this,\n \"positionContractId\",\n params\n );\n },\n getSqrtRatioAtTick: async (\n params: LiquidityManagmentTestTypes.SignExecuteMethodParams<\"getSqrtRatioAtTick\">\n ): Promise<\n LiquidityManagmentTestTypes.SignExecuteMethodResult<\"getSqrtRatioAtTick\">\n > => {\n return signExecuteMethod(\n LiquidityManagmentTest,\n this,\n \"getSqrtRatioAtTick\",\n params\n );\n },\n getTickAtSqrtRatio: async (\n params: LiquidityManagmentTestTypes.SignExecuteMethodParams<\"getTickAtSqrtRatio\">\n ): Promise<\n LiquidityManagmentTestTypes.SignExecuteMethodResult<\"getTickAtSqrtRatio\">\n > => {\n return signExecuteMethod(\n LiquidityManagmentTest,\n this,\n \"getTickAtSqrtRatio\",\n params\n );\n },\n };\n\n async multicall<Calls extends LiquidityManagmentTestTypes.MultiCallParams>(\n calls: Calls\n ): Promise<LiquidityManagmentTestTypes.MultiCallResults<Calls>>;\n async multicall<Callss extends LiquidityManagmentTestTypes.MultiCallParams[]>(\n callss: Narrow<Callss>\n ): Promise<LiquidityManagmentTestTypes.MulticallReturnType<Callss>>;\n async multicall<\n Callss extends\n | LiquidityManagmentTestTypes.MultiCallParams\n | LiquidityManagmentTestTypes.MultiCallParams[]\n >(callss: Callss): Promise<unknown> {\n return await multicallMethods(\n LiquidityManagmentTest,\n this,\n callss,\n getContractByCodeHash\n );\n }\n}\n","{\n \"version\": \"v4.3.0\",\n \"name\": \"LiquidityManagmentTest\",\n \"bytecode\": \"010e409a40c840ec413e416c424e4271427b429042a642bc42d746564a5201030b16044051d39b20ce13ce00160116024416030009170b160516060e0f160b012e170e170d170c160c160d160e160716080003170f160b160416051606000b171016001610a5171116001601a5171216001602a5171316007a7a16011612a316021613a316101611a31600160416051606160f110e160b01251715171416141609347a4c04181615160a341343527b160f16141615160b0201000304010dd3b8a5f4fb1600160113c9010000000000000000000000000005170316021603160116002b000502010003030108d364be47fc160213c901000000000000000000000000160116002b00050201000507014027d345f12d7a16001601324c061601160216030001024a1c16001602314c13160016021603000117051601160016040002170616051606314c0216054a011606024a0516011602160400020201000304010ed374e08b3b160213c9010000000000000000000000002c160116002b160100051703160316002d020000030901408d160016010c0d3687170316001601371704160316043616031604314c020d4a010c36170516050c2f4c04160416022d02160216053313415f7b160016011602871706160516061604334c020d4a010c361705160416063617040c1602361602381707160216072d1702160416072d17040c16073616072d0d351707160416051607373917040f1602370e3a170816080e16021608373637170816080e16021608373637170816080e16021608373637170816080e16021608373637170816080e16021608373637170816080e16021608373637170816041608370200000304011216001601160200051703160016011602870c334c0416030d2a0216030200000101010316004002000003040109160016020007cc17031601160344020000030401091600160116020008170316001603cc02010003030108d37afb14100d1600160116021304640201000405010ad35b19984c160116021603000a170416001604cc020000010301413816000c3f264c061600057c203d4a0216003d1701160112800d89e83d321340ca7b16010d380c304c0213ccfffcb933bd6fad37aa2d162d1a5940014a0113cd0100000000000000000000000000000000170216010e380c304c06160213ccfff97272373d413259a46990580e213a2c1340803c4a0116021702160110380c304c06160213ccfff2e50f5f656932ef12357cf3c7fdcc2c1340803c4a011602170216011308380c304c06160213ccffe5caca7e10e4e61c3624eaa0941cd02c1340803c4a011602170216011310380c304c06160213ccffcb9843d60f6159c9db58835c9266442c1340803c4a011602170216011320380c304c06160213ccff973b41fa98c081472e6896dfb254c02c1340803c4a01160217021601134040380c304c06160213ccff2ea16466c96a3843ec78b326b528612c1340803c4a01160217021601134080380c304c06160213ccfe5dee046a99a2a811c461f1969c30532c1340803c4a01160217021601134100380c304c06160213ccfcbe86c7900a88aedcffc83b479aa3a42c1340803c4a01160217021601134200380c304c06160213ccf987a7253ac413176f2b074cf7815e542c1340803c4a01160217021601134400380c304c06160213ccf3392b0822b70005940c7a398e4b70f32c1340803c4a01160217021601134800380c304c06160213cce7159475a2c29b7443b29c7fa6e889d92c1340803c4a01160217021601135000380c304c06160213ccd097f3bdfd2022b8845ad8f792aa58252c1340803c4a01160217021601136000380c304c06160213cca9f746462d870fdf8a65dc1f90e061e52c1340803c4a011602170216011380004000380c304c06160213cc70d869a156d2a1b890bb3df62baf32f72c1340803c4a011602170216011380008000380c304c06160213cc31be135f97d08fd981231505542fcfa62c1340803c4a011602170216011380010000380c304c06160213cc09aa508b5b7a84e1c677de54f3e99bc92c1340803c4a011602170216011380020000380c304c06160213cb5d6af8dedb81196699c329225ee6042c1340803c4a011602170216011380040000380c304c06160213ca2216e584f5fa1ea926041bedfe982c1340803c4a011602170216011380080000380c304c06160213c8048a170391f7dc42444e8fa22c1340803c4a0116021702160005284c060c0d3616022d4a0116021702160213c1010000000091020100010b0141f2d3c6eb44f3160013c101000276a3347a4c0418160013d0fffd8963efd1fc6a506488495d951d5263988d26311340c97b160013203b1701160117020c1703160213cd01000000000000000000000000000000000d2b334c08160313408039170316021340803c1702160213c50100000000000000000d2b334c08160313404039170316021340403c1702160213c101000000000d2b334c0816031320391703160213203c17021602138000ffff334c0816031310391703160213103c170216021340ff334c0816031308391703160213083c17021602130f334c081603103917031602103c170216020f334c0816030e39170316020e3c170216020d334c0416030d3917031603134080344c071601160313407f2b3c17024a06160113407f16032b3b17021603134080314c0e0c0d3613407f2b16032a0c0d361340403c384a0316031340802b1340403b17040c1705160216022c13407f3c170216021340803c170516041605133f3b391704160216053c1702160216022c13407f3c170216021340803c170516041605133e3b391704160216053c1702160216022c13407f3c170216021340803c170516041605133d3b391704160216053c1702160216022c13407f3c170216021340803c170516041605133c3b391704160216053c1702160216022c13407f3c170216021340803c170516041605133b3b391704160216053c1702160216022c13407f3c170216021340803c170516041605133a3b391704160216053c1702160216022c13407f3c170216021340803c17051604160513393b391704160216053c1702160216022c13407f3c170216021340803c17051604160513383b391704160216053c1702160216022c13407f3c170216021340803c17051604160513373b391704160216053c1702160216022c13407f3c170216021340803c17051604160513363b391704160216053c1702160216022c13407f3c170216021340803c17051604160513353b391704160216053c1702160216022c13407f3c170216021340803c17051604160513343b391704160216053c1702160216022c13407f3c170216021340803c17051604160513333b391704160216053c1702160216022c13407f3c170216021340803c17051604160513323b391704160413c63627a301d71055774c85371706160613dcfffffffffffffffffffffffffffffffffd709b7e5480fba5a50fed5e62ffc556351340803c1707160613ccdb2df09e81959a81455e260799a0632f351340803c170816071380800000314c0316073f4a0616071380ffffff383f128100000020170916081380800000314c0316083f4a0616081380ffffff383f128100000020170a1609160a244c031609024a0a160a000c1600324c03160a024a02160902\",\n \"codeHash\": \"8824caa1efe83247812dfa7f32a80ae3d4603937df2b062437581ac421fa817d\",\n \"fieldsSig\": {\n \"names\": [\n \"parent\"\n ],\n \"types\": [\n \"PoolFactory\"\n ],\n \"isMutable\": [\n false\n ]\n },\n \"eventsSig\": [],\n \"functions\": [\n {\n \"name\": \"addLiquidity\",\n \"paramNames\": [\n \"payer\",\n \"p\"\n ],\n \"paramTypes\": [\n \"Address\",\n \"ModifyLiquidityParams\"\n ],\n \"paramIsMutable\": [\n false,\n false\n ],\n \"returnTypes\": [\n \"U256\",\n \"U256\",\n \"U256\",\n \"Pool\"\n ]\n },\n {\n \"name\": \"getLiquidityForAmount0\",\n \"paramNames\": [\n \"sqrtRatioAX96\",\n \"sqrtRatioBX96\",\n \"amount0\"\n ],\n \"paramTypes\": [\n \"U256\",\n \"U256\",\n \"U256\"\n ],\n \"paramIsMutable\": [\n false,\n false,\n false\n ],\n \"returnTypes\": [\n \"U256\"\n ]\n },\n {\n \"name\": \"getLiquidityForAmount1\",\n \"paramNames\": [\n \"sqrtRatioAX96\",\n \"sqrtRatioBX96\",\n \"amount1\"\n ],\n \"paramTypes\": [\n \"U256\",\n \"U256\",\n \"U256\"\n ],\n \"paramIsMutable\": [\n false,\n false,\n false\n ],\n \"returnTypes\": [\n \"U256\"\n ]\n },\n {\n \"name\": \"getLiquidityForAmounts\",\n \"paramNames\": [\n \"sqrtRatioX96\",\n \"sqrtRatioAX96\",\n \"sqrtRatioBX96\",\n \"amount0\",\n \"amount1\"\n ],\n \"paramTypes\": [\n \"U256\",\n \"U256\",\n \"U256\",\n \"U256\",\n \"U256\"\n ],\n \"paramIsMutable\": [\n false,\n false,\n false,\n false,\n false\n ],\n \"returnTypes\": [\n \"U256\"\n ]\n },\n {\n \"name\": \"getAmount0ForLiquidity\",\n \"paramNames\": [\n \"sqrtRatioAX96\",\n \"sqrtRatioBX96\",\n \"liquidity\"\n ],\n \"paramTypes\": [\n \"U256\",\n \"U256\",\n \"U256\"\n ],\n \"paramIsMutable\": [\n false,\n false,\n false\n ],\n \"returnTypes\": [\n \"U256\"\n ]\n },\n {\n \"name\": \"mulDiv\",\n \"paramNames\": [\n \"a\",\n \"b\",\n \"denominator\"\n ],\n \"paramTypes\": [\n \"U256\",\n \"U256\",\n \"U256\"\n ],\n \"paramIsMutable\": [\n false,\n false,\n true\n ],\n \"returnTypes\": [\n \"U256\"\n ]\n },\n {\n \"name\": \"mulDivRoundingUp\",\n \"paramNames\": [\n \"a\",\n \"b\",\n \"denominator\"\n ],\n \"paramTypes\": [\n \"U256\",\n \"U256\",\n \"U256\"\n ],\n \"paramIsMutable\": [\n false,\n false,\n false\n ],\n \"returnTypes\": [\n \"U256\"\n ]\n },\n {\n \"name\": \"configPath\",\n \"paramNames\": [\n \"configIndex_\"\n ],\n \"paramTypes\": [\n \"U256\"\n ],\n \"paramIsMutable\": [\n false\n ],\n \"returnTypes\": [\n \"ByteVec\"\n ]\n },\n {\n \"name\": \"poolPath\",\n \"paramNames\": [\n \"factory\",\n \"tokens\",\n \"configIndex_\"\n ],\n \"paramTypes\": [\n \"PoolFactory\",\n \"ByteVec\",\n \"U256\"\n ],\n \"paramIsMutable\": [\n false,\n false,\n false\n ],\n \"returnTypes\": [\n \"ByteVec\"\n ]\n },\n {\n \"name\": \"poolContractId\",\n \"paramNames\": [\n \"factory\",\n \"tokens\",\n \"configIndex_\"\n ],\n \"paramTypes\": [\n \"PoolFactory\",\n \"ByteVec\",\n \"U256\"\n ],\n \"paramIsMutable\": [\n false,\n false,\n false\n ],\n \"returnTypes\": [\n \"ByteVec\"\n ]\n },\n {\n \"name\": \"positionPath\",\n \"paramNames\": [\n \"o\",\n \"tickLower\",\n \"tickUpper\"\n ],\n \"paramTypes\": [\n \"Address\",\n \"I256\",\n \"I256\"\n ],\n \"paramIsMutable\": [\n false,\n false,\n false\n ],\n \"returnTypes\": [\n \"ByteVec\"\n ]\n },\n {\n \"name\": \"positionContractId\",\n \"paramNames\": [\n \"pool\",\n \"o\",\n \"tickLower\",\n \"tickUpper\"\n ],\n \"paramTypes\": [\n \"Pool\",\n \"Address\",\n \"I256\",\n \"I256\"\n ],\n \"paramIsMutable\": [\n false,\n false,\n false,\n false\n ],\n \"returnTypes\": [\n \"ByteVec\"\n ]\n },\n {\n \"name\": \"getSqrtRatioAtTick\",\n \"paramNames\": [\n \"tick\"\n ],\n \"paramTypes\": [\n \"I256\"\n ],\n \"paramIsMutable\": [\n false\n ],\n \"returnTypes\": [\n \"U256\"\n ]\n },\n {\n \"name\": \"getTickAtSqrtRatio\",\n \"paramNames\": [\n \"sqrtPriceX96\"\n ],\n \"paramTypes\": [\n \"U256\"\n ],\n \"paramIsMutable\": [\n false\n ],\n \"returnTypes\": [\n \"I256\"\n ]\n }\n ],\n \"constants\": [],\n \"enums\": [\n {\n \"name\": \"LiquidityManagmentError\",\n \"fields\": [\n {\n \"name\": \"MintSlippage\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"850\"\n }\n },\n {\n \"name\": \"BurnSlippage\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"851\"\n }\n }\n ]\n },\n {\n \"name\": \"FullMathError\",\n \"fields\": [\n {\n \"name\": \"MulDivOverflow\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"351\"\n }\n }\n ]\n },\n {\n \"name\": \"PathPrefixes\",\n \"fields\": [\n {\n \"name\": \"Tick\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"0\"\n }\n },\n {\n \"name\": \"Position\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"1\"\n }\n },\n {\n \"name\": \"Word\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"2\"\n }\n }\n ]\n },\n {\n \"name\": \"TickMathError\",\n \"fields\": [\n {\n \"name\": \"SqrtPriceX96OutOfBounds\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"201\"\n }\n },\n {\n \"name\": \"TickOutOfBounds\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"202\"\n }\n }\n ]\n }\n ]\n}","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport {\n Address,\n Contract,\n ContractState,\n TestContractResult,\n HexString,\n ContractFactory,\n EventSubscribeOptions,\n EventSubscription,\n CallContractParams,\n CallContractResult,\n TestContractParams,\n ContractEvent,\n subscribeContractEvent,\n subscribeContractEvents,\n testMethod,\n callMethod,\n multicallMethods,\n fetchContractState,\n Asset,\n ContractInstance,\n getContractEventsCurrentCount,\n TestContractParamsWithoutMaps,\n TestContractResultWithoutMaps,\n SignExecuteContractMethodParams,\n SignExecuteScriptTxResult,\n signExecuteMethod,\n addStdIdToFields,\n encodeContractFields,\n Narrow,\n} from \"@alephium/web3\";\nimport { default as PoolContractJson } from \"../Pool.ral.json\";\nimport { getContractByCodeHash, registerContract } from \"./contracts\";\nimport * as types from \"./types\";\n\n// Custom types for the contract\nexport namespace PoolTypes {\n export type Fields = {\n parent: HexString;\n positionTemplate: HexString;\n dexAccountTemplate: HexString;\n tickTemplate: HexString;\n wordTemplate: HexString;\n configIndex: bigint;\n token0: HexString;\n token1: HexString;\n token2: HexString;\n fee: bigint;\n tickSpacing: bigint;\n maxLiquidityPerTick: bigint;\n nextNftIndex: bigint;\n slot0: types.Slot0;\n liquidity: bigint;\n rewardInfos: [types.Reward, types.Reward, types.Reward];\n feeGrowths: [bigint, bigint, bigint];\n protocolFees: types.ProtocolFees;\n };\n\n export type State = ContractState<Fields>;\n\n export type InitializeEvent = ContractEvent<{\n sqrtPriceX96: bigint;\n tick: bigint;\n }>;\n export type SwapStartEvent = ContractEvent<{ sqrtPriceX96: bigint }>;\n export type SwapStepEvent = ContractEvent<{\n sqrtPriceX96: bigint;\n liquidity: bigint;\n }>;\n export type SwapEvent = ContractEvent<{\n sender: Address;\n recipient: Address;\n amount0: bigint;\n amount1: bigint;\n sqrtPriceX96: bigint;\n liquidity: bigint;\n tick: bigint;\n }>;\n export type MintEvent = ContractEvent<{\n sender: Address;\n owner: Address;\n tickLower: bigint;\n tickUpper: bigint;\n liquidity: bigint;\n amount0: bigint;\n amount1: bigint;\n timestamp: bigint;\n }>;\n export type BurnEvent = ContractEvent<{\n operator: Address;\n owner: Address;\n tickLower: bigint;\n tickUpper: bigint;\n liquidity: bigint;\n amount0: bigint;\n amount1: bigint;\n }>;\n export type CollectEvent = ContractEvent<{\n operator: Address;\n recipient: Address;\n owner: Address;\n tickLower: bigint;\n tickUpper: bigint;\n amount0: bigint;\n amount1: bigint;\n amount2: bigint;\n }>;\n export type FeesEvent = ContractEvent<{\n owner: Address;\n tickLower: bigint;\n tickUpper: bigint;\n amount0: bigint;\n amount1: bigint;\n amount2: bigint;\n timestamp: bigint;\n }>;\n export type CollectProtocolEvent = ContractEvent<{\n sender: Address;\n recipient: Address;\n amount0: bigint;\n amount1: bigint;\n }>;\n\n export interface CallMethodTable {\n getCollectionUri: {\n params: Omit<CallContractParams<{}>, \"args\">;\n result: CallContractResult<HexString>;\n };\n totalSupply: {\n params: Omit<CallContractParams<{}>, \"args\">;\n result: CallContractResult<bigint>;\n };\n nftByIndex: {\n params: CallContractParams<{ index: bigint }>;\n result: CallContractResult<HexString>;\n };\n validateNFT: {\n params: CallContractParams<{ nftId: HexString; nftIndex: bigint }>;\n result: CallContractResult<null>;\n };\n getSqrtRatioAtTick: {\n params: CallContractParams<{ tick: bigint }>;\n result: CallContractResult<bigint>;\n };\n getTickAtSqrtRatio: {\n params: CallContractParams<{ sqrtPriceX96: bigint }>;\n result: CallContractResult<bigint>;\n };\n computeSwapStep: {\n params: CallContractParams<{\n sqrtRatioCurrentX96: bigint;\n sqrtRatioTargetX96: bigint;\n liquidity_: bigint;\n amountRemaining: bigint;\n feePips: bigint;\n }>;\n result: CallContractResult<[bigint, bigint, bigint, bigint]>;\n };\n divRoundingUp: {\n params: CallContractParams<{ x: bigint; y: bigint }>;\n result: CallContractResult<bigint>;\n };\n getNextSqrtPriceFromAmount0RoundingUp: {\n params: CallContractParams<{\n sqrtPX96: bigint;\n liquidity_: bigint;\n amount: bigint;\n add: boolean;\n }>;\n result: CallContractResult<bigint>;\n };\n getNextSqrtPriceFromAmount1RoundingDown: {\n params: CallContractParams<{\n sqrtPX96: bigint;\n liquidity_: bigint;\n amount: bigint;\n add: boolean;\n }>;\n result: CallContractResult<bigint>;\n };\n getNextSqrtPriceFromInput: {\n params: CallContractParams<{\n sqrtPX96: bigint;\n liquidity_: bigint;\n amountIn: bigint;\n zeroForOne: boolean;\n }>;\n result: CallContractResult<bigint>;\n };\n getNextSqrtPriceFromOutput: {\n params: CallContractParams<{\n sqrtPX96: bigint;\n liquidity_: bigint;\n amountOut: bigint;\n zeroForOne: boolean;\n }>;\n result: CallContractResult<bigint>;\n };\n getAmount0DeltaEx: {\n params: CallContractParams<{\n sqrtRatioAX96: bigint;\n sqrtRatioBX96: bigint;\n liquidityDelta: bigint;\n roundUp: boolean;\n }>;\n result: CallContractResult<bigint>;\n };\n getAmount0Delta: {\n params: CallContractParams<{\n sqrtRatioAX96: bigint;\n sqrtRatioBX96: bigint;\n liquidityDelta: bigint;\n }>;\n result: CallContractResult<bigint>;\n };\n getAmount1DeltaEx: {\n params: CallContractParams<{\n sqrtRatioAX96: bigint;\n sqrtRatioBX96: bigint;\n liquidityDelta: bigint;\n roundUp: boolean;\n }>;\n result: CallContractResult<bigint>;\n };\n getAmount1Delta: {\n params: CallContractParams<{\n sqrtRatioAX96: bigint;\n sqrtRatioBX96: bigint;\n liquidityDelta: bigint;\n }>;\n result: CallContractResult<bigint>;\n };\n mulDiv: {\n params: CallContractParams<{ a: bigint; b: bigint; denominator: bigint }>;\n result: CallContractResult<bigint>;\n };\n mulDivRoundingUp: {\n params: CallContractParams<{ a: bigint; b: bigint; denominator: bigint }>;\n result: CallContractResult<bigint>;\n };\n wordPath: {\n params: CallContractParams<{ compressed: bigint }>;\n result: CallContractResult<HexString>;\n };\n getWord: {\n params: CallContractParams<{ compressed: bigint }>;\n result: CallContractResult<HexString>;\n };\n getWordOrTemplate: {\n params: CallContractParams<{ compressed: bigint }>;\n result: CallContractResult<HexString>;\n };\n flipTick: {\n params: CallContractParams<{ tick: bigint }>;\n result: CallContractResult<null>;\n };\n nextInitializedTickWithinOneWord: {\n params: CallContractParams<{ tick: bigint; zeroForOne: boolean }>;\n result: CallContractResult<[bigint, boolean]>;\n };\n positionPath: {\n params: CallContractParams<{\n o: Address;\n tickLower: bigint;\n tickUpper: bigint;\n }>;\n result: CallContractResult<HexString>;\n };\n positionContractId: {\n params: CallContractParams<{\n pool: HexString;\n o: Address;\n tickLower: bigint;\n tickUpper: bigint;\n }>;\n result: CallContractResult<HexString>;\n };\n configPath: {\n params: CallContractParams<{ configIndex_: bigint }>;\n result: CallContractResult<HexString>;\n };\n poolPath: {\n params: CallContractParams<{\n factory: HexString;\n tokens: HexString;\n configIndex_: bigint;\n }>;\n result: CallContractResult<HexString>;\n };\n poolContractId: {\n params: CallContractParams<{\n factory: HexString;\n tokens: HexString;\n configIndex_: bigint;\n }>;\n result: CallContractResult<HexString>;\n };\n checkTicks: {\n params: CallContractParams<{ tickLower: bigint; tickUpper: bigint }>;\n result: CallContractResult<null>;\n };\n tickPath: {\n params: CallContractParams<{ tick: bigint }>;\n result: CallContractResult<HexString>;\n };\n toTick: {\n params: CallContractParams<{ tick: bigint }>;\n result: CallContractResult<HexString>;\n };\n getTick: {\n params: CallContractParams<{ tick: bigint }>;\n result: CallContractResult<[HexString, boolean]>;\n };\n toPosition: {\n params: CallContractParams<{\n owner: Address;\n tickLower: bigint;\n tickUpper: bigint;\n }>;\n result: CallContractResult<HexString>;\n };\n getPosition: {\n params: CallContractParams<{\n owner: Address;\n tickLower: bigint;\n tickUpper: bigint;\n }>;\n result: CallContractResult<[HexString, boolean]>;\n };\n getFeeGrowthInside: {\n params: CallContractParams<{\n tickLower: HexString;\n tickUpper: HexString;\n }>;\n result: CallContractResult<[bigint, bigint, bigint]>;\n };\n updatePosition: {\n params: CallContractParams<{\n position: HexString;\n owner: Address;\n tickLower: bigint;\n tickUpper: bigint;\n liquidityDelta: bigint;\n }>;\n result: CallContractResult<[bigint, bigint, bigint]>;\n };\n modifyPosition: {\n params: CallContractParams<{\n position: HexString;\n params: types.ModifyPositionParams;\n }>;\n result: CallContractResult<[bigint, bigint, [bigint, bigint, bigint]]>;\n };\n mint: {\n params: CallContractParams<{\n payer: Address;\n owner: Address;\n tickLower: bigint;\n tickUpper: bigint;\n amount: bigint;\n }>;\n result: CallContractResult<[bigint, bigint]>;\n };\n burn: {\n params: CallContractParams<{\n operator: Address;\n owner: Address;\n tickLower: bigint;\n tickUpper: bigint;\n amount: bigint;\n }>;\n result: CallContractResult<[bigint, bigint]>;\n };\n collect: {\n params: CallContractParams<{\n operator: Address;\n recipient: Address;\n owner: Address;\n tickLower: bigint;\n tickUpper: bigint;\n maxAmounts: [bigint, bigint, bigint];\n }>;\n result: CallContractResult<[bigint, bigint, bigint]>;\n };\n withdraw: {\n params: CallContractParams<{\n recipient: Address;\n amounts: [bigint, bigint, bigint];\n }>;\n result: CallContractResult<null>;\n };\n simulateSwap: {\n params: CallContractParams<{\n zeroForOne: boolean;\n amountSpecified: bigint;\n data: HexString;\n maxSteps: bigint;\n }>;\n result: CallContractResult<null>;\n };\n swap: {\n params: CallContractParams<{\n payer: Address;\n recipient: Address;\n token: HexString;\n zeroForOne: boolean;\n amountSpecified: bigint;\n sqrtPriceLimitX96: bigint;\n data: HexString;\n }>;\n result: CallContractResult<[bigint, bigint]>;\n };\n pop: {\n params: CallContractParams<{\n data: HexString;\n t: HexString;\n exactInput: boolean;\n }>;\n result: CallContractResult<[boolean, bigint, HexString, HexString]>;\n };\n swapExactOut: {\n params: CallContractParams<{ p: types.SwapParams; refRewards: bigint }>;\n result: CallContractResult<null>;\n };\n swapExactIn: {\n params: CallContractParams<{ p: types.SwapParams; refRewards: bigint }>;\n result: CallContractResult<null>;\n };\n getSqrtPricesX96: {\n params: CallContractParams<{ tickLower: bigint; tickUpper: bigint }>;\n result: CallContractResult<[bigint, bigint, bigint]>;\n };\n updateReward: {\n params: CallContractParams<{ index: bigint; blockTime: bigint }>;\n result: CallContractResult<null>;\n };\n updateRewards: {\n params: CallContractParams<{ blockTime: bigint }>;\n result: CallContractResult<null>;\n };\n extendRewards: {\n params: CallContractParams<{\n payer: Address;\n index: bigint;\n amount: bigint;\n }>;\n result: CallContractResult<null>;\n };\n setRewardParams: {\n params: CallContractParams<{\n payer: Address;\n index: bigint;\n openTime: bigint;\n endTime: bigint;\n amount: bigint;\n }>;\n result: CallContractResult<null>;\n };\n collectProtocolFees: {\n params: CallContractParams<{ recipient: Address }>;\n result: CallContractResult<null>;\n };\n positionInfo: {\n params: CallContractParams<{\n owner: Address;\n tickLower: bigint;\n tickUpper: bigint;\n acc: bigint;\n iacc0: bigint;\n iacc1: bigint;\n t0: bigint;\n acct0: bigint;\n }>;\n result: CallContractResult<types.PositionInfo>;\n };\n getTokenUri: {\n params: Omit<CallContractParams<{}>, \"args\">;\n result: CallContractResult<HexString>;\n };\n }\n export type CallMethodParams<T extends keyof CallMethodTable> =\n CallMethodTable[T][\"params\"];\n export type CallMethodResult<T extends keyof CallMethodTable> =\n CallMethodTable[T][\"result\"];\n export type MultiCallParams = Partial<{\n [Name in keyof CallMethodTable]: CallMethodTable[Name][\"params\"];\n }>;\n export type MultiCallResults<T extends MultiCallParams> = {\n [MaybeName in keyof T]: MaybeName extends keyof CallMethodTable\n ? CallMethodTable[MaybeName][\"result\"]\n : undefined;\n };\n export type MulticallReturnType<Callss extends MultiCallParams[]> = {\n [index in keyof Callss]: MultiCallResults<Callss[index]>;\n };\n\n export interface SignExecuteMethodTable {\n getCollectionUri: {\n params: Omit<SignExecuteContractMethodParams<{}>, \"args\">;\n result: SignExecuteScriptTxResult;\n };\n totalSupply: {\n params: Omit<SignExecuteContractMethodParams<{}>, \"args\">;\n result: SignExecuteScriptTxResult;\n };\n nftByIndex: {\n params: SignExecuteContractMethodParams<{ index: bigint }>;\n result: SignExecuteScriptTxResult;\n };\n validateNFT: {\n params: SignExecuteContractMethodParams<{\n nftId: HexString;\n nftIndex: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n getSqrtRatioAtTick: {\n params: SignExecuteContractMethodParams<{ tick: bigint }>;\n result: SignExecuteScriptTxResult;\n };\n getTickAtSqrtRatio: {\n params: SignExecuteContractMethodParams<{ sqrtPriceX96: bigint }>;\n result: SignExecuteScriptTxResult;\n };\n computeSwapStep: {\n params: SignExecuteContractMethodParams<{\n sqrtRatioCurrentX96: bigint;\n sqrtRatioTargetX96: bigint;\n liquidity_: bigint;\n amountRemaining: bigint;\n feePips: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n divRoundingUp: {\n params: SignExecuteContractMethodParams<{ x: bigint; y: bigint }>;\n result: SignExecuteScriptTxResult;\n };\n getNextSqrtPriceFromAmount0RoundingUp: {\n params: SignExecuteContractMethodParams<{\n sqrtPX96: bigint;\n liquidity_: bigint;\n amount: bigint;\n add: boolean;\n }>;\n result: SignExecuteScriptTxResult;\n };\n getNextSqrtPriceFromAmount1RoundingDown: {\n params: SignExecuteContractMethodParams<{\n sqrtPX96: bigint;\n liquidity_: bigint;\n amount: bigint;\n add: boolean;\n }>;\n result: SignExecuteScriptTxResult;\n };\n getNextSqrtPriceFromInput: {\n params: SignExecuteContractMethodParams<{\n sqrtPX96: bigint;\n liquidity_: bigint;\n amountIn: bigint;\n zeroForOne: boolean;\n }>;\n result: SignExecuteScriptTxResult;\n };\n getNextSqrtPriceFromOutput: {\n params: SignExecuteContractMethodParams<{\n sqrtPX96: bigint;\n liquidity_: bigint;\n amountOut: bigint;\n zeroForOne: boolean;\n }>;\n result: SignExecuteScriptTxResult;\n };\n getAmount0DeltaEx: {\n params: SignExecuteContractMethodParams<{\n sqrtRatioAX96: bigint;\n sqrtRatioBX96: bigint;\n liquidityDelta: bigint;\n roundUp: boolean;\n }>;\n result: SignExecuteScriptTxResult;\n };\n getAmount0Delta: {\n params: SignExecuteContractMethodParams<{\n sqrtRatioAX96: bigint;\n sqrtRatioBX96: bigint;\n liquidityDelta: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n getAmount1DeltaEx: {\n params: SignExecuteContractMethodParams<{\n sqrtRatioAX96: bigint;\n sqrtRatioBX96: bigint;\n liquidityDelta: bigint;\n roundUp: boolean;\n }>;\n result: SignExecuteScriptTxResult;\n };\n getAmount1Delta: {\n params: SignExecuteContractMethodParams<{\n sqrtRatioAX96: bigint;\n sqrtRatioBX96: bigint;\n liquidityDelta: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n mulDiv: {\n params: SignExecuteContractMethodParams<{\n a: bigint;\n b: bigint;\n denominator: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n mulDivRoundingUp: {\n params: SignExecuteContractMethodParams<{\n a: bigint;\n b: bigint;\n denominator: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n wordPath: {\n params: SignExecuteContractMethodParams<{ compressed: bigint }>;\n result: SignExecuteScriptTxResult;\n };\n getWord: {\n params: SignExecuteContractMethodParams<{ compressed: bigint }>;\n result: SignExecuteScriptTxResult;\n };\n getWordOrTemplate: {\n params: SignExecuteContractMethodParams<{ compressed: bigint }>;\n result: SignExecuteScriptTxResult;\n };\n flipTick: {\n params: SignExecuteContractMethodParams<{ tick: bigint }>;\n result: SignExecuteScriptTxResult;\n };\n nextInitializedTickWithinOneWord: {\n params: SignExecuteContractMethodParams<{\n tick: bigint;\n zeroForOne: boolean;\n }>;\n result: SignExecuteScriptTxResult;\n };\n positionPath: {\n params: SignExecuteContractMethodParams<{\n o: Address;\n tickLower: bigint;\n tickUpper: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n positionContractId: {\n params: SignExecuteContractMethodParams<{\n pool: HexString;\n o: Address;\n tickLower: bigint;\n tickUpper: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n configPath: {\n params: SignExecuteContractMethodParams<{ configIndex_: bigint }>;\n result: SignExecuteScriptTxResult;\n };\n poolPath: {\n params: SignExecuteContractMethodParams<{\n factory: HexString;\n tokens: HexString;\n configIndex_: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n poolContractId: {\n params: SignExecuteContractMethodParams<{\n factory: HexString;\n tokens: HexString;\n configIndex_: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n checkTicks: {\n params: SignExecuteContractMethodParams<{\n tickLower: bigint;\n tickUpper: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n tickPath: {\n params: SignExecuteContractMethodParams<{ tick: bigint }>;\n result: SignExecuteScriptTxResult;\n };\n toTick: {\n params: SignExecuteContractMethodParams<{ tick: bigint }>;\n result: SignExecuteScriptTxResult;\n };\n getTick: {\n params: SignExecuteContractMethodParams<{ tick: bigint }>;\n result: SignExecuteScriptTxResult;\n };\n toPosition: {\n params: SignExecuteContractMethodParams<{\n owner: Address;\n tickLower: bigint;\n tickUpper: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n getPosition: {\n params: SignExecuteContractMethodParams<{\n owner: Address;\n tickLower: bigint;\n tickUpper: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n getFeeGrowthInside: {\n params: SignExecuteContractMethodParams<{\n tickLower: HexString;\n tickUpper: HexString;\n }>;\n result: SignExecuteScriptTxResult;\n };\n updatePosition: {\n params: SignExecuteContractMethodParams<{\n position: HexString;\n owner: Address;\n tickLower: bigint;\n tickUpper: bigint;\n liquidityDelta: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n modifyPosition: {\n params: SignExecuteContractMethodParams<{\n position: HexString;\n params: types.ModifyPositionParams;\n }>;\n result: SignExecuteScriptTxResult;\n };\n mint: {\n params: SignExecuteContractMethodParams<{\n payer: Address;\n owner: Address;\n tickLower: bigint;\n tickUpper: bigint;\n amount: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n burn: {\n params: SignExecuteContractMethodParams<{\n operator: Address;\n owner: Address;\n tickLower: bigint;\n tickUpper: bigint;\n amount: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n collect: {\n params: SignExecuteContractMethodParams<{\n operator: Address;\n recipient: Address;\n owner: Address;\n tickLower: bigint;\n tickUpper: bigint;\n maxAmounts: [bigint, bigint, bigint];\n }>;\n result: SignExecuteScriptTxResult;\n };\n withdraw: {\n params: SignExecuteContractMethodParams<{\n recipient: Address;\n amounts: [bigint, bigint, bigint];\n }>;\n result: SignExecuteScriptTxResult;\n };\n simulateSwap: {\n params: SignExecuteContractMethodParams<{\n zeroForOne: boolean;\n amountSpecified: bigint;\n data: HexString;\n maxSteps: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n swap: {\n params: SignExecuteContractMethodParams<{\n payer: Address;\n recipient: Address;\n token: HexString;\n zeroForOne: boolean;\n amountSpecified: bigint;\n sqrtPriceLimitX96: bigint;\n data: HexString;\n }>;\n result: SignExecuteScriptTxResult;\n };\n pop: {\n params: SignExecuteContractMethodParams<{\n data: HexString;\n t: HexString;\n exactInput: boolean;\n }>;\n result: SignExecuteScriptTxResult;\n };\n swapExactOut: {\n params: SignExecuteContractMethodParams<{\n p: types.SwapParams;\n refRewards: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n swapExactIn: {\n params: SignExecuteContractMethodParams<{\n p: types.SwapParams;\n refRewards: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n getSqrtPricesX96: {\n params: SignExecuteContractMethodParams<{\n tickLower: bigint;\n tickUpper: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n updateReward: {\n params: SignExecuteContractMethodParams<{\n index: bigint;\n blockTime: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n updateRewards: {\n params: SignExecuteContractMethodParams<{ blockTime: bigint }>;\n result: SignExecuteScriptTxResult;\n };\n extendRewards: {\n params: SignExecuteContractMethodParams<{\n payer: Address;\n index: bigint;\n amount: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n setRewardParams: {\n params: SignExecuteContractMethodParams<{\n payer: Address;\n index: bigint;\n openTime: bigint;\n endTime: bigint;\n amount: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n collectProtocolFees: {\n params: SignExecuteContractMethodParams<{ recipient: Address }>;\n result: SignExecuteScriptTxResult;\n };\n positionInfo: {\n params: SignExecuteContractMethodParams<{\n owner: Address;\n tickLower: bigint;\n tickUpper: bigint;\n acc: bigint;\n iacc0: bigint;\n iacc1: bigint;\n t0: bigint;\n acct0: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n getTokenUri: {\n params: Omit<SignExecuteContractMethodParams<{}>, \"args\">;\n result: SignExecuteScriptTxResult;\n };\n }\n export type SignExecuteMethodParams<T extends keyof SignExecuteMethodTable> =\n SignExecuteMethodTable[T][\"params\"];\n export type SignExecuteMethodResult<T extends keyof SignExecuteMethodTable> =\n SignExecuteMethodTable[T][\"result\"];\n}\n\nclass Factory extends ContractFactory<PoolInstance, PoolTypes.Fields> {\n encodeFields(fields: PoolTypes.Fields) {\n return encodeContractFields(\n addStdIdToFields(this.contract, fields),\n this.contract.fieldsSig,\n types.AllStructs\n );\n }\n\n eventIndex = {\n Initialize: 0,\n SwapStart: 1,\n SwapStep: 2,\n Swap: 3,\n Mint: 4,\n Burn: 5,\n Collect: 6,\n Fees: 7,\n CollectProtocol: 8,\n };\n consts = {\n MAX_PIPS: BigInt(\"1000000\"),\n TickMathError: {\n SqrtPriceX96OutOfBounds: BigInt(\"201\"),\n TickOutOfBounds: BigInt(\"202\"),\n },\n SqrtPriceMathError: {\n SqrtFromAmountOverflow: BigInt(\"221\"),\n QuotientTooHigh: BigInt(\"222\"),\n PriceZero: BigInt(\"223\"),\n NoLiquidity: BigInt(\"224\"),\n PriceNotFitIn160: BigInt(\"225\"),\n },\n FullMathError: { MulDivOverflow: BigInt(\"351\") },\n TickBitmapError: { TickNotAligned: BigInt(\"301\") },\n PathPrefixes: {\n Tick: BigInt(\"0\"),\n Position: BigInt(\"1\"),\n Word: BigInt(\"2\"),\n },\n PoolError: {\n TLU: BigInt(\"102\"),\n TLM: BigInt(\"103\"),\n TUM: BigInt(\"104\"),\n AS: BigInt(\"105\"),\n SPL: BigInt(\"106\"),\n NP: BigInt(\"107\"),\n UnauthorizedMint: BigInt(\"108\"),\n NFTNotPartOfCollection: BigInt(\"109\"),\n NFTByIndexNotSupported: BigInt(\"110\"),\n UnauthorizedRewardSender: BigInt(\"111\"),\n InvalidRewardParams: BigInt(\"112\"),\n DexAccountNotFound: BigInt(\"113\"),\n InvalidRewardIndex: BigInt(\"114\"),\n RewardPeriodEnded: BigInt(\"115\"),\n ZeroRewardAmount: BigInt(\"116\"),\n },\n };\n\n at(address: string): PoolInstance {\n return new PoolInstance(address);\n }\n\n tests = {\n getCollectionUri: async (\n params: Omit<\n TestContractParamsWithoutMaps<PoolTypes.Fields, never>,\n \"args\"\n >\n ): Promise<TestContractResultWithoutMaps<HexString>> => {\n return testMethod(\n this,\n \"getCollectionUri\",\n params,\n getContractByCodeHash\n );\n },\n totalSupply: async (\n params: Omit<\n TestContractParamsWithoutMaps<PoolTypes.Fields, never>,\n \"args\"\n >\n ): Promise<TestContractResultWithoutMaps<bigint>> => {\n return testMethod(this, \"totalSupply\", params, getContractByCodeHash);\n },\n nftByIndex: async (\n params: TestContractParamsWithoutMaps<PoolTypes.Fields, { index: bigint }>\n ): Promise<TestContractResultWithoutMaps<HexString>> => {\n return testMethod(this, \"nftByIndex\", params, getContractByCodeHash);\n },\n validateNFT: async (\n params: TestContractParamsWithoutMaps<\n PoolTypes.Fields,\n { nftId: HexString; nftIndex: bigint }\n >\n ): Promise<TestContractResultWithoutMaps<null>> => {\n return testMethod(this, \"validateNFT\", params, getContractByCodeHash);\n },\n getSqrtRatioAtTick: async (\n params: TestContractParamsWithoutMaps<PoolTypes.Fields, { tick: bigint }>\n ): Promise<TestContractResultWithoutMaps<bigint>> => {\n return testMethod(\n this,\n \"getSqrtRatioAtTick\",\n params,\n getContractByCodeHash\n );\n },\n getTickAtSqrtRatio: async (\n params: TestContractParamsWithoutMaps<\n PoolTypes.Fields,\n { sqrtPriceX96: bigint }\n >\n ): Promise<TestContractResultWithoutMaps<bigint>> => {\n return testMethod(\n this,\n \"getTickAtSqrtRatio\",\n params,\n getContractByCodeHash\n );\n },\n computeSwapStep: async (\n params: TestContractParamsWithoutMaps<\n PoolTypes.Fields,\n {\n sqrtRatioCurrentX96: bigint;\n sqrtRatioTargetX96: bigint;\n liquidity_: bigint;\n amountRemaining: bigint;\n feePips: bigint;\n }\n >\n ): Promise<\n TestContractResultWithoutMaps<[bigint, bigint, bigint, bigint]>\n > => {\n return testMethod(this, \"computeSwapStep\", params, getContractByCodeHash);\n },\n divRoundingUp: async (\n params: TestContractParamsWithoutMaps<\n PoolTypes.Fields,\n { x: bigint; y: bigint }\n >\n ): Promise<TestContractResultWithoutMaps<bigint>> => {\n return testMethod(this, \"divRoundingUp\", params, getContractByCodeHash);\n },\n getNextSqrtPriceFromAmount0RoundingUp: async (\n params: TestContractParamsWithoutMaps<\n PoolTypes.Fields,\n { sqrtPX96: bigint; liquidity_: bigint; amount: bigint; add: boolean }\n >\n ): Promise<TestContractResultWithoutMaps<bigint>> => {\n return testMethod(\n this,\n \"getNextSqrtPriceFromAmount0RoundingUp\",\n params,\n getContractByCodeHash\n );\n },\n getNextSqrtPriceFromAmount1RoundingDown: async (\n params: TestContractParamsWithoutMaps<\n PoolTypes.Fields,\n { sqrtPX96: bigint; liquidity_: bigint; amount: bigint; add: boolean }\n >\n ): Promise<TestContractResultWithoutMaps<bigint>> => {\n return testMethod(\n this,\n \"getNextSqrtPriceFromAmount1RoundingDown\",\n params,\n getContractByCodeHash\n );\n },\n getNextSqrtPriceFromInput: async (\n params: TestContractParamsWithoutMaps<\n PoolTypes.Fields,\n {\n sqrtPX96: bigint;\n liquidity_: bigint;\n amountIn: bigint;\n zeroForOne: boolean;\n }\n >\n ): Promise<TestContractResultWithoutMaps<bigint>> => {\n return testMethod(\n this,\n \"getNextSqrtPriceFromInput\",\n params,\n getContractByCodeHash\n );\n },\n getNextSqrtPriceFromOutput: async (\n params: TestContractParamsWithoutMaps<\n PoolTypes.Fields,\n {\n sqrtPX96: bigint;\n liquidity_: bigint;\n amountOut: bigint;\n zeroForOne: boolean;\n }\n >\n ): Promise<TestContractResultWithoutMaps<bigint>> => {\n return testMethod(\n this,\n \"getNextSqrtPriceFromOutput\",\n params,\n getContractByCodeHash\n );\n },\n getAmount0DeltaEx: async (\n params: TestContractParamsWithoutMaps<\n PoolTypes.Fields,\n {\n sqrtRatioAX96: bigint;\n sqrtRatioBX96: bigint;\n liquidityDelta: bigint;\n roundUp: boolean;\n }\n >\n ): Promise<TestContractResultWithoutMaps<bigint>> => {\n return testMethod(\n this,\n \"getAmount0DeltaEx\",\n params,\n getContractByCodeHash\n );\n },\n getAmount0Delta: async (\n params: TestContractParamsWithoutMaps<\n PoolTypes.Fields,\n { sqrtRatioAX96: bigint; sqrtRatioBX96: bigint; liquidityDelta: bigint }\n >\n ): Promise<TestContractResultWithoutMaps<bigint>> => {\n return testMethod(this, \"getAmount0Delta\", params, getContractByCodeHash);\n },\n getAmount1DeltaEx: async (\n params: TestContractParamsWithoutMaps<\n PoolTypes.Fields,\n {\n sqrtRatioAX96: bigint;\n sqrtRatioBX96: bigint;\n liquidityDelta: bigint;\n roundUp: boolean;\n }\n >\n ): Promise<TestContractResultWithoutMaps<bigint>> => {\n return testMethod(\n this,\n \"getAmount1DeltaEx\",\n params,\n getContractByCodeHash\n );\n },\n getAmount1Delta: async (\n params: TestContractParamsWithoutMaps<\n PoolTypes.Fields,\n { sqrtRatioAX96: bigint; sqrtRatioBX96: bigint; liquidityDelta: bigint }\n >\n ): Promise<TestContractResultWithoutMaps<bigint>> => {\n return testMethod(this, \"getAmount1Delta\", params, getContractByCodeHash);\n },\n mulDiv: async (\n params: TestContractParamsWithoutMaps<\n PoolTypes.Fields,\n { a: bigint; b: bigint; denominator: bigint }\n >\n ): Promise<TestContractResultWithoutMaps<bigint>> => {\n return testMethod(this, \"mulDiv\", params, getContractByCodeHash);\n },\n mulDivRoundingUp: async (\n params: TestContractParamsWithoutMaps<\n PoolTypes.Fields,\n { a: bigint; b: bigint; denominator: bigint }\n >\n ): Promise<TestContractResultWithoutMaps<bigint>> => {\n return testMethod(\n this,\n \"mulDivRoundingUp\",\n params,\n getContractByCodeHash\n );\n },\n wordPath: async (\n params: TestContractParamsWithoutMaps<\n PoolTypes.Fields,\n { compressed: bigint }\n >\n ): Promise<TestContractResultWithoutMaps<HexString>> => {\n return testMethod(this, \"wordPath\", params, getContractByCodeHash);\n },\n getWord: async (\n params: TestContractParamsWithoutMaps<\n PoolTypes.Fields,\n { compressed: bigint }\n >\n ): Promise<TestContractResultWithoutMaps<HexString>> => {\n return testMethod(this, \"getWord\", params, getContractByCodeHash);\n },\n getWordOrTemplate: async (\n params: TestContractParamsWithoutMaps<\n PoolTypes.Fields,\n { compressed: bigint }\n >\n ): Promise<TestContractResultWithoutMaps<HexString>> => {\n return testMethod(\n this,\n \"getWordOrTemplate\",\n params,\n getContractByCodeHash\n );\n },\n flipTick: async (\n params: TestContractParamsWithoutMaps<PoolTypes.Fields, { tick: bigint }>\n ): Promise<TestContractResultWithoutMaps<null>> => {\n return testMethod(this, \"flipTick\", params, getContractByCodeHash);\n },\n nextInitializedTickWithinOneWord: async (\n params: TestContractParamsWithoutMaps<\n PoolTypes.Fields,\n { tick: bigint; zeroForOne: boolean }\n >\n ): Promise<TestContractResultWithoutMaps<[bigint, boolean]>> => {\n return testMethod(\n this,\n \"nextInitializedTickWithinOneWord\",\n params,\n getContractByCodeHash\n );\n },\n positionPath: async (\n params: TestContractParamsWithoutMaps<\n PoolTypes.Fields,\n { o: Address; tickLower: bigint; tickUpper: bigint }\n >\n ): Promise<TestContractResultWithoutMaps<HexString>> => {\n return testMethod(this, \"positionPath\", params, getContractByCodeHash);\n },\n positionContractId: async (\n params: TestContractParamsWithoutMaps<\n PoolTypes.Fields,\n { pool: HexString; o: Address; tickLower: bigint; tickUpper: bigint }\n >\n ): Promise<TestContractResultWithoutMaps<HexString>> => {\n return testMethod(\n this,\n \"positionContractId\",\n params,\n getContractByCodeHash\n );\n },\n configPath: async (\n params: TestContractParamsWithoutMaps<\n PoolTypes.Fields,\n { configIndex_: bigint }\n >\n ): Promise<TestContractResultWithoutMaps<HexString>> => {\n return testMethod(this, \"configPath\", params, getContractByCodeHash);\n },\n poolPath: async (\n params: TestContractParamsWithoutMaps<\n PoolTypes.Fields,\n { factory: HexString; tokens: HexString; configIndex_: bigint }\n >\n ): Promise<TestContractResultWithoutMaps<HexString>> => {\n return testMethod(this, \"poolPath\", params, getContractByCodeHash);\n },\n poolContractId: async (\n params: TestContractParamsWithoutMaps<\n PoolTypes.Fields,\n { factory: HexString; tokens: HexString; configIndex_: bigint }\n >\n ): Promise<TestContractResultWithoutMaps<HexString>> => {\n return testMethod(this, \"poolContractId\", params, getContractByCodeHash);\n },\n checkTicks: async (\n params: TestContractParamsWithoutMaps<\n PoolTypes.Fields,\n { tickLower: bigint; tickUpper: bigint }\n >\n ): Promise<TestContractResultWithoutMaps<null>> => {\n return testMethod(this, \"checkTicks\", params, getContractByCodeHash);\n },\n tickPath: async (\n params: TestContractParamsWithoutMaps<PoolTypes.Fields, { tick: bigint }>\n ): Promise<TestContractResultWithoutMaps<HexString>> => {\n return testMethod(this, \"tickPath\", params, getContractByCodeHash);\n },\n toTick: async (\n params: TestContractParamsWithoutMaps<PoolTypes.Fields, { tick: bigint }>\n ): Promise<TestContractResultWithoutMaps<HexString>> => {\n return testMethod(this, \"toTick\", params, getContractByCodeHash);\n },\n getTick: async (\n params: TestContractParamsWithoutMaps<PoolTypes.Fields, { tick: bigint }>\n ): Promise<TestContractResultWithoutMaps<[HexString, boolean]>> => {\n return testMethod(this, \"getTick\", params, getContractByCodeHash);\n },\n toPosition: async (\n params: TestContractParamsWithoutMaps<\n PoolTypes.Fields,\n { owner: Address; tickLower: bigint; tickUpper: bigint }\n >\n ): Promise<TestContractResultWithoutMaps<HexString>> => {\n return testMethod(this, \"toPosition\", params, getContractByCodeHash);\n },\n getPosition: async (\n params: TestContractParamsWithoutMaps<\n PoolTypes.Fields,\n { owner: Address; tickLower: bigint; tickUpper: bigint }\n >\n ): Promise<TestContractResultWithoutMaps<[HexString, boolean]>> => {\n return testMethod(this, \"getPosition\", params, getContractByCodeHash);\n },\n getFeeGrowthInside: async (\n params: TestContractParamsWithoutMaps<\n PoolTypes.Fields,\n { tickLower: HexString; tickUpper: HexString }\n >\n ): Promise<TestContractResultWithoutMaps<[bigint, bigint, bigint]>> => {\n return testMethod(\n this,\n \"getFeeGrowthInside\",\n params,\n getContractByCodeHash\n );\n },\n updatePosition: async (\n params: TestContractParamsWithoutMaps<\n PoolTypes.Fields,\n {\n position: HexString;\n owner: Address;\n tickLower: bigint;\n tickUpper: bigint;\n liquidityDelta: bigint;\n }\n >\n ): Promise<TestContractResultWithoutMaps<[bigint, bigint, bigint]>> => {\n return testMethod(this, \"updatePosition\", params, getContractByCodeHash);\n },\n modifyPosition: async (\n params: TestContractParamsWithoutMaps<\n PoolTypes.Fields,\n { position: HexString; params: types.ModifyPositionParams }\n >\n ): Promise<\n TestContractResultWithoutMaps<[bigint, bigint, [bigint, bigint, bigint]]>\n > => {\n return testMethod(this, \"modifyPosition\", params, getContractByCodeHash);\n },\n mint: async (\n params: TestContractParamsWithoutMaps<\n PoolTypes.Fields,\n {\n payer: Address;\n owner: Address;\n tickLower: bigint;\n tickUpper: bigint;\n amount: bigint;\n }\n >\n ): Promise<TestContractResultWithoutMaps<[bigint, bigint]>> => {\n return testMethod(this, \"mint\", params, getContractByCodeHash);\n },\n burn: async (\n params: TestContractParamsWithoutMaps<\n PoolTypes.Fields,\n {\n operator: Address;\n owner: Address;\n tickLower: bigint;\n tickUpper: bigint;\n amount: bigint;\n }\n >\n ): Promise<TestContractResultWithoutMaps<[bigint, bigint]>> => {\n return testMethod(this, \"burn\", params, getContractByCodeHash);\n },\n collect: async (\n params: TestContractParamsWithoutMaps<\n PoolTypes.Fields,\n {\n operator: Address;\n recipient: Address;\n owner: Address;\n tickLower: bigint;\n tickUpper: bigint;\n maxAmounts: [bigint, bigint, bigint];\n }\n >\n ): Promise<TestContractResultWithoutMaps<[bigint, bigint, bigint]>> => {\n return testMethod(this, \"collect\", params, getContractByCodeHash);\n },\n withdraw: async (\n params: TestContractParamsWithoutMaps<\n PoolTypes.Fields,\n { recipient: Address; amounts: [bigint, bigint, bigint] }\n >\n ): Promise<TestContractResultWithoutMaps<null>> => {\n return testMethod(this, \"withdraw\", params, getContractByCodeHash);\n },\n simulateSwap: async (\n params: TestContractParamsWithoutMaps<\n PoolTypes.Fields,\n {\n zeroForOne: boolean;\n amountSpecified: bigint;\n data: HexString;\n maxSteps: bigint;\n }\n >\n ): Promise<TestContractResultWithoutMaps<null>> => {\n return testMethod(this, \"simulateSwap\", params, getContractByCodeHash);\n },\n swap: async (\n params: TestContractParamsWithoutMaps<\n PoolTypes.Fields,\n {\n payer: Address;\n recipient: Address;\n token: HexString;\n zeroForOne: boolean;\n amountSpecified: bigint;\n sqrtPriceLimitX96: bigint;\n data: HexString;\n }\n >\n ): Promise<TestContractResultWithoutMaps<[bigint, bigint]>> => {\n return testMethod(this, \"swap\", params, getContractByCodeHash);\n },\n pop: async (\n params: TestContractParamsWithoutMaps<\n PoolTypes.Fields,\n { data: HexString; t: HexString; exactInput: boolean }\n >\n ): Promise<\n TestContractResultWithoutMaps<[boolean, bigint, HexString, HexString]>\n > => {\n return testMethod(this, \"pop\", params, getContractByCodeHash);\n },\n swapExactOut: async (\n params: TestContractParamsWithoutMaps<\n PoolTypes.Fields,\n { p: types.SwapParams; refRewards: bigint }\n >\n ): Promise<TestContractResultWithoutMaps<null>> => {\n return testMethod(this, \"swapExactOut\", params, getContractByCodeHash);\n },\n swapExactIn: async (\n params: TestContractParamsWithoutMaps<\n PoolTypes.Fields,\n { p: types.SwapParams; refRewards: bigint }\n >\n ): Promise<TestContractResultWithoutMaps<null>> => {\n return testMethod(this, \"swapExactIn\", params, getContractByCodeHash);\n },\n getSqrtPricesX96: async (\n params: TestContractParamsWithoutMaps<\n PoolTypes.Fields,\n { tickLower: bigint; tickUpper: bigint }\n >\n ): Promise<TestContractResultWithoutMaps<[bigint, bigint, bigint]>> => {\n return testMethod(\n this,\n \"getSqrtPricesX96\",\n params,\n getContractByCodeHash\n );\n },\n updateReward: async (\n params: TestContractParamsWithoutMaps<\n PoolTypes.Fields,\n { index: bigint; blockTime: bigint }\n >\n ): Promise<TestContractResultWithoutMaps<null>> => {\n return testMethod(this, \"updateReward\", params, getContractByCodeHash);\n },\n updateRewards: async (\n params: TestContractParamsWithoutMaps<\n PoolTypes.Fields,\n { blockTime: bigint }\n >\n ): Promise<TestContractResultWithoutMaps<null>> => {\n return testMethod(this, \"updateRewards\", params, getContractByCodeHash);\n },\n extendRewards: async (\n params: TestContractParamsWithoutMaps<\n PoolTypes.Fields,\n { payer: Address; index: bigint; amount: bigint }\n >\n ): Promise<TestContractResultWithoutMaps<null>> => {\n return testMethod(this, \"extendRewards\", params, getContractByCodeHash);\n },\n setRewardParams: async (\n params: TestContractParamsWithoutMaps<\n PoolTypes.Fields,\n {\n payer: Address;\n index: bigint;\n openTime: bigint;\n endTime: bigint;\n amount: bigint;\n }\n >\n ): Promise<TestContractResultWithoutMaps<null>> => {\n return testMethod(this, \"setRewardParams\", params, getContractByCodeHash);\n },\n collectProtocolFees: async (\n params: TestContractParamsWithoutMaps<\n PoolTypes.Fields,\n { recipient: Address }\n >\n ): Promise<TestContractResultWithoutMaps<null>> => {\n return testMethod(\n this,\n \"collectProtocolFees\",\n params,\n getContractByCodeHash\n );\n },\n positionInfo: async (\n params: TestContractParamsWithoutMaps<\n PoolTypes.Fields,\n {\n owner: Address;\n tickLower: bigint;\n tickUpper: bigint;\n acc: bigint;\n iacc0: bigint;\n iacc1: bigint;\n t0: bigint;\n acct0: bigint;\n }\n >\n ): Promise<TestContractResultWithoutMaps<types.PositionInfo>> => {\n return testMethod(this, \"positionInfo\", params, getContractByCodeHash);\n },\n getTokenUri: async (\n params: Omit<\n TestContractParamsWithoutMaps<PoolTypes.Fields, never>,\n \"args\"\n >\n ): Promise<TestContractResultWithoutMaps<HexString>> => {\n return testMethod(this, \"getTokenUri\", params, getContractByCodeHash);\n },\n };\n\n stateForTest(initFields: PoolTypes.Fields, asset?: Asset, address?: string) {\n return this.stateForTest_(initFields, asset, address, undefined);\n }\n}\n\n// Use this object to test and deploy the contract\nexport const Pool = new Factory(\n Contract.fromJson(\n PoolContractJson,\n \"\",\n \"cdb37fb2772ba9c976a4dc34db15994ecaeef82d8690b9a94c600a81c67f98c4\",\n types.AllStructs\n )\n);\nregisterContract(Pool);\n\n// Use this class to interact with the blockchain\nexport class PoolInstance extends ContractInstance {\n constructor(address: Address) {\n super(address);\n }\n\n async fetchState(): Promise<PoolTypes.State> {\n return fetchContractState(Pool, this);\n }\n\n async getContractEventsCurrentCount(): Promise<number> {\n return getContractEventsCurrentCount(this.address);\n }\n\n subscribeInitializeEvent(\n options: EventSubscribeOptions<PoolTypes.InitializeEvent>,\n fromCount?: number\n ): EventSubscription {\n return subscribeContractEvent(\n Pool.contract,\n this,\n options,\n \"Initialize\",\n fromCount\n );\n }\n\n subscribeSwapStartEvent(\n options: EventSubscribeOptions<PoolTypes.SwapStartEvent>,\n fromCount?: number\n ): EventSubscription {\n return subscribeContractEvent(\n Pool.contract,\n this,\n options,\n \"SwapStart\",\n fromCount\n );\n }\n\n subscribeSwapStepEvent(\n options: EventSubscribeOptions<PoolTypes.SwapStepEvent>,\n fromCount?: number\n ): EventSubscription {\n return subscribeContractEvent(\n Pool.contract,\n this,\n options,\n \"SwapStep\",\n fromCount\n );\n }\n\n subscribeSwapEvent(\n options: EventSubscribeOptions<PoolTypes.SwapEvent>,\n fromCount?: number\n ): EventSubscription {\n return subscribeContractEvent(\n Pool.contract,\n this,\n options,\n \"Swap\",\n fromCount\n );\n }\n\n subscribeMintEvent(\n options: EventSubscribeOptions<PoolTypes.MintEvent>,\n fromCount?: number\n ): EventSubscription {\n return subscribeContractEvent(\n Pool.contract,\n this,\n options,\n \"Mint\",\n fromCount\n );\n }\n\n subscribeBurnEvent(\n options: EventSubscribeOptions<PoolTypes.BurnEvent>,\n fromCount?: number\n ): EventSubscription {\n return subscribeContractEvent(\n Pool.contract,\n this,\n options,\n \"Burn\",\n fromCount\n );\n }\n\n subscribeCollectEvent(\n options: EventSubscribeOptions<PoolTypes.CollectEvent>,\n fromCount?: number\n ): EventSubscription {\n return subscribeContractEvent(\n Pool.contract,\n this,\n options,\n \"Collect\",\n fromCount\n );\n }\n\n subscribeFeesEvent(\n options: EventSubscribeOptions<PoolTypes.FeesEvent>,\n fromCount?: number\n ): EventSubscription {\n return subscribeContractEvent(\n Pool.contract,\n this,\n options,\n \"Fees\",\n fromCount\n );\n }\n\n subscribeCollectProtocolEvent(\n options: EventSubscribeOptions<PoolTypes.CollectProtocolEvent>,\n fromCount?: number\n ): EventSubscription {\n return subscribeContractEvent(\n Pool.contract,\n this,\n options,\n \"CollectProtocol\",\n fromCount\n );\n }\n\n subscribeAllEvents(\n options: EventSubscribeOptions<\n | PoolTypes.InitializeEvent\n | PoolTypes.SwapStartEvent\n | PoolTypes.SwapStepEvent\n | PoolTypes.SwapEvent\n | PoolTypes.MintEvent\n | PoolTypes.BurnEvent\n | PoolTypes.CollectEvent\n | PoolTypes.FeesEvent\n | PoolTypes.CollectProtocolEvent\n >,\n fromCount?: number\n ): EventSubscription {\n return subscribeContractEvents(Pool.contract, this, options, fromCount);\n }\n\n view = {\n getCollectionUri: async (\n params?: PoolTypes.CallMethodParams<\"getCollectionUri\">\n ): Promise<PoolTypes.CallMethodResult<\"getCollectionUri\">> => {\n return callMethod(\n Pool,\n this,\n \"getCollectionUri\",\n params === undefined ? {} : params,\n getContractByCodeHash\n );\n },\n totalSupply: async (\n params?: PoolTypes.CallMethodParams<\"totalSupply\">\n ): Promise<PoolTypes.CallMethodResult<\"totalSupply\">> => {\n return callMethod(\n Pool,\n this,\n \"totalSupply\",\n params === undefined ? {} : params,\n getContractByCodeHash\n );\n },\n nftByIndex: async (\n params: PoolTypes.CallMethodParams<\"nftByIndex\">\n ): Promise<PoolTypes.CallMethodResult<\"nftByIndex\">> => {\n return callMethod(\n Pool,\n this,\n \"nftByIndex\",\n params,\n getContractByCodeHash\n );\n },\n validateNFT: async (\n params: PoolTypes.CallMethodParams<\"validateNFT\">\n ): Promise<PoolTypes.CallMethodResult<\"validateNFT\">> => {\n return callMethod(\n Pool,\n this,\n \"validateNFT\",\n params,\n getContractByCodeHash\n );\n },\n getSqrtRatioAtTick: async (\n params: PoolTypes.CallMethodParams<\"getSqrtRatioAtTick\">\n ): Promise<PoolTypes.CallMethodResult<\"getSqrtRatioAtTick\">> => {\n return callMethod(\n Pool,\n this,\n \"getSqrtRatioAtTick\",\n params,\n getContractByCodeHash\n );\n },\n getTickAtSqrtRatio: async (\n params: PoolTypes.CallMethodParams<\"getTickAtSqrtRatio\">\n ): Promise<PoolTypes.CallMethodResult<\"getTickAtSqrtRatio\">> => {\n return callMethod(\n Pool,\n this,\n \"getTickAtSqrtRatio\",\n params,\n getContractByCodeHash\n );\n },\n computeSwapStep: async (\n params: PoolTypes.CallMethodParams<\"computeSwapStep\">\n ): Promise<PoolTypes.CallMethodResult<\"computeSwapStep\">> => {\n return callMethod(\n Pool,\n this,\n \"computeSwapStep\",\n params,\n getContractByCodeHash\n );\n },\n divRoundingUp: async (\n params: PoolTypes.CallMethodParams<\"divRoundingUp\">\n ): Promise<PoolTypes.CallMethodResult<\"divRoundingUp\">> => {\n return callMethod(\n Pool,\n this,\n \"divRoundingUp\",\n params,\n getContractByCodeHash\n );\n },\n getNextSqrtPriceFromAmount0RoundingUp: async (\n params: PoolTypes.CallMethodParams<\"getNextSqrtPriceFromAmount0RoundingUp\">\n ): Promise<\n PoolTypes.CallMethodResult<\"getNextSqrtPriceFromAmount0RoundingUp\">\n > => {\n return callMethod(\n Pool,\n this,\n \"getNextSqrtPriceFromAmount0RoundingUp\",\n params,\n getContractByCodeHash\n );\n },\n getNextSqrtPriceFromAmount1RoundingDown: async (\n params: PoolTypes.CallMethodParams<\"getNextSqrtPriceFromAmount1RoundingDown\">\n ): Promise<\n PoolTypes.CallMethodResult<\"getNextSqrtPriceFromAmount1RoundingDown\">\n > => {\n return callMethod(\n Pool,\n this,\n \"getNextSqrtPriceFromAmount1RoundingDown\",\n params,\n getContractByCodeHash\n );\n },\n getNextSqrtPriceFromInput: async (\n params: PoolTypes.CallMethodParams<\"getNextSqrtPriceFromInput\">\n ): Promise<PoolTypes.CallMethodResult<\"getNextSqrtPriceFromInput\">> => {\n return callMethod(\n Pool,\n this,\n \"getNextSqrtPriceFromInput\",\n params,\n getContractByCodeHash\n );\n },\n getNextSqrtPriceFromOutput: async (\n params: PoolTypes.CallMethodParams<\"getNextSqrtPriceFromOutput\">\n ): Promise<PoolTypes.CallMethodResult<\"getNextSqrtPriceFromOutput\">> => {\n return callMethod(\n Pool,\n this,\n \"getNextSqrtPriceFromOutput\",\n params,\n getContractByCodeHash\n );\n },\n getAmount0DeltaEx: async (\n params: PoolTypes.CallMethodParams<\"getAmount0DeltaEx\">\n ): Promise<PoolTypes.CallMethodResult<\"getAmount0DeltaEx\">> => {\n return callMethod(\n Pool,\n this,\n \"getAmount0DeltaEx\",\n params,\n getContractByCodeHash\n );\n },\n getAmount0Delta: async (\n params: PoolTypes.CallMethodParams<\"getAmount0Delta\">\n ): Promise<PoolTypes.CallMethodResult<\"getAmount0Delta\">> => {\n return callMethod(\n Pool,\n this,\n \"getAmount0Delta\",\n params,\n getContractByCodeHash\n );\n },\n getAmount1DeltaEx: async (\n params: PoolTypes.CallMethodParams<\"getAmount1DeltaEx\">\n ): Promise<PoolTypes.CallMethodResult<\"getAmount1DeltaEx\">> => {\n return callMethod(\n Pool,\n this,\n \"getAmount1DeltaEx\",\n params,\n getContractByCodeHash\n );\n },\n getAmount1Delta: async (\n params: PoolTypes.CallMethodParams<\"getAmount1Delta\">\n ): Promise<PoolTypes.CallMethodResult<\"getAmount1Delta\">> => {\n return callMethod(\n Pool,\n this,\n \"getAmount1Delta\",\n params,\n getContractByCodeHash\n );\n },\n mulDiv: async (\n params: PoolTypes.CallMethodParams<\"mulDiv\">\n ): Promise<PoolTypes.CallMethodResult<\"mulDiv\">> => {\n return callMethod(Pool, this, \"mulDiv\", params, getContractByCodeHash);\n },\n mulDivRoundingUp: async (\n params: PoolTypes.CallMethodParams<\"mulDivRoundingUp\">\n ): Promise<PoolTypes.CallMethodResult<\"mulDivRoundingUp\">> => {\n return callMethod(\n Pool,\n this,\n \"mulDivRoundingUp\",\n params,\n getContractByCodeHash\n );\n },\n wordPath: async (\n params: PoolTypes.CallMethodParams<\"wordPath\">\n ): Promise<PoolTypes.CallMethodResult<\"wordPath\">> => {\n return callMethod(Pool, this, \"wordPath\", params, getContractByCodeHash);\n },\n getWord: async (\n params: PoolTypes.CallMethodParams<\"getWord\">\n ): Promise<PoolTypes.CallMethodResult<\"getWord\">> => {\n return callMethod(Pool, this, \"getWord\", params, getContractByCodeHash);\n },\n getWordOrTemplate: async (\n params: PoolTypes.CallMethodParams<\"getWordOrTemplate\">\n ): Promise<PoolTypes.CallMethodResult<\"getWordOrTemplate\">> => {\n return callMethod(\n Pool,\n this,\n \"getWordOrTemplate\",\n params,\n getContractByCodeHash\n );\n },\n flipTick: async (\n params: PoolTypes.CallMethodParams<\"flipTick\">\n ): Promise<PoolTypes.CallMethodResult<\"flipTick\">> => {\n return callMethod(Pool, this, \"flipTick\", params, getContractByCodeHash);\n },\n nextInitializedTickWithinOneWord: async (\n params: PoolTypes.CallMethodParams<\"nextInitializedTickWithinOneWord\">\n ): Promise<\n PoolTypes.CallMethodResult<\"nextInitializedTickWithinOneWord\">\n > => {\n return callMethod(\n Pool,\n this,\n \"nextInitializedTickWithinOneWord\",\n params,\n getContractByCodeHash\n );\n },\n positionPath: async (\n params: PoolTypes.CallMethodParams<\"positionPath\">\n ): Promise<PoolTypes.CallMethodResult<\"positionPath\">> => {\n return callMethod(\n Pool,\n this,\n \"positionPath\",\n params,\n getContractByCodeHash\n );\n },\n positionContractId: async (\n params: PoolTypes.CallMethodParams<\"positionContractId\">\n ): Promise<PoolTypes.CallMethodResult<\"positionContractId\">> => {\n return callMethod(\n Pool,\n this,\n \"positionContractId\",\n params,\n getContractByCodeHash\n );\n },\n configPath: async (\n params: PoolTypes.CallMethodParams<\"configPath\">\n ): Promise<PoolTypes.CallMethodResult<\"configPath\">> => {\n return callMethod(\n Pool,\n this,\n \"configPath\",\n params,\n getContractByCodeHash\n );\n },\n poolPath: async (\n params: PoolTypes.CallMethodParams<\"poolPath\">\n ): Promise<PoolTypes.CallMethodResult<\"poolPath\">> => {\n return callMethod(Pool, this, \"poolPath\", params, getContractByCodeHash);\n },\n poolContractId: async (\n params: PoolTypes.CallMethodParams<\"poolContractId\">\n ): Promise<PoolTypes.CallMethodResult<\"poolContractId\">> => {\n return callMethod(\n Pool,\n this,\n \"poolContractId\",\n params,\n getContractByCodeHash\n );\n },\n checkTicks: async (\n params: PoolTypes.CallMethodParams<\"checkTicks\">\n ): Promise<PoolTypes.CallMethodResult<\"checkTicks\">> => {\n return callMethod(\n Pool,\n this,\n \"checkTicks\",\n params,\n getContractByCodeHash\n );\n },\n tickPath: async (\n params: PoolTypes.CallMethodParams<\"tickPath\">\n ): Promise<PoolTypes.CallMethodResult<\"tickPath\">> => {\n return callMethod(Pool, this, \"tickPath\", params, getContractByCodeHash);\n },\n toTick: async (\n params: PoolTypes.CallMethodParams<\"toTick\">\n ): Promise<PoolTypes.CallMethodResult<\"toTick\">> => {\n return callMethod(Pool, this, \"toTick\", params, getContractByCodeHash);\n },\n getTick: async (\n params: PoolTypes.CallMethodParams<\"getTick\">\n ): Promise<PoolTypes.CallMethodResult<\"getTick\">> => {\n return callMethod(Pool, this, \"getTick\", params, getContractByCodeHash);\n },\n toPosition: async (\n params: PoolTypes.CallMethodParams<\"toPosition\">\n ): Promise<PoolTypes.CallMethodResult<\"toPosition\">> => {\n return callMethod(\n Pool,\n this,\n \"toPosition\",\n params,\n getContractByCodeHash\n );\n },\n getPosition: async (\n params: PoolTypes.CallMethodParams<\"getPosition\">\n ): Promise<PoolTypes.CallMethodResult<\"getPosition\">> => {\n return callMethod(\n Pool,\n this,\n \"getPosition\",\n params,\n getContractByCodeHash\n );\n },\n getFeeGrowthInside: async (\n params: PoolTypes.CallMethodParams<\"getFeeGrowthInside\">\n ): Promise<PoolTypes.CallMethodResult<\"getFeeGrowthInside\">> => {\n return callMethod(\n Pool,\n this,\n \"getFeeGrowthInside\",\n params,\n getContractByCodeHash\n );\n },\n updatePosition: async (\n params: PoolTypes.CallMethodParams<\"updatePosition\">\n ): Promise<PoolTypes.CallMethodResult<\"updatePosition\">> => {\n return callMethod(\n Pool,\n this,\n \"updatePosition\",\n params,\n getContractByCodeHash\n );\n },\n modifyPosition: async (\n params: PoolTypes.CallMethodParams<\"modifyPosition\">\n ): Promise<PoolTypes.CallMethodResult<\"modifyPosition\">> => {\n return callMethod(\n Pool,\n this,\n \"modifyPosition\",\n params,\n getContractByCodeHash\n );\n },\n mint: async (\n params: PoolTypes.CallMethodParams<\"mint\">\n ): Promise<PoolTypes.CallMethodResult<\"mint\">> => {\n return callMethod(Pool, this, \"mint\", params, getContractByCodeHash);\n },\n burn: async (\n params: PoolTypes.CallMethodParams<\"burn\">\n ): Promise<PoolTypes.CallMethodResult<\"burn\">> => {\n return callMethod(Pool, this, \"burn\", params, getContractByCodeHash);\n },\n collect: async (\n params: PoolTypes.CallMethodParams<\"collect\">\n ): Promise<PoolTypes.CallMethodResult<\"collect\">> => {\n return callMethod(Pool, this, \"collect\", params, getContractByCodeHash);\n },\n withdraw: async (\n params: PoolTypes.CallMethodParams<\"withdraw\">\n ): Promise<PoolTypes.CallMethodResult<\"withdraw\">> => {\n return callMethod(Pool, this, \"withdraw\", params, getContractByCodeHash);\n },\n simulateSwap: async (\n params: PoolTypes.CallMethodParams<\"simulateSwap\">\n ): Promise<PoolTypes.CallMethodResult<\"simulateSwap\">> => {\n return callMethod(\n Pool,\n this,\n \"simulateSwap\",\n params,\n getContractByCodeHash\n );\n },\n swap: async (\n params: PoolTypes.CallMethodParams<\"swap\">\n ): Promise<PoolTypes.CallMethodResult<\"swap\">> => {\n return callMethod(Pool, this, \"swap\", params, getContractByCodeHash);\n },\n pop: async (\n params: PoolTypes.CallMethodParams<\"pop\">\n ): Promise<PoolTypes.CallMethodResult<\"pop\">> => {\n return callMethod(Pool, this, \"pop\", params, getContractByCodeHash);\n },\n swapExactOut: async (\n params: PoolTypes.CallMethodParams<\"swapExactOut\">\n ): Promise<PoolTypes.CallMethodResult<\"swapExactOut\">> => {\n return callMethod(\n Pool,\n this,\n \"swapExactOut\",\n params,\n getContractByCodeHash\n );\n },\n swapExactIn: async (\n params: PoolTypes.CallMethodParams<\"swapExactIn\">\n ): Promise<PoolTypes.CallMethodResult<\"swapExactIn\">> => {\n return callMethod(\n Pool,\n this,\n \"swapExactIn\",\n params,\n getContractByCodeHash\n );\n },\n getSqrtPricesX96: async (\n params: PoolTypes.CallMethodParams<\"getSqrtPricesX96\">\n ): Promise<PoolTypes.CallMethodResult<\"getSqrtPricesX96\">> => {\n return callMethod(\n Pool,\n this,\n \"getSqrtPricesX96\",\n params,\n getContractByCodeHash\n );\n },\n updateReward: async (\n params: PoolTypes.CallMethodParams<\"updateReward\">\n ): Promise<PoolTypes.CallMethodResult<\"updateReward\">> => {\n return callMethod(\n Pool,\n this,\n \"updateReward\",\n params,\n getContractByCodeHash\n );\n },\n updateRewards: async (\n params: PoolTypes.CallMethodParams<\"updateRewards\">\n ): Promise<PoolTypes.CallMethodResult<\"updateRewards\">> => {\n return callMethod(\n Pool,\n this,\n \"updateRewards\",\n params,\n getContractByCodeHash\n );\n },\n extendRewards: async (\n params: PoolTypes.CallMethodParams<\"extendRewards\">\n ): Promise<PoolTypes.CallMethodResult<\"extendRewards\">> => {\n return callMethod(\n Pool,\n this,\n \"extendRewards\",\n params,\n getContractByCodeHash\n );\n },\n setRewardParams: async (\n params: PoolTypes.CallMethodParams<\"setRewardParams\">\n ): Promise<PoolTypes.CallMethodResult<\"setRewardParams\">> => {\n return callMethod(\n Pool,\n this,\n \"setRewardParams\",\n params,\n getContractByCodeHash\n );\n },\n collectProtocolFees: async (\n params: PoolTypes.CallMethodParams<\"collectProtocolFees\">\n ): Promise<PoolTypes.CallMethodResult<\"collectProtocolFees\">> => {\n return callMethod(\n Pool,\n this,\n \"collectProtocolFees\",\n params,\n getContractByCodeHash\n );\n },\n positionInfo: async (\n params: PoolTypes.CallMethodParams<\"positionInfo\">\n ): Promise<PoolTypes.CallMethodResult<\"positionInfo\">> => {\n return callMethod(\n Pool,\n this,\n \"positionInfo\",\n params,\n getContractByCodeHash\n );\n },\n getTokenUri: async (\n params?: PoolTypes.CallMethodParams<\"getTokenUri\">\n ): Promise<PoolTypes.CallMethodResult<\"getTokenUri\">> => {\n return callMethod(\n Pool,\n this,\n \"getTokenUri\",\n params === undefined ? {} : params,\n getContractByCodeHash\n );\n },\n };\n\n transact = {\n getCollectionUri: async (\n params: PoolTypes.SignExecuteMethodParams<\"getCollectionUri\">\n ): Promise<PoolTypes.SignExecuteMethodResult<\"getCollectionUri\">> => {\n return signExecuteMethod(Pool, this, \"getCollectionUri\", params);\n },\n totalSupply: async (\n params: PoolTypes.SignExecuteMethodParams<\"totalSupply\">\n ): Promise<PoolTypes.SignExecuteMethodResult<\"totalSupply\">> => {\n return signExecuteMethod(Pool, this, \"totalSupply\", params);\n },\n nftByIndex: async (\n params: PoolTypes.SignExecuteMethodParams<\"nftByIndex\">\n ): Promise<PoolTypes.SignExecuteMethodResult<\"nftByIndex\">> => {\n return signExecuteMethod(Pool, this, \"nftByIndex\", params);\n },\n validateNFT: async (\n params: PoolTypes.SignExecuteMethodParams<\"validateNFT\">\n ): Promise<PoolTypes.SignExecuteMethodResult<\"validateNFT\">> => {\n return signExecuteMethod(Pool, this, \"validateNFT\", params);\n },\n getSqrtRatioAtTick: async (\n params: PoolTypes.SignExecuteMethodParams<\"getSqrtRatioAtTick\">\n ): Promise<PoolTypes.SignExecuteMethodResult<\"getSqrtRatioAtTick\">> => {\n return signExecuteMethod(Pool, this, \"getSqrtRatioAtTick\", params);\n },\n getTickAtSqrtRatio: async (\n params: PoolTypes.SignExecuteMethodParams<\"getTickAtSqrtRatio\">\n ): Promise<PoolTypes.SignExecuteMethodResult<\"getTickAtSqrtRatio\">> => {\n return signExecuteMethod(Pool, this, \"getTickAtSqrtRatio\", params);\n },\n computeSwapStep: async (\n params: PoolTypes.SignExecuteMethodParams<\"computeSwapStep\">\n ): Promise<PoolTypes.SignExecuteMethodResult<\"computeSwapStep\">> => {\n return signExecuteMethod(Pool, this, \"computeSwapStep\", params);\n },\n divRoundingUp: async (\n params: PoolTypes.SignExecuteMethodParams<\"divRoundingUp\">\n ): Promise<PoolTypes.SignExecuteMethodResult<\"divRoundingUp\">> => {\n return signExecuteMethod(Pool, this, \"divRoundingUp\", params);\n },\n getNextSqrtPriceFromAmount0RoundingUp: async (\n params: PoolTypes.SignExecuteMethodParams<\"getNextSqrtPriceFromAmount0RoundingUp\">\n ): Promise<\n PoolTypes.SignExecuteMethodResult<\"getNextSqrtPriceFromAmount0RoundingUp\">\n > => {\n return signExecuteMethod(\n Pool,\n this,\n \"getNextSqrtPriceFromAmount0RoundingUp\",\n params\n );\n },\n getNextSqrtPriceFromAmount1RoundingDown: async (\n params: PoolTypes.SignExecuteMethodParams<\"getNextSqrtPriceFromAmount1RoundingDown\">\n ): Promise<\n PoolTypes.SignExecuteMethodResult<\"getNextSqrtPriceFromAmount1RoundingDown\">\n > => {\n return signExecuteMethod(\n Pool,\n this,\n \"getNextSqrtPriceFromAmount1RoundingDown\",\n params\n );\n },\n getNextSqrtPriceFromInput: async (\n params: PoolTypes.SignExecuteMethodParams<\"getNextSqrtPriceFromInput\">\n ): Promise<\n PoolTypes.SignExecuteMethodResult<\"getNextSqrtPriceFromInput\">\n > => {\n return signExecuteMethod(Pool, this, \"getNextSqrtPriceFromInput\", params);\n },\n getNextSqrtPriceFromOutput: async (\n params: PoolTypes.SignExecuteMethodParams<\"getNextSqrtPriceFromOutput\">\n ): Promise<\n PoolTypes.SignExecuteMethodResult<\"getNextSqrtPriceFromOutput\">\n > => {\n return signExecuteMethod(\n Pool,\n this,\n \"getNextSqrtPriceFromOutput\",\n params\n );\n },\n getAmount0DeltaEx: async (\n params: PoolTypes.SignExecuteMethodParams<\"getAmount0DeltaEx\">\n ): Promise<PoolTypes.SignExecuteMethodResult<\"getAmount0DeltaEx\">> => {\n return signExecuteMethod(Pool, this, \"getAmount0DeltaEx\", params);\n },\n getAmount0Delta: async (\n params: PoolTypes.SignExecuteMethodParams<\"getAmount0Delta\">\n ): Promise<PoolTypes.SignExecuteMethodResult<\"getAmount0Delta\">> => {\n return signExecuteMethod(Pool, this, \"getAmount0Delta\", params);\n },\n getAmount1DeltaEx: async (\n params: PoolTypes.SignExecuteMethodParams<\"getAmount1DeltaEx\">\n ): Promise<PoolTypes.SignExecuteMethodResult<\"getAmount1DeltaEx\">> => {\n return signExecuteMethod(Pool, this, \"getAmount1DeltaEx\", params);\n },\n getAmount1Delta: async (\n params: PoolTypes.SignExecuteMethodParams<\"getAmount1Delta\">\n ): Promise<PoolTypes.SignExecuteMethodResult<\"getAmount1Delta\">> => {\n return signExecuteMethod(Pool, this, \"getAmount1Delta\", params);\n },\n mulDiv: async (\n params: PoolTypes.SignExecuteMethodParams<\"mulDiv\">\n ): Promise<PoolTypes.SignExecuteMethodResult<\"mulDiv\">> => {\n return signExecuteMethod(Pool, this, \"mulDiv\", params);\n },\n mulDivRoundingUp: async (\n params: PoolTypes.SignExecuteMethodParams<\"mulDivRoundingUp\">\n ): Promise<PoolTypes.SignExecuteMethodResult<\"mulDivRoundingUp\">> => {\n return signExecuteMethod(Pool, this, \"mulDivRoundingUp\", params);\n },\n wordPath: async (\n params: PoolTypes.SignExecuteMethodParams<\"wordPath\">\n ): Promise<PoolTypes.SignExecuteMethodResult<\"wordPath\">> => {\n return signExecuteMethod(Pool, this, \"wordPath\", params);\n },\n getWord: async (\n params: PoolTypes.SignExecuteMethodParams<\"getWord\">\n ): Promise<PoolTypes.SignExecuteMethodResult<\"getWord\">> => {\n return signExecuteMethod(Pool, this, \"getWord\", params);\n },\n getWordOrTemplate: async (\n params: PoolTypes.SignExecuteMethodParams<\"getWordOrTemplate\">\n ): Promise<PoolTypes.SignExecuteMethodResult<\"getWordOrTemplate\">> => {\n return signExecuteMethod(Pool, this, \"getWordOrTemplate\", params);\n },\n flipTick: async (\n params: PoolTypes.SignExecuteMethodParams<\"flipTick\">\n ): Promise<PoolTypes.SignExecuteMethodResult<\"flipTick\">> => {\n return signExecuteMethod(Pool, this, \"flipTick\", params);\n },\n nextInitializedTickWithinOneWord: async (\n params: PoolTypes.SignExecuteMethodParams<\"nextInitializedTickWithinOneWord\">\n ): Promise<\n PoolTypes.SignExecuteMethodResult<\"nextInitializedTickWithinOneWord\">\n > => {\n return signExecuteMethod(\n Pool,\n this,\n \"nextInitializedTickWithinOneWord\",\n params\n );\n },\n positionPath: async (\n params: PoolTypes.SignExecuteMethodParams<\"positionPath\">\n ): Promise<PoolTypes.SignExecuteMethodResult<\"positionPath\">> => {\n return signExecuteMethod(Pool, this, \"positionPath\", params);\n },\n positionContractId: async (\n params: PoolTypes.SignExecuteMethodParams<\"positionContractId\">\n ): Promise<PoolTypes.SignExecuteMethodResult<\"positionContractId\">> => {\n return signExecuteMethod(Pool, this, \"positionContractId\", params);\n },\n configPath: async (\n params: PoolTypes.SignExecuteMethodParams<\"configPath\">\n ): Promise<PoolTypes.SignExecuteMethodResult<\"configPath\">> => {\n return signExecuteMethod(Pool, this, \"configPath\", params);\n },\n poolPath: async (\n params: PoolTypes.SignExecuteMethodParams<\"poolPath\">\n ): Promise<PoolTypes.SignExecuteMethodResult<\"poolPath\">> => {\n return signExecuteMethod(Pool, this, \"poolPath\", params);\n },\n poolContractId: async (\n params: PoolTypes.SignExecuteMethodParams<\"poolContractId\">\n ): Promise<PoolTypes.SignExecuteMethodResult<\"poolContractId\">> => {\n return signExecuteMethod(Pool, this, \"poolContractId\", params);\n },\n checkTicks: async (\n params: PoolTypes.SignExecuteMethodParams<\"checkTicks\">\n ): Promise<PoolTypes.SignExecuteMethodResult<\"checkTicks\">> => {\n return signExecuteMethod(Pool, this, \"checkTicks\", params);\n },\n tickPath: async (\n params: PoolTypes.SignExecuteMethodParams<\"tickPath\">\n ): Promise<PoolTypes.SignExecuteMethodResult<\"tickPath\">> => {\n return signExecuteMethod(Pool, this, \"tickPath\", params);\n },\n toTick: async (\n params: PoolTypes.SignExecuteMethodParams<\"toTick\">\n ): Promise<PoolTypes.SignExecuteMethodResult<\"toTick\">> => {\n return signExecuteMethod(Pool, this, \"toTick\", params);\n },\n getTick: async (\n params: PoolTypes.SignExecuteMethodParams<\"getTick\">\n ): Promise<PoolTypes.SignExecuteMethodResult<\"getTick\">> => {\n return signExecuteMethod(Pool, this, \"getTick\", params);\n },\n toPosition: async (\n params: PoolTypes.SignExecuteMethodParams<\"toPosition\">\n ): Promise<PoolTypes.SignExecuteMethodResult<\"toPosition\">> => {\n return signExecuteMethod(Pool, this, \"toPosition\", params);\n },\n getPosition: async (\n params: PoolTypes.SignExecuteMethodParams<\"getPosition\">\n ): Promise<PoolTypes.SignExecuteMethodResult<\"getPosition\">> => {\n return signExecuteMethod(Pool, this, \"getPosition\", params);\n },\n getFeeGrowthInside: async (\n params: PoolTypes.SignExecuteMethodParams<\"getFeeGrowthInside\">\n ): Promise<PoolTypes.SignExecuteMethodResult<\"getFeeGrowthInside\">> => {\n return signExecuteMethod(Pool, this, \"getFeeGrowthInside\", params);\n },\n updatePosition: async (\n params: PoolTypes.SignExecuteMethodParams<\"updatePosition\">\n ): Promise<PoolTypes.SignExecuteMethodResult<\"updatePosition\">> => {\n return signExecuteMethod(Pool, this, \"updatePosition\", params);\n },\n modifyPosition: async (\n params: PoolTypes.SignExecuteMethodParams<\"modifyPosition\">\n ): Promise<PoolTypes.SignExecuteMethodResult<\"modifyPosition\">> => {\n return signExecuteMethod(Pool, this, \"modifyPosition\", params);\n },\n mint: async (\n params: PoolTypes.SignExecuteMethodParams<\"mint\">\n ): Promise<PoolTypes.SignExecuteMethodResult<\"mint\">> => {\n return signExecuteMethod(Pool, this, \"mint\", params);\n },\n burn: async (\n params: PoolTypes.SignExecuteMethodParams<\"burn\">\n ): Promise<PoolTypes.SignExecuteMethodResult<\"burn\">> => {\n return signExecuteMethod(Pool, this, \"burn\", params);\n },\n collect: async (\n params: PoolTypes.SignExecuteMethodParams<\"collect\">\n ): Promise<PoolTypes.SignExecuteMethodResult<\"collect\">> => {\n return signExecuteMethod(Pool, this, \"collect\", params);\n },\n withdraw: async (\n params: PoolTypes.SignExecuteMethodParams<\"withdraw\">\n ): Promise<PoolTypes.SignExecuteMethodResult<\"withdraw\">> => {\n return signExecuteMethod(Pool, this, \"withdraw\", params);\n },\n simulateSwap: async (\n params: PoolTypes.SignExecuteMethodParams<\"simulateSwap\">\n ): Promise<PoolTypes.SignExecuteMethodResult<\"simulateSwap\">> => {\n return signExecuteMethod(Pool, this, \"simulateSwap\", params);\n },\n swap: async (\n params: PoolTypes.SignExecuteMethodParams<\"swap\">\n ): Promise<PoolTypes.SignExecuteMethodResult<\"swap\">> => {\n return signExecuteMethod(Pool, this, \"swap\", params);\n },\n pop: async (\n params: PoolTypes.SignExecuteMethodParams<\"pop\">\n ): Promise<PoolTypes.SignExecuteMethodResult<\"pop\">> => {\n return signExecuteMethod(Pool, this, \"pop\", params);\n },\n swapExactOut: async (\n params: PoolTypes.SignExecuteMethodParams<\"swapExactOut\">\n ): Promise<PoolTypes.SignExecuteMethodResult<\"swapExactOut\">> => {\n return signExecuteMethod(Pool, this, \"swapExactOut\", params);\n },\n swapExactIn: async (\n params: PoolTypes.SignExecuteMethodParams<\"swapExactIn\">\n ): Promise<PoolTypes.SignExecuteMethodResult<\"swapExactIn\">> => {\n return signExecuteMethod(Pool, this, \"swapExactIn\", params);\n },\n getSqrtPricesX96: async (\n params: PoolTypes.SignExecuteMethodParams<\"getSqrtPricesX96\">\n ): Promise<PoolTypes.SignExecuteMethodResult<\"getSqrtPricesX96\">> => {\n return signExecuteMethod(Pool, this, \"getSqrtPricesX96\", params);\n },\n updateReward: async (\n params: PoolTypes.SignExecuteMethodParams<\"updateReward\">\n ): Promise<PoolTypes.SignExecuteMethodResult<\"updateReward\">> => {\n return signExecuteMethod(Pool, this, \"updateReward\", params);\n },\n updateRewards: async (\n params: PoolTypes.SignExecuteMethodParams<\"updateRewards\">\n ): Promise<PoolTypes.SignExecuteMethodResult<\"updateRewards\">> => {\n return signExecuteMethod(Pool, this, \"updateRewards\", params);\n },\n extendRewards: async (\n params: PoolTypes.SignExecuteMethodParams<\"extendRewards\">\n ): Promise<PoolTypes.SignExecuteMethodResult<\"extendRewards\">> => {\n return signExecuteMethod(Pool, this, \"extendRewards\", params);\n },\n setRewardParams: async (\n params: PoolTypes.SignExecuteMethodParams<\"setRewardParams\">\n ): Promise<PoolTypes.SignExecuteMethodResult<\"setRewardParams\">> => {\n return signExecuteMethod(Pool, this, \"setRewardParams\", params);\n },\n collectProtocolFees: async (\n params: PoolTypes.SignExecuteMethodParams<\"collectProtocolFees\">\n ): Promise<PoolTypes.SignExecuteMethodResult<\"collectProtocolFees\">> => {\n return signExecuteMethod(Pool, this, \"collectProtocolFees\", params);\n },\n positionInfo: async (\n params: PoolTypes.SignExecuteMethodParams<\"positionInfo\">\n ): Promise<PoolTypes.SignExecuteMethodResult<\"positionInfo\">> => {\n return signExecuteMethod(Pool, this, \"positionInfo\", params);\n },\n getTokenUri: async (\n params: PoolTypes.SignExecuteMethodParams<\"getTokenUri\">\n ): Promise<PoolTypes.SignExecuteMethodResult<\"getTokenUri\">> => {\n return signExecuteMethod(Pool, this, \"getTokenUri\", params);\n },\n };\n\n async multicall<Calls extends PoolTypes.MultiCallParams>(\n calls: Calls\n ): Promise<PoolTypes.MultiCallResults<Calls>>;\n async multicall<Callss extends PoolTypes.MultiCallParams[]>(\n callss: Narrow<Callss>\n ): Promise<PoolTypes.MulticallReturnType<Callss>>;\n async multicall<\n Callss extends PoolTypes.MultiCallParams | PoolTypes.MultiCallParams[]\n >(callss: Callss): Promise<unknown> {\n return await multicallMethods(Pool, this, callss, getContractByCodeHash);\n }\n}\n","{\n \"version\": \"v4.3.0\",\n \"name\": \"Pool\",\n \"bytecode\": \"4020403609124023403843b747b34916493049ca4a3c4a6c4a9c4ad04afc4b3b4b674c494c6c4c8a4cbc4cd84d0b4d6c4d824d9d4da74dbc4dd24df94e064e1b4e714e854eef4f5f4feb508b512f51b45206524e535c562056ae572f57af57c5589258af597a5a125a4b5bfe5c55010000000102140002010000000102a0000201000101010716000c3413406e7bce0102010002030008160100021702160016024113406d7b0000010301413816000c3f264c061600057c203d4a0216003d1701160112800d89e83d321340ca7b16010d380c304c0213ccfffcb933bd6fad37aa2d162d1a5940014a0113cd0100000000000000000000000000000000170216010e380c304c06160213ccfff97272373d413259a46990580e213a2c1340803c4a0116021702160110380c304c06160213ccfff2e50f5f656932ef12357cf3c7fdcc2c1340803c4a011602170216011308380c304c06160213ccffe5caca7e10e4e61c3624eaa0941cd02c1340803c4a011602170216011310380c304c06160213ccffcb9843d60f6159c9db58835c9266442c1340803c4a011602170216011320380c304c06160213ccff973b41fa98c081472e6896dfb254c02c1340803c4a01160217021601134040380c304c06160213ccff2ea16466c96a3843ec78b326b528612c1340803c4a01160217021601134080380c304c06160213ccfe5dee046a99a2a811c461f1969c30532c1340803c4a01160217021601134100380c304c06160213ccfcbe86c7900a88aedcffc83b479aa3a42c1340803c4a01160217021601134200380c304c06160213ccf987a7253ac413176f2b074cf7815e542c1340803c4a01160217021601134400380c304c06160213ccf3392b0822b70005940c7a398e4b70f32c1340803c4a01160217021601134800380c304c06160213cce7159475a2c29b7443b29c7fa6e889d92c1340803c4a01160217021601135000380c304c06160213ccd097f3bdfd2022b8845ad8f792aa58252c1340803c4a01160217021601136000380c304c06160213cca9f746462d870fdf8a65dc1f90e061e52c1340803c4a011602170216011380004000380c304c06160213cc70d869a156d2a1b890bb3df62baf32f72c1340803c4a011602170216011380008000380c304c06160213cc31be135f97d08fd981231505542fcfa62c1340803c4a011602170216011380010000380c304c06160213cc09aa508b5b7a84e1c677de54f3e99bc92c1340803c4a011602170216011380020000380c304c06160213cb5d6af8dedb81196699c329225ee6042c1340803c4a011602170216011380040000380c304c06160213ca2216e584f5fa1ea926041bedfe982c1340803c4a011602170216011380080000380c304c06160213c8048a170391f7dc42444e8fa22c1340803c4a0116021702160005284c060c0d3616022d4a0116021702160213c1010000000091020100010b0141f2d3c6eb44f3160013c101000276a3347a4c0418160013d0fffd8963efd1fc6a506488495d951d5263988d26311340c97b160013203b1701160117020c1703160213cd01000000000000000000000000000000000d2b334c08160313408039170316021340803c1702160213c50100000000000000000d2b334c08160313404039170316021340403c1702160213c101000000000d2b334c0816031320391703160213203c17021602138000ffff334c0816031310391703160213103c170216021340ff334c0816031308391703160213083c17021602130f334c081603103917031602103c170216020f334c0816030e39170316020e3c170216020d334c0416030d3917031603134080344c071601160313407f2b3c17024a06160113407f16032b3b17021603134080314c0e0c0d3613407f2b16032a0c0d361340403c384a0316031340802b1340403b17040c1705160216022c13407f3c170216021340803c170516041605133f3b391704160216053c1702160216022c13407f3c170216021340803c170516041605133e3b391704160216053c1702160216022c13407f3c170216021340803c170516041605133d3b391704160216053c1702160216022c13407f3c170216021340803c170516041605133c3b391704160216053c1702160216022c13407f3c170216021340803c170516041605133b3b391704160216053c1702160216022c13407f3c170216021340803c170516041605133a3b391704160216053c1702160216022c13407f3c170216021340803c17051604160513393b391704160216053c1702160216022c13407f3c170216021340803c17051604160513383b391704160216053c1702160216022c13407f3c170216021340803c17051604160513373b391704160216053c1702160216022c13407f3c170216021340803c17051604160513363b391704160216053c1702160216022c13407f3c170216021340803c17051604160513353b391704160216053c1702160216022c13407f3c170216021340803c17051604160513343b391704160216053c1702160216022c13407f3c170216021340803c17051604160513333b391704160216053c1702160216022c13407f3c170216021340803c17051604160513323b391704160413c63627a301d71055774c85371706160613dcfffffffffffffffffffffffffffffffffd709b7e5480fba5a50fed5e62ffc556351340803c1707160613ccdb2df09e81959a81455e260799a0632f351340803c170816071380800000314c0316073f4a0616071380ffffff383f128100000020170916081380800000314c0316083f4a0616081380ffffff383f128100000020170a1609160a244c031609024a0a160a00041600324c03160a024a021609020000050d0440c5160016013417051603052917060c17070c17080c17090c170a16064c402316033d13800f424016042b13800f42400010170b16054c0616011600160203000c4a0516001601160203000e1707160b1607344c0216014a0516001602160b1605000a17094a402216054c0616011600160204000e4a0516001601160204000c17081603057c203d1608344c0216014a09160016021603057c203d1605000b1709160116092f170c16054c1e160c7a4c021816064c0216074a0516091600160203000c1707160c7a4c03181606194c0216084a0516091600160204000e17084a1d160c7a4c021816064c0216074a0516001609160203000e1707160c7a4c03181606194c0216084a0516001609160204000c17081606197a4c0818160316083f057c20284c061603057c203d170816067a4c041816091601304c0616033d16072b170a4a071607160413800f424016042b0011170a160916071608160a0200000202010e160016012d160016012e0c2f4c020c4a010d2a020000040901404916020c2f4c0216000216011340603b17041602160037170516034c1c160516022d16002f4c0d1604160535170616061604344c051604160016060011021604160416002d16022a0007024a1d160516022d16002f7a4c041816041605331340dd7b160416052b170716041600160700111708160813d1010000000000000000000000000000000000000000311340e17b1608020000040701402116034c11160213c901000000000000000000000000160100101704160016042a1705160513d1010000000000000000000000000000000000000000311340e17b1605024a0e160213c90100000000000000000000000016010011170616001606331340de7b160016062b0200000404011916000c331340df7b16010c331340e07b16034c07160016011602030008024a061600160116020300090200000404011916000c331340df7b16010c331340e07b16034c07160016011602040009024a061600160116020400080200000406011916021340603b1704160116002b170516034c08160416051601001116000007024a07160416051601001016002d0200000303011b16020b274c0f160016011602057c203d04000c3f057c20024a081600160116023d03000c3f02000004050111160116002b170416034c061602160413c9010000000000000000000000000011024a051602160413c90100000000000000000000000000100200000303011b160205264c0f160016011602057c203d04000e3f057c20024a081600160116023d03000e3f020000030901408d160016010c0d3687170316001601371704160316043616031604314c020d4a010c36170516050c2f4c04160416022d02160216053313415f7b160016011602871706160516061604334c020d4a010c361705160416063617040c1602361602381707160216072d1702160416072d17040c16073616072d0d351707160416051607373917040f1602370e3a170816080e16021608373637170816080e16021608373637170816080e16021608373637170816080e16021608373637170816080e16021608373637170816080e16021608373637170816041608370200000304011216001601160200101703160016011602870c334c0416030d2a021603020000010101120e16007a7a1241003a7a05294b033a904a023a221302640200000105011b1600001217011601cb17021602c54c02160202b21301640c130164170417031601ce0416031604c11816020200000103010d1600001217011601cb17021602c54c02160202ce040200000103001e1600ce0a23052413412d7b16007a7ace0a3a7a05294b033a904a023a22170116010013170216010d0c160201020000020602403016007a7ace0a3a7a05294b033a904a023a2216014c02054a01061f170216020014170316021601ce0a0f0e1603010317051704160412bff27618264c0212bff276181704160412800d89e8284c0212800d89e817041604160502010003030108d37afb14100d1600160116021304640201000405010ad35b19984c1601160216030017170416001604cc0200000101010316004002000003040109160016020019cc1703160116034402000003040109160016011602001a170316001603cc0200000202000f16001601261340667b160012bff27618291340677b160112800d89e8271340687b0000010101050c160013026402010001020107d30949c5981600001d17011601cb02000001080240301600001d17011601cb17021602c54c03160204021600a002274c04a00ea00fa0104a030c0c0c170517041703b216001302640c05160316041605130564170717061601ce0316061607c11816020302000003040108160016011602001717031603cb020000030d024039160016011602001717031603cb17041604c54c03160404020c0c0c1709170817070c0c0c170c170b170ab2a0001406414c504800031303640c160716081609160a160b160c13076417061705a0000d2aa1001603ce01160516060d1600c9181604030200000209034047a002a00ea00fa010100f16000101170417031702a002a00ea00fa010100f160101021707170617050c170816080f314c402716087a0f314d130e2ac316087a0f314d0e2a782b16087a0f314d112a783616087a0f314d0e2a7916080d2a17084a7fd5160216031604020000051103404b1602001f170617051603001f17081707ce0b1604040f0d160501001709ce0b1604030f0d16070100170a16097a4b021816064c0216020015160a7a4b021816084c0216030015160516070022170d170c170b1604160b160c160d100f160001041710170f170e16094c0516010d0c16050103160a4c0516010d0c16070103160e160f1610020003050f05405416021603001c560030160016011602160316040023170717061705160405254c403ca004170816020004170916030004170aa0021602264c0b1609160a1604000d170b160b0516051606160702a0021603264c16a001160a1604000d170c1609a0011604000f170d16083f16041f3da104160c160d160516061607021609160a1604000f170e05160e1605160616070205051605160616070201070513024056d3e58379f416011602160300211706170516064c0d16040c2f170716071913406b7b160016014513406c7b16011602160316043f170b170a170917081600160516064c020c4a010da3160516081609160a160b00241710170f170e170d170c160c3d1711160d3d17121600ce061611ac1600ce071612ac1207160116021603160e160f161056750916001601160216031604161116125676161116120201030511024048d39d5023b316011602160316043f057c20170817071706170516011602160300201709160016090da3160916051606160716080024170e170d170c170b170a160a057c203d170f160b057c203d1710160f16100e0c160901051207160116021603160c160d160e56750a16001601160216031604160f161075160f1610020103080c034027d3417830ee160216031604002017081605160616070f0f16080106170b170a1709160016080da316011609160a160b00281206160016011602160316041609160a160b761609160a160b020001040800402ece06ce07ce081706170517040c170716070f314c402216077a0f314d0d2a780c334c12160016077a0f314d102a7816077a0f314d0d2a78ab16070d2a17074a7fda01000418004097d34c88990ba0011704a0021705a00417061601052817070517081605160019001618170906160900045e16030c334c407c16030d2b1703160516000016170b170a160a0004170c1604160c16061601ce0900061710170f170e170d16074c0d1601160e16102a3f2017011608160f3f2017084a0c1601160f3f1f17011608160e16102a3f1f1708160b4c17160a001e17110c0d16110105171216004c051612057c204a011612171316063f16131f3d170616004c04160a06204a01160a1705160d170407160416065f160105244c1f1602430c2f4c0102160016071c4c02ce074a01ce061714160216141607002b171717161817151615160816171603100c16160129024a7f80010307403402416dd3d6407a21160405251340697b560030160405281707a001a002a003170a1709170816034c0c16051608317a4c0418160513c101000276a33313406a7b4a0b16051608337a4c0418160513d0fffd8963efd1fc6a506488495d951d5263988d263113406a7ba00416034c04160a13102e4a03160a103c170c170b1604051608160916034c02a00e4a01a00f160b0c1713171217111710170f170e170d160d05257a4c0418160f1605304c409b1610160300161715171416140004171616034c0416161605314a031616160533171716174c0216054a0116161718160f16181612160dce090006171c171b171a1719160f161416151616161a161b161c1723172217211720171f171e171d1619170f16074c0d160d162116232a3f20170d160e16223f20170e4a0c160d16223f1f170d160e162116232a3f1f170e160c0c334c041623160c2d4a010c1724161316242a171316120c334c091611162316242b13cd0100000000000000000000000000000000161200102a1711160f16202f4c4027161f4c1c161e001e1725a00ea00fa01016031611110d16250104172616034c051626057c204a011626172716123f16271f3d171216034c04161e06204a01161e17104a07160f161d304c03160f000517104a7f5b160fa1011610a1021612a1041613130a2d1728161316282b171316034c071611a10ea01116132aa1114a061611a10fa01216132aa1121604160d201729160e172a160316071d4c041629172a160e172916034c0e160016011602ce0616293dce07162a057c203d16064a0d160016011602ce07162a3dce061629057c203d1606173217311730172f172e172d172c172b16074c0f1600162e162fa3162b162c162d162e162f1630163116321628002d4a1216001602a51733160016021633a3162b162c162d162e162f1630163116321628002c08160016011629162aa001a004a002751629162a020000030d04404116000c13206217030e170416001320132016042a62170516056d1706160171160371311707160716021c170816084c0413c101000276a30d2a4a0313d0fffd8963efd1fc6a506488495d951d5263988d260d2b17091600132016042a16004362170a16074c0416011603444a031603160144170bce00160b1606001b170c16081609160c160a020001091000404716031602414c1e160016031604acce02160047cc1709ce00ce06ce0744ce05001a170a160016031608a3160016031608160a0c110c160901004a40211607160304002b170e170d170c170b16001602a5170f16001602160fa31600b21602160b16043f057c20160c160e13070e160d012a1818160116051606ab00010910004046160016031604acce02160147cc17091609c51340717b1609170ace00ce06ce0744ce05001a170b160016031608a3160016031608160b0c110c160a010016051602414c05160116051606ab4a1a1607160503002b170f170e170d170cb216051606a3b216011602160c16063f160d160f13070e160e012a1818010002020307d3c62bf5cfa0011600000416010004020000020800408716007a0f314d0f2c112ac3170216007a0f314d0f2c112a0d2ac3170316020c2f7a4b041816011602327a4b041816031602324c0102a0040c304c404f160116022b170416007a0f314d0f2c112a0e2ac31705160316022b170616041606314c0516041605160600104a011605170716007a0f314d130e2ac3160713cd0100000000000000000000000000000000a00400102a16007a0f314d130e2ac416007a0f314d0f2c112a0e2ac316072b16007a0f314d0f2c112a0e2ac4160116007a0f314d0f2c112ac400000102000e0c170116010f314c0816011600002f16010d2a17014a340107030a004096d34ca91e1416010f311340727b16020c331340747bce06ce07ce0817051704170316017a0f314d0f2a7817065617071607003016017a0f314d0f2c112a0e2ac3170816017a0f314d0f2c112a0d2ac31607337a4c041816080c331340737b16017a0f314d0f2c112a0d2ac316072b1709160716017a0f314d0f2c112ac416017a0f314d0f2c112a0d2ac316091602160800102a16017a0f314d0f2c112a0d2ac416017a0f314d0f2c112a0e2ac316022a16017a0f314d0f2c112a0e2ac4160016061602ac0107050a004065d375c252e5b4ce00774513406f7b16010f311340727b16040c331340747b56170516021605334c0216024a011605170616061603311340707b16050030ce06ce07ce08170917081707160616017a0f314d0f2c112ac4160316017a0f314d0f2c112a0d2ac416017a0f314d0f2c112a0e2ac316042a16017a0f314d0f2c112a0e2ac4160016017a0f314d13072a781604ac01020103001cd3960b26b3b3ce00411341937ba0111701a01217021600ce061601ab1600ce071602ab0ca1110ca1121208b41600160116026101000840270840d1d300611b5f1601001e17081602001e17091600160116020020170a0c10160a0107170e170d170c170b16081609002217111710170f160100041712160200041713051714051715160b3f1716a0021601264c06161216131616000d17144a14a0021602264c0ba00116131616000d17141612a0011616000f17154a05161216131616000f17150c0c0c171917181717160b0c334c40290c171a161a0f314c4023161a7a0f314d130f2a78161a7a0f314d130c2a782b171b161b160b13cd01000000000000000000000000000000000010161a7a0f314d13172a79161a0d2a171a4a7fd905171c05171d56171e161e16062b171f1607161f2a17201603160b161f2c2a3f1721a0021601264c06161216131621000d171c4a14a0021602264c0ba00116131621000d171c1612a0011621000f171d4a05161216131621000f171da001a00113c901000000000000000000000000001017221622161c3d13c9010000000000000000000000000010161d3d2a1723160416172a1724160516182a17251622162413c901000000000000000000000000001016252a17261614161516171618161916231626162002010000000103d3ee6a5cd514404868747470733a2f2f7261772e67697468756275736572636f6e74656e742e636f6d2f616c65706869756d2f746f6b656e2d6c6973742f6d61737465722f636f72652f6d2e6a736f6e02\",\n \"codeHash\": \"cdb37fb2772ba9c976a4dc34db15994ecaeef82d8690b9a94c600a81c67f98c4\",\n \"fieldsSig\": {\n \"names\": [\n \"parent\",\n \"positionTemplate\",\n \"dexAccountTemplate\",\n \"tickTemplate\",\n \"wordTemplate\",\n \"configIndex\",\n \"token0\",\n \"token1\",\n \"token2\",\n \"fee\",\n \"tickSpacing\",\n \"maxLiquidityPerTick\",\n \"nextNftIndex\",\n \"slot0\",\n \"liquidity\",\n \"rewardInfos\",\n \"feeGrowths\",\n \"protocolFees\",\n \"__stdInterfaceId\"\n ],\n \"types\": [\n \"PoolFactory\",\n \"ByteVec\",\n \"ByteVec\",\n \"ByteVec\",\n \"ByteVec\",\n \"U256\",\n \"ByteVec\",\n \"ByteVec\",\n \"ByteVec\",\n \"U256\",\n \"I256\",\n \"U256\",\n \"U256\",\n \"Slot0\",\n \"U256\",\n \"[Reward;3]\",\n \"[U256;3]\",\n \"ProtocolFees\",\n \"ByteVec\"\n ],\n \"isMutable\": [\n false,\n false,\n false,\n false,\n false,\n false,\n false,\n false,\n false,\n false,\n false,\n false,\n true,\n true,\n true,\n true,\n true,\n true,\n false\n ]\n },\n \"eventsSig\": [\n {\n \"name\": \"Initialize\",\n \"fieldNames\": [\n \"sqrtPriceX96\",\n \"tick\"\n ],\n \"fieldTypes\": [\n \"U256\",\n \"I256\"\n ]\n },\n {\n \"name\": \"SwapStart\",\n \"fieldNames\": [\n \"sqrtPriceX96\"\n ],\n \"fieldTypes\": [\n \"U256\"\n ]\n },\n {\n \"name\": \"SwapStep\",\n \"fieldNames\": [\n \"sqrtPriceX96\",\n \"liquidity\"\n ],\n \"fieldTypes\": [\n \"U256\",\n \"U256\"\n ]\n },\n {\n \"name\": \"Swap\",\n \"fieldNames\": [\n \"sender\",\n \"recipient\",\n \"amount0\",\n \"amount1\",\n \"sqrtPriceX96\",\n \"liquidity\",\n \"tick\"\n ],\n \"fieldTypes\": [\n \"Address\",\n \"Address\",\n \"I256\",\n \"I256\",\n \"U256\",\n \"U256\",\n \"I256\"\n ]\n },\n {\n \"name\": \"Mint\",\n \"fieldNames\": [\n \"sender\",\n \"owner\",\n \"tickLower\",\n \"tickUpper\",\n \"liquidity\",\n \"amount0\",\n \"amount1\",\n \"timestamp\"\n ],\n \"fieldTypes\": [\n \"Address\",\n \"Address\",\n \"I256\",\n \"I256\",\n \"U256\",\n \"U256\",\n \"U256\",\n \"U256\"\n ]\n },\n {\n \"name\": \"Burn\",\n \"fieldNames\": [\n \"operator\",\n \"owner\",\n \"tickLower\",\n \"tickUpper\",\n \"liquidity\",\n \"amount0\",\n \"amount1\"\n ],\n \"fieldTypes\": [\n \"Address\",\n \"Address\",\n \"I256\",\n \"I256\",\n \"U256\",\n \"U256\",\n \"U256\"\n ]\n },\n {\n \"name\": \"Collect\",\n \"fieldNames\": [\n \"operator\",\n \"recipient\",\n \"owner\",\n \"tickLower\",\n \"tickUpper\",\n \"amount0\",\n \"amount1\",\n \"amount2\"\n ],\n \"fieldTypes\": [\n \"Address\",\n \"Address\",\n \"Address\",\n \"I256\",\n \"I256\",\n \"U256\",\n \"U256\",\n \"U256\"\n ]\n },\n {\n \"name\": \"Fees\",\n \"fieldNames\": [\n \"owner\",\n \"tickLower\",\n \"tickUpper\",\n \"amount0\",\n \"amount1\",\n \"amount2\",\n \"timestamp\"\n ],\n \"fieldTypes\": [\n \"Address\",\n \"I256\",\n \"I256\",\n \"U256\",\n \"U256\",\n \"U256\",\n \"U256\"\n ]\n },\n {\n \"name\": \"CollectProtocol\",\n \"fieldNames\": [\n \"sender\",\n \"recipient\",\n \"amount0\",\n \"amount1\"\n ],\n \"fieldTypes\": [\n \"Address\",\n \"Address\",\n \"U256\",\n \"U256\"\n ]\n }\n ],\n \"functions\": [\n {\n \"name\": \"getCollectionUri\",\n \"paramNames\": [],\n \"paramTypes\": [],\n \"paramIsMutable\": [],\n \"returnTypes\": [\n \"ByteVec\"\n ]\n },\n {\n \"name\": \"totalSupply\",\n \"paramNames\": [],\n \"paramTypes\": [],\n \"paramIsMutable\": [],\n \"returnTypes\": [\n \"U256\"\n ]\n },\n {\n \"name\": \"nftByIndex\",\n \"paramNames\": [\n \"index\"\n ],\n \"paramTypes\": [\n \"U256\"\n ],\n \"paramIsMutable\": [\n false\n ],\n \"returnTypes\": [\n \"INFT\"\n ]\n },\n {\n \"name\": \"validateNFT\",\n \"paramNames\": [\n \"nftId\",\n \"nftIndex\"\n ],\n \"paramTypes\": [\n \"ByteVec\",\n \"U256\"\n ],\n \"paramIsMutable\": [\n false,\n false\n ],\n \"returnTypes\": []\n },\n {\n \"name\": \"getSqrtRatioAtTick\",\n \"paramNames\": [\n \"tick\"\n ],\n \"paramTypes\": [\n \"I256\"\n ],\n \"paramIsMutable\": [\n false\n ],\n \"returnTypes\": [\n \"U256\"\n ]\n },\n {\n \"name\": \"getTickAtSqrtRatio\",\n \"paramNames\": [\n \"sqrtPriceX96\"\n ],\n \"paramTypes\": [\n \"U256\"\n ],\n \"paramIsMutable\": [\n false\n ],\n \"returnTypes\": [\n \"I256\"\n ]\n },\n {\n \"name\": \"computeSwapStep\",\n \"paramNames\": [\n \"sqrtRatioCurrentX96\",\n \"sqrtRatioTargetX96\",\n \"liquidity_\",\n \"amountRemaining\",\n \"feePips\"\n ],\n \"paramTypes\": [\n \"U256\",\n \"U256\",\n \"U256\",\n \"I256\",\n \"U256\"\n ],\n \"paramIsMutable\": [\n false,\n false,\n false,\n false,\n false\n ],\n \"returnTypes\": [\n \"U256\",\n \"U256\",\n \"U256\",\n \"U256\"\n ]\n },\n {\n \"name\": \"divRoundingUp\",\n \"paramNames\": [\n \"x\",\n \"y\"\n ],\n \"paramTypes\": [\n \"U256\",\n \"U256\"\n ],\n \"paramIsMutable\": [\n false,\n false\n ],\n \"returnTypes\": [\n \"U256\"\n ]\n },\n {\n \"name\": \"getNextSqrtPriceFromAmount0RoundingUp\",\n \"paramNames\": [\n \"sqrtPX96\",\n \"liquidity_\",\n \"amount\",\n \"add\"\n ],\n \"paramTypes\": [\n \"U256\",\n \"U256\",\n \"U256\",\n \"Bool\"\n ],\n \"paramIsMutable\": [\n false,\n false,\n false,\n false\n ],\n \"returnTypes\": [\n \"U256\"\n ]\n },\n {\n \"name\": \"getNextSqrtPriceFromAmount1RoundingDown\",\n \"paramNames\": [\n \"sqrtPX96\",\n \"liquidity_\",\n \"amount\",\n \"add\"\n ],\n \"paramTypes\": [\n \"U256\",\n \"U256\",\n \"U256\",\n \"Bool\"\n ],\n \"paramIsMutable\": [\n false,\n false,\n false,\n false\n ],\n \"returnTypes\": [\n \"U256\"\n ]\n },\n {\n \"name\": \"getNextSqrtPriceFromInput\",\n \"paramNames\": [\n \"sqrtPX96\",\n \"liquidity_\",\n \"amountIn\",\n \"zeroForOne\"\n ],\n \"paramTypes\": [\n \"U256\",\n \"U256\",\n \"U256\",\n \"Bool\"\n ],\n \"paramIsMutable\": [\n false,\n false,\n false,\n false\n ],\n \"returnTypes\": [\n \"U256\"\n ]\n },\n {\n \"name\": \"getNextSqrtPriceFromOutput\",\n \"paramNames\": [\n \"sqrtPX96\",\n \"liquidity_\",\n \"amountOut\",\n \"zeroForOne\"\n ],\n \"paramTypes\": [\n \"U256\",\n \"U256\",\n \"U256\",\n \"Bool\"\n ],\n \"paramIsMutable\": [\n false,\n false,\n false,\n false\n ],\n \"returnTypes\": [\n \"U256\"\n ]\n },\n {\n \"name\": \"getAmount0DeltaEx\",\n \"paramNames\": [\n \"sqrtRatioAX96\",\n \"sqrtRatioBX96\",\n \"liquidityDelta\",\n \"roundUp\"\n ],\n \"paramTypes\": [\n \"U256\",\n \"U256\",\n \"U256\",\n \"Bool\"\n ],\n \"paramIsMutable\": [\n false,\n false,\n false,\n false\n ],\n \"returnTypes\": [\n \"U256\"\n ]\n },\n {\n \"name\": \"getAmount0Delta\",\n \"paramNames\": [\n \"sqrtRatioAX96\",\n \"sqrtRatioBX96\",\n \"liquidityDelta\"\n ],\n \"paramTypes\": [\n \"U256\",\n \"U256\",\n \"I256\"\n ],\n \"paramIsMutable\": [\n false,\n false,\n false\n ],\n \"returnTypes\": [\n \"I256\"\n ]\n },\n {\n \"name\": \"getAmount1DeltaEx\",\n \"paramNames\": [\n \"sqrtRatioAX96\",\n \"sqrtRatioBX96\",\n \"liquidityDelta\",\n \"roundUp\"\n ],\n \"paramTypes\": [\n \"U256\",\n \"U256\",\n \"U256\",\n \"Bool\"\n ],\n \"paramIsMutable\": [\n false,\n false,\n false,\n false\n ],\n \"returnTypes\": [\n \"U256\"\n ]\n },\n {\n \"name\": \"getAmount1Delta\",\n \"paramNames\": [\n \"sqrtRatioAX96\",\n \"sqrtRatioBX96\",\n \"liquidityDelta\"\n ],\n \"paramTypes\": [\n \"U256\",\n \"U256\",\n \"I256\"\n ],\n \"paramIsMutable\": [\n false,\n false,\n false\n ],\n \"returnTypes\": [\n \"I256\"\n ]\n },\n {\n \"name\": \"mulDiv\",\n \"paramNames\": [\n \"a\",\n \"b\",\n \"denominator\"\n ],\n \"paramTypes\": [\n \"U256\",\n \"U256\",\n \"U256\"\n ],\n \"paramIsMutable\": [\n false,\n false,\n true\n ],\n \"returnTypes\": [\n \"U256\"\n ]\n },\n {\n \"name\": \"mulDivRoundingUp\",\n \"paramNames\": [\n \"a\",\n \"b\",\n \"denominator\"\n ],\n \"paramTypes\": [\n \"U256\",\n \"U256\",\n \"U256\"\n ],\n \"paramIsMutable\": [\n false,\n false,\n false\n ],\n \"returnTypes\": [\n \"U256\"\n ]\n },\n {\n \"name\": \"wordPath\",\n \"paramNames\": [\n \"compressed\"\n ],\n \"paramTypes\": [\n \"I256\"\n ],\n \"paramIsMutable\": [\n false\n ],\n \"returnTypes\": [\n \"ByteVec\"\n ]\n },\n {\n \"name\": \"getWord\",\n \"paramNames\": [\n \"compressed\"\n ],\n \"paramTypes\": [\n \"I256\"\n ],\n \"paramIsMutable\": [\n false\n ],\n \"returnTypes\": [\n \"BitmapWord\"\n ]\n },\n {\n \"name\": \"getWordOrTemplate\",\n \"paramNames\": [\n \"compressed\"\n ],\n \"paramTypes\": [\n \"I256\"\n ],\n \"paramIsMutable\": [\n false\n ],\n \"returnTypes\": [\n \"BitmapWord\"\n ]\n },\n {\n \"name\": \"flipTick\",\n \"paramNames\": [\n \"tick\"\n ],\n \"paramTypes\": [\n \"I256\"\n ],\n \"paramIsMutable\": [\n false\n ],\n \"returnTypes\": []\n },\n {\n \"name\": \"nextInitializedTickWithinOneWord\",\n \"paramNames\": [\n \"tick\",\n \"zeroForOne\"\n ],\n \"paramTypes\": [\n \"I256\",\n \"Bool\"\n ],\n \"paramIsMutable\": [\n false,\n false\n ],\n \"returnTypes\": [\n \"I256\",\n \"Bool\"\n ]\n },\n {\n \"name\": \"positionPath\",\n \"paramNames\": [\n \"o\",\n \"tickLower\",\n \"tickUpper\"\n ],\n \"paramTypes\": [\n \"Address\",\n \"I256\",\n \"I256\"\n ],\n \"paramIsMutable\": [\n false,\n false,\n false\n ],\n \"returnTypes\": [\n \"ByteVec\"\n ]\n },\n {\n \"name\": \"positionContractId\",\n \"paramNames\": [\n \"pool\",\n \"o\",\n \"tickLower\",\n \"tickUpper\"\n ],\n \"paramTypes\": [\n \"Pool\",\n \"Address\",\n \"I256\",\n \"I256\"\n ],\n \"paramIsMutable\": [\n false,\n false,\n false,\n false\n ],\n \"returnTypes\": [\n \"ByteVec\"\n ]\n },\n {\n \"name\": \"configPath\",\n \"paramNames\": [\n \"configIndex_\"\n ],\n \"paramTypes\": [\n \"U256\"\n ],\n \"paramIsMutable\": [\n false\n ],\n \"returnTypes\": [\n \"ByteVec\"\n ]\n },\n {\n \"name\": \"poolPath\",\n \"paramNames\": [\n \"factory\",\n \"tokens\",\n \"configIndex_\"\n ],\n \"paramTypes\": [\n \"PoolFactory\",\n \"ByteVec\",\n \"U256\"\n ],\n \"paramIsMutable\": [\n false,\n false,\n false\n ],\n \"returnTypes\": [\n \"ByteVec\"\n ]\n },\n {\n \"name\": \"poolContractId\",\n \"paramNames\": [\n \"factory\",\n \"tokens\",\n \"configIndex_\"\n ],\n \"paramTypes\": [\n \"PoolFactory\",\n \"ByteVec\",\n \"U256\"\n ],\n \"paramIsMutable\": [\n false,\n false,\n false\n ],\n \"returnTypes\": [\n \"ByteVec\"\n ]\n },\n {\n \"name\": \"checkTicks\",\n \"paramNames\": [\n \"tickLower\",\n \"tickUpper\"\n ],\n \"paramTypes\": [\n \"I256\",\n \"I256\"\n ],\n \"paramIsMutable\": [\n false,\n false\n ],\n \"returnTypes\": []\n },\n {\n \"name\": \"tickPath\",\n \"paramNames\": [\n \"tick\"\n ],\n \"paramTypes\": [\n \"I256\"\n ],\n \"paramIsMutable\": [\n false\n ],\n \"returnTypes\": [\n \"ByteVec\"\n ]\n },\n {\n \"name\": \"toTick\",\n \"paramNames\": [\n \"tick\"\n ],\n \"paramTypes\": [\n \"I256\"\n ],\n \"paramIsMutable\": [\n false\n ],\n \"returnTypes\": [\n \"Tick\"\n ]\n },\n {\n \"name\": \"getTick\",\n \"paramNames\": [\n \"tick\"\n ],\n \"paramTypes\": [\n \"I256\"\n ],\n \"paramIsMutable\": [\n false\n ],\n \"returnTypes\": [\n \"Tick\",\n \"Bool\"\n ]\n },\n {\n \"name\": \"toPosition\",\n \"paramNames\": [\n \"owner\",\n \"tickLower\",\n \"tickUpper\"\n ],\n \"paramTypes\": [\n \"Address\",\n \"I256\",\n \"I256\"\n ],\n \"paramIsMutable\": [\n false,\n false,\n false\n ],\n \"returnTypes\": [\n \"Position\"\n ]\n },\n {\n \"name\": \"getPosition\",\n \"paramNames\": [\n \"owner\",\n \"tickLower\",\n \"tickUpper\"\n ],\n \"paramTypes\": [\n \"Address\",\n \"I256\",\n \"I256\"\n ],\n \"paramIsMutable\": [\n false,\n false,\n false\n ],\n \"returnTypes\": [\n \"Position\",\n \"Bool\"\n ]\n },\n {\n \"name\": \"getFeeGrowthInside\",\n \"paramNames\": [\n \"tickLower\",\n \"tickUpper\"\n ],\n \"paramTypes\": [\n \"Tick\",\n \"Tick\"\n ],\n \"paramIsMutable\": [\n false,\n false\n ],\n \"returnTypes\": [\n \"[U256;3]\"\n ]\n },\n {\n \"name\": \"updatePosition\",\n \"paramNames\": [\n \"position\",\n \"owner\",\n \"tickLower\",\n \"tickUpper\",\n \"liquidityDelta\"\n ],\n \"paramTypes\": [\n \"Position\",\n \"Address\",\n \"I256\",\n \"I256\",\n \"I256\"\n ],\n \"paramIsMutable\": [\n false,\n false,\n false,\n false,\n false\n ],\n \"returnTypes\": [\n \"[U256;3]\"\n ]\n },\n {\n \"name\": \"modifyPosition\",\n \"paramNames\": [\n \"position\",\n \"params\"\n ],\n \"paramTypes\": [\n \"Position\",\n \"ModifyPositionParams\"\n ],\n \"paramIsMutable\": [\n false,\n false\n ],\n \"returnTypes\": [\n \"I256\",\n \"I256\",\n \"[U256;3]\"\n ]\n },\n {\n \"name\": \"mint\",\n \"paramNames\": [\n \"payer\",\n \"owner\",\n \"tickLower\",\n \"tickUpper\",\n \"amount\"\n ],\n \"paramTypes\": [\n \"Address\",\n \"Address\",\n \"I256\",\n \"I256\",\n \"U256\"\n ],\n \"paramIsMutable\": [\n false,\n false,\n false,\n false,\n false\n ],\n \"returnTypes\": [\n \"U256\",\n \"U256\"\n ]\n },\n {\n \"name\": \"burn\",\n \"paramNames\": [\n \"operator\",\n \"owner\",\n \"tickLower\",\n \"tickUpper\",\n \"amount\"\n ],\n \"paramTypes\": [\n \"Address\",\n \"Address\",\n \"I256\",\n \"I256\",\n \"U256\"\n ],\n \"paramIsMutable\": [\n false,\n false,\n false,\n false,\n false\n ],\n \"returnTypes\": [\n \"U256\",\n \"U256\"\n ]\n },\n {\n \"name\": \"collect\",\n \"paramNames\": [\n \"operator\",\n \"recipient\",\n \"owner\",\n \"tickLower\",\n \"tickUpper\",\n \"maxAmounts\"\n ],\n \"paramTypes\": [\n \"Address\",\n \"Address\",\n \"Address\",\n \"I256\",\n \"I256\",\n \"[U256;3]\"\n ],\n \"paramIsMutable\": [\n false,\n false,\n false,\n false,\n false,\n false\n ],\n \"returnTypes\": [\n \"[U256;3]\"\n ]\n },\n {\n \"name\": \"withdraw\",\n \"paramNames\": [\n \"recipient\",\n \"amounts\"\n ],\n \"paramTypes\": [\n \"Address\",\n \"[U256;3]\"\n ],\n \"paramIsMutable\": [\n false,\n false\n ],\n \"returnTypes\": []\n },\n {\n \"name\": \"simulateSwap\",\n \"paramNames\": [\n \"zeroForOne\",\n \"amountSpecified\",\n \"data\",\n \"maxSteps\"\n ],\n \"paramTypes\": [\n \"Bool\",\n \"I256\",\n \"ByteVec\",\n \"U256\"\n ],\n \"paramIsMutable\": [\n false,\n true,\n false,\n true\n ],\n \"returnTypes\": []\n },\n {\n \"name\": \"swap\",\n \"paramNames\": [\n \"payer\",\n \"recipient\",\n \"token\",\n \"zeroForOne\",\n \"amountSpecified\",\n \"sqrtPriceLimitX96\",\n \"data\"\n ],\n \"paramTypes\": [\n \"Address\",\n \"Address\",\n \"ByteVec\",\n \"Bool\",\n \"I256\",\n \"U256\",\n \"ByteVec\"\n ],\n \"paramIsMutable\": [\n false,\n false,\n false,\n false,\n false,\n false,\n false\n ],\n \"returnTypes\": [\n \"I256\",\n \"I256\"\n ]\n },\n {\n \"name\": \"pop\",\n \"paramNames\": [\n \"data\",\n \"t\",\n \"exactInput\"\n ],\n \"paramTypes\": [\n \"ByteVec\",\n \"ByteVec\",\n \"Bool\"\n ],\n \"paramIsMutable\": [\n false,\n false,\n false\n ],\n \"returnTypes\": [\n \"Bool\",\n \"U256\",\n \"Pool\",\n \"ByteVec\"\n ]\n },\n {\n \"name\": \"swapExactOut\",\n \"paramNames\": [\n \"p\",\n \"refRewards\"\n ],\n \"paramTypes\": [\n \"SwapParams\",\n \"U256\"\n ],\n \"paramIsMutable\": [\n false,\n false\n ],\n \"returnTypes\": []\n },\n {\n \"name\": \"swapExactIn\",\n \"paramNames\": [\n \"p\",\n \"refRewards\"\n ],\n \"paramTypes\": [\n \"SwapParams\",\n \"U256\"\n ],\n \"paramIsMutable\": [\n false,\n false\n ],\n \"returnTypes\": []\n },\n {\n \"name\": \"getSqrtPricesX96\",\n \"paramNames\": [\n \"tickLower\",\n \"tickUpper\"\n ],\n \"paramTypes\": [\n \"I256\",\n \"I256\"\n ],\n \"paramIsMutable\": [\n false,\n false\n ],\n \"returnTypes\": [\n \"U256\",\n \"U256\",\n \"U256\"\n ]\n },\n {\n \"name\": \"updateReward\",\n \"paramNames\": [\n \"index\",\n \"blockTime\"\n ],\n \"paramTypes\": [\n \"U256\",\n \"U256\"\n ],\n \"paramIsMutable\": [\n false,\n false\n ],\n \"returnTypes\": []\n },\n {\n \"name\": \"updateRewards\",\n \"paramNames\": [\n \"blockTime\"\n ],\n \"paramTypes\": [\n \"U256\"\n ],\n \"paramIsMutable\": [\n false\n ],\n \"returnTypes\": []\n },\n {\n \"name\": \"extendRewards\",\n \"paramNames\": [\n \"payer\",\n \"index\",\n \"amount\"\n ],\n \"paramTypes\": [\n \"Address\",\n \"U256\",\n \"U256\"\n ],\n \"paramIsMutable\": [\n false,\n false,\n false\n ],\n \"returnTypes\": []\n },\n {\n \"name\": \"setRewardParams\",\n \"paramNames\": [\n \"payer\",\n \"index\",\n \"openTime\",\n \"endTime\",\n \"amount\"\n ],\n \"paramTypes\": [\n \"Address\",\n \"U256\",\n \"U256\",\n \"U256\",\n \"U256\"\n ],\n \"paramIsMutable\": [\n false,\n false,\n false,\n false,\n false\n ],\n \"returnTypes\": []\n },\n {\n \"name\": \"collectProtocolFees\",\n \"paramNames\": [\n \"recipient\"\n ],\n \"paramTypes\": [\n \"Address\"\n ],\n \"paramIsMutable\": [\n false\n ],\n \"returnTypes\": []\n },\n {\n \"name\": \"positionInfo\",\n \"paramNames\": [\n \"owner\",\n \"tickLower\",\n \"tickUpper\",\n \"acc\",\n \"iacc0\",\n \"iacc1\",\n \"t0\",\n \"acct0\"\n ],\n \"paramTypes\": [\n \"Address\",\n \"I256\",\n \"I256\",\n \"U256\",\n \"U256\",\n \"U256\",\n \"U256\",\n \"U256\"\n ],\n \"paramIsMutable\": [\n false,\n false,\n false,\n false,\n false,\n false,\n false,\n false\n ],\n \"returnTypes\": [\n \"PositionInfo\"\n ]\n },\n {\n \"name\": \"getTokenUri\",\n \"paramNames\": [],\n \"paramTypes\": [],\n \"paramIsMutable\": [],\n \"returnTypes\": [\n \"ByteVec\"\n ]\n }\n ],\n \"constants\": [\n {\n \"name\": \"MAX_PIPS\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"1000000\"\n }\n }\n ],\n \"enums\": [\n {\n \"name\": \"TickMathError\",\n \"fields\": [\n {\n \"name\": \"SqrtPriceX96OutOfBounds\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"201\"\n }\n },\n {\n \"name\": \"TickOutOfBounds\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"202\"\n }\n }\n ]\n },\n {\n \"name\": \"SqrtPriceMathError\",\n \"fields\": [\n {\n \"name\": \"SqrtFromAmountOverflow\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"221\"\n }\n },\n {\n \"name\": \"QuotientTooHigh\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"222\"\n }\n },\n {\n \"name\": \"PriceZero\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"223\"\n }\n },\n {\n \"name\": \"NoLiquidity\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"224\"\n }\n },\n {\n \"name\": \"PriceNotFitIn160\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"225\"\n }\n }\n ]\n },\n {\n \"name\": \"FullMathError\",\n \"fields\": [\n {\n \"name\": \"MulDivOverflow\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"351\"\n }\n }\n ]\n },\n {\n \"name\": \"TickBitmapError\",\n \"fields\": [\n {\n \"name\": \"TickNotAligned\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"301\"\n }\n }\n ]\n },\n {\n \"name\": \"PathPrefixes\",\n \"fields\": [\n {\n \"name\": \"Tick\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"0\"\n }\n },\n {\n \"name\": \"Position\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"1\"\n }\n },\n {\n \"name\": \"Word\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"2\"\n }\n }\n ]\n },\n {\n \"name\": \"PoolError\",\n \"fields\": [\n {\n \"name\": \"TLU\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"102\"\n }\n },\n {\n \"name\": \"TLM\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"103\"\n }\n },\n {\n \"name\": \"TUM\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"104\"\n }\n },\n {\n \"name\": \"AS\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"105\"\n }\n },\n {\n \"name\": \"SPL\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"106\"\n }\n },\n {\n \"name\": \"NP\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"107\"\n }\n },\n {\n \"name\": \"UnauthorizedMint\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"108\"\n }\n },\n {\n \"name\": \"NFTNotPartOfCollection\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"109\"\n }\n },\n {\n \"name\": \"NFTByIndexNotSupported\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"110\"\n }\n },\n {\n \"name\": \"UnauthorizedRewardSender\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"111\"\n }\n },\n {\n \"name\": \"InvalidRewardParams\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"112\"\n }\n },\n {\n \"name\": \"DexAccountNotFound\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"113\"\n }\n },\n {\n \"name\": \"InvalidRewardIndex\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"114\"\n }\n },\n {\n \"name\": \"RewardPeriodEnded\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"115\"\n }\n },\n {\n \"name\": \"ZeroRewardAmount\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"116\"\n }\n }\n ]\n }\n ],\n \"stdInterfaceId\": \"0002\"\n}","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport {\n Address,\n Contract,\n ContractState,\n TestContractResult,\n HexString,\n ContractFactory,\n EventSubscribeOptions,\n EventSubscription,\n CallContractParams,\n CallContractResult,\n TestContractParams,\n ContractEvent,\n subscribeContractEvent,\n subscribeContractEvents,\n testMethod,\n callMethod,\n multicallMethods,\n fetchContractState,\n Asset,\n ContractInstance,\n getContractEventsCurrentCount,\n TestContractParamsWithoutMaps,\n TestContractResultWithoutMaps,\n SignExecuteContractMethodParams,\n SignExecuteScriptTxResult,\n signExecuteMethod,\n addStdIdToFields,\n encodeContractFields,\n Narrow,\n} from \"@alephium/web3\";\nimport { default as PoolConfigContractJson } from \"../PoolConfig.ral.json\";\nimport { getContractByCodeHash, registerContract } from \"./contracts\";\nimport * as types from \"./types\";\n\n// Custom types for the contract\nexport namespace PoolConfigTypes {\n export type Fields = {\n config: types.Config;\n };\n\n export type State = ContractState<Fields>;\n\n export interface CallMethodTable {\n get: {\n params: Omit<CallContractParams<{}>, \"args\">;\n result: CallContractResult<types.Config>;\n };\n }\n export type CallMethodParams<T extends keyof CallMethodTable> =\n CallMethodTable[T][\"params\"];\n export type CallMethodResult<T extends keyof CallMethodTable> =\n CallMethodTable[T][\"result\"];\n export type MultiCallParams = Partial<{\n [Name in keyof CallMethodTable]: CallMethodTable[Name][\"params\"];\n }>;\n export type MultiCallResults<T extends MultiCallParams> = {\n [MaybeName in keyof T]: MaybeName extends keyof CallMethodTable\n ? CallMethodTable[MaybeName][\"result\"]\n : undefined;\n };\n export type MulticallReturnType<Callss extends MultiCallParams[]> = {\n [index in keyof Callss]: MultiCallResults<Callss[index]>;\n };\n\n export interface SignExecuteMethodTable {\n get: {\n params: Omit<SignExecuteContractMethodParams<{}>, \"args\">;\n result: SignExecuteScriptTxResult;\n };\n }\n export type SignExecuteMethodParams<T extends keyof SignExecuteMethodTable> =\n SignExecuteMethodTable[T][\"params\"];\n export type SignExecuteMethodResult<T extends keyof SignExecuteMethodTable> =\n SignExecuteMethodTable[T][\"result\"];\n}\n\nclass Factory extends ContractFactory<\n PoolConfigInstance,\n PoolConfigTypes.Fields\n> {\n encodeFields(fields: PoolConfigTypes.Fields) {\n return encodeContractFields(\n addStdIdToFields(this.contract, fields),\n this.contract.fieldsSig,\n types.AllStructs\n );\n }\n\n at(address: string): PoolConfigInstance {\n return new PoolConfigInstance(address);\n }\n\n tests = {\n get: async (\n params: Omit<\n TestContractParamsWithoutMaps<PoolConfigTypes.Fields, never>,\n \"args\"\n >\n ): Promise<TestContractResultWithoutMaps<types.Config>> => {\n return testMethod(this, \"get\", params, getContractByCodeHash);\n },\n };\n\n stateForTest(\n initFields: PoolConfigTypes.Fields,\n asset?: Asset,\n address?: string\n ) {\n return this.stateForTest_(initFields, asset, address, undefined);\n }\n}\n\n// Use this object to test and deploy the contract\nexport const PoolConfig = new Factory(\n Contract.fromJson(\n PoolConfigContractJson,\n \"\",\n \"aa0838a7a189126cf0627d909b65ba3cfc692813db3d5ccd950763a87d52a0d6\",\n types.AllStructs\n )\n);\nregisterContract(PoolConfig);\n\n// Use this class to interact with the blockchain\nexport class PoolConfigInstance extends ContractInstance {\n constructor(address: Address) {\n super(address);\n }\n\n async fetchState(): Promise<PoolConfigTypes.State> {\n return fetchContractState(PoolConfig, this);\n }\n\n view = {\n get: async (\n params?: PoolConfigTypes.CallMethodParams<\"get\">\n ): Promise<PoolConfigTypes.CallMethodResult<\"get\">> => {\n return callMethod(\n PoolConfig,\n this,\n \"get\",\n params === undefined ? {} : params,\n getContractByCodeHash\n );\n },\n };\n\n transact = {\n get: async (\n params: PoolConfigTypes.SignExecuteMethodParams<\"get\">\n ): Promise<PoolConfigTypes.SignExecuteMethodResult<\"get\">> => {\n return signExecuteMethod(PoolConfig, this, \"get\", params);\n },\n };\n\n async multicall<Calls extends PoolConfigTypes.MultiCallParams>(\n calls: Calls\n ): Promise<PoolConfigTypes.MultiCallResults<Calls>>;\n async multicall<Callss extends PoolConfigTypes.MultiCallParams[]>(\n callss: Narrow<Callss>\n ): Promise<PoolConfigTypes.MulticallReturnType<Callss>>;\n async multicall<\n Callss extends\n | PoolConfigTypes.MultiCallParams\n | PoolConfigTypes.MultiCallParams[]\n >(callss: Callss): Promise<unknown> {\n return await multicallMethods(\n PoolConfig,\n this,\n callss,\n getContractByCodeHash\n );\n }\n}\n","{\n \"version\": \"v4.3.0\",\n \"name\": \"PoolConfig\",\n \"bytecode\": \"030112010000000305d3bda4d814ce00ce01ce0202\",\n \"codeHash\": \"aa0838a7a189126cf0627d909b65ba3cfc692813db3d5ccd950763a87d52a0d6\",\n \"fieldsSig\": {\n \"names\": [\n \"config\"\n ],\n \"types\": [\n \"Config\"\n ],\n \"isMutable\": [\n false\n ]\n },\n \"eventsSig\": [],\n \"functions\": [\n {\n \"name\": \"get\",\n \"paramNames\": [],\n \"paramTypes\": [],\n \"paramIsMutable\": [],\n \"returnTypes\": [\n \"Config\"\n ]\n }\n ],\n \"constants\": [],\n \"enums\": []\n}","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport {\n Address,\n Contract,\n ContractState,\n TestContractResult,\n HexString,\n ContractFactory,\n EventSubscribeOptions,\n EventSubscription,\n CallContractParams,\n CallContractResult,\n TestContractParams,\n ContractEvent,\n subscribeContractEvent,\n subscribeContractEvents,\n testMethod,\n callMethod,\n multicallMethods,\n fetchContractState,\n Asset,\n ContractInstance,\n getContractEventsCurrentCount,\n TestContractParamsWithoutMaps,\n TestContractResultWithoutMaps,\n SignExecuteContractMethodParams,\n SignExecuteScriptTxResult,\n signExecuteMethod,\n addStdIdToFields,\n encodeContractFields,\n Narrow,\n} from \"@alephium/web3\";\nimport { default as PoolFactoryContractJson } from \"../PoolFactory.ral.json\";\nimport { getContractByCodeHash, registerContract } from \"./contracts\";\nimport * as types from \"./types\";\n\n// Custom types for the contract\nexport namespace PoolFactoryTypes {\n export type Fields = {\n owner: Address;\n poolTemplate: HexString;\n positionTemplate: HexString;\n tickTemplate: HexString;\n wordTemplate: HexString;\n poolConfigTemplate: HexString;\n dexAccountTemplate: HexString;\n nextConfigIndex: bigint;\n };\n\n export type State = ContractState<Fields>;\n\n export type ConfigCreatedEvent = ContractEvent<{ index: bigint }>;\n export type PoolCreatedEvent = ContractEvent<{\n id: HexString;\n token0: HexString;\n token1: HexString;\n configIndex: bigint;\n }>;\n export type FeeTierEnabledEvent = ContractEvent<{\n fee: bigint;\n tickSpacing: bigint;\n index: bigint;\n }>;\n\n export interface CallMethodTable {\n configPath: {\n params: CallContractParams<{ configIndex_: bigint }>;\n result: CallContractResult<HexString>;\n };\n poolPath: {\n params: CallContractParams<{\n factory: HexString;\n tokens: HexString;\n configIndex_: bigint;\n }>;\n result: CallContractResult<HexString>;\n };\n poolContractId: {\n params: CallContractParams<{\n factory: HexString;\n tokens: HexString;\n configIndex_: bigint;\n }>;\n result: CallContractResult<HexString>;\n };\n tickSpacingToMaxLiquidityPerTick: {\n params: CallContractParams<{ tickSpacing: bigint }>;\n result: CallContractResult<bigint>;\n };\n createConfig: {\n params: CallContractParams<{ config: types.Config }>;\n result: CallContractResult<bigint>;\n };\n create: {\n params: CallContractParams<{\n token0: HexString;\n token1: HexString;\n configIndex: bigint;\n sqrtPriceX96: bigint;\n rewardToken: HexString;\n }>;\n result: CallContractResult<HexString>;\n };\n collectProtocolFees: {\n params: CallContractParams<{\n recipient: Address;\n configIndex: bigint;\n token0: HexString;\n token1: HexString;\n }>;\n result: CallContractResult<null>;\n };\n setRewardParams: {\n params: CallContractParams<{\n configIndex: bigint;\n token0: HexString;\n token1: HexString;\n payer: Address;\n tokenId: HexString;\n index: bigint;\n openTime: bigint;\n endTime: bigint;\n amount: bigint;\n }>;\n result: CallContractResult<null>;\n };\n upgrate: {\n params: CallContractParams<{\n newBytecode: HexString;\n newEncodedImmFields: HexString;\n newEncodedMutFields: HexString;\n }>;\n result: CallContractResult<null>;\n };\n }\n export type CallMethodParams<T extends keyof CallMethodTable> =\n CallMethodTable[T][\"params\"];\n export type CallMethodResult<T extends keyof CallMethodTable> =\n CallMethodTable[T][\"result\"];\n export type MultiCallParams = Partial<{\n [Name in keyof CallMethodTable]: CallMethodTable[Name][\"params\"];\n }>;\n export type MultiCallResults<T extends MultiCallParams> = {\n [MaybeName in keyof T]: MaybeName extends keyof CallMethodTable\n ? CallMethodTable[MaybeName][\"result\"]\n : undefined;\n };\n export type MulticallReturnType<Callss extends MultiCallParams[]> = {\n [index in keyof Callss]: MultiCallResults<Callss[index]>;\n };\n\n export interface SignExecuteMethodTable {\n configPath: {\n params: SignExecuteContractMethodParams<{ configIndex_: bigint }>;\n result: SignExecuteScriptTxResult;\n };\n poolPath: {\n params: SignExecuteContractMethodParams<{\n factory: HexString;\n tokens: HexString;\n configIndex_: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n poolContractId: {\n params: SignExecuteContractMethodParams<{\n factory: HexString;\n tokens: HexString;\n configIndex_: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n tickSpacingToMaxLiquidityPerTick: {\n params: SignExecuteContractMethodParams<{ tickSpacing: bigint }>;\n result: SignExecuteScriptTxResult;\n };\n createConfig: {\n params: SignExecuteContractMethodParams<{ config: types.Config }>;\n result: SignExecuteScriptTxResult;\n };\n create: {\n params: SignExecuteContractMethodParams<{\n token0: HexString;\n token1: HexString;\n configIndex: bigint;\n sqrtPriceX96: bigint;\n rewardToken: HexString;\n }>;\n result: SignExecuteScriptTxResult;\n };\n collectProtocolFees: {\n params: SignExecuteContractMethodParams<{\n recipient: Address;\n configIndex: bigint;\n token0: HexString;\n token1: HexString;\n }>;\n result: SignExecuteScriptTxResult;\n };\n setRewardParams: {\n params: SignExecuteContractMethodParams<{\n configIndex: bigint;\n token0: HexString;\n token1: HexString;\n payer: Address;\n tokenId: HexString;\n index: bigint;\n openTime: bigint;\n endTime: bigint;\n amount: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n upgrate: {\n params: SignExecuteContractMethodParams<{\n newBytecode: HexString;\n newEncodedImmFields: HexString;\n newEncodedMutFields: HexString;\n }>;\n result: SignExecuteScriptTxResult;\n };\n }\n export type SignExecuteMethodParams<T extends keyof SignExecuteMethodTable> =\n SignExecuteMethodTable[T][\"params\"];\n export type SignExecuteMethodResult<T extends keyof SignExecuteMethodTable> =\n SignExecuteMethodTable[T][\"result\"];\n}\n\nclass Factory extends ContractFactory<\n PoolFactoryInstance,\n PoolFactoryTypes.Fields\n> {\n encodeFields(fields: PoolFactoryTypes.Fields) {\n return encodeContractFields(\n addStdIdToFields(this.contract, fields),\n this.contract.fieldsSig,\n types.AllStructs\n );\n }\n\n eventIndex = { ConfigCreated: 0, PoolCreated: 1, FeeTierEnabled: 2 };\n consts = {\n FactoryError: {\n InvalidTokenOrder: BigInt(\"701\"),\n UnauthorizedRewardSender: BigInt(\"702\"),\n UnauthorizedFeeCollector: BigInt(\"703\"),\n },\n };\n\n at(address: string): PoolFactoryInstance {\n return new PoolFactoryInstance(address);\n }\n\n tests = {\n configPath: async (\n params: TestContractParamsWithoutMaps<\n PoolFactoryTypes.Fields,\n { configIndex_: bigint }\n >\n ): Promise<TestContractResultWithoutMaps<HexString>> => {\n return testMethod(this, \"configPath\", params, getContractByCodeHash);\n },\n poolPath: async (\n params: TestContractParamsWithoutMaps<\n PoolFactoryTypes.Fields,\n { factory: HexString; tokens: HexString; configIndex_: bigint }\n >\n ): Promise<TestContractResultWithoutMaps<HexString>> => {\n return testMethod(this, \"poolPath\", params, getContractByCodeHash);\n },\n poolContractId: async (\n params: TestContractParamsWithoutMaps<\n PoolFactoryTypes.Fields,\n { factory: HexString; tokens: HexString; configIndex_: bigint }\n >\n ): Promise<TestContractResultWithoutMaps<HexString>> => {\n return testMethod(this, \"poolContractId\", params, getContractByCodeHash);\n },\n tickSpacingToMaxLiquidityPerTick: async (\n params: TestContractParamsWithoutMaps<\n PoolFactoryTypes.Fields,\n { tickSpacing: bigint }\n >\n ): Promise<TestContractResultWithoutMaps<bigint>> => {\n return testMethod(\n this,\n \"tickSpacingToMaxLiquidityPerTick\",\n params,\n getContractByCodeHash\n );\n },\n createConfig: async (\n params: TestContractParamsWithoutMaps<\n PoolFactoryTypes.Fields,\n { config: types.Config }\n >\n ): Promise<TestContractResultWithoutMaps<bigint>> => {\n return testMethod(this, \"createConfig\", params, getContractByCodeHash);\n },\n create: async (\n params: TestContractParamsWithoutMaps<\n PoolFactoryTypes.Fields,\n {\n token0: HexString;\n token1: HexString;\n configIndex: bigint;\n sqrtPriceX96: bigint;\n rewardToken: HexString;\n }\n >\n ): Promise<TestContractResultWithoutMaps<HexString>> => {\n return testMethod(this, \"create\", params, getContractByCodeHash);\n },\n collectProtocolFees: async (\n params: TestContractParamsWithoutMaps<\n PoolFactoryTypes.Fields,\n {\n recipient: Address;\n configIndex: bigint;\n token0: HexString;\n token1: HexString;\n }\n >\n ): Promise<TestContractResultWithoutMaps<null>> => {\n return testMethod(\n this,\n \"collectProtocolFees\",\n params,\n getContractByCodeHash\n );\n },\n setRewardParams: async (\n params: TestContractParamsWithoutMaps<\n PoolFactoryTypes.Fields,\n {\n configIndex: bigint;\n token0: HexString;\n token1: HexString;\n payer: Address;\n tokenId: HexString;\n index: bigint;\n openTime: bigint;\n endTime: bigint;\n amount: bigint;\n }\n >\n ): Promise<TestContractResultWithoutMaps<null>> => {\n return testMethod(this, \"setRewardParams\", params, getContractByCodeHash);\n },\n upgrate: async (\n params: TestContractParamsWithoutMaps<\n PoolFactoryTypes.Fields,\n {\n newBytecode: HexString;\n newEncodedImmFields: HexString;\n newEncodedMutFields: HexString;\n }\n >\n ): Promise<TestContractResultWithoutMaps<null>> => {\n return testMethod(this, \"upgrate\", params, getContractByCodeHash);\n },\n };\n\n stateForTest(\n initFields: PoolFactoryTypes.Fields,\n asset?: Asset,\n address?: string\n ) {\n return this.stateForTest_(initFields, asset, address, undefined);\n }\n}\n\n// Use this object to test and deploy the contract\nexport const PoolFactory = new Factory(\n Contract.fromJson(\n PoolFactoryContractJson,\n \"\",\n \"4f2990418f84360134e2fe3c2732c0ad191b52d772a8406ae9afe6e87c427bf3\",\n types.AllStructs\n )\n);\nregisterContract(PoolFactory);\n\n// Use this class to interact with the blockchain\nexport class PoolFactoryInstance extends ContractInstance {\n constructor(address: Address) {\n super(address);\n }\n\n async fetchState(): Promise<PoolFactoryTypes.State> {\n return fetchContractState(PoolFactory, this);\n }\n\n async getContractEventsCurrentCount(): Promise<number> {\n return getContractEventsCurrentCount(this.address);\n }\n\n subscribeConfigCreatedEvent(\n options: EventSubscribeOptions<PoolFactoryTypes.ConfigCreatedEvent>,\n fromCount?: number\n ): EventSubscription {\n return subscribeContractEvent(\n PoolFactory.contract,\n this,\n options,\n \"ConfigCreated\",\n fromCount\n );\n }\n\n subscribePoolCreatedEvent(\n options: EventSubscribeOptions<PoolFactoryTypes.PoolCreatedEvent>,\n fromCount?: number\n ): EventSubscription {\n return subscribeContractEvent(\n PoolFactory.contract,\n this,\n options,\n \"PoolCreated\",\n fromCount\n );\n }\n\n subscribeFeeTierEnabledEvent(\n options: EventSubscribeOptions<PoolFactoryTypes.FeeTierEnabledEvent>,\n fromCount?: number\n ): EventSubscription {\n return subscribeContractEvent(\n PoolFactory.contract,\n this,\n options,\n \"FeeTierEnabled\",\n fromCount\n );\n }\n\n subscribeAllEvents(\n options: EventSubscribeOptions<\n | PoolFactoryTypes.ConfigCreatedEvent\n | PoolFactoryTypes.PoolCreatedEvent\n | PoolFactoryTypes.FeeTierEnabledEvent\n >,\n fromCount?: number\n ): EventSubscription {\n return subscribeContractEvents(\n PoolFactory.contract,\n this,\n options,\n fromCount\n );\n }\n\n view = {\n configPath: async (\n params: PoolFactoryTypes.CallMethodParams<\"configPath\">\n ): Promise<PoolFactoryTypes.CallMethodResult<\"configPath\">> => {\n return callMethod(\n PoolFactory,\n this,\n \"configPath\",\n params,\n getContractByCodeHash\n );\n },\n poolPath: async (\n params: PoolFactoryTypes.CallMethodParams<\"poolPath\">\n ): Promise<PoolFactoryTypes.CallMethodResult<\"poolPath\">> => {\n return callMethod(\n PoolFactory,\n this,\n \"poolPath\",\n params,\n getContractByCodeHash\n );\n },\n poolContractId: async (\n params: PoolFactoryTypes.CallMethodParams<\"poolContractId\">\n ): Promise<PoolFactoryTypes.CallMethodResult<\"poolContractId\">> => {\n return callMethod(\n PoolFactory,\n this,\n \"poolContractId\",\n params,\n getContractByCodeHash\n );\n },\n tickSpacingToMaxLiquidityPerTick: async (\n params: PoolFactoryTypes.CallMethodParams<\"tickSpacingToMaxLiquidityPerTick\">\n ): Promise<\n PoolFactoryTypes.CallMethodResult<\"tickSpacingToMaxLiquidityPerTick\">\n > => {\n return callMethod(\n PoolFactory,\n this,\n \"tickSpacingToMaxLiquidityPerTick\",\n params,\n getContractByCodeHash\n );\n },\n createConfig: async (\n params: PoolFactoryTypes.CallMethodParams<\"createConfig\">\n ): Promise<PoolFactoryTypes.CallMethodResult<\"createConfig\">> => {\n return callMethod(\n PoolFactory,\n this,\n \"createConfig\",\n params,\n getContractByCodeHash\n );\n },\n create: async (\n params: PoolFactoryTypes.CallMethodParams<\"create\">\n ): Promise<PoolFactoryTypes.CallMethodResult<\"create\">> => {\n return callMethod(\n PoolFactory,\n this,\n \"create\",\n params,\n getContractByCodeHash\n );\n },\n collectProtocolFees: async (\n params: PoolFactoryTypes.CallMethodParams<\"collectProtocolFees\">\n ): Promise<PoolFactoryTypes.CallMethodResult<\"collectProtocolFees\">> => {\n return callMethod(\n PoolFactory,\n this,\n \"collectProtocolFees\",\n params,\n getContractByCodeHash\n );\n },\n setRewardParams: async (\n params: PoolFactoryTypes.CallMethodParams<\"setRewardParams\">\n ): Promise<PoolFactoryTypes.CallMethodResult<\"setRewardParams\">> => {\n return callMethod(\n PoolFactory,\n this,\n \"setRewardParams\",\n params,\n getContractByCodeHash\n );\n },\n upgrate: async (\n params: PoolFactoryTypes.CallMethodParams<\"upgrate\">\n ): Promise<PoolFactoryTypes.CallMethodResult<\"upgrate\">> => {\n return callMethod(\n PoolFactory,\n this,\n \"upgrate\",\n params,\n getContractByCodeHash\n );\n },\n };\n\n transact = {\n configPath: async (\n params: PoolFactoryTypes.SignExecuteMethodParams<\"configPath\">\n ): Promise<PoolFactoryTypes.SignExecuteMethodResult<\"configPath\">> => {\n return signExecuteMethod(PoolFactory, this, \"configPath\", params);\n },\n poolPath: async (\n params: PoolFactoryTypes.SignExecuteMethodParams<\"poolPath\">\n ): Promise<PoolFactoryTypes.SignExecuteMethodResult<\"poolPath\">> => {\n return signExecuteMethod(PoolFactory, this, \"poolPath\", params);\n },\n poolContractId: async (\n params: PoolFactoryTypes.SignExecuteMethodParams<\"poolContractId\">\n ): Promise<PoolFactoryTypes.SignExecuteMethodResult<\"poolContractId\">> => {\n return signExecuteMethod(PoolFactory, this, \"poolContractId\", params);\n },\n tickSpacingToMaxLiquidityPerTick: async (\n params: PoolFactoryTypes.SignExecuteMethodParams<\"tickSpacingToMaxLiquidityPerTick\">\n ): Promise<\n PoolFactoryTypes.SignExecuteMethodResult<\"tickSpacingToMaxLiquidityPerTick\">\n > => {\n return signExecuteMethod(\n PoolFactory,\n this,\n \"tickSpacingToMaxLiquidityPerTick\",\n params\n );\n },\n createConfig: async (\n params: PoolFactoryTypes.SignExecuteMethodParams<\"createConfig\">\n ): Promise<PoolFactoryTypes.SignExecuteMethodResult<\"createConfig\">> => {\n return signExecuteMethod(PoolFactory, this, \"createConfig\", params);\n },\n create: async (\n params: PoolFactoryTypes.SignExecuteMethodParams<\"create\">\n ): Promise<PoolFactoryTypes.SignExecuteMethodResult<\"create\">> => {\n return signExecuteMethod(PoolFactory, this, \"create\", params);\n },\n collectProtocolFees: async (\n params: PoolFactoryTypes.SignExecuteMethodParams<\"collectProtocolFees\">\n ): Promise<\n PoolFactoryTypes.SignExecuteMethodResult<\"collectProtocolFees\">\n > => {\n return signExecuteMethod(\n PoolFactory,\n this,\n \"collectProtocolFees\",\n params\n );\n },\n setRewardParams: async (\n params: PoolFactoryTypes.SignExecuteMethodParams<\"setRewardParams\">\n ): Promise<PoolFactoryTypes.SignExecuteMethodResult<\"setRewardParams\">> => {\n return signExecuteMethod(PoolFactory, this, \"setRewardParams\", params);\n },\n upgrate: async (\n params: PoolFactoryTypes.SignExecuteMethodParams<\"upgrate\">\n ): Promise<PoolFactoryTypes.SignExecuteMethodResult<\"upgrate\">> => {\n return signExecuteMethod(PoolFactory, this, \"upgrate\", params);\n },\n };\n\n async multicall<Calls extends PoolFactoryTypes.MultiCallParams>(\n calls: Calls\n ): Promise<PoolFactoryTypes.MultiCallResults<Calls>>;\n async multicall<Callss extends PoolFactoryTypes.MultiCallParams[]>(\n callss: Narrow<Callss>\n ): Promise<PoolFactoryTypes.MulticallReturnType<Callss>>;\n async multicall<\n Callss extends\n | PoolFactoryTypes.MultiCallParams\n | PoolFactoryTypes.MultiCallParams[]\n >(callss: Callss): Promise<unknown> {\n return await multicallMethods(\n PoolFactory,\n this,\n callss,\n getContractByCodeHash\n );\n }\n}\n","{\n \"version\": \"v4.3.0\",\n \"name\": \"PoolFactory\",\n \"bytecode\": \"08090a1f403540a040ed41ce41f5422b424500000101010316004002000003040109160016020000cc17031601160344020000030401091600160116020001170316001603cc020000010401403a12bff276187a7a16003a7a05294b033a224a023a90160021170112800d89e87a7a16003a7a05294b033a904a023a22160021170216021601207a7a16003a7a05294b033a904a023a223d0d2a170313ccffffffffffffffffffffffffffffffff16032d0201000307014028d31c03e050b4ce00451341937b16001601160213036413006417041703a0001705a000000017061606ce0516031604c118a0000d2aa1000516055e07160116001605601605020100054020014079d3530365c2160071160171311342bd7b16020000cb17050c0f1605010017081707170616060003170916030d0dce010105170a1603160a0c170d170c170b0c0c0c0c0c0c0c0c0c171a171917181717171617151714171317120c0c0c171d171c171b0c0c171f171eb1ce02ce06ce03ce0416021600160116041607160616091406414c50480002130d640c160b160c160d0c16121613161416151616161716181619161a161b161c161d161e161f131364170f170eb116001601441602000117101610ce01160e160fc1171106161116001601160261161102010004050012d32d2d48cdb4ce00451342bf7bb1160216034416010002170416000d0c160401330103090a001ad3132dd93db4ce00451342be7bb11601160244160000021709160316041608a316031605160616071608110c1609013201000303000ad3333a48b8b4ce00451341937b160016011602bb\",\n \"codeHash\": \"4f2990418f84360134e2fe3c2732c0ad191b52d772a8406ae9afe6e87c427bf3\",\n \"fieldsSig\": {\n \"names\": [\n \"owner\",\n \"poolTemplate\",\n \"positionTemplate\",\n \"tickTemplate\",\n \"wordTemplate\",\n \"poolConfigTemplate\",\n \"dexAccountTemplate\",\n \"nextConfigIndex\"\n ],\n \"types\": [\n \"Address\",\n \"ByteVec\",\n \"ByteVec\",\n \"ByteVec\",\n \"ByteVec\",\n \"ByteVec\",\n \"ByteVec\",\n \"U256\"\n ],\n \"isMutable\": [\n false,\n false,\n false,\n false,\n false,\n false,\n false,\n true\n ]\n },\n \"eventsSig\": [\n {\n \"name\": \"ConfigCreated\",\n \"fieldNames\": [\n \"index\"\n ],\n \"fieldTypes\": [\n \"U256\"\n ]\n },\n {\n \"name\": \"PoolCreated\",\n \"fieldNames\": [\n \"id\",\n \"token0\",\n \"token1\",\n \"configIndex\"\n ],\n \"fieldTypes\": [\n \"ByteVec\",\n \"ByteVec\",\n \"ByteVec\",\n \"U256\"\n ]\n },\n {\n \"name\": \"FeeTierEnabled\",\n \"fieldNames\": [\n \"fee\",\n \"tickSpacing\",\n \"index\"\n ],\n \"fieldTypes\": [\n \"U256\",\n \"I256\",\n \"U256\"\n ]\n }\n ],\n \"functions\": [\n {\n \"name\": \"configPath\",\n \"paramNames\": [\n \"configIndex_\"\n ],\n \"paramTypes\": [\n \"U256\"\n ],\n \"paramIsMutable\": [\n false\n ],\n \"returnTypes\": [\n \"ByteVec\"\n ]\n },\n {\n \"name\": \"poolPath\",\n \"paramNames\": [\n \"factory\",\n \"tokens\",\n \"configIndex_\"\n ],\n \"paramTypes\": [\n \"PoolFactory\",\n \"ByteVec\",\n \"U256\"\n ],\n \"paramIsMutable\": [\n false,\n false,\n false\n ],\n \"returnTypes\": [\n \"ByteVec\"\n ]\n },\n {\n \"name\": \"poolContractId\",\n \"paramNames\": [\n \"factory\",\n \"tokens\",\n \"configIndex_\"\n ],\n \"paramTypes\": [\n \"PoolFactory\",\n \"ByteVec\",\n \"U256\"\n ],\n \"paramIsMutable\": [\n false,\n false,\n false\n ],\n \"returnTypes\": [\n \"ByteVec\"\n ]\n },\n {\n \"name\": \"tickSpacingToMaxLiquidityPerTick\",\n \"paramNames\": [\n \"tickSpacing\"\n ],\n \"paramTypes\": [\n \"I256\"\n ],\n \"paramIsMutable\": [\n false\n ],\n \"returnTypes\": [\n \"U256\"\n ]\n },\n {\n \"name\": \"createConfig\",\n \"paramNames\": [\n \"config\"\n ],\n \"paramTypes\": [\n \"Config\"\n ],\n \"paramIsMutable\": [\n false\n ],\n \"returnTypes\": [\n \"U256\"\n ]\n },\n {\n \"name\": \"create\",\n \"paramNames\": [\n \"token0\",\n \"token1\",\n \"configIndex\",\n \"sqrtPriceX96\",\n \"rewardToken\"\n ],\n \"paramTypes\": [\n \"ByteVec\",\n \"ByteVec\",\n \"U256\",\n \"U256\",\n \"ByteVec\"\n ],\n \"paramIsMutable\": [\n false,\n false,\n false,\n false,\n false\n ],\n \"returnTypes\": [\n \"Pool\"\n ]\n },\n {\n \"name\": \"collectProtocolFees\",\n \"paramNames\": [\n \"recipient\",\n \"configIndex\",\n \"token0\",\n \"token1\"\n ],\n \"paramTypes\": [\n \"Address\",\n \"U256\",\n \"ByteVec\",\n \"ByteVec\"\n ],\n \"paramIsMutable\": [\n false,\n false,\n false,\n false\n ],\n \"returnTypes\": []\n },\n {\n \"name\": \"setRewardParams\",\n \"paramNames\": [\n \"configIndex\",\n \"token0\",\n \"token1\",\n \"payer\",\n \"tokenId\",\n \"index\",\n \"openTime\",\n \"endTime\",\n \"amount\"\n ],\n \"paramTypes\": [\n \"U256\",\n \"ByteVec\",\n \"ByteVec\",\n \"Address\",\n \"ByteVec\",\n \"U256\",\n \"U256\",\n \"U256\",\n \"U256\"\n ],\n \"paramIsMutable\": [\n false,\n false,\n false,\n false,\n false,\n false,\n false,\n false,\n false\n ],\n \"returnTypes\": []\n },\n {\n \"name\": \"upgrate\",\n \"paramNames\": [\n \"newBytecode\",\n \"newEncodedImmFields\",\n \"newEncodedMutFields\"\n ],\n \"paramTypes\": [\n \"ByteVec\",\n \"ByteVec\",\n \"ByteVec\"\n ],\n \"paramIsMutable\": [\n false,\n false,\n false\n ],\n \"returnTypes\": []\n }\n ],\n \"constants\": [],\n \"enums\": [\n {\n \"name\": \"FactoryError\",\n \"fields\": [\n {\n \"name\": \"InvalidTokenOrder\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"701\"\n }\n },\n {\n \"name\": \"UnauthorizedRewardSender\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"702\"\n }\n },\n {\n \"name\": \"UnauthorizedFeeCollector\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"703\"\n }\n }\n ]\n }\n ]\n}","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport {\n Address,\n Contract,\n ContractState,\n TestContractResult,\n HexString,\n ContractFactory,\n EventSubscribeOptions,\n EventSubscription,\n CallContractParams,\n CallContractResult,\n TestContractParams,\n ContractEvent,\n subscribeContractEvent,\n subscribeContractEvents,\n testMethod,\n callMethod,\n multicallMethods,\n fetchContractState,\n Asset,\n ContractInstance,\n getContractEventsCurrentCount,\n TestContractParamsWithoutMaps,\n TestContractResultWithoutMaps,\n SignExecuteContractMethodParams,\n SignExecuteScriptTxResult,\n signExecuteMethod,\n addStdIdToFields,\n encodeContractFields,\n Narrow,\n} from \"@alephium/web3\";\nimport { default as PoolUserContractJson } from \"../PoolUser.ral.json\";\nimport { getContractByCodeHash, registerContract } from \"./contracts\";\nimport * as types from \"./types\";\n\n// Custom types for the contract\nexport namespace PoolUserTypes {\n export type Fields = {\n token0: HexString;\n token1: HexString;\n token2: HexString;\n pool0: HexString;\n pool1: HexString;\n pool2: HexString;\n pool3: HexString;\n factory: HexString;\n };\n\n export type State = ContractState<Fields>;\n\n export interface CallMethodTable {\n deploy: {\n params: CallContractParams<{\n counter: bigint;\n payer: Address;\n pool_: HexString;\n position_: HexString;\n tick_: HexString;\n word_: HexString;\n factory_: HexString;\n config_: HexString;\n dexAccount_: HexString;\n }>;\n result: CallContractResult<\n [\n HexString,\n HexString,\n HexString,\n HexString,\n HexString,\n HexString,\n HexString,\n HexString\n ]\n >;\n };\n }\n export type CallMethodParams<T extends keyof CallMethodTable> =\n CallMethodTable[T][\"params\"];\n export type CallMethodResult<T extends keyof CallMethodTable> =\n CallMethodTable[T][\"result\"];\n export type MultiCallParams = Partial<{\n [Name in keyof CallMethodTable]: CallMethodTable[Name][\"params\"];\n }>;\n export type MultiCallResults<T extends MultiCallParams> = {\n [MaybeName in keyof T]: MaybeName extends keyof CallMethodTable\n ? CallMethodTable[MaybeName][\"result\"]\n : undefined;\n };\n export type MulticallReturnType<Callss extends MultiCallParams[]> = {\n [index in keyof Callss]: MultiCallResults<Callss[index]>;\n };\n\n export interface SignExecuteMethodTable {\n deploy: {\n params: SignExecuteContractMethodParams<{\n counter: bigint;\n payer: Address;\n pool_: HexString;\n position_: HexString;\n tick_: HexString;\n word_: HexString;\n factory_: HexString;\n config_: HexString;\n dexAccount_: HexString;\n }>;\n result: SignExecuteScriptTxResult;\n };\n }\n export type SignExecuteMethodParams<T extends keyof SignExecuteMethodTable> =\n SignExecuteMethodTable[T][\"params\"];\n export type SignExecuteMethodResult<T extends keyof SignExecuteMethodTable> =\n SignExecuteMethodTable[T][\"result\"];\n}\n\nclass Factory extends ContractFactory<PoolUserInstance, PoolUserTypes.Fields> {\n encodeFields(fields: PoolUserTypes.Fields) {\n return encodeContractFields(\n addStdIdToFields(this.contract, fields),\n this.contract.fieldsSig,\n types.AllStructs\n );\n }\n\n at(address: string): PoolUserInstance {\n return new PoolUserInstance(address);\n }\n\n tests = {\n deploy: async (\n params: TestContractParamsWithoutMaps<\n PoolUserTypes.Fields,\n {\n counter: bigint;\n payer: Address;\n pool_: HexString;\n position_: HexString;\n tick_: HexString;\n word_: HexString;\n factory_: HexString;\n config_: HexString;\n dexAccount_: HexString;\n }\n >\n ): Promise<\n TestContractResultWithoutMaps<\n [\n HexString,\n HexString,\n HexString,\n HexString,\n HexString,\n HexString,\n HexString,\n HexString\n ]\n >\n > => {\n return testMethod(this, \"deploy\", params, getContractByCodeHash);\n },\n };\n\n stateForTest(\n initFields: PoolUserTypes.Fields,\n asset?: Asset,\n address?: string\n ) {\n return this.stateForTest_(initFields, asset, address, undefined);\n }\n}\n\n// Use this object to test and deploy the contract\nexport const PoolUser = new Factory(\n Contract.fromJson(\n PoolUserContractJson,\n \"\",\n \"9e1114eb366a5aaf1730e3b16068a672c09da46c4e5111267129c5a0bceeaa97\",\n types.AllStructs\n )\n);\nregisterContract(PoolUser);\n\n// Use this class to interact with the blockchain\nexport class PoolUserInstance extends ContractInstance {\n constructor(address: Address) {\n super(address);\n }\n\n async fetchState(): Promise<PoolUserTypes.State> {\n return fetchContractState(PoolUser, this);\n }\n\n view = {\n deploy: async (\n params: PoolUserTypes.CallMethodParams<\"deploy\">\n ): Promise<PoolUserTypes.CallMethodResult<\"deploy\">> => {\n return callMethod(\n PoolUser,\n this,\n \"deploy\",\n params,\n getContractByCodeHash\n );\n },\n };\n\n transact = {\n deploy: async (\n params: PoolUserTypes.SignExecuteMethodParams<\"deploy\">\n ): Promise<PoolUserTypes.SignExecuteMethodResult<\"deploy\">> => {\n return signExecuteMethod(PoolUser, this, \"deploy\", params);\n },\n };\n\n async multicall<Calls extends PoolUserTypes.MultiCallParams>(\n calls: Calls\n ): Promise<PoolUserTypes.MultiCallResults<Calls>>;\n async multicall<Callss extends PoolUserTypes.MultiCallParams[]>(\n callss: Narrow<Callss>\n ): Promise<PoolUserTypes.MulticallReturnType<Callss>>;\n async multicall<\n Callss extends\n | PoolUserTypes.MultiCallParams\n | PoolUserTypes.MultiCallParams[]\n >(callss: Callss): Promise<unknown> {\n return await multicallMethods(\n PoolUser,\n this,\n callss,\n getContractByCodeHash\n );\n }\n}\n","{\n \"version\": \"v4.3.0\",\n \"name\": \"PoolUser\",\n \"bytecode\": \"08014198010009140840b7d30719041916000c304c09a000a001a002a003a004a005a006a00702b21301640c130164170a170914010016051609160a13c41bc16d674ec800001601c9a10014010116051609160a13c41bc16d674ec800001601c9a10114010216051609160a13c41bc16d674ec800001601c9a102b21602160316041605160716081307640c130164170c170b1401031606160b160cc1a107060c0c0f0da0070104170d061341f40c0f0da0070104170e06134bb80c0f0da0070104170f061367100c0f0da00701041710a00071a00171334c06a0001711a001a1001611a101a00171a00271334c06a0011712a002a1011612a102a00071a00171334c06a0001713a001a1001613a101cda000160d13c9010000000000000000000000001400110da0070105a103a000a001160e13c9010000000000000000000000001400110da0070105a104a000a002160f13c9010000000000000000000000001400110da0070105a105a001a002161013c9010000000000000000000000001400110da0070105a106a000a001a002a003a004a005a006a00702\",\n \"codeHash\": \"9e1114eb366a5aaf1730e3b16068a672c09da46c4e5111267129c5a0bceeaa97\",\n \"fieldsSig\": {\n \"names\": [\n \"token0\",\n \"token1\",\n \"token2\",\n \"pool0\",\n \"pool1\",\n \"pool2\",\n \"pool3\",\n \"factory\"\n ],\n \"types\": [\n \"ByteVec\",\n \"ByteVec\",\n \"ByteVec\",\n \"Pool\",\n \"Pool\",\n \"Pool\",\n \"Pool\",\n \"PoolFactory\"\n ],\n \"isMutable\": [\n true,\n true,\n true,\n true,\n true,\n true,\n true,\n true\n ]\n },\n \"eventsSig\": [],\n \"functions\": [\n {\n \"name\": \"deploy\",\n \"paramNames\": [\n \"counter\",\n \"payer\",\n \"pool_\",\n \"position_\",\n \"tick_\",\n \"word_\",\n \"factory_\",\n \"config_\",\n \"dexAccount_\"\n ],\n \"paramTypes\": [\n \"U256\",\n \"Address\",\n \"ByteVec\",\n \"ByteVec\",\n \"ByteVec\",\n \"ByteVec\",\n \"ByteVec\",\n \"ByteVec\",\n \"ByteVec\"\n ],\n \"paramIsMutable\": [\n false,\n false,\n false,\n false,\n false,\n false,\n false,\n false,\n false\n ],\n \"returnTypes\": [\n \"ByteVec\",\n \"ByteVec\",\n \"ByteVec\",\n \"Pool\",\n \"Pool\",\n \"Pool\",\n \"Pool\",\n \"PoolFactory\"\n ]\n }\n ],\n \"constants\": [],\n \"enums\": []\n}","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport {\n Address,\n Contract,\n ContractState,\n TestContractResult,\n HexString,\n ContractFactory,\n EventSubscribeOptions,\n EventSubscription,\n CallContractParams,\n CallContractResult,\n TestContractParams,\n ContractEvent,\n subscribeContractEvent,\n subscribeContractEvents,\n testMethod,\n callMethod,\n multicallMethods,\n fetchContractState,\n Asset,\n ContractInstance,\n getContractEventsCurrentCount,\n TestContractParamsWithoutMaps,\n TestContractResultWithoutMaps,\n SignExecuteContractMethodParams,\n SignExecuteScriptTxResult,\n signExecuteMethod,\n addStdIdToFields,\n encodeContractFields,\n Narrow,\n} from \"@alephium/web3\";\nimport { default as PositionContractJson } from \"../Position.ral.json\";\nimport { getContractByCodeHash, registerContract } from \"./contracts\";\nimport * as types from \"./types\";\n\n// Custom types for the contract\nexport namespace PositionTypes {\n export type Fields = {\n parent: Address;\n nftIndex: bigint;\n liquidity: bigint;\n growthsInside: [bigint, bigint, bigint];\n tokensOwed: [bigint, bigint, bigint];\n };\n\n export type State = ContractState<Fields>;\n\n export interface CallMethodTable {\n getTokenUri: {\n params: Omit<CallContractParams<{}>, \"args\">;\n result: CallContractResult<HexString>;\n };\n getCollectionIndex: {\n params: Omit<CallContractParams<{}>, \"args\">;\n result: CallContractResult<[HexString, bigint]>;\n };\n mulDiv: {\n params: CallContractParams<{ a: bigint; b: bigint; denominator: bigint }>;\n result: CallContractResult<bigint>;\n };\n mulDivRoundingUp: {\n params: CallContractParams<{ a: bigint; b: bigint; denominator: bigint }>;\n result: CallContractResult<bigint>;\n };\n update: {\n params: CallContractParams<{\n liquidityDelta: bigint;\n growths: [bigint, bigint, bigint];\n }>;\n result: CallContractResult<[bigint, bigint, bigint]>;\n };\n deposit: {\n params: CallContractParams<{ amount0: bigint; amount1: bigint }>;\n result: CallContractResult<null>;\n };\n collect: {\n params: CallContractParams<{ maxAmounts: [bigint, bigint, bigint] }>;\n result: CallContractResult<[bigint, bigint, bigint]>;\n };\n getState: {\n params: Omit<CallContractParams<{}>, \"args\">;\n result: CallContractResult<[bigint, [bigint, bigint, bigint]]>;\n };\n }\n export type CallMethodParams<T extends keyof CallMethodTable> =\n CallMethodTable[T][\"params\"];\n export type CallMethodResult<T extends keyof CallMethodTable> =\n CallMethodTable[T][\"result\"];\n export type MultiCallParams = Partial<{\n [Name in keyof CallMethodTable]: CallMethodTable[Name][\"params\"];\n }>;\n export type MultiCallResults<T extends MultiCallParams> = {\n [MaybeName in keyof T]: MaybeName extends keyof CallMethodTable\n ? CallMethodTable[MaybeName][\"result\"]\n : undefined;\n };\n export type MulticallReturnType<Callss extends MultiCallParams[]> = {\n [index in keyof Callss]: MultiCallResults<Callss[index]>;\n };\n\n export interface SignExecuteMethodTable {\n getTokenUri: {\n params: Omit<SignExecuteContractMethodParams<{}>, \"args\">;\n result: SignExecuteScriptTxResult;\n };\n getCollectionIndex: {\n params: Omit<SignExecuteContractMethodParams<{}>, \"args\">;\n result: SignExecuteScriptTxResult;\n };\n mulDiv: {\n params: SignExecuteContractMethodParams<{\n a: bigint;\n b: bigint;\n denominator: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n mulDivRoundingUp: {\n params: SignExecuteContractMethodParams<{\n a: bigint;\n b: bigint;\n denominator: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n update: {\n params: SignExecuteContractMethodParams<{\n liquidityDelta: bigint;\n growths: [bigint, bigint, bigint];\n }>;\n result: SignExecuteScriptTxResult;\n };\n deposit: {\n params: SignExecuteContractMethodParams<{\n amount0: bigint;\n amount1: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n collect: {\n params: SignExecuteContractMethodParams<{\n maxAmounts: [bigint, bigint, bigint];\n }>;\n result: SignExecuteScriptTxResult;\n };\n getState: {\n params: Omit<SignExecuteContractMethodParams<{}>, \"args\">;\n result: SignExecuteScriptTxResult;\n };\n }\n export type SignExecuteMethodParams<T extends keyof SignExecuteMethodTable> =\n SignExecuteMethodTable[T][\"params\"];\n export type SignExecuteMethodResult<T extends keyof SignExecuteMethodTable> =\n SignExecuteMethodTable[T][\"result\"];\n}\n\nclass Factory extends ContractFactory<PositionInstance, PositionTypes.Fields> {\n encodeFields(fields: PositionTypes.Fields) {\n return encodeContractFields(\n addStdIdToFields(this.contract, fields),\n this.contract.fieldsSig,\n types.AllStructs\n );\n }\n\n consts = {\n FullMathError: { MulDivOverflow: BigInt(\"351\") },\n PositionError: { NotParent: BigInt(\"901\") },\n };\n\n at(address: string): PositionInstance {\n return new PositionInstance(address);\n }\n\n tests = {\n getTokenUri: async (\n params: Omit<\n TestContractParamsWithoutMaps<PositionTypes.Fields, never>,\n \"args\"\n >\n ): Promise<TestContractResultWithoutMaps<HexString>> => {\n return testMethod(this, \"getTokenUri\", params, getContractByCodeHash);\n },\n getCollectionIndex: async (\n params: Omit<\n TestContractParamsWithoutMaps<PositionTypes.Fields, never>,\n \"args\"\n >\n ): Promise<TestContractResultWithoutMaps<[HexString, bigint]>> => {\n return testMethod(\n this,\n \"getCollectionIndex\",\n params,\n getContractByCodeHash\n );\n },\n mulDiv: async (\n params: TestContractParamsWithoutMaps<\n PositionTypes.Fields,\n { a: bigint; b: bigint; denominator: bigint }\n >\n ): Promise<TestContractResultWithoutMaps<bigint>> => {\n return testMethod(this, \"mulDiv\", params, getContractByCodeHash);\n },\n mulDivRoundingUp: async (\n params: TestContractParamsWithoutMaps<\n PositionTypes.Fields,\n { a: bigint; b: bigint; denominator: bigint }\n >\n ): Promise<TestContractResultWithoutMaps<bigint>> => {\n return testMethod(\n this,\n \"mulDivRoundingUp\",\n params,\n getContractByCodeHash\n );\n },\n update: async (\n params: TestContractParamsWithoutMaps<\n PositionTypes.Fields,\n { liquidityDelta: bigint; growths: [bigint, bigint, bigint] }\n >\n ): Promise<TestContractResultWithoutMaps<[bigint, bigint, bigint]>> => {\n return testMethod(this, \"update\", params, getContractByCodeHash);\n },\n deposit: async (\n params: TestContractParamsWithoutMaps<\n PositionTypes.Fields,\n { amount0: bigint; amount1: bigint }\n >\n ): Promise<TestContractResultWithoutMaps<null>> => {\n return testMethod(this, \"deposit\", params, getContractByCodeHash);\n },\n collect: async (\n params: TestContractParamsWithoutMaps<\n PositionTypes.Fields,\n { maxAmounts: [bigint, bigint, bigint] }\n >\n ): Promise<TestContractResultWithoutMaps<[bigint, bigint, bigint]>> => {\n return testMethod(this, \"collect\", params, getContractByCodeHash);\n },\n getState: async (\n params: Omit<\n TestContractParamsWithoutMaps<PositionTypes.Fields, never>,\n \"args\"\n >\n ): Promise<\n TestContractResultWithoutMaps<[bigint, [bigint, bigint, bigint]]>\n > => {\n return testMethod(this, \"getState\", params, getContractByCodeHash);\n },\n };\n\n stateForTest(\n initFields: PositionTypes.Fields,\n asset?: Asset,\n address?: string\n ) {\n return this.stateForTest_(initFields, asset, address, undefined);\n }\n}\n\n// Use this object to test and deploy the contract\nexport const Position = new Factory(\n Contract.fromJson(\n PositionContractJson,\n \"\",\n \"893257ca0a6b91cb3976f1cdb74a6b56f8a9f0d54a8034e22e8281dd33c6f313\",\n types.AllStructs\n )\n);\nregisterContract(Position);\n\n// Use this class to interact with the blockchain\nexport class PositionInstance extends ContractInstance {\n constructor(address: Address) {\n super(address);\n }\n\n async fetchState(): Promise<PositionTypes.State> {\n return fetchContractState(Position, this);\n }\n\n view = {\n getTokenUri: async (\n params?: PositionTypes.CallMethodParams<\"getTokenUri\">\n ): Promise<PositionTypes.CallMethodResult<\"getTokenUri\">> => {\n return callMethod(\n Position,\n this,\n \"getTokenUri\",\n params === undefined ? {} : params,\n getContractByCodeHash\n );\n },\n getCollectionIndex: async (\n params?: PositionTypes.CallMethodParams<\"getCollectionIndex\">\n ): Promise<PositionTypes.CallMethodResult<\"getCollectionIndex\">> => {\n return callMethod(\n Position,\n this,\n \"getCollectionIndex\",\n params === undefined ? {} : params,\n getContractByCodeHash\n );\n },\n mulDiv: async (\n params: PositionTypes.CallMethodParams<\"mulDiv\">\n ): Promise<PositionTypes.CallMethodResult<\"mulDiv\">> => {\n return callMethod(\n Position,\n this,\n \"mulDiv\",\n params,\n getContractByCodeHash\n );\n },\n mulDivRoundingUp: async (\n params: PositionTypes.CallMethodParams<\"mulDivRoundingUp\">\n ): Promise<PositionTypes.CallMethodResult<\"mulDivRoundingUp\">> => {\n return callMethod(\n Position,\n this,\n \"mulDivRoundingUp\",\n params,\n getContractByCodeHash\n );\n },\n update: async (\n params: PositionTypes.CallMethodParams<\"update\">\n ): Promise<PositionTypes.CallMethodResult<\"update\">> => {\n return callMethod(\n Position,\n this,\n \"update\",\n params,\n getContractByCodeHash\n );\n },\n deposit: async (\n params: PositionTypes.CallMethodParams<\"deposit\">\n ): Promise<PositionTypes.CallMethodResult<\"deposit\">> => {\n return callMethod(\n Position,\n this,\n \"deposit\",\n params,\n getContractByCodeHash\n );\n },\n collect: async (\n params: PositionTypes.CallMethodParams<\"collect\">\n ): Promise<PositionTypes.CallMethodResult<\"collect\">> => {\n return callMethod(\n Position,\n this,\n \"collect\",\n params,\n getContractByCodeHash\n );\n },\n getState: async (\n params?: PositionTypes.CallMethodParams<\"getState\">\n ): Promise<PositionTypes.CallMethodResult<\"getState\">> => {\n return callMethod(\n Position,\n this,\n \"getState\",\n params === undefined ? {} : params,\n getContractByCodeHash\n );\n },\n };\n\n transact = {\n getTokenUri: async (\n params: PositionTypes.SignExecuteMethodParams<\"getTokenUri\">\n ): Promise<PositionTypes.SignExecuteMethodResult<\"getTokenUri\">> => {\n return signExecuteMethod(Position, this, \"getTokenUri\", params);\n },\n getCollectionIndex: async (\n params: PositionTypes.SignExecuteMethodParams<\"getCollectionIndex\">\n ): Promise<PositionTypes.SignExecuteMethodResult<\"getCollectionIndex\">> => {\n return signExecuteMethod(Position, this, \"getCollectionIndex\", params);\n },\n mulDiv: async (\n params: PositionTypes.SignExecuteMethodParams<\"mulDiv\">\n ): Promise<PositionTypes.SignExecuteMethodResult<\"mulDiv\">> => {\n return signExecuteMethod(Position, this, \"mulDiv\", params);\n },\n mulDivRoundingUp: async (\n params: PositionTypes.SignExecuteMethodParams<\"mulDivRoundingUp\">\n ): Promise<PositionTypes.SignExecuteMethodResult<\"mulDivRoundingUp\">> => {\n return signExecuteMethod(Position, this, \"mulDivRoundingUp\", params);\n },\n update: async (\n params: PositionTypes.SignExecuteMethodParams<\"update\">\n ): Promise<PositionTypes.SignExecuteMethodResult<\"update\">> => {\n return signExecuteMethod(Position, this, \"update\", params);\n },\n deposit: async (\n params: PositionTypes.SignExecuteMethodParams<\"deposit\">\n ): Promise<PositionTypes.SignExecuteMethodResult<\"deposit\">> => {\n return signExecuteMethod(Position, this, \"deposit\", params);\n },\n collect: async (\n params: PositionTypes.SignExecuteMethodParams<\"collect\">\n ): Promise<PositionTypes.SignExecuteMethodResult<\"collect\">> => {\n return signExecuteMethod(Position, this, \"collect\", params);\n },\n getState: async (\n params: PositionTypes.SignExecuteMethodParams<\"getState\">\n ): Promise<PositionTypes.SignExecuteMethodResult<\"getState\">> => {\n return signExecuteMethod(Position, this, \"getState\", params);\n },\n };\n\n async multicall<Calls extends PositionTypes.MultiCallParams>(\n calls: Calls\n ): Promise<PositionTypes.MultiCallResults<Calls>>;\n async multicall<Callss extends PositionTypes.MultiCallParams[]>(\n callss: Narrow<Callss>\n ): Promise<PositionTypes.MulticallReturnType<Callss>>;\n async multicall<\n Callss extends\n | PositionTypes.MultiCallParams\n | PositionTypes.MultiCallParams[]\n >(callss: Callss): Promise<unknown> {\n return await multicallMethods(\n Position,\n this,\n callss,\n getContractByCodeHash\n );\n }\n}\n","{\n \"version\": \"v4.3.0\",\n \"name\": \"Position\",\n \"bytecode\": \"0a0819402c410e413141d741f84276428a01000001010ece007a494d470d13216217000c0d160001350201000000020ace007a494d470d132162ce01020000030901408d160016010c0d3687170316001601371704160316043616031604314c020d4a010c36170516050c2f4c04160416022d02160216053313415f7b160016011602871706160516061604334c020d4a010c361705160416063617040c1602361602381707160216072d1702160416072d17040c16073616072d0d351707160416051607373917040f1602370e3a170816080e16021608373637170816080e16021608373637170816080e16021608373637170816080e16021608373637170816080e16021608373637170816080e16021608373637170816041608370200000304011216001601160200021703160016011602870c334c0416030d2a0216030201000409034062d379a1c203b4ce00451343857ba0003f16001f3d17040c0c0c1707170617050c170816080f314c403ea0000c334c403516087a0f314d0d2a7816087a0f314d0d2ac32ba00013cd0100000000000000000000000000000000000216087a0f314d112a7916087a0f314d102ac316087a0f314d112a782a16087a0f314d102ac416080d2a17084a7fbe160116021603a103a102a1011604a1001605160616070201000202000ed3b478489ab4ce00451343857ba00416002aa104a00516012aa10501000308034056d3ad05a194b4ce00451343857b0c0c0c1705170417030c170616060f314c404016067a0f314d7816067a0f314d102ac3334c0916067a0f314d102ac34a0616067a0f314d781707160716067a0f314d0f2a7916067a0f314d102ac316072b16067a0f314d102ac416060d2a17064a7fbc16031604160502010000000406d3f97c255fa000a001a002a00302\",\n \"codeHash\": \"893257ca0a6b91cb3976f1cdb74a6b56f8a9f0d54a8034e22e8281dd33c6f313\",\n \"fieldsSig\": {\n \"names\": [\n \"parent\",\n \"nftIndex\",\n \"liquidity\",\n \"growthsInside\",\n \"tokensOwed\",\n \"__stdInterfaceId\"\n ],\n \"types\": [\n \"Address\",\n \"U256\",\n \"U256\",\n \"[U256;3]\",\n \"[U256;3]\",\n \"ByteVec\"\n ],\n \"isMutable\": [\n false,\n false,\n true,\n true,\n true,\n false\n ]\n },\n \"eventsSig\": [],\n \"functions\": [\n {\n \"name\": \"getTokenUri\",\n \"paramNames\": [],\n \"paramTypes\": [],\n \"paramIsMutable\": [],\n \"returnTypes\": [\n \"ByteVec\"\n ]\n },\n {\n \"name\": \"getCollectionIndex\",\n \"paramNames\": [],\n \"paramTypes\": [],\n \"paramIsMutable\": [],\n \"returnTypes\": [\n \"ByteVec\",\n \"U256\"\n ]\n },\n {\n \"name\": \"mulDiv\",\n \"paramNames\": [\n \"a\",\n \"b\",\n \"denominator\"\n ],\n \"paramTypes\": [\n \"U256\",\n \"U256\",\n \"U256\"\n ],\n \"paramIsMutable\": [\n false,\n false,\n true\n ],\n \"returnTypes\": [\n \"U256\"\n ]\n },\n {\n \"name\": \"mulDivRoundingUp\",\n \"paramNames\": [\n \"a\",\n \"b\",\n \"denominator\"\n ],\n \"paramTypes\": [\n \"U256\",\n \"U256\",\n \"U256\"\n ],\n \"paramIsMutable\": [\n false,\n false,\n false\n ],\n \"returnTypes\": [\n \"U256\"\n ]\n },\n {\n \"name\": \"update\",\n \"paramNames\": [\n \"liquidityDelta\",\n \"growths\"\n ],\n \"paramTypes\": [\n \"I256\",\n \"[U256;3]\"\n ],\n \"paramIsMutable\": [\n false,\n false\n ],\n \"returnTypes\": [\n \"[U256;3]\"\n ]\n },\n {\n \"name\": \"deposit\",\n \"paramNames\": [\n \"amount0\",\n \"amount1\"\n ],\n \"paramTypes\": [\n \"U256\",\n \"U256\"\n ],\n \"paramIsMutable\": [\n false,\n false\n ],\n \"returnTypes\": []\n },\n {\n \"name\": \"collect\",\n \"paramNames\": [\n \"maxAmounts\"\n ],\n \"paramTypes\": [\n \"[U256;3]\"\n ],\n \"paramIsMutable\": [\n false\n ],\n \"returnTypes\": [\n \"[U256;3]\"\n ]\n },\n {\n \"name\": \"getState\",\n \"paramNames\": [],\n \"paramTypes\": [],\n \"paramIsMutable\": [],\n \"returnTypes\": [\n \"U256\",\n \"[U256;3]\"\n ]\n }\n ],\n \"constants\": [],\n \"enums\": [\n {\n \"name\": \"FullMathError\",\n \"fields\": [\n {\n \"name\": \"MulDivOverflow\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"351\"\n }\n }\n ]\n },\n {\n \"name\": \"PositionError\",\n \"fields\": [\n {\n \"name\": \"NotParent\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"901\"\n }\n }\n ]\n }\n ],\n \"stdInterfaceId\": \"0003\"\n}","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport {\n Address,\n Contract,\n ContractState,\n TestContractResult,\n HexString,\n ContractFactory,\n EventSubscribeOptions,\n EventSubscription,\n CallContractParams,\n CallContractResult,\n TestContractParams,\n ContractEvent,\n subscribeContractEvent,\n subscribeContractEvents,\n testMethod,\n callMethod,\n multicallMethods,\n fetchContractState,\n Asset,\n ContractInstance,\n getContractEventsCurrentCount,\n TestContractParamsWithoutMaps,\n TestContractResultWithoutMaps,\n SignExecuteContractMethodParams,\n SignExecuteScriptTxResult,\n signExecuteMethod,\n addStdIdToFields,\n encodeContractFields,\n Narrow,\n} from \"@alephium/web3\";\nimport { default as PositionManagerContractJson } from \"../PositionManager.ral.json\";\nimport { getContractByCodeHash, registerContract } from \"./contracts\";\nimport * as types from \"./types\";\n\n// Custom types for the contract\nexport namespace PositionManagerTypes {\n export type Fields = {\n parent: HexString;\n };\n\n export type State = ContractState<Fields>;\n\n export interface CallMethodTable {\n addLiquidity: {\n params: CallContractParams<{\n payer: Address;\n p: types.ModifyLiquidityParams;\n }>;\n result: CallContractResult<[bigint, bigint, bigint, HexString]>;\n };\n getLiquidityForAmount0: {\n params: CallContractParams<{\n sqrtRatioAX96: bigint;\n sqrtRatioBX96: bigint;\n amount0: bigint;\n }>;\n result: CallContractResult<bigint>;\n };\n getLiquidityForAmount1: {\n params: CallContractParams<{\n sqrtRatioAX96: bigint;\n sqrtRatioBX96: bigint;\n amount1: bigint;\n }>;\n result: CallContractResult<bigint>;\n };\n getLiquidityForAmounts: {\n params: CallContractParams<{\n sqrtRatioX96: bigint;\n sqrtRatioAX96: bigint;\n sqrtRatioBX96: bigint;\n amount0: bigint;\n amount1: bigint;\n }>;\n result: CallContractResult<bigint>;\n };\n getAmount0ForLiquidity: {\n params: CallContractParams<{\n sqrtRatioAX96: bigint;\n sqrtRatioBX96: bigint;\n liquidity: bigint;\n }>;\n result: CallContractResult<bigint>;\n };\n mulDiv: {\n params: CallContractParams<{ a: bigint; b: bigint; denominator: bigint }>;\n result: CallContractResult<bigint>;\n };\n mulDivRoundingUp: {\n params: CallContractParams<{ a: bigint; b: bigint; denominator: bigint }>;\n result: CallContractResult<bigint>;\n };\n configPath: {\n params: CallContractParams<{ configIndex_: bigint }>;\n result: CallContractResult<HexString>;\n };\n poolPath: {\n params: CallContractParams<{\n factory: HexString;\n tokens: HexString;\n configIndex_: bigint;\n }>;\n result: CallContractResult<HexString>;\n };\n poolContractId: {\n params: CallContractParams<{\n factory: HexString;\n tokens: HexString;\n configIndex_: bigint;\n }>;\n result: CallContractResult<HexString>;\n };\n positionPath: {\n params: CallContractParams<{\n o: Address;\n tickLower: bigint;\n tickUpper: bigint;\n }>;\n result: CallContractResult<HexString>;\n };\n positionContractId: {\n params: CallContractParams<{\n pool: HexString;\n o: Address;\n tickLower: bigint;\n tickUpper: bigint;\n }>;\n result: CallContractResult<HexString>;\n };\n increaseLiquidity: {\n params: CallContractParams<{\n payer: Address;\n p: types.ModifyLiquidityParams;\n }>;\n result: CallContractResult<null>;\n };\n decreaseLiquidity: {\n params: CallContractParams<{\n operator: Address;\n liquidity: bigint;\n p: types.DecreaseLiquidityParams;\n }>;\n result: CallContractResult<null>;\n };\n collect: {\n params: CallContractParams<{\n operator: Address;\n liquidity: bigint;\n p: types.CollectParams;\n }>;\n result: CallContractResult<null>;\n };\n getSqrtPricesX96: {\n params: CallContractParams<{\n pool: HexString;\n owner: Address;\n tickLower: bigint;\n tickUpper: bigint;\n }>;\n result: CallContractResult<[bigint, bigint, bigint, bigint]>;\n };\n }\n export type CallMethodParams<T extends keyof CallMethodTable> =\n CallMethodTable[T][\"params\"];\n export type CallMethodResult<T extends keyof CallMethodTable> =\n CallMethodTable[T][\"result\"];\n export type MultiCallParams = Partial<{\n [Name in keyof CallMethodTable]: CallMethodTable[Name][\"params\"];\n }>;\n export type MultiCallResults<T extends MultiCallParams> = {\n [MaybeName in keyof T]: MaybeName extends keyof CallMethodTable\n ? CallMethodTable[MaybeName][\"result\"]\n : undefined;\n };\n export type MulticallReturnType<Callss extends MultiCallParams[]> = {\n [index in keyof Callss]: MultiCallResults<Callss[index]>;\n };\n\n export interface SignExecuteMethodTable {\n addLiquidity: {\n params: SignExecuteContractMethodParams<{\n payer: Address;\n p: types.ModifyLiquidityParams;\n }>;\n result: SignExecuteScriptTxResult;\n };\n getLiquidityForAmount0: {\n params: SignExecuteContractMethodParams<{\n sqrtRatioAX96: bigint;\n sqrtRatioBX96: bigint;\n amount0: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n getLiquidityForAmount1: {\n params: SignExecuteContractMethodParams<{\n sqrtRatioAX96: bigint;\n sqrtRatioBX96: bigint;\n amount1: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n getLiquidityForAmounts: {\n params: SignExecuteContractMethodParams<{\n sqrtRatioX96: bigint;\n sqrtRatioAX96: bigint;\n sqrtRatioBX96: bigint;\n amount0: bigint;\n amount1: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n getAmount0ForLiquidity: {\n params: SignExecuteContractMethodParams<{\n sqrtRatioAX96: bigint;\n sqrtRatioBX96: bigint;\n liquidity: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n mulDiv: {\n params: SignExecuteContractMethodParams<{\n a: bigint;\n b: bigint;\n denominator: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n mulDivRoundingUp: {\n params: SignExecuteContractMethodParams<{\n a: bigint;\n b: bigint;\n denominator: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n configPath: {\n params: SignExecuteContractMethodParams<{ configIndex_: bigint }>;\n result: SignExecuteScriptTxResult;\n };\n poolPath: {\n params: SignExecuteContractMethodParams<{\n factory: HexString;\n tokens: HexString;\n configIndex_: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n poolContractId: {\n params: SignExecuteContractMethodParams<{\n factory: HexString;\n tokens: HexString;\n configIndex_: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n positionPath: {\n params: SignExecuteContractMethodParams<{\n o: Address;\n tickLower: bigint;\n tickUpper: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n positionContractId: {\n params: SignExecuteContractMethodParams<{\n pool: HexString;\n o: Address;\n tickLower: bigint;\n tickUpper: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n increaseLiquidity: {\n params: SignExecuteContractMethodParams<{\n payer: Address;\n p: types.ModifyLiquidityParams;\n }>;\n result: SignExecuteScriptTxResult;\n };\n decreaseLiquidity: {\n params: SignExecuteContractMethodParams<{\n operator: Address;\n liquidity: bigint;\n p: types.DecreaseLiquidityParams;\n }>;\n result: SignExecuteScriptTxResult;\n };\n collect: {\n params: SignExecuteContractMethodParams<{\n operator: Address;\n liquidity: bigint;\n p: types.CollectParams;\n }>;\n result: SignExecuteScriptTxResult;\n };\n getSqrtPricesX96: {\n params: SignExecuteContractMethodParams<{\n pool: HexString;\n owner: Address;\n tickLower: bigint;\n tickUpper: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n }\n export type SignExecuteMethodParams<T extends keyof SignExecuteMethodTable> =\n SignExecuteMethodTable[T][\"params\"];\n export type SignExecuteMethodResult<T extends keyof SignExecuteMethodTable> =\n SignExecuteMethodTable[T][\"result\"];\n}\n\nclass Factory extends ContractFactory<\n PositionManagerInstance,\n PositionManagerTypes.Fields\n> {\n encodeFields(fields: PositionManagerTypes.Fields) {\n return encodeContractFields(\n addStdIdToFields(this.contract, fields),\n this.contract.fieldsSig,\n types.AllStructs\n );\n }\n\n consts = {\n LiquidityManagmentError: {\n MintSlippage: BigInt(\"850\"),\n BurnSlippage: BigInt(\"851\"),\n },\n FullMathError: { MulDivOverflow: BigInt(\"351\") },\n PathPrefixes: {\n Tick: BigInt(\"0\"),\n Position: BigInt(\"1\"),\n Word: BigInt(\"2\"),\n },\n };\n\n at(address: string): PositionManagerInstance {\n return new PositionManagerInstance(address);\n }\n\n tests = {\n addLiquidity: async (\n params: TestContractParamsWithoutMaps<\n PositionManagerTypes.Fields,\n { payer: Address; p: types.ModifyLiquidityParams }\n >\n ): Promise<\n TestContractResultWithoutMaps<[bigint, bigint, bigint, HexString]>\n > => {\n return testMethod(this, \"addLiquidity\", params, getContractByCodeHash);\n },\n getLiquidityForAmount0: async (\n params: TestContractParamsWithoutMaps<\n PositionManagerTypes.Fields,\n { sqrtRatioAX96: bigint; sqrtRatioBX96: bigint; amount0: bigint }\n >\n ): Promise<TestContractResultWithoutMaps<bigint>> => {\n return testMethod(\n this,\n \"getLiquidityForAmount0\",\n params,\n getContractByCodeHash\n );\n },\n getLiquidityForAmount1: async (\n params: TestContractParamsWithoutMaps<\n PositionManagerTypes.Fields,\n { sqrtRatioAX96: bigint; sqrtRatioBX96: bigint; amount1: bigint }\n >\n ): Promise<TestContractResultWithoutMaps<bigint>> => {\n return testMethod(\n this,\n \"getLiquidityForAmount1\",\n params,\n getContractByCodeHash\n );\n },\n getLiquidityForAmounts: async (\n params: TestContractParamsWithoutMaps<\n PositionManagerTypes.Fields,\n {\n sqrtRatioX96: bigint;\n sqrtRatioAX96: bigint;\n sqrtRatioBX96: bigint;\n amount0: bigint;\n amount1: bigint;\n }\n >\n ): Promise<TestContractResultWithoutMaps<bigint>> => {\n return testMethod(\n this,\n \"getLiquidityForAmounts\",\n params,\n getContractByCodeHash\n );\n },\n getAmount0ForLiquidity: async (\n params: TestContractParamsWithoutMaps<\n PositionManagerTypes.Fields,\n { sqrtRatioAX96: bigint; sqrtRatioBX96: bigint; liquidity: bigint }\n >\n ): Promise<TestContractResultWithoutMaps<bigint>> => {\n return testMethod(\n this,\n \"getAmount0ForLiquidity\",\n params,\n getContractByCodeHash\n );\n },\n mulDiv: async (\n params: TestContractParamsWithoutMaps<\n PositionManagerTypes.Fields,\n { a: bigint; b: bigint; denominator: bigint }\n >\n ): Promise<TestContractResultWithoutMaps<bigint>> => {\n return testMethod(this, \"mulDiv\", params, getContractByCodeHash);\n },\n mulDivRoundingUp: async (\n params: TestContractParamsWithoutMaps<\n PositionManagerTypes.Fields,\n { a: bigint; b: bigint; denominator: bigint }\n >\n ): Promise<TestContractResultWithoutMaps<bigint>> => {\n return testMethod(\n this,\n \"mulDivRoundingUp\",\n params,\n getContractByCodeHash\n );\n },\n configPath: async (\n params: TestContractParamsWithoutMaps<\n PositionManagerTypes.Fields,\n { configIndex_: bigint }\n >\n ): Promise<TestContractResultWithoutMaps<HexString>> => {\n return testMethod(this, \"configPath\", params, getContractByCodeHash);\n },\n poolPath: async (\n params: TestContractParamsWithoutMaps<\n PositionManagerTypes.Fields,\n { factory: HexString; tokens: HexString; configIndex_: bigint }\n >\n ): Promise<TestContractResultWithoutMaps<HexString>> => {\n return testMethod(this, \"poolPath\", params, getContractByCodeHash);\n },\n poolContractId: async (\n params: TestContractParamsWithoutMaps<\n PositionManagerTypes.Fields,\n { factory: HexString; tokens: HexString; configIndex_: bigint }\n >\n ): Promise<TestContractResultWithoutMaps<HexString>> => {\n return testMethod(this, \"poolContractId\", params, getContractByCodeHash);\n },\n positionPath: async (\n params: TestContractParamsWithoutMaps<\n PositionManagerTypes.Fields,\n { o: Address; tickLower: bigint; tickUpper: bigint }\n >\n ): Promise<TestContractResultWithoutMaps<HexString>> => {\n return testMethod(this, \"positionPath\", params, getContractByCodeHash);\n },\n positionContractId: async (\n params: TestContractParamsWithoutMaps<\n PositionManagerTypes.Fields,\n { pool: HexString; o: Address; tickLower: bigint; tickUpper: bigint }\n >\n ): Promise<TestContractResultWithoutMaps<HexString>> => {\n return testMethod(\n this,\n \"positionContractId\",\n params,\n getContractByCodeHash\n );\n },\n increaseLiquidity: async (\n params: TestContractParamsWithoutMaps<\n PositionManagerTypes.Fields,\n { payer: Address; p: types.ModifyLiquidityParams }\n >\n ): Promise<TestContractResultWithoutMaps<null>> => {\n return testMethod(\n this,\n \"increaseLiquidity\",\n params,\n getContractByCodeHash\n );\n },\n decreaseLiquidity: async (\n params: TestContractParamsWithoutMaps<\n PositionManagerTypes.Fields,\n {\n operator: Address;\n liquidity: bigint;\n p: types.DecreaseLiquidityParams;\n }\n >\n ): Promise<TestContractResultWithoutMaps<null>> => {\n return testMethod(\n this,\n \"decreaseLiquidity\",\n params,\n getContractByCodeHash\n );\n },\n collect: async (\n params: TestContractParamsWithoutMaps<\n PositionManagerTypes.Fields,\n { operator: Address; liquidity: bigint; p: types.CollectParams }\n >\n ): Promise<TestContractResultWithoutMaps<null>> => {\n return testMethod(this, \"collect\", params, getContractByCodeHash);\n },\n getSqrtPricesX96: async (\n params: TestContractParamsWithoutMaps<\n PositionManagerTypes.Fields,\n {\n pool: HexString;\n owner: Address;\n tickLower: bigint;\n tickUpper: bigint;\n }\n >\n ): Promise<\n TestContractResultWithoutMaps<[bigint, bigint, bigint, bigint]>\n > => {\n return testMethod(\n this,\n \"getSqrtPricesX96\",\n params,\n getContractByCodeHash\n );\n },\n };\n\n stateForTest(\n initFields: PositionManagerTypes.Fields,\n asset?: Asset,\n address?: string\n ) {\n return this.stateForTest_(initFields, asset, address, undefined);\n }\n}\n\n// Use this object to test and deploy the contract\nexport const PositionManager = new Factory(\n Contract.fromJson(\n PositionManagerContractJson,\n \"\",\n \"ab39514b7b087164d46e689fc18e1793c9aa0c677ece80b18439df6526c09698\",\n types.AllStructs\n )\n);\nregisterContract(PositionManager);\n\n// Use this class to interact with the blockchain\nexport class PositionManagerInstance extends ContractInstance {\n constructor(address: Address) {\n super(address);\n }\n\n async fetchState(): Promise<PositionManagerTypes.State> {\n return fetchContractState(PositionManager, this);\n }\n\n view = {\n addLiquidity: async (\n params: PositionManagerTypes.CallMethodParams<\"addLiquidity\">\n ): Promise<PositionManagerTypes.CallMethodResult<\"addLiquidity\">> => {\n return callMethod(\n PositionManager,\n this,\n \"addLiquidity\",\n params,\n getContractByCodeHash\n );\n },\n getLiquidityForAmount0: async (\n params: PositionManagerTypes.CallMethodParams<\"getLiquidityForAmount0\">\n ): Promise<\n PositionManagerTypes.CallMethodResult<\"getLiquidityForAmount0\">\n > => {\n return callMethod(\n PositionManager,\n this,\n \"getLiquidityForAmount0\",\n params,\n getContractByCodeHash\n );\n },\n getLiquidityForAmount1: async (\n params: PositionManagerTypes.CallMethodParams<\"getLiquidityForAmount1\">\n ): Promise<\n PositionManagerTypes.CallMethodResult<\"getLiquidityForAmount1\">\n > => {\n return callMethod(\n PositionManager,\n this,\n \"getLiquidityForAmount1\",\n params,\n getContractByCodeHash\n );\n },\n getLiquidityForAmounts: async (\n params: PositionManagerTypes.CallMethodParams<\"getLiquidityForAmounts\">\n ): Promise<\n PositionManagerTypes.CallMethodResult<\"getLiquidityForAmounts\">\n > => {\n return callMethod(\n PositionManager,\n this,\n \"getLiquidityForAmounts\",\n params,\n getContractByCodeHash\n );\n },\n getAmount0ForLiquidity: async (\n params: PositionManagerTypes.CallMethodParams<\"getAmount0ForLiquidity\">\n ): Promise<\n PositionManagerTypes.CallMethodResult<\"getAmount0ForLiquidity\">\n > => {\n return callMethod(\n PositionManager,\n this,\n \"getAmount0ForLiquidity\",\n params,\n getContractByCodeHash\n );\n },\n mulDiv: async (\n params: PositionManagerTypes.CallMethodParams<\"mulDiv\">\n ): Promise<PositionManagerTypes.CallMethodResult<\"mulDiv\">> => {\n return callMethod(\n PositionManager,\n this,\n \"mulDiv\",\n params,\n getContractByCodeHash\n );\n },\n mulDivRoundingUp: async (\n params: PositionManagerTypes.CallMethodParams<\"mulDivRoundingUp\">\n ): Promise<PositionManagerTypes.CallMethodResult<\"mulDivRoundingUp\">> => {\n return callMethod(\n PositionManager,\n this,\n \"mulDivRoundingUp\",\n params,\n getContractByCodeHash\n );\n },\n configPath: async (\n params: PositionManagerTypes.CallMethodParams<\"configPath\">\n ): Promise<PositionManagerTypes.CallMethodResult<\"configPath\">> => {\n return callMethod(\n PositionManager,\n this,\n \"configPath\",\n params,\n getContractByCodeHash\n );\n },\n poolPath: async (\n params: PositionManagerTypes.CallMethodParams<\"poolPath\">\n ): Promise<PositionManagerTypes.CallMethodResult<\"poolPath\">> => {\n return callMethod(\n PositionManager,\n this,\n \"poolPath\",\n params,\n getContractByCodeHash\n );\n },\n poolContractId: async (\n params: PositionManagerTypes.CallMethodParams<\"poolContractId\">\n ): Promise<PositionManagerTypes.CallMethodResult<\"poolContractId\">> => {\n return callMethod(\n PositionManager,\n this,\n \"poolContractId\",\n params,\n getContractByCodeHash\n );\n },\n positionPath: async (\n params: PositionManagerTypes.CallMethodParams<\"positionPath\">\n ): Promise<PositionManagerTypes.CallMethodResult<\"positionPath\">> => {\n return callMethod(\n PositionManager,\n this,\n \"positionPath\",\n params,\n getContractByCodeHash\n );\n },\n positionContractId: async (\n params: PositionManagerTypes.CallMethodParams<\"positionContractId\">\n ): Promise<PositionManagerTypes.CallMethodResult<\"positionContractId\">> => {\n return callMethod(\n PositionManager,\n this,\n \"positionContractId\",\n params,\n getContractByCodeHash\n );\n },\n increaseLiquidity: async (\n params: PositionManagerTypes.CallMethodParams<\"increaseLiquidity\">\n ): Promise<PositionManagerTypes.CallMethodResult<\"increaseLiquidity\">> => {\n return callMethod(\n PositionManager,\n this,\n \"increaseLiquidity\",\n params,\n getContractByCodeHash\n );\n },\n decreaseLiquidity: async (\n params: PositionManagerTypes.CallMethodParams<\"decreaseLiquidity\">\n ): Promise<PositionManagerTypes.CallMethodResult<\"decreaseLiquidity\">> => {\n return callMethod(\n PositionManager,\n this,\n \"decreaseLiquidity\",\n params,\n getContractByCodeHash\n );\n },\n collect: async (\n params: PositionManagerTypes.CallMethodParams<\"collect\">\n ): Promise<PositionManagerTypes.CallMethodResult<\"collect\">> => {\n return callMethod(\n PositionManager,\n this,\n \"collect\",\n params,\n getContractByCodeHash\n );\n },\n getSqrtPricesX96: async (\n params: PositionManagerTypes.CallMethodParams<\"getSqrtPricesX96\">\n ): Promise<PositionManagerTypes.CallMethodResult<\"getSqrtPricesX96\">> => {\n return callMethod(\n PositionManager,\n this,\n \"getSqrtPricesX96\",\n params,\n getContractByCodeHash\n );\n },\n };\n\n transact = {\n addLiquidity: async (\n params: PositionManagerTypes.SignExecuteMethodParams<\"addLiquidity\">\n ): Promise<\n PositionManagerTypes.SignExecuteMethodResult<\"addLiquidity\">\n > => {\n return signExecuteMethod(PositionManager, this, \"addLiquidity\", params);\n },\n getLiquidityForAmount0: async (\n params: PositionManagerTypes.SignExecuteMethodParams<\"getLiquidityForAmount0\">\n ): Promise<\n PositionManagerTypes.SignExecuteMethodResult<\"getLiquidityForAmount0\">\n > => {\n return signExecuteMethod(\n PositionManager,\n this,\n \"getLiquidityForAmount0\",\n params\n );\n },\n getLiquidityForAmount1: async (\n params: PositionManagerTypes.SignExecuteMethodParams<\"getLiquidityForAmount1\">\n ): Promise<\n PositionManagerTypes.SignExecuteMethodResult<\"getLiquidityForAmount1\">\n > => {\n return signExecuteMethod(\n PositionManager,\n this,\n \"getLiquidityForAmount1\",\n params\n );\n },\n getLiquidityForAmounts: async (\n params: PositionManagerTypes.SignExecuteMethodParams<\"getLiquidityForAmounts\">\n ): Promise<\n PositionManagerTypes.SignExecuteMethodResult<\"getLiquidityForAmounts\">\n > => {\n return signExecuteMethod(\n PositionManager,\n this,\n \"getLiquidityForAmounts\",\n params\n );\n },\n getAmount0ForLiquidity: async (\n params: PositionManagerTypes.SignExecuteMethodParams<\"getAmount0ForLiquidity\">\n ): Promise<\n PositionManagerTypes.SignExecuteMethodResult<\"getAmount0ForLiquidity\">\n > => {\n return signExecuteMethod(\n PositionManager,\n this,\n \"getAmount0ForLiquidity\",\n params\n );\n },\n mulDiv: async (\n params: PositionManagerTypes.SignExecuteMethodParams<\"mulDiv\">\n ): Promise<PositionManagerTypes.SignExecuteMethodResult<\"mulDiv\">> => {\n return signExecuteMethod(PositionManager, this, \"mulDiv\", params);\n },\n mulDivRoundingUp: async (\n params: PositionManagerTypes.SignExecuteMethodParams<\"mulDivRoundingUp\">\n ): Promise<\n PositionManagerTypes.SignExecuteMethodResult<\"mulDivRoundingUp\">\n > => {\n return signExecuteMethod(\n PositionManager,\n this,\n \"mulDivRoundingUp\",\n params\n );\n },\n configPath: async (\n params: PositionManagerTypes.SignExecuteMethodParams<\"configPath\">\n ): Promise<PositionManagerTypes.SignExecuteMethodResult<\"configPath\">> => {\n return signExecuteMethod(PositionManager, this, \"configPath\", params);\n },\n poolPath: async (\n params: PositionManagerTypes.SignExecuteMethodParams<\"poolPath\">\n ): Promise<PositionManagerTypes.SignExecuteMethodResult<\"poolPath\">> => {\n return signExecuteMethod(PositionManager, this, \"poolPath\", params);\n },\n poolContractId: async (\n params: PositionManagerTypes.SignExecuteMethodParams<\"poolContractId\">\n ): Promise<\n PositionManagerTypes.SignExecuteMethodResult<\"poolContractId\">\n > => {\n return signExecuteMethod(PositionManager, this, \"poolContractId\", params);\n },\n positionPath: async (\n params: PositionManagerTypes.SignExecuteMethodParams<\"positionPath\">\n ): Promise<\n PositionManagerTypes.SignExecuteMethodResult<\"positionPath\">\n > => {\n return signExecuteMethod(PositionManager, this, \"positionPath\", params);\n },\n positionContractId: async (\n params: PositionManagerTypes.SignExecuteMethodParams<\"positionContractId\">\n ): Promise<\n PositionManagerTypes.SignExecuteMethodResult<\"positionContractId\">\n > => {\n return signExecuteMethod(\n PositionManager,\n this,\n \"positionContractId\",\n params\n );\n },\n increaseLiquidity: async (\n params: PositionManagerTypes.SignExecuteMethodParams<\"increaseLiquidity\">\n ): Promise<\n PositionManagerTypes.SignExecuteMethodResult<\"increaseLiquidity\">\n > => {\n return signExecuteMethod(\n PositionManager,\n this,\n \"increaseLiquidity\",\n params\n );\n },\n decreaseLiquidity: async (\n params: PositionManagerTypes.SignExecuteMethodParams<\"decreaseLiquidity\">\n ): Promise<\n PositionManagerTypes.SignExecuteMethodResult<\"decreaseLiquidity\">\n > => {\n return signExecuteMethod(\n PositionManager,\n this,\n \"decreaseLiquidity\",\n params\n );\n },\n collect: async (\n params: PositionManagerTypes.SignExecuteMethodParams<\"collect\">\n ): Promise<PositionManagerTypes.SignExecuteMethodResult<\"collect\">> => {\n return signExecuteMethod(PositionManager, this, \"collect\", params);\n },\n getSqrtPricesX96: async (\n params: PositionManagerTypes.SignExecuteMethodParams<\"getSqrtPricesX96\">\n ): Promise<\n PositionManagerTypes.SignExecuteMethodResult<\"getSqrtPricesX96\">\n > => {\n return signExecuteMethod(\n PositionManager,\n this,\n \"getSqrtPricesX96\",\n params\n );\n },\n };\n\n async multicall<Calls extends PositionManagerTypes.MultiCallParams>(\n calls: Calls\n ): Promise<PositionManagerTypes.MultiCallResults<Calls>>;\n async multicall<Callss extends PositionManagerTypes.MultiCallParams[]>(\n callss: Narrow<Callss>\n ): Promise<PositionManagerTypes.MulticallReturnType<Callss>>;\n async multicall<\n Callss extends\n | PositionManagerTypes.MultiCallParams\n | PositionManagerTypes.MultiCallParams[]\n >(callss: Callss): Promise<unknown> {\n return await multicallMethods(\n PositionManager,\n this,\n callss,\n getContractByCodeHash\n );\n }\n}\n","{\n \"version\": \"v4.3.0\",\n \"name\": \"PositionManager\",\n \"bytecode\": \"0110409a40c840ec413e416c424e4271427b429042a642bc42d7431a438e43ec444d01030b16044051d39b20ce13ce00160116024416030009170b160516060e0f160b012e170e170d170c160c160d160e160716080003170f160b160416051606000b171016001610a5171116001601a5171216001602a5171316007a7a16011612a316021613a316101611a31600160416051606160f110e160b01251715171416141609347a4c04181615160a341343527b160f16141615160b0201000304010dd3b8a5f4fb1600160113c9010000000000000000000000000005170316021603160116002b000502010003030108d364be47fc160213c901000000000000000000000000160116002b00050201000507014027d345f12d7a16001601324c061601160216030001024a1c16001602314c13160016021603000117051601160016040002170616051606314c0216054a011606024a0516011602160400020201000304010ed374e08b3b160213c9010000000000000000000000002c160116002b160100051703160316002d020000030901408d160016010c0d3687170316001601371704160316043616031604314c020d4a010c36170516050c2f4c04160416022d02160216053313415f7b160016011602871706160516061604334c020d4a010c361705160416063617040c1602361602381707160216072d1702160416072d17040c16073616072d0d351707160416051607373917040f1602370e3a170816080e16021608373637170816080e16021608373637170816080e16021608373637170816080e16021608373637170816080e16021608373637170816080e16021608373637170816041608370200000304011216001601160200051703160016011602870c334c0416030d2a0216030200000101010316004002000003040109160016020007cc17031601160344020000030401091600160116020008170316001603cc02010003030108d37afb14100d1600160116021304640201000405010ad35b19984c160116021603000a170416001604cc0201030b0d004021d3259c1e8816001601a5170b16001602a5170c16007a1601160ba31602160ca31600160116021603160416051606160716081609160a00001818181801030a0e004041d35060929cce00160216034416040009170a160a160516061607000b170b1600160b0da316001605160616071601110e160a0126170d170c160c1608347a4c0418160d1609341343537b1600160b0da3160016051605160616070c0d360c0d360c0d3613080f160a012718181801030b0d004032d3ee4d9e3ace00160216034416040009170b160b160516071608000b170c1600160c0da316001605160716081601110e160b012618181600160c0da3160016061605160716081609160a0c0d3613080f160b012718181801000409044034d341eff2fd1600160116021603000b17040c17051604c54b041605d12a170516020d0d1600011ec54b041605d12a170516030d0d1600011ec54b041605d12a1705160216030e0f1600012e170817071706160616071608160502\",\n \"codeHash\": \"ab39514b7b087164d46e689fc18e1793c9aa0c677ece80b18439df6526c09698\",\n \"fieldsSig\": {\n \"names\": [\n \"parent\"\n ],\n \"types\": [\n \"PoolFactory\"\n ],\n \"isMutable\": [\n false\n ]\n },\n \"eventsSig\": [],\n \"functions\": [\n {\n \"name\": \"addLiquidity\",\n \"paramNames\": [\n \"payer\",\n \"p\"\n ],\n \"paramTypes\": [\n \"Address\",\n \"ModifyLiquidityParams\"\n ],\n \"paramIsMutable\": [\n false,\n false\n ],\n \"returnTypes\": [\n \"U256\",\n \"U256\",\n \"U256\",\n \"Pool\"\n ]\n },\n {\n \"name\": \"getLiquidityForAmount0\",\n \"paramNames\": [\n \"sqrtRatioAX96\",\n \"sqrtRatioBX96\",\n \"amount0\"\n ],\n \"paramTypes\": [\n \"U256\",\n \"U256\",\n \"U256\"\n ],\n \"paramIsMutable\": [\n false,\n false,\n false\n ],\n \"returnTypes\": [\n \"U256\"\n ]\n },\n {\n \"name\": \"getLiquidityForAmount1\",\n \"paramNames\": [\n \"sqrtRatioAX96\",\n \"sqrtRatioBX96\",\n \"amount1\"\n ],\n \"paramTypes\": [\n \"U256\",\n \"U256\",\n \"U256\"\n ],\n \"paramIsMutable\": [\n false,\n false,\n false\n ],\n \"returnTypes\": [\n \"U256\"\n ]\n },\n {\n \"name\": \"getLiquidityForAmounts\",\n \"paramNames\": [\n \"sqrtRatioX96\",\n \"sqrtRatioAX96\",\n \"sqrtRatioBX96\",\n \"amount0\",\n \"amount1\"\n ],\n \"paramTypes\": [\n \"U256\",\n \"U256\",\n \"U256\",\n \"U256\",\n \"U256\"\n ],\n \"paramIsMutable\": [\n false,\n false,\n false,\n false,\n false\n ],\n \"returnTypes\": [\n \"U256\"\n ]\n },\n {\n \"name\": \"getAmount0ForLiquidity\",\n \"paramNames\": [\n \"sqrtRatioAX96\",\n \"sqrtRatioBX96\",\n \"liquidity\"\n ],\n \"paramTypes\": [\n \"U256\",\n \"U256\",\n \"U256\"\n ],\n \"paramIsMutable\": [\n false,\n false,\n false\n ],\n \"returnTypes\": [\n \"U256\"\n ]\n },\n {\n \"name\": \"mulDiv\",\n \"paramNames\": [\n \"a\",\n \"b\",\n \"denominator\"\n ],\n \"paramTypes\": [\n \"U256\",\n \"U256\",\n \"U256\"\n ],\n \"paramIsMutable\": [\n false,\n false,\n true\n ],\n \"returnTypes\": [\n \"U256\"\n ]\n },\n {\n \"name\": \"mulDivRoundingUp\",\n \"paramNames\": [\n \"a\",\n \"b\",\n \"denominator\"\n ],\n \"paramTypes\": [\n \"U256\",\n \"U256\",\n \"U256\"\n ],\n \"paramIsMutable\": [\n false,\n false,\n false\n ],\n \"returnTypes\": [\n \"U256\"\n ]\n },\n {\n \"name\": \"configPath\",\n \"paramNames\": [\n \"configIndex_\"\n ],\n \"paramTypes\": [\n \"U256\"\n ],\n \"paramIsMutable\": [\n false\n ],\n \"returnTypes\": [\n \"ByteVec\"\n ]\n },\n {\n \"name\": \"poolPath\",\n \"paramNames\": [\n \"factory\",\n \"tokens\",\n \"configIndex_\"\n ],\n \"paramTypes\": [\n \"PoolFactory\",\n \"ByteVec\",\n \"U256\"\n ],\n \"paramIsMutable\": [\n false,\n false,\n false\n ],\n \"returnTypes\": [\n \"ByteVec\"\n ]\n },\n {\n \"name\": \"poolContractId\",\n \"paramNames\": [\n \"factory\",\n \"tokens\",\n \"configIndex_\"\n ],\n \"paramTypes\": [\n \"PoolFactory\",\n \"ByteVec\",\n \"U256\"\n ],\n \"paramIsMutable\": [\n false,\n false,\n false\n ],\n \"returnTypes\": [\n \"ByteVec\"\n ]\n },\n {\n \"name\": \"positionPath\",\n \"paramNames\": [\n \"o\",\n \"tickLower\",\n \"tickUpper\"\n ],\n \"paramTypes\": [\n \"Address\",\n \"I256\",\n \"I256\"\n ],\n \"paramIsMutable\": [\n false,\n false,\n false\n ],\n \"returnTypes\": [\n \"ByteVec\"\n ]\n },\n {\n \"name\": \"positionContractId\",\n \"paramNames\": [\n \"pool\",\n \"o\",\n \"tickLower\",\n \"tickUpper\"\n ],\n \"paramTypes\": [\n \"Pool\",\n \"Address\",\n \"I256\",\n \"I256\"\n ],\n \"paramIsMutable\": [\n false,\n false,\n false,\n false\n ],\n \"returnTypes\": [\n \"ByteVec\"\n ]\n },\n {\n \"name\": \"increaseLiquidity\",\n \"paramNames\": [\n \"payer\",\n \"p\"\n ],\n \"paramTypes\": [\n \"Address\",\n \"ModifyLiquidityParams\"\n ],\n \"paramIsMutable\": [\n false,\n false\n ],\n \"returnTypes\": []\n },\n {\n \"name\": \"decreaseLiquidity\",\n \"paramNames\": [\n \"operator\",\n \"liquidity\",\n \"p\"\n ],\n \"paramTypes\": [\n \"Address\",\n \"U256\",\n \"DecreaseLiquidityParams\"\n ],\n \"paramIsMutable\": [\n false,\n false,\n false\n ],\n \"returnTypes\": []\n },\n {\n \"name\": \"collect\",\n \"paramNames\": [\n \"operator\",\n \"liquidity\",\n \"p\"\n ],\n \"paramTypes\": [\n \"Address\",\n \"U256\",\n \"CollectParams\"\n ],\n \"paramIsMutable\": [\n false,\n false,\n false\n ],\n \"returnTypes\": []\n },\n {\n \"name\": \"getSqrtPricesX96\",\n \"paramNames\": [\n \"pool\",\n \"owner\",\n \"tickLower\",\n \"tickUpper\"\n ],\n \"paramTypes\": [\n \"Pool\",\n \"Address\",\n \"I256\",\n \"I256\"\n ],\n \"paramIsMutable\": [\n false,\n false,\n false,\n false\n ],\n \"returnTypes\": [\n \"U256\",\n \"U256\",\n \"U256\",\n \"U256\"\n ]\n }\n ],\n \"constants\": [],\n \"enums\": [\n {\n \"name\": \"LiquidityManagmentError\",\n \"fields\": [\n {\n \"name\": \"MintSlippage\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"850\"\n }\n },\n {\n \"name\": \"BurnSlippage\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"851\"\n }\n }\n ]\n },\n {\n \"name\": \"FullMathError\",\n \"fields\": [\n {\n \"name\": \"MulDivOverflow\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"351\"\n }\n }\n ]\n },\n {\n \"name\": \"PathPrefixes\",\n \"fields\": [\n {\n \"name\": \"Tick\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"0\"\n }\n },\n {\n \"name\": \"Position\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"1\"\n }\n },\n {\n \"name\": \"Word\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"2\"\n }\n }\n ]\n }\n ]\n}","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport {\n Address,\n Contract,\n ContractState,\n TestContractResult,\n HexString,\n ContractFactory,\n EventSubscribeOptions,\n EventSubscription,\n CallContractParams,\n CallContractResult,\n TestContractParams,\n ContractEvent,\n subscribeContractEvent,\n subscribeContractEvents,\n testMethod,\n callMethod,\n multicallMethods,\n fetchContractState,\n Asset,\n ContractInstance,\n getContractEventsCurrentCount,\n TestContractParamsWithoutMaps,\n TestContractResultWithoutMaps,\n SignExecuteContractMethodParams,\n SignExecuteScriptTxResult,\n signExecuteMethod,\n addStdIdToFields,\n encodeContractFields,\n Narrow,\n} from \"@alephium/web3\";\nimport { default as TestTokenContractJson } from \"../TestToken.ral.json\";\nimport { getContractByCodeHash, registerContract } from \"./contracts\";\nimport * as types from \"./types\";\n\n// Custom types for the contract\nexport namespace TestTokenTypes {\n export type Fields = {\n symbol: HexString;\n name: HexString;\n decimals: bigint;\n };\n\n export type State = ContractState<Fields>;\n\n export interface CallMethodTable {\n getSymbol: {\n params: Omit<CallContractParams<{}>, \"args\">;\n result: CallContractResult<HexString>;\n };\n getName: {\n params: Omit<CallContractParams<{}>, \"args\">;\n result: CallContractResult<HexString>;\n };\n getDecimals: {\n params: Omit<CallContractParams<{}>, \"args\">;\n result: CallContractResult<bigint>;\n };\n getTotalSupply: {\n params: Omit<CallContractParams<{}>, \"args\">;\n result: CallContractResult<bigint>;\n };\n }\n export type CallMethodParams<T extends keyof CallMethodTable> =\n CallMethodTable[T][\"params\"];\n export type CallMethodResult<T extends keyof CallMethodTable> =\n CallMethodTable[T][\"result\"];\n export type MultiCallParams = Partial<{\n [Name in keyof CallMethodTable]: CallMethodTable[Name][\"params\"];\n }>;\n export type MultiCallResults<T extends MultiCallParams> = {\n [MaybeName in keyof T]: MaybeName extends keyof CallMethodTable\n ? CallMethodTable[MaybeName][\"result\"]\n : undefined;\n };\n export type MulticallReturnType<Callss extends MultiCallParams[]> = {\n [index in keyof Callss]: MultiCallResults<Callss[index]>;\n };\n\n export interface SignExecuteMethodTable {\n getSymbol: {\n params: Omit<SignExecuteContractMethodParams<{}>, \"args\">;\n result: SignExecuteScriptTxResult;\n };\n getName: {\n params: Omit<SignExecuteContractMethodParams<{}>, \"args\">;\n result: SignExecuteScriptTxResult;\n };\n getDecimals: {\n params: Omit<SignExecuteContractMethodParams<{}>, \"args\">;\n result: SignExecuteScriptTxResult;\n };\n getTotalSupply: {\n params: Omit<SignExecuteContractMethodParams<{}>, \"args\">;\n result: SignExecuteScriptTxResult;\n };\n }\n export type SignExecuteMethodParams<T extends keyof SignExecuteMethodTable> =\n SignExecuteMethodTable[T][\"params\"];\n export type SignExecuteMethodResult<T extends keyof SignExecuteMethodTable> =\n SignExecuteMethodTable[T][\"result\"];\n}\n\nclass Factory extends ContractFactory<\n TestTokenInstance,\n TestTokenTypes.Fields\n> {\n encodeFields(fields: TestTokenTypes.Fields) {\n return encodeContractFields(\n addStdIdToFields(this.contract, fields),\n this.contract.fieldsSig,\n types.AllStructs\n );\n }\n\n at(address: string): TestTokenInstance {\n return new TestTokenInstance(address);\n }\n\n tests = {\n getSymbol: async (\n params: Omit<\n TestContractParamsWithoutMaps<TestTokenTypes.Fields, never>,\n \"args\"\n >\n ): Promise<TestContractResultWithoutMaps<HexString>> => {\n return testMethod(this, \"getSymbol\", params, getContractByCodeHash);\n },\n getName: async (\n params: Omit<\n TestContractParamsWithoutMaps<TestTokenTypes.Fields, never>,\n \"args\"\n >\n ): Promise<TestContractResultWithoutMaps<HexString>> => {\n return testMethod(this, \"getName\", params, getContractByCodeHash);\n },\n getDecimals: async (\n params: Omit<\n TestContractParamsWithoutMaps<TestTokenTypes.Fields, never>,\n \"args\"\n >\n ): Promise<TestContractResultWithoutMaps<bigint>> => {\n return testMethod(this, \"getDecimals\", params, getContractByCodeHash);\n },\n getTotalSupply: async (\n params: Omit<\n TestContractParamsWithoutMaps<TestTokenTypes.Fields, never>,\n \"args\"\n >\n ): Promise<TestContractResultWithoutMaps<bigint>> => {\n return testMethod(this, \"getTotalSupply\", params, getContractByCodeHash);\n },\n };\n\n stateForTest(\n initFields: TestTokenTypes.Fields,\n asset?: Asset,\n address?: string\n ) {\n return this.stateForTest_(initFields, asset, address, undefined);\n }\n}\n\n// Use this object to test and deploy the contract\nexport const TestToken = new Factory(\n Contract.fromJson(\n TestTokenContractJson,\n \"\",\n \"32d99ee24650d37c7111a9cc02ed2694b608e2d1b52301d27c6b28abc9ba94e9\",\n types.AllStructs\n )\n);\nregisterContract(TestToken);\n\n// Use this class to interact with the blockchain\nexport class TestTokenInstance extends ContractInstance {\n constructor(address: Address) {\n super(address);\n }\n\n async fetchState(): Promise<TestTokenTypes.State> {\n return fetchContractState(TestToken, this);\n }\n\n view = {\n getSymbol: async (\n params?: TestTokenTypes.CallMethodParams<\"getSymbol\">\n ): Promise<TestTokenTypes.CallMethodResult<\"getSymbol\">> => {\n return callMethod(\n TestToken,\n this,\n \"getSymbol\",\n params === undefined ? {} : params,\n getContractByCodeHash\n );\n },\n getName: async (\n params?: TestTokenTypes.CallMethodParams<\"getName\">\n ): Promise<TestTokenTypes.CallMethodResult<\"getName\">> => {\n return callMethod(\n TestToken,\n this,\n \"getName\",\n params === undefined ? {} : params,\n getContractByCodeHash\n );\n },\n getDecimals: async (\n params?: TestTokenTypes.CallMethodParams<\"getDecimals\">\n ): Promise<TestTokenTypes.CallMethodResult<\"getDecimals\">> => {\n return callMethod(\n TestToken,\n this,\n \"getDecimals\",\n params === undefined ? {} : params,\n getContractByCodeHash\n );\n },\n getTotalSupply: async (\n params?: TestTokenTypes.CallMethodParams<\"getTotalSupply\">\n ): Promise<TestTokenTypes.CallMethodResult<\"getTotalSupply\">> => {\n return callMethod(\n TestToken,\n this,\n \"getTotalSupply\",\n params === undefined ? {} : params,\n getContractByCodeHash\n );\n },\n };\n\n transact = {\n getSymbol: async (\n params: TestTokenTypes.SignExecuteMethodParams<\"getSymbol\">\n ): Promise<TestTokenTypes.SignExecuteMethodResult<\"getSymbol\">> => {\n return signExecuteMethod(TestToken, this, \"getSymbol\", params);\n },\n getName: async (\n params: TestTokenTypes.SignExecuteMethodParams<\"getName\">\n ): Promise<TestTokenTypes.SignExecuteMethodResult<\"getName\">> => {\n return signExecuteMethod(TestToken, this, \"getName\", params);\n },\n getDecimals: async (\n params: TestTokenTypes.SignExecuteMethodParams<\"getDecimals\">\n ): Promise<TestTokenTypes.SignExecuteMethodResult<\"getDecimals\">> => {\n return signExecuteMethod(TestToken, this, \"getDecimals\", params);\n },\n getTotalSupply: async (\n params: TestTokenTypes.SignExecuteMethodParams<\"getTotalSupply\">\n ): Promise<TestTokenTypes.SignExecuteMethodResult<\"getTotalSupply\">> => {\n return signExecuteMethod(TestToken, this, \"getTotalSupply\", params);\n },\n };\n\n async multicall<Calls extends TestTokenTypes.MultiCallParams>(\n calls: Calls\n ): Promise<TestTokenTypes.MultiCallResults<Calls>>;\n async multicall<Callss extends TestTokenTypes.MultiCallParams[]>(\n callss: Narrow<Callss>\n ): Promise<TestTokenTypes.MulticallReturnType<Callss>>;\n async multicall<\n Callss extends\n | TestTokenTypes.MultiCallParams\n | TestTokenTypes.MultiCallParams[]\n >(callss: Callss): Promise<unknown> {\n return await multicallMethods(\n TestToken,\n this,\n callss,\n getContractByCodeHash\n );\n }\n}\n","{\n \"version\": \"v4.3.0\",\n \"name\": \"TestToken\",\n \"bytecode\": \"040409121b4025010000000102ce0002010000000102ce0102010000000102ce02020100000001040c0d3602\",\n \"codeHash\": \"32d99ee24650d37c7111a9cc02ed2694b608e2d1b52301d27c6b28abc9ba94e9\",\n \"fieldsSig\": {\n \"names\": [\n \"symbol\",\n \"name\",\n \"decimals\",\n \"__stdInterfaceId\"\n ],\n \"types\": [\n \"ByteVec\",\n \"ByteVec\",\n \"U256\",\n \"ByteVec\"\n ],\n \"isMutable\": [\n false,\n false,\n false,\n false\n ]\n },\n \"eventsSig\": [],\n \"functions\": [\n {\n \"name\": \"getSymbol\",\n \"paramNames\": [],\n \"paramTypes\": [],\n \"paramIsMutable\": [],\n \"returnTypes\": [\n \"ByteVec\"\n ]\n },\n {\n \"name\": \"getName\",\n \"paramNames\": [],\n \"paramTypes\": [],\n \"paramIsMutable\": [],\n \"returnTypes\": [\n \"ByteVec\"\n ]\n },\n {\n \"name\": \"getDecimals\",\n \"paramNames\": [],\n \"paramTypes\": [],\n \"paramIsMutable\": [],\n \"returnTypes\": [\n \"U256\"\n ]\n },\n {\n \"name\": \"getTotalSupply\",\n \"paramNames\": [],\n \"paramTypes\": [],\n \"paramIsMutable\": [],\n \"returnTypes\": [\n \"U256\"\n ]\n }\n ],\n \"constants\": [],\n \"enums\": [],\n \"stdInterfaceId\": \"0001\"\n}","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport {\n Address,\n Contract,\n ContractState,\n TestContractResult,\n HexString,\n ContractFactory,\n EventSubscribeOptions,\n EventSubscription,\n CallContractParams,\n CallContractResult,\n TestContractParams,\n ContractEvent,\n subscribeContractEvent,\n subscribeContractEvents,\n testMethod,\n callMethod,\n multicallMethods,\n fetchContractState,\n Asset,\n ContractInstance,\n getContractEventsCurrentCount,\n TestContractParamsWithoutMaps,\n TestContractResultWithoutMaps,\n SignExecuteContractMethodParams,\n SignExecuteScriptTxResult,\n signExecuteMethod,\n addStdIdToFields,\n encodeContractFields,\n Narrow,\n} from \"@alephium/web3\";\nimport { default as TickContractJson } from \"../Tick.ral.json\";\nimport { getContractByCodeHash, registerContract } from \"./contracts\";\nimport * as types from \"./types\";\n\n// Custom types for the contract\nexport namespace TickTypes {\n export type Fields = {\n parent: Address;\n tick: bigint;\n liquidityGross: bigint;\n liquidityNet: bigint;\n feeGrowthsOutside: [bigint, bigint, bigint];\n };\n\n export type State = ContractState<Fields>;\n\n export interface CallMethodTable {\n update: {\n params: CallContractParams<{\n maxLiquidity: bigint;\n liquidityDelta: bigint;\n upper: boolean;\n }>;\n result: CallContractResult<boolean>;\n };\n feeGrowthBelow: {\n params: CallContractParams<{\n tickCurrent: bigint;\n globalGrowths: [bigint, bigint, bigint];\n }>;\n result: CallContractResult<[bigint, bigint, bigint]>;\n };\n feeGrowthAbove: {\n params: CallContractParams<{\n tickCurrent: bigint;\n globalGrowths: [bigint, bigint, bigint];\n }>;\n result: CallContractResult<[bigint, bigint, bigint]>;\n };\n clear: {\n params: CallContractParams<{ payer: Address }>;\n result: CallContractResult<null>;\n };\n cross: {\n params: CallContractParams<{\n globalGrowths: [bigint, bigint, bigint];\n zeroForOne: boolean;\n feeGrowthGlobalX128: bigint;\n }>;\n result: CallContractResult<bigint>;\n };\n getLiquidityNet: {\n params: Omit<CallContractParams<{}>, \"args\">;\n result: CallContractResult<bigint>;\n };\n }\n export type CallMethodParams<T extends keyof CallMethodTable> =\n CallMethodTable[T][\"params\"];\n export type CallMethodResult<T extends keyof CallMethodTable> =\n CallMethodTable[T][\"result\"];\n export type MultiCallParams = Partial<{\n [Name in keyof CallMethodTable]: CallMethodTable[Name][\"params\"];\n }>;\n export type MultiCallResults<T extends MultiCallParams> = {\n [MaybeName in keyof T]: MaybeName extends keyof CallMethodTable\n ? CallMethodTable[MaybeName][\"result\"]\n : undefined;\n };\n export type MulticallReturnType<Callss extends MultiCallParams[]> = {\n [index in keyof Callss]: MultiCallResults<Callss[index]>;\n };\n\n export interface SignExecuteMethodTable {\n update: {\n params: SignExecuteContractMethodParams<{\n maxLiquidity: bigint;\n liquidityDelta: bigint;\n upper: boolean;\n }>;\n result: SignExecuteScriptTxResult;\n };\n feeGrowthBelow: {\n params: SignExecuteContractMethodParams<{\n tickCurrent: bigint;\n globalGrowths: [bigint, bigint, bigint];\n }>;\n result: SignExecuteScriptTxResult;\n };\n feeGrowthAbove: {\n params: SignExecuteContractMethodParams<{\n tickCurrent: bigint;\n globalGrowths: [bigint, bigint, bigint];\n }>;\n result: SignExecuteScriptTxResult;\n };\n clear: {\n params: SignExecuteContractMethodParams<{ payer: Address }>;\n result: SignExecuteScriptTxResult;\n };\n cross: {\n params: SignExecuteContractMethodParams<{\n globalGrowths: [bigint, bigint, bigint];\n zeroForOne: boolean;\n feeGrowthGlobalX128: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n getLiquidityNet: {\n params: Omit<SignExecuteContractMethodParams<{}>, \"args\">;\n result: SignExecuteScriptTxResult;\n };\n }\n export type SignExecuteMethodParams<T extends keyof SignExecuteMethodTable> =\n SignExecuteMethodTable[T][\"params\"];\n export type SignExecuteMethodResult<T extends keyof SignExecuteMethodTable> =\n SignExecuteMethodTable[T][\"result\"];\n}\n\nclass Factory extends ContractFactory<TickInstance, TickTypes.Fields> {\n encodeFields(fields: TickTypes.Fields) {\n return encodeContractFields(\n addStdIdToFields(this.contract, fields),\n this.contract.fieldsSig,\n types.AllStructs\n );\n }\n\n consts = {\n TickError: {\n NotParent: BigInt(\"801\"),\n LO: BigInt(\"802\"),\n LS: BigInt(\"803\"),\n },\n };\n\n at(address: string): TickInstance {\n return new TickInstance(address);\n }\n\n tests = {\n update: async (\n params: TestContractParamsWithoutMaps<\n TickTypes.Fields,\n { maxLiquidity: bigint; liquidityDelta: bigint; upper: boolean }\n >\n ): Promise<TestContractResultWithoutMaps<boolean>> => {\n return testMethod(this, \"update\", params, getContractByCodeHash);\n },\n feeGrowthBelow: async (\n params: TestContractParamsWithoutMaps<\n TickTypes.Fields,\n { tickCurrent: bigint; globalGrowths: [bigint, bigint, bigint] }\n >\n ): Promise<TestContractResultWithoutMaps<[bigint, bigint, bigint]>> => {\n return testMethod(this, \"feeGrowthBelow\", params, getContractByCodeHash);\n },\n feeGrowthAbove: async (\n params: TestContractParamsWithoutMaps<\n TickTypes.Fields,\n { tickCurrent: bigint; globalGrowths: [bigint, bigint, bigint] }\n >\n ): Promise<TestContractResultWithoutMaps<[bigint, bigint, bigint]>> => {\n return testMethod(this, \"feeGrowthAbove\", params, getContractByCodeHash);\n },\n clear: async (\n params: TestContractParamsWithoutMaps<\n TickTypes.Fields,\n { payer: Address }\n >\n ): Promise<TestContractResultWithoutMaps<null>> => {\n return testMethod(this, \"clear\", params, getContractByCodeHash);\n },\n cross: async (\n params: TestContractParamsWithoutMaps<\n TickTypes.Fields,\n {\n globalGrowths: [bigint, bigint, bigint];\n zeroForOne: boolean;\n feeGrowthGlobalX128: bigint;\n }\n >\n ): Promise<TestContractResultWithoutMaps<bigint>> => {\n return testMethod(this, \"cross\", params, getContractByCodeHash);\n },\n getLiquidityNet: async (\n params: Omit<\n TestContractParamsWithoutMaps<TickTypes.Fields, never>,\n \"args\"\n >\n ): Promise<TestContractResultWithoutMaps<bigint>> => {\n return testMethod(this, \"getLiquidityNet\", params, getContractByCodeHash);\n },\n };\n\n stateForTest(initFields: TickTypes.Fields, asset?: Asset, address?: string) {\n return this.stateForTest_(initFields, asset, address, undefined);\n }\n}\n\n// Use this object to test and deploy the contract\nexport const Tick = new Factory(\n Contract.fromJson(\n TickContractJson,\n \"\",\n \"1373551ca890d886980b8d33277d7ed7a2c9f7665d77a1e893a1f2554d10d4b1\",\n types.AllStructs\n )\n);\nregisterContract(Tick);\n\n// Use this class to interact with the blockchain\nexport class TickInstance extends ContractInstance {\n constructor(address: Address) {\n super(address);\n }\n\n async fetchState(): Promise<TickTypes.State> {\n return fetchContractState(Tick, this);\n }\n\n view = {\n update: async (\n params: TickTypes.CallMethodParams<\"update\">\n ): Promise<TickTypes.CallMethodResult<\"update\">> => {\n return callMethod(Tick, this, \"update\", params, getContractByCodeHash);\n },\n feeGrowthBelow: async (\n params: TickTypes.CallMethodParams<\"feeGrowthBelow\">\n ): Promise<TickTypes.CallMethodResult<\"feeGrowthBelow\">> => {\n return callMethod(\n Tick,\n this,\n \"feeGrowthBelow\",\n params,\n getContractByCodeHash\n );\n },\n feeGrowthAbove: async (\n params: TickTypes.CallMethodParams<\"feeGrowthAbove\">\n ): Promise<TickTypes.CallMethodResult<\"feeGrowthAbove\">> => {\n return callMethod(\n Tick,\n this,\n \"feeGrowthAbove\",\n params,\n getContractByCodeHash\n );\n },\n clear: async (\n params: TickTypes.CallMethodParams<\"clear\">\n ): Promise<TickTypes.CallMethodResult<\"clear\">> => {\n return callMethod(Tick, this, \"clear\", params, getContractByCodeHash);\n },\n cross: async (\n params: TickTypes.CallMethodParams<\"cross\">\n ): Promise<TickTypes.CallMethodResult<\"cross\">> => {\n return callMethod(Tick, this, \"cross\", params, getContractByCodeHash);\n },\n getLiquidityNet: async (\n params?: TickTypes.CallMethodParams<\"getLiquidityNet\">\n ): Promise<TickTypes.CallMethodResult<\"getLiquidityNet\">> => {\n return callMethod(\n Tick,\n this,\n \"getLiquidityNet\",\n params === undefined ? {} : params,\n getContractByCodeHash\n );\n },\n };\n\n transact = {\n update: async (\n params: TickTypes.SignExecuteMethodParams<\"update\">\n ): Promise<TickTypes.SignExecuteMethodResult<\"update\">> => {\n return signExecuteMethod(Tick, this, \"update\", params);\n },\n feeGrowthBelow: async (\n params: TickTypes.SignExecuteMethodParams<\"feeGrowthBelow\">\n ): Promise<TickTypes.SignExecuteMethodResult<\"feeGrowthBelow\">> => {\n return signExecuteMethod(Tick, this, \"feeGrowthBelow\", params);\n },\n feeGrowthAbove: async (\n params: TickTypes.SignExecuteMethodParams<\"feeGrowthAbove\">\n ): Promise<TickTypes.SignExecuteMethodResult<\"feeGrowthAbove\">> => {\n return signExecuteMethod(Tick, this, \"feeGrowthAbove\", params);\n },\n clear: async (\n params: TickTypes.SignExecuteMethodParams<\"clear\">\n ): Promise<TickTypes.SignExecuteMethodResult<\"clear\">> => {\n return signExecuteMethod(Tick, this, \"clear\", params);\n },\n cross: async (\n params: TickTypes.SignExecuteMethodParams<\"cross\">\n ): Promise<TickTypes.SignExecuteMethodResult<\"cross\">> => {\n return signExecuteMethod(Tick, this, \"cross\", params);\n },\n getLiquidityNet: async (\n params: TickTypes.SignExecuteMethodParams<\"getLiquidityNet\">\n ): Promise<TickTypes.SignExecuteMethodResult<\"getLiquidityNet\">> => {\n return signExecuteMethod(Tick, this, \"getLiquidityNet\", params);\n },\n };\n\n async multicall<Calls extends TickTypes.MultiCallParams>(\n calls: Calls\n ): Promise<TickTypes.MultiCallResults<Calls>>;\n async multicall<Callss extends TickTypes.MultiCallParams[]>(\n callss: Narrow<Callss>\n ): Promise<TickTypes.MulticallReturnType<Callss>>;\n async multicall<\n Callss extends TickTypes.MultiCallParams | TickTypes.MultiCallParams[]\n >(callss: Callss): Promise<unknown> {\n return await multicallMethods(Tick, this, callss, getContractByCodeHash);\n }\n}\n","{\n \"version\": \"v4.3.0\",\n \"name\": \"Tick\",\n \"bytecode\": \"0706405140a340f5410b416541730100030601402ad344ba8eddb4ce00451343217ba000170316033f16011f1704160405291343237b16043d170516051600321343227b1605a10016024c04a0011601204a03a00116011fa10116050c2f0201000405034032d3cfc5e9a41600ce01294c05a002a003a004024a40280c170416040f314c1e16047a0f314d0d2a7816047a0f314d0e2ac32b16047a0f314d0d2a7916040d2a17044a7fde1601160216030201000405034032d36efb0f181600ce01264c05a002a003a004024a40280c170416040f314c1e16047a0f314d0d2a7816047a0f314d0e2ac32b16047a0f314d0d2a7916040d2a17044a7fde16011602160302010201010008d3b0cd421fb4ce00451343217b1600b001000506014035d336cb1526b4ce00451343217b16034c03160417004a02160417010c170516050f314c1a16057a0f314d7816057a0f314d0e2ac32b16057a0f314d7916050d2a17054a22160016011602a104a103a102a00102010000000103d3602bc55da00102\",\n \"codeHash\": \"1373551ca890d886980b8d33277d7ed7a2c9f7665d77a1e893a1f2554d10d4b1\",\n \"fieldsSig\": {\n \"names\": [\n \"parent\",\n \"tick\",\n \"liquidityGross\",\n \"liquidityNet\",\n \"feeGrowthsOutside\"\n ],\n \"types\": [\n \"Address\",\n \"I256\",\n \"U256\",\n \"I256\",\n \"[U256;3]\"\n ],\n \"isMutable\": [\n false,\n false,\n true,\n true,\n true\n ]\n },\n \"eventsSig\": [],\n \"functions\": [\n {\n \"name\": \"update\",\n \"paramNames\": [\n \"maxLiquidity\",\n \"liquidityDelta\",\n \"upper\"\n ],\n \"paramTypes\": [\n \"U256\",\n \"I256\",\n \"Bool\"\n ],\n \"paramIsMutable\": [\n false,\n false,\n false\n ],\n \"returnTypes\": [\n \"Bool\"\n ]\n },\n {\n \"name\": \"feeGrowthBelow\",\n \"paramNames\": [\n \"tickCurrent\",\n \"globalGrowths\"\n ],\n \"paramTypes\": [\n \"I256\",\n \"[U256;3]\"\n ],\n \"paramIsMutable\": [\n false,\n true\n ],\n \"returnTypes\": [\n \"[U256;3]\"\n ]\n },\n {\n \"name\": \"feeGrowthAbove\",\n \"paramNames\": [\n \"tickCurrent\",\n \"globalGrowths\"\n ],\n \"paramTypes\": [\n \"I256\",\n \"[U256;3]\"\n ],\n \"paramIsMutable\": [\n false,\n true\n ],\n \"returnTypes\": [\n \"[U256;3]\"\n ]\n },\n {\n \"name\": \"clear\",\n \"paramNames\": [\n \"payer\"\n ],\n \"paramTypes\": [\n \"Address\"\n ],\n \"paramIsMutable\": [\n false\n ],\n \"returnTypes\": []\n },\n {\n \"name\": \"cross\",\n \"paramNames\": [\n \"globalGrowths\",\n \"zeroForOne\",\n \"feeGrowthGlobalX128\"\n ],\n \"paramTypes\": [\n \"[U256;3]\",\n \"Bool\",\n \"U256\"\n ],\n \"paramIsMutable\": [\n true,\n false,\n false\n ],\n \"returnTypes\": [\n \"I256\"\n ]\n },\n {\n \"name\": \"getLiquidityNet\",\n \"paramNames\": [],\n \"paramTypes\": [],\n \"paramIsMutable\": [],\n \"returnTypes\": [\n \"I256\"\n ]\n }\n ],\n \"constants\": [],\n \"enums\": [\n {\n \"name\": \"TickError\",\n \"fields\": [\n {\n \"name\": \"NotParent\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"801\"\n }\n },\n {\n \"name\": \"LO\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"802\"\n }\n },\n {\n \"name\": \"LS\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"803\"\n }\n }\n ]\n }\n ]\n}","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport {\n Address,\n Contract,\n ContractState,\n TestContractResult,\n HexString,\n ContractFactory,\n EventSubscribeOptions,\n EventSubscription,\n CallContractParams,\n CallContractResult,\n TestContractParams,\n ContractEvent,\n subscribeContractEvent,\n subscribeContractEvents,\n testMethod,\n callMethod,\n multicallMethods,\n fetchContractState,\n Asset,\n ContractInstance,\n getContractEventsCurrentCount,\n TestContractParamsWithoutMaps,\n TestContractResultWithoutMaps,\n SignExecuteContractMethodParams,\n SignExecuteScriptTxResult,\n signExecuteMethod,\n addStdIdToFields,\n encodeContractFields,\n Narrow,\n} from \"@alephium/web3\";\nimport { default as TickBitmapTestContractJson } from \"../TickBitmapTest.ral.json\";\nimport { getContractByCodeHash, registerContract } from \"./contracts\";\nimport * as types from \"./types\";\n\n// Custom types for the contract\nexport namespace TickBitmapTestTypes {\n export type Fields = {\n wordTemplate: HexString;\n tickSpacing: bigint;\n };\n\n export type State = ContractState<Fields>;\n\n export interface CallMethodTable {\n wordPath: {\n params: CallContractParams<{ compressed: bigint }>;\n result: CallContractResult<HexString>;\n };\n getWord: {\n params: CallContractParams<{ compressed: bigint }>;\n result: CallContractResult<HexString>;\n };\n getWordOrTemplate: {\n params: CallContractParams<{ compressed: bigint }>;\n result: CallContractResult<HexString>;\n };\n flipTick: {\n params: CallContractParams<{ tick: bigint }>;\n result: CallContractResult<null>;\n };\n nextInitializedTickWithinOneWord: {\n params: CallContractParams<{ tick: bigint; zeroForOne: boolean }>;\n result: CallContractResult<[bigint, boolean]>;\n };\n positionPath: {\n params: CallContractParams<{\n o: Address;\n tickLower: bigint;\n tickUpper: bigint;\n }>;\n result: CallContractResult<HexString>;\n };\n positionContractId: {\n params: CallContractParams<{\n pool: HexString;\n o: Address;\n tickLower: bigint;\n tickUpper: bigint;\n }>;\n result: CallContractResult<HexString>;\n };\n deploy: {\n params: CallContractParams<{\n payer: Address;\n word: HexString;\n ts: bigint;\n }>;\n result: CallContractResult<HexString>;\n };\n flipTick_: {\n params: CallContractParams<{ tick: bigint }>;\n result: CallContractResult<null>;\n };\n }\n export type CallMethodParams<T extends keyof CallMethodTable> =\n CallMethodTable[T][\"params\"];\n export type CallMethodResult<T extends keyof CallMethodTable> =\n CallMethodTable[T][\"result\"];\n export type MultiCallParams = Partial<{\n [Name in keyof CallMethodTable]: CallMethodTable[Name][\"params\"];\n }>;\n export type MultiCallResults<T extends MultiCallParams> = {\n [MaybeName in keyof T]: MaybeName extends keyof CallMethodTable\n ? CallMethodTable[MaybeName][\"result\"]\n : undefined;\n };\n export type MulticallReturnType<Callss extends MultiCallParams[]> = {\n [index in keyof Callss]: MultiCallResults<Callss[index]>;\n };\n\n export interface SignExecuteMethodTable {\n wordPath: {\n params: SignExecuteContractMethodParams<{ compressed: bigint }>;\n result: SignExecuteScriptTxResult;\n };\n getWord: {\n params: SignExecuteContractMethodParams<{ compressed: bigint }>;\n result: SignExecuteScriptTxResult;\n };\n getWordOrTemplate: {\n params: SignExecuteContractMethodParams<{ compressed: bigint }>;\n result: SignExecuteScriptTxResult;\n };\n flipTick: {\n params: SignExecuteContractMethodParams<{ tick: bigint }>;\n result: SignExecuteScriptTxResult;\n };\n nextInitializedTickWithinOneWord: {\n params: SignExecuteContractMethodParams<{\n tick: bigint;\n zeroForOne: boolean;\n }>;\n result: SignExecuteScriptTxResult;\n };\n positionPath: {\n params: SignExecuteContractMethodParams<{\n o: Address;\n tickLower: bigint;\n tickUpper: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n positionContractId: {\n params: SignExecuteContractMethodParams<{\n pool: HexString;\n o: Address;\n tickLower: bigint;\n tickUpper: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n deploy: {\n params: SignExecuteContractMethodParams<{\n payer: Address;\n word: HexString;\n ts: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n flipTick_: {\n params: SignExecuteContractMethodParams<{ tick: bigint }>;\n result: SignExecuteScriptTxResult;\n };\n }\n export type SignExecuteMethodParams<T extends keyof SignExecuteMethodTable> =\n SignExecuteMethodTable[T][\"params\"];\n export type SignExecuteMethodResult<T extends keyof SignExecuteMethodTable> =\n SignExecuteMethodTable[T][\"result\"];\n}\n\nclass Factory extends ContractFactory<\n TickBitmapTestInstance,\n TickBitmapTestTypes.Fields\n> {\n encodeFields(fields: TickBitmapTestTypes.Fields) {\n return encodeContractFields(\n addStdIdToFields(this.contract, fields),\n this.contract.fieldsSig,\n types.AllStructs\n );\n }\n\n consts = {\n TickBitmapError: { TickNotAligned: BigInt(\"301\") },\n PathPrefixes: {\n Tick: BigInt(\"0\"),\n Position: BigInt(\"1\"),\n Word: BigInt(\"2\"),\n },\n };\n\n at(address: string): TickBitmapTestInstance {\n return new TickBitmapTestInstance(address);\n }\n\n tests = {\n wordPath: async (\n params: TestContractParamsWithoutMaps<\n TickBitmapTestTypes.Fields,\n { compressed: bigint }\n >\n ): Promise<TestContractResultWithoutMaps<HexString>> => {\n return testMethod(this, \"wordPath\", params, getContractByCodeHash);\n },\n getWord: async (\n params: TestContractParamsWithoutMaps<\n TickBitmapTestTypes.Fields,\n { compressed: bigint }\n >\n ): Promise<TestContractResultWithoutMaps<HexString>> => {\n return testMethod(this, \"getWord\", params, getContractByCodeHash);\n },\n getWordOrTemplate: async (\n params: TestContractParamsWithoutMaps<\n TickBitmapTestTypes.Fields,\n { compressed: bigint }\n >\n ): Promise<TestContractResultWithoutMaps<HexString>> => {\n return testMethod(\n this,\n \"getWordOrTemplate\",\n params,\n getContractByCodeHash\n );\n },\n flipTick: async (\n params: TestContractParamsWithoutMaps<\n TickBitmapTestTypes.Fields,\n { tick: bigint }\n >\n ): Promise<TestContractResultWithoutMaps<null>> => {\n return testMethod(this, \"flipTick\", params, getContractByCodeHash);\n },\n nextInitializedTickWithinOneWord: async (\n params: TestContractParamsWithoutMaps<\n TickBitmapTestTypes.Fields,\n { tick: bigint; zeroForOne: boolean }\n >\n ): Promise<TestContractResultWithoutMaps<[bigint, boolean]>> => {\n return testMethod(\n this,\n \"nextInitializedTickWithinOneWord\",\n params,\n getContractByCodeHash\n );\n },\n positionPath: async (\n params: TestContractParamsWithoutMaps<\n TickBitmapTestTypes.Fields,\n { o: Address; tickLower: bigint; tickUpper: bigint }\n >\n ): Promise<TestContractResultWithoutMaps<HexString>> => {\n return testMethod(this, \"positionPath\", params, getContractByCodeHash);\n },\n positionContractId: async (\n params: TestContractParamsWithoutMaps<\n TickBitmapTestTypes.Fields,\n { pool: HexString; o: Address; tickLower: bigint; tickUpper: bigint }\n >\n ): Promise<TestContractResultWithoutMaps<HexString>> => {\n return testMethod(\n this,\n \"positionContractId\",\n params,\n getContractByCodeHash\n );\n },\n deploy: async (\n params: TestContractParamsWithoutMaps<\n TickBitmapTestTypes.Fields,\n { payer: Address; word: HexString; ts: bigint }\n >\n ): Promise<TestContractResultWithoutMaps<HexString>> => {\n return testMethod(this, \"deploy\", params, getContractByCodeHash);\n },\n flipTick_: async (\n params: TestContractParamsWithoutMaps<\n TickBitmapTestTypes.Fields,\n { tick: bigint }\n >\n ): Promise<TestContractResultWithoutMaps<null>> => {\n return testMethod(this, \"flipTick_\", params, getContractByCodeHash);\n },\n };\n\n stateForTest(\n initFields: TickBitmapTestTypes.Fields,\n asset?: Asset,\n address?: string\n ) {\n return this.stateForTest_(initFields, asset, address, undefined);\n }\n}\n\n// Use this object to test and deploy the contract\nexport const TickBitmapTest = new Factory(\n Contract.fromJson(\n TickBitmapTestContractJson,\n \"\",\n \"5cb6cce5c5b8adb88a18a993227d51465e3e54b5a34936cafc51100725724b54\",\n types.AllStructs\n )\n);\nregisterContract(TickBitmapTest);\n\n// Use this class to interact with the blockchain\nexport class TickBitmapTestInstance extends ContractInstance {\n constructor(address: Address) {\n super(address);\n }\n\n async fetchState(): Promise<TickBitmapTestTypes.State> {\n return fetchContractState(TickBitmapTest, this);\n }\n\n view = {\n wordPath: async (\n params: TickBitmapTestTypes.CallMethodParams<\"wordPath\">\n ): Promise<TickBitmapTestTypes.CallMethodResult<\"wordPath\">> => {\n return callMethod(\n TickBitmapTest,\n this,\n \"wordPath\",\n params,\n getContractByCodeHash\n );\n },\n getWord: async (\n params: TickBitmapTestTypes.CallMethodParams<\"getWord\">\n ): Promise<TickBitmapTestTypes.CallMethodResult<\"getWord\">> => {\n return callMethod(\n TickBitmapTest,\n this,\n \"getWord\",\n params,\n getContractByCodeHash\n );\n },\n getWordOrTemplate: async (\n params: TickBitmapTestTypes.CallMethodParams<\"getWordOrTemplate\">\n ): Promise<TickBitmapTestTypes.CallMethodResult<\"getWordOrTemplate\">> => {\n return callMethod(\n TickBitmapTest,\n this,\n \"getWordOrTemplate\",\n params,\n getContractByCodeHash\n );\n },\n flipTick: async (\n params: TickBitmapTestTypes.CallMethodParams<\"flipTick\">\n ): Promise<TickBitmapTestTypes.CallMethodResult<\"flipTick\">> => {\n return callMethod(\n TickBitmapTest,\n this,\n \"flipTick\",\n params,\n getContractByCodeHash\n );\n },\n nextInitializedTickWithinOneWord: async (\n params: TickBitmapTestTypes.CallMethodParams<\"nextInitializedTickWithinOneWord\">\n ): Promise<\n TickBitmapTestTypes.CallMethodResult<\"nextInitializedTickWithinOneWord\">\n > => {\n return callMethod(\n TickBitmapTest,\n this,\n \"nextInitializedTickWithinOneWord\",\n params,\n getContractByCodeHash\n );\n },\n positionPath: async (\n params: TickBitmapTestTypes.CallMethodParams<\"positionPath\">\n ): Promise<TickBitmapTestTypes.CallMethodResult<\"positionPath\">> => {\n return callMethod(\n TickBitmapTest,\n this,\n \"positionPath\",\n params,\n getContractByCodeHash\n );\n },\n positionContractId: async (\n params: TickBitmapTestTypes.CallMethodParams<\"positionContractId\">\n ): Promise<TickBitmapTestTypes.CallMethodResult<\"positionContractId\">> => {\n return callMethod(\n TickBitmapTest,\n this,\n \"positionContractId\",\n params,\n getContractByCodeHash\n );\n },\n deploy: async (\n params: TickBitmapTestTypes.CallMethodParams<\"deploy\">\n ): Promise<TickBitmapTestTypes.CallMethodResult<\"deploy\">> => {\n return callMethod(\n TickBitmapTest,\n this,\n \"deploy\",\n params,\n getContractByCodeHash\n );\n },\n flipTick_: async (\n params: TickBitmapTestTypes.CallMethodParams<\"flipTick_\">\n ): Promise<TickBitmapTestTypes.CallMethodResult<\"flipTick_\">> => {\n return callMethod(\n TickBitmapTest,\n this,\n \"flipTick_\",\n params,\n getContractByCodeHash\n );\n },\n };\n\n transact = {\n wordPath: async (\n params: TickBitmapTestTypes.SignExecuteMethodParams<\"wordPath\">\n ): Promise<TickBitmapTestTypes.SignExecuteMethodResult<\"wordPath\">> => {\n return signExecuteMethod(TickBitmapTest, this, \"wordPath\", params);\n },\n getWord: async (\n params: TickBitmapTestTypes.SignExecuteMethodParams<\"getWord\">\n ): Promise<TickBitmapTestTypes.SignExecuteMethodResult<\"getWord\">> => {\n return signExecuteMethod(TickBitmapTest, this, \"getWord\", params);\n },\n getWordOrTemplate: async (\n params: TickBitmapTestTypes.SignExecuteMethodParams<\"getWordOrTemplate\">\n ): Promise<\n TickBitmapTestTypes.SignExecuteMethodResult<\"getWordOrTemplate\">\n > => {\n return signExecuteMethod(\n TickBitmapTest,\n this,\n \"getWordOrTemplate\",\n params\n );\n },\n flipTick: async (\n params: TickBitmapTestTypes.SignExecuteMethodParams<\"flipTick\">\n ): Promise<TickBitmapTestTypes.SignExecuteMethodResult<\"flipTick\">> => {\n return signExecuteMethod(TickBitmapTest, this, \"flipTick\", params);\n },\n nextInitializedTickWithinOneWord: async (\n params: TickBitmapTestTypes.SignExecuteMethodParams<\"nextInitializedTickWithinOneWord\">\n ): Promise<\n TickBitmapTestTypes.SignExecuteMethodResult<\"nextInitializedTickWithinOneWord\">\n > => {\n return signExecuteMethod(\n TickBitmapTest,\n this,\n \"nextInitializedTickWithinOneWord\",\n params\n );\n },\n positionPath: async (\n params: TickBitmapTestTypes.SignExecuteMethodParams<\"positionPath\">\n ): Promise<TickBitmapTestTypes.SignExecuteMethodResult<\"positionPath\">> => {\n return signExecuteMethod(TickBitmapTest, this, \"positionPath\", params);\n },\n positionContractId: async (\n params: TickBitmapTestTypes.SignExecuteMethodParams<\"positionContractId\">\n ): Promise<\n TickBitmapTestTypes.SignExecuteMethodResult<\"positionContractId\">\n > => {\n return signExecuteMethod(\n TickBitmapTest,\n this,\n \"positionContractId\",\n params\n );\n },\n deploy: async (\n params: TickBitmapTestTypes.SignExecuteMethodParams<\"deploy\">\n ): Promise<TickBitmapTestTypes.SignExecuteMethodResult<\"deploy\">> => {\n return signExecuteMethod(TickBitmapTest, this, \"deploy\", params);\n },\n flipTick_: async (\n params: TickBitmapTestTypes.SignExecuteMethodParams<\"flipTick_\">\n ): Promise<TickBitmapTestTypes.SignExecuteMethodResult<\"flipTick_\">> => {\n return signExecuteMethod(TickBitmapTest, this, \"flipTick_\", params);\n },\n };\n\n async multicall<Calls extends TickBitmapTestTypes.MultiCallParams>(\n calls: Calls\n ): Promise<TickBitmapTestTypes.MultiCallResults<Calls>>;\n async multicall<Callss extends TickBitmapTestTypes.MultiCallParams[]>(\n callss: Narrow<Callss>\n ): Promise<TickBitmapTestTypes.MulticallReturnType<Callss>>;\n async multicall<\n Callss extends\n | TickBitmapTestTypes.MultiCallParams\n | TickBitmapTestTypes.MultiCallParams[]\n >(callss: Callss): Promise<unknown> {\n return await multicallMethods(\n TickBitmapTest,\n this,\n callss,\n getContractByCodeHash\n );\n }\n}\n","{\n \"version\": \"v4.3.0\",\n \"name\": \"TickBitmapTest\",\n \"bytecode\": \"02091e4050406c409f410041164131415941680000010101120e16007a7a1241003a7a05294b033a904a023a221302640200000105011b1600000017011601cb17021602c54c02160202b21301640c130164170417031601ce0016031604c11816020200000103010d1600000017011601cb17021602c54c02160202ce000200000103001e1600ce0123052413412d7b16007a7ace013a7a05294b033a904a023a22170116010001170216010d0c160201020000020602403016007a7ace013a7a05294b033a904a023a2216014c02054a01061f170216020002170316021601ce010f0e1603010317051704160412bff27618264c0212bff276181704160412800d89e8284c0212800d89e817041604160502010003030108d37afb14100d1600160116021304640201000405010ad35b19984c1601160216030005170416001604cc02010303060113d3b7624ae716011602130264130064170417031600d1a2b116031604af1705160502010001010003d3a2f62a8d16000003\",\n \"codeHash\": \"5cb6cce5c5b8adb88a18a993227d51465e3e54b5a34936cafc51100725724b54\",\n \"fieldsSig\": {\n \"names\": [\n \"wordTemplate\",\n \"tickSpacing\"\n ],\n \"types\": [\n \"ByteVec\",\n \"I256\"\n ],\n \"isMutable\": [\n false,\n false\n ]\n },\n \"eventsSig\": [],\n \"functions\": [\n {\n \"name\": \"wordPath\",\n \"paramNames\": [\n \"compressed\"\n ],\n \"paramTypes\": [\n \"I256\"\n ],\n \"paramIsMutable\": [\n false\n ],\n \"returnTypes\": [\n \"ByteVec\"\n ]\n },\n {\n \"name\": \"getWord\",\n \"paramNames\": [\n \"compressed\"\n ],\n \"paramTypes\": [\n \"I256\"\n ],\n \"paramIsMutable\": [\n false\n ],\n \"returnTypes\": [\n \"BitmapWord\"\n ]\n },\n {\n \"name\": \"getWordOrTemplate\",\n \"paramNames\": [\n \"compressed\"\n ],\n \"paramTypes\": [\n \"I256\"\n ],\n \"paramIsMutable\": [\n false\n ],\n \"returnTypes\": [\n \"BitmapWord\"\n ]\n },\n {\n \"name\": \"flipTick\",\n \"paramNames\": [\n \"tick\"\n ],\n \"paramTypes\": [\n \"I256\"\n ],\n \"paramIsMutable\": [\n false\n ],\n \"returnTypes\": []\n },\n {\n \"name\": \"nextInitializedTickWithinOneWord\",\n \"paramNames\": [\n \"tick\",\n \"zeroForOne\"\n ],\n \"paramTypes\": [\n \"I256\",\n \"Bool\"\n ],\n \"paramIsMutable\": [\n false,\n false\n ],\n \"returnTypes\": [\n \"I256\",\n \"Bool\"\n ]\n },\n {\n \"name\": \"positionPath\",\n \"paramNames\": [\n \"o\",\n \"tickLower\",\n \"tickUpper\"\n ],\n \"paramTypes\": [\n \"Address\",\n \"I256\",\n \"I256\"\n ],\n \"paramIsMutable\": [\n false,\n false,\n false\n ],\n \"returnTypes\": [\n \"ByteVec\"\n ]\n },\n {\n \"name\": \"positionContractId\",\n \"paramNames\": [\n \"pool\",\n \"o\",\n \"tickLower\",\n \"tickUpper\"\n ],\n \"paramTypes\": [\n \"Pool\",\n \"Address\",\n \"I256\",\n \"I256\"\n ],\n \"paramIsMutable\": [\n false,\n false,\n false,\n false\n ],\n \"returnTypes\": [\n \"ByteVec\"\n ]\n },\n {\n \"name\": \"deploy\",\n \"paramNames\": [\n \"payer\",\n \"word\",\n \"ts\"\n ],\n \"paramTypes\": [\n \"Address\",\n \"BitmapWord\",\n \"I256\"\n ],\n \"paramIsMutable\": [\n false,\n false,\n false\n ],\n \"returnTypes\": [\n \"TickBitmapTest\"\n ]\n },\n {\n \"name\": \"flipTick_\",\n \"paramNames\": [\n \"tick\"\n ],\n \"paramTypes\": [\n \"I256\"\n ],\n \"paramIsMutable\": [\n false\n ],\n \"returnTypes\": []\n }\n ],\n \"constants\": [],\n \"enums\": [\n {\n \"name\": \"TickBitmapError\",\n \"fields\": [\n {\n \"name\": \"TickNotAligned\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"301\"\n }\n }\n ]\n },\n {\n \"name\": \"PathPrefixes\",\n \"fields\": [\n {\n \"name\": \"Tick\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"0\"\n }\n },\n {\n \"name\": \"Position\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"1\"\n }\n },\n {\n \"name\": \"Word\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"2\"\n }\n }\n ]\n }\n ]\n}","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport {\n Address,\n ExecutableScript,\n ExecuteScriptParams,\n ExecuteScriptResult,\n Script,\n SignerProvider,\n HexString,\n} from \"@alephium/web3\";\nimport { getContractByCodeHash } from \"./contracts\";\nimport { default as CreateConfigScriptJson } from \"../CreateConfig.ral.json\";\nimport { default as CreateLiquidPoolScriptJson } from \"../CreateLiquidPool.ral.json\";\nimport { default as PoolRouterDemoScriptJson } from \"../PoolRouterDemo.ral.json\";\nimport { default as SwapWithoutAccountScriptJson } from \"../SwapWithoutAccount.ral.json\";\nimport * as types from \"./types\";\n\nexport const CreateConfig = new ExecutableScript<{\n factory: HexString;\n tickSpacing: bigint;\n fee: bigint;\n feeProtocol: bigint;\n configIndex: bigint;\n}>(\n Script.fromJson(CreateConfigScriptJson, \"\", types.AllStructs),\n getContractByCodeHash\n);\n\nexport const CreateLiquidPool = new ExecutableScript<{\n factory: HexString;\n token0: HexString;\n token1: HexString;\n configIndex: bigint;\n sqrtPriceX96: bigint;\n rewardToken: HexString;\n tickLower: bigint;\n tickUpper: bigint;\n liquidity: bigint;\n amount0: bigint;\n amount1: bigint;\n}>(\n Script.fromJson(CreateLiquidPoolScriptJson, \"\", types.AllStructs),\n getContractByCodeHash\n);\n\nexport const PoolRouterDemo = new ExecutableScript<{\n pool_: HexString;\n position_: HexString;\n tick_: HexString;\n word_: HexString;\n factory_: HexString;\n user_: HexString;\n config_: HexString;\n dexAccount_: HexString;\n counter: bigint;\n}>(\n Script.fromJson(PoolRouterDemoScriptJson, \"\", types.AllStructs),\n getContractByCodeHash\n);\n\nexport const SwapWithoutAccount = new ExecutableScript<{\n dexAccount: HexString;\n pool: HexString;\n tokenIn: HexString;\n tokenOut: HexString;\n zeroForOne: boolean;\n amountSpecified: bigint;\n sqrtPriceLimitX96: bigint;\n data: HexString;\n}>(\n Script.fromJson(SwapWithoutAccountScriptJson, \"\", types.AllStructs),\n getContractByCodeHash\n);\n","{\n \"version\": \"v4.3.0\",\n \"name\": \"CreateConfig\",\n \"bytecodeTemplate\": \"01010300010011{0}{4}40cc17001600c5194c08{1}{2}{3}0f0d{0}010418\",\n \"fieldsSig\": {\n \"names\": [\n \"factory\",\n \"tickSpacing\",\n \"fee\",\n \"feeProtocol\",\n \"configIndex\"\n ],\n \"types\": [\n \"PoolFactory\",\n \"I256\",\n \"U256\",\n \"U256\",\n \"U256\"\n ],\n \"isMutable\": [\n false,\n false,\n false,\n false,\n false\n ]\n },\n \"functions\": [\n {\n \"name\": \"main\",\n \"paramNames\": [],\n \"paramTypes\": [],\n \"paramIsMutable\": [],\n \"returnTypes\": []\n }\n ]\n}","{\n \"version\": \"v4.3.0\",\n \"name\": \"CreateLiquidPool\",\n \"bytecodeTemplate\": \"0101030002001fb41700{1}{2}{3}{4}{5}110d{0}0105170116007a{1}{9}a3{2}{10}a316001600{6}{7}{8}110e160101251818\",\n \"fieldsSig\": {\n \"names\": [\n \"factory\",\n \"token0\",\n \"token1\",\n \"configIndex\",\n \"sqrtPriceX96\",\n \"rewardToken\",\n \"tickLower\",\n \"tickUpper\",\n \"liquidity\",\n \"amount0\",\n \"amount1\"\n ],\n \"types\": [\n \"PoolFactory\",\n \"ByteVec\",\n \"ByteVec\",\n \"U256\",\n \"U256\",\n \"ByteVec\",\n \"I256\",\n \"I256\",\n \"U256\",\n \"U256\",\n \"U256\"\n ],\n \"isMutable\": [\n false,\n false,\n false,\n false,\n false,\n false,\n false,\n false,\n false,\n false,\n false\n ]\n },\n \"functions\": [\n {\n \"name\": \"main\",\n \"paramNames\": [],\n \"paramTypes\": [],\n \"paramIsMutable\": [],\n \"returnTypes\": []\n }\n ]\n}","{\n \"version\": \"v4.3.0\",\n \"name\": \"PoolRouterDemo\",\n \"bytecodeTemplate\": \"010103004026004270b41700{8}1600{0}{1}{2}{3}{4}{6}{7}13091308{5}010017081707170617051704170317021701{8}0c2f4c405016000d0c{7}010116007a13c40de0b6b3a7640000a2160113c40de0b6b3a7640000a3160016000b0613800f4240110e16040125181816007a160113c40de0b6b3a7640000a3160213c40de0b6b3a7640000a3160016000b0613800f4240110e16050125181816007a160113c40de0b6b3a7640000a3160313c40de0b6b3a7640000a3160016000b0613800f4240110e16060125181816007a160213c40de0b6b3a7640000a3160313c40de0b6b3a7640000a3160016000b0613800f4240110e1607012518180c6717090d67170a0e67170b0f67170c{8}0d2f4c403ecd16010d13c9010000000000000000000000001400110d16080105170d16007a13c40de0b6b3a7640000a2160113c40de0b6b3a7640000a3160016000b0613800f4240110e160d012518181400170e16001602a5170f1600160113c40de0b6b3a7640000a316001600160203120a13c101000276a30d2a160e13070e1605012a181816001602a5160f2b0c331343e97b{8}0e2f4c40241603160c44171016001603a517111600160113c40de0b6b3a7640000a316001600160303120a13c101000276a30d2a161013070e1605012a181816001603a516112b0c331343ea7b{8}0f2f4c40241601160b44171216001601a517131600160213c40de0b6b3a7640000a316001600160103120a13c101000276a30d2a161213070e1607012a181816001601a516132b0c331343eb7b{8}102f4c40241602160a44171416001602a517151600160313c40de0b6b3a7640000a316001600160204120a13d0fffd8963efd1fc6a506488495d951d5263988d260d2b161413070e1606012a181816001602a516152b0c331343ec7b{8}112f4c40221400171616001601a517171600160213c40de0b6b3a7640000a316001600160104120a13d0fffd8963efd1fc6a506488495d951d5263988d260d2b161613070e1605012a181816001601a516172b0c331343ed7b{8}13062f4c40221400171816001602a517191600160113c40de0b6b3a7640000a316001600160103123613c101000276a30d2a161813070e1605012a181816001602a516192b130a2f1343ee7b{8}13072f4c40241601160a44171a16001603a5171b1600160113c40de0b6b3a7640000a316001600160103123613c101000276a30d2a161a13070e1607012a181816001603a5161b2b130a2f1343f07b{8}13082f4c40241601160b44171c16001602a5171d1600160113c40de0b6b3a7640000a316001600160104123613d0fffd8963efd1fc6a506488495d951d5263988d260d2b161c13070e1607012a181816001602a5161d2b130a2f1343f07b{8}13092f4c40241602160a44171e16001603a5171f1600160213c40de0b6b3a7640000a316001600160203123613c101000276a30d2a161e13070e1606012a181816001603a5161f2b130a2f1343f07b{8}130a2f4c40221400172016001601a517211600160213c40de0b6b3a7640000a316001600160204123613d0fffd8963efd1fc6a506488495d951d5263988d260d2b162013070e1605012a181816001601a516212b130a2f1343ee7b{8}130b2f4c40271601160b44cd44160944172216001602a51723160013c40de0b6b3a7640000a216001600cd04123613d0fffd8963efd1fc6a506488495d951d5263988d260d2b162213070e1607012a181816001602a516232b130a2f1343f07b{8}130c2f4c40261601160b44cd4416094417241600a417251600160213c40de0b6b3a7640000a316001600cd03120a13c101000276a30d2a162413070e1607012a18181600a416252b0c331343eb7b\",\n \"fieldsSig\": {\n \"names\": [\n \"pool_\",\n \"position_\",\n \"tick_\",\n \"word_\",\n \"factory_\",\n \"user_\",\n \"config_\",\n \"dexAccount_\",\n \"counter\"\n ],\n \"types\": [\n \"ByteVec\",\n \"ByteVec\",\n \"ByteVec\",\n \"ByteVec\",\n \"ByteVec\",\n \"ByteVec\",\n \"ByteVec\",\n \"ByteVec\",\n \"U256\"\n ],\n \"isMutable\": [\n false,\n false,\n false,\n false,\n false,\n false,\n false,\n false,\n false\n ]\n },\n \"functions\": [\n {\n \"name\": \"main\",\n \"paramNames\": [],\n \"paramTypes\": [],\n \"paramIsMutable\": [],\n \"returnTypes\": []\n }\n ]\n}","{\n \"version\": \"v4.3.0\",\n \"name\": \"SwapWithoutAccount\",\n \"bytecodeTemplate\": \"010103000400402cb41700{0}160047cc17011601c5194c0516000d0c{0}d465b302f9{5}3d1702{5}05264c02{2}4a01{3}17031600{2}1602a3160016001603{4}{5}{6}{7}13070e{1}012a1818\",\n \"fieldsSig\": {\n \"names\": [\n \"dexAccount\",\n \"pool\",\n \"tokenIn\",\n \"tokenOut\",\n \"zeroForOne\",\n \"amountSpecified\",\n \"sqrtPriceLimitX96\",\n \"data\"\n ],\n \"types\": [\n \"IDexAccount\",\n \"Pool\",\n \"ByteVec\",\n \"ByteVec\",\n \"Bool\",\n \"I256\",\n \"U256\",\n \"ByteVec\"\n ],\n \"isMutable\": [\n false,\n false,\n false,\n false,\n false,\n false,\n false,\n false\n ]\n },\n \"functions\": [\n {\n \"name\": \"main\",\n \"paramNames\": [],\n \"paramTypes\": [],\n \"paramIsMutable\": [],\n \"returnTypes\": []\n }\n ]\n}","{\n \"deployerAddress\": \"16j6oMwCc768CSjXst5ftHwyu7gUn6PvCX7YVvAQWWbZ2\",\n \"contracts\": {\n \"Pool\": {\n \"txId\": \"932959166b40a3eb2c2077fc9cd71b6cdea8d6d20a817541f5bb07087df18b49\",\n \"unsignedTx\": \"000101010103000000081500551362cc76354454f639b640f9c898aa72cf097706ad51d8fbcb2fcb4b65e78113c4016345785d8a0000a2145cc34020403609124023403843b747b34916493049ca4a3c4a6c4a9c4ad04afc4b3b4b674c494c6c4c8a4cbc4cd84d0b4d6c4d824d9d4da74dbc4dd24df94e064e1b4e714e854eef4f5f4feb508b512f51b45206524e535c562056ae572f57af57c5589258af597a5a125a4b5bfe5c55010000000102140002010000000102a0000201000101010716000c3413406e7bce0102010002030008160100021702160016024113406d7b0000010301413816000c3f264c061600057c203d4a0216003d1701160112800d89e83d321340ca7b16010d380c304c0213ccfffcb933bd6fad37aa2d162d1a5940014a0113cd0100000000000000000000000000000000170216010e380c304c06160213ccfff97272373d413259a46990580e213a2c1340803c4a0116021702160110380c304c06160213ccfff2e50f5f656932ef12357cf3c7fdcc2c1340803c4a011602170216011308380c304c06160213ccffe5caca7e10e4e61c3624eaa0941cd02c1340803c4a011602170216011310380c304c06160213ccffcb9843d60f6159c9db58835c9266442c1340803c4a011602170216011320380c304c06160213ccff973b41fa98c081472e6896dfb254c02c1340803c4a01160217021601134040380c304c06160213ccff2ea16466c96a3843ec78b326b528612c1340803c4a01160217021601134080380c304c06160213ccfe5dee046a99a2a811c461f1969c30532c1340803c4a01160217021601134100380c304c06160213ccfcbe86c7900a88aedcffc83b479aa3a42c1340803c4a01160217021601134200380c304c06160213ccf987a7253ac413176f2b074cf7815e542c1340803c4a01160217021601134400380c304c06160213ccf3392b0822b70005940c7a398e4b70f32c1340803c4a01160217021601134800380c304c06160213cce7159475a2c29b7443b29c7fa6e889d92c1340803c4a01160217021601135000380c304c06160213ccd097f3bdfd2022b8845ad8f792aa58252c1340803c4a01160217021601136000380c304c06160213cca9f746462d870fdf8a65dc1f90e061e52c1340803c4a011602170216011380004000380c304c06160213cc70d869a156d2a1b890bb3df62baf32f72c1340803c4a011602170216011380008000380c304c06160213cc31be135f97d08fd981231505542fcfa62c1340803c4a011602170216011380010000380c304c06160213cc09aa508b5b7a84e1c677de54f3e99bc92c1340803c4a011602170216011380020000380c304c06160213cb5d6af8dedb81196699c329225ee6042c1340803c4a011602170216011380040000380c304c06160213ca2216e584f5fa1ea926041bedfe982c1340803c4a011602170216011380080000380c304c06160213c8048a170391f7dc42444e8fa22c1340803c4a0116021702160005284c060c0d3616022d4a0116021702160213c1010000000091020100010b0141f2d3c6eb44f3160013c101000276a3347a4c0418160013d0fffd8963efd1fc6a506488495d951d5263988d26311340c97b160013203b1701160117020c1703160213cd01000000000000000000000000000000000d2b334c08160313408039170316021340803c1702160213c50100000000000000000d2b334c08160313404039170316021340403c1702160213c101000000000d2b334c0816031320391703160213203c17021602138000ffff334c0816031310391703160213103c170216021340ff334c0816031308391703160213083c17021602130f334c081603103917031602103c170216020f334c0816030e39170316020e3c170216020d334c0416030d3917031603134080344c071601160313407f2b3c17024a06160113407f16032b3b17021603134080314c0e0c0d3613407f2b16032a0c0d361340403c384a0316031340802b1340403b17040c1705160216022c13407f3c170216021340803c170516041605133f3b391704160216053c1702160216022c13407f3c170216021340803c170516041605133e3b391704160216053c1702160216022c13407f3c170216021340803c170516041605133d3b391704160216053c1702160216022c13407f3c170216021340803c170516041605133c3b391704160216053c1702160216022c13407f3c170216021340803c170516041605133b3b391704160216053c1702160216022c13407f3c170216021340803c170516041605133a3b391704160216053c1702160216022c13407f3c170216021340803c17051604160513393b391704160216053c1702160216022c13407f3c170216021340803c17051604160513383b391704160216053c1702160216022c13407f3c170216021340803c17051604160513373b391704160216053c1702160216022c13407f3c170216021340803c17051604160513363b391704160216053c1702160216022c13407f3c170216021340803c17051604160513353b391704160216053c1702160216022c13407f3c170216021340803c17051604160513343b391704160216053c1702160216022c13407f3c170216021340803c17051604160513333b391704160216053c1702160216022c13407f3c170216021340803c17051604160513323b391704160413c63627a301d71055774c85371706160613dcfffffffffffffffffffffffffffffffffd709b7e5480fba5a50fed5e62ffc556351340803c1707160613ccdb2df09e81959a81455e260799a0632f351340803c170816071380800000314c0316073f4a0616071380ffffff383f128100000020170916081380800000314c0316083f4a0616081380ffffff383f128100000020170a1609160a244c031609024a0a160a00041600324c03160a024a021609020000050d0440c5160016013417051603052917060c17070c17080c17090c170a16064c402316033d13800f424016042b13800f42400010170b16054c0616011600160203000c4a0516001601160203000e1707160b1607344c0216014a0516001602160b1605000a17094a402216054c0616011600160204000e4a0516001601160204000c17081603057c203d1608344c0216014a09160016021603057c203d1605000b1709160116092f170c16054c1e160c7a4c021816064c0216074a0516091600160203000c1707160c7a4c03181606194c0216084a0516091600160204000e17084a1d160c7a4c021816064c0216074a0516001609160203000e1707160c7a4c03181606194c0216084a0516001609160204000c17081606197a4c0818160316083f057c20284c061603057c203d170816067a4c041816091601304c0616033d16072b170a4a071607160413800f424016042b0011170a160916071608160a0200000202010e160016012d160016012e0c2f4c020c4a010d2a020000040901404916020c2f4c0216000216011340603b17041602160037170516034c1c160516022d16002f4c0d1604160535170616061604344c051604160016060011021604160416002d16022a0007024a1d160516022d16002f7a4c041816041605331340dd7b160416052b170716041600160700111708160813d1010000000000000000000000000000000000000000311340e17b1608020000040701402116034c11160213c901000000000000000000000000160100101704160016042a1705160513d1010000000000000000000000000000000000000000311340e17b1605024a0e160213c90100000000000000000000000016010011170616001606331340de7b160016062b0200000404011916000c331340df7b16010c331340e07b16034c07160016011602030008024a061600160116020300090200000404011916000c331340df7b16010c331340e07b16034c07160016011602040009024a061600160116020400080200000406011916021340603b1704160116002b170516034c08160416051601001116000007024a07160416051601001016002d0200000303011b16020b274c0f160016011602057c203d04000c3f057c20024a081600160116023d03000c3f02000004050111160116002b170416034c061602160413c9010000000000000000000000000011024a051602160413c90100000000000000000000000000100200000303011b160205264c0f160016011602057c203d04000e3f057c20024a081600160116023d03000e3f020000030901408d160016010c0d3687170316001601371704160316043616031604314c020d4a010c36170516050c2f4c04160416022d02160216053313415f7b160016011602871706160516061604334c020d4a010c361705160416063617040c1602361602381707160216072d1702160416072d17040c16073616072d0d351707160416051607373917040f1602370e3a170816080e16021608373637170816080e16021608373637170816080e16021608373637170816080e16021608373637170816080e16021608373637170816080e16021608373637170816041608370200000304011216001601160200101703160016011602870c334c0416030d2a021603020000010101120e16007a7a1241003a7a05294b033a904a023a221302640200000105011b1600001217011601cb17021602c54c02160202b21301640c130164170417031601ce0416031604c11816020200000103010d1600001217011601cb17021602c54c02160202ce040200000103001e1600ce0a23052413412d7b16007a7ace0a3a7a05294b033a904a023a22170116010013170216010d0c160201020000020602403016007a7ace0a3a7a05294b033a904a023a2216014c02054a01061f170216020014170316021601ce0a0f0e1603010317051704160412bff27618264c0212bff276181704160412800d89e8284c0212800d89e817041604160502010003030108d37afb14100d1600160116021304640201000405010ad35b19984c1601160216030017170416001604cc0200000101010316004002000003040109160016020019cc1703160116034402000003040109160016011602001a170316001603cc0200000202000f16001601261340667b160012bff27618291340677b160112800d89e8271340687b0000010101050c160013026402010001020107d30949c5981600001d17011601cb02000001080240301600001d17011601cb17021602c54c03160204021600a002274c04a00ea00fa0104a030c0c0c170517041703b216001302640c05160316041605130564170717061601ce0316061607c11816020302000003040108160016011602001717031603cb020000030d024039160016011602001717031603cb17041604c54c03160404020c0c0c1709170817070c0c0c170c170b170ab2a0001406414c504800031303640c160716081609160a160b160c13076417061705a0000d2aa1001603ce01160516060d1600c9181604030200000209034047a002a00ea00fa010100f16000101170417031702a002a00ea00fa010100f160101021707170617050c170816080f314c402716087a0f314d130e2ac316087a0f314d0e2a782b16087a0f314d112a783616087a0f314d0e2a7916080d2a17084a7fd5160216031604020000051103404b1602001f170617051603001f17081707ce0b1604040f0d160501001709ce0b1604030f0d16070100170a16097a4b021816064c0216020015160a7a4b021816084c0216030015160516070022170d170c170b1604160b160c160d100f160001041710170f170e16094c0516010d0c16050103160a4c0516010d0c16070103160e160f1610020003050f05405416021603001c560030160016011602160316040023170717061705160405254c403ca004170816020004170916030004170aa0021602264c0b1609160a1604000d170b160b0516051606160702a0021603264c16a001160a1604000d170c1609a0011604000f170d16083f16041f3da104160c160d160516061607021609160a1604000f170e05160e1605160616070205051605160616070201070513024056d3e58379f416011602160300211706170516064c0d16040c2f170716071913406b7b160016014513406c7b16011602160316043f170b170a170917081600160516064c020c4a010da3160516081609160a160b00241710170f170e170d170c160c3d1711160d3d17121600ce061611ac1600ce071612ac1207160116021603160e160f161056750916001601160216031604161116125676161116120201030511024048d39d5023b316011602160316043f057c20170817071706170516011602160300201709160016090da3160916051606160716080024170e170d170c170b170a160a057c203d170f160b057c203d1710160f16100e0c160901051207160116021603160c160d160e56750a16001601160216031604160f161075160f1610020103080c034027d3417830ee160216031604002017081605160616070f0f16080106170b170a1709160016080da316011609160a160b00281206160016011602160316041609160a160b761609160a160b020001040800402ece06ce07ce081706170517040c170716070f314c402216077a0f314d0d2a780c334c12160016077a0f314d102a7816077a0f314d0d2a78ab16070d2a17074a7fda01000418004097d34c88990ba0011704a0021705a00417061601052817070517081605160019001618170906160900045e16030c334c407c16030d2b1703160516000016170b170a160a0004170c1604160c16061601ce0900061710170f170e170d16074c0d1601160e16102a3f2017011608160f3f2017084a0c1601160f3f1f17011608160e16102a3f1f1708160b4c17160a001e17110c0d16110105171216004c051612057c204a011612171316063f16131f3d170616004c04160a06204a01160a1705160d170407160416065f160105244c1f1602430c2f4c0102160016071c4c02ce074a01ce061714160216141607002b171717161817151615160816171603100c16160129024a7f80010307403402416dd3d6407a21160405251340697b560030160405281707a001a002a003170a1709170816034c0c16051608317a4c0418160513c101000276a33313406a7b4a0b16051608337a4c0418160513d0fffd8963efd1fc6a506488495d951d5263988d263113406a7ba00416034c04160a13102e4a03160a103c170c170b1604051608160916034c02a00e4a01a00f160b0c1713171217111710170f170e170d160d05257a4c0418160f1605304c409b1610160300161715171416140004171616034c0416161605314a031616160533171716174c0216054a0116161718160f16181612160dce090006171c171b171a1719160f161416151616161a161b161c1723172217211720171f171e171d1619170f16074c0d160d162116232a3f20170d160e16223f20170e4a0c160d16223f1f170d160e162116232a3f1f170e160c0c334c041623160c2d4a010c1724161316242a171316120c334c091611162316242b13cd0100000000000000000000000000000000161200102a1711160f16202f4c4027161f4c1c161e001e1725a00ea00fa01016031611110d16250104172616034c051626057c204a011626172716123f16271f3d171216034c04161e06204a01161e17104a07160f161d304c03160f000517104a7f5b160fa1011610a1021612a1041613130a2d1728161316282b171316034c071611a10ea01116132aa1114a061611a10fa01216132aa1121604160d201729160e172a160316071d4c041629172a160e172916034c0e160016011602ce0616293dce07162a057c203d16064a0d160016011602ce07162a3dce061629057c203d1606173217311730172f172e172d172c172b16074c0f1600162e162fa3162b162c162d162e162f1630163116321628002d4a1216001602a51733160016021633a3162b162c162d162e162f1630163116321628002c08160016011629162aa001a004a002751629162a020000030d04404116000c13206217030e170416001320132016042a62170516056d1706160171160371311707160716021c170816084c0413c101000276a30d2a4a0313d0fffd8963efd1fc6a506488495d951d5263988d260d2b17091600132016042a16004362170a16074c0416011603444a031603160144170bce00160b1606001b170c16081609160c160a020001091000404716031602414c1e160016031604acce02160047cc1709ce00ce06ce0744ce05001a170a160016031608a3160016031608160a0c110c160901004a40211607160304002b170e170d170c170b16001602a5170f16001602160fa31600b21602160b16043f057c20160c160e13070e160d012a1818160116051606ab00010910004046160016031604acce02160147cc17091609c51340717b1609170ace00ce06ce0744ce05001a170b160016031608a3160016031608160b0c110c160a010016051602414c05160116051606ab4a1a1607160503002b170f170e170d170cb216051606a3b216011602160c16063f160d160f13070e160e012a1818010002020307d3c62bf5cfa0011600000416010004020000020800408716007a0f314d0f2c112ac3170216007a0f314d0f2c112a0d2ac3170316020c2f7a4b041816011602327a4b041816031602324c0102a0040c304c404f160116022b170416007a0f314d0f2c112a0e2ac31705160316022b170616041606314c0516041605160600104a011605170716007a0f314d130e2ac3160713cd0100000000000000000000000000000000a00400102a16007a0f314d130e2ac416007a0f314d0f2c112a0e2ac316072b16007a0f314d0f2c112a0e2ac4160116007a0f314d0f2c112ac400000102000e0c170116010f314c0816011600002f16010d2a17014a340107030a004096d34ca91e1416010f311340727b16020c331340747bce06ce07ce0817051704170316017a0f314d0f2a7817065617071607003016017a0f314d0f2c112a0e2ac3170816017a0f314d0f2c112a0d2ac31607337a4c041816080c331340737b16017a0f314d0f2c112a0d2ac316072b1709160716017a0f314d0f2c112ac416017a0f314d0f2c112a0d2ac316091602160800102a16017a0f314d0f2c112a0d2ac416017a0f314d0f2c112a0e2ac316022a16017a0f314d0f2c112a0e2ac4160016061602ac0107050a004065d375c252e5b4ce00774513406f7b16010f311340727b16040c331340747b56170516021605334c0216024a011605170616061603311340707b16050030ce06ce07ce08170917081707160616017a0f314d0f2c112ac4160316017a0f314d0f2c112a0d2ac416017a0f314d0f2c112a0e2ac316042a16017a0f314d0f2c112a0e2ac4160016017a0f314d13072a781604ac01020103001cd3960b26b3b3ce00411341937ba0111701a01217021600ce061601ab1600ce071602ab0ca1110ca1121208b41600160116026101000840270840d1d300611b5f1601001e17081602001e17091600160116020020170a0c10160a0107170e170d170c170b16081609002217111710170f160100041712160200041713051714051715160b3f1716a0021601264c06161216131616000d17144a14a0021602264c0ba00116131616000d17141612a0011616000f17154a05161216131616000f17150c0c0c171917181717160b0c334c40290c171a161a0f314c4023161a7a0f314d130f2a78161a7a0f314d130c2a782b171b161b160b13cd01000000000000000000000000000000000010161a7a0f314d13172a79161a0d2a171a4a7fd905171c05171d56171e161e16062b171f1607161f2a17201603160b161f2c2a3f1721a0021601264c06161216131621000d171c4a14a0021602264c0ba00116131621000d171c1612a0011621000f171d4a05161216131621000f171da001a00113c901000000000000000000000000001017221622161c3d13c9010000000000000000000000000010161d3d2a1723160416172a1724160516182a17251622162413c901000000000000000000000000001016252a17261614161516171618161916231626162002010000000103d3ee6a5cd514404868747470733a2f2f7261772e67697468756275736572636f6e74656e742e636f6d2f616c65706869756d2f746f6b656e2d6c6973742f6d61737465722f636f72652f6d2e6a736f6e021440210d0300030003000300030002000300030003000200010002000306414c50480002144027130200020001000200020002000200020002000200020002000200020002000200020002000200ad1880011b61c1174876e80001aaa31a3b3722037e844bc099df513d12f02e8b210506057f8f94f0f5f358f2564fa231500002aa2b00c7436014a228d1aac67b64daf32f482052c2186c0efc78d9784ef0a19401c408c2b82bb8e2faf600551362cc76354454f639b640f9c898aa72cf097706ad51d8fbcb2fcb4b65e78100000000000000000000\",\n \"signature\": \"12e3d4d172dfd22aa1ced149b5e134ba3d51f6996ad978a8d290b83312a3bc64625ad5893ae3908cd9aa17fa604b438745cc6eaf03f683891ca451d2a579650a\",\n \"gasPrice\": \"100000000000\",\n \"gasAmount\": 72545,\n \"blockHash\": \"00000030b7fbb927463ff88b344ee9c599e3fdeb2e1e71d8def4f67584fc3160\",\n \"codeHash\": \"e4a151da3170e11f0ba79c2a408b1cdf3d83cd8e63d53031d5c48785bd5b49b7\",\n \"contractInstance\": {\n \"address\": \"24qJqJr6rz4e87csMdBASWhCttozkCjaywjd1EEeatPzP\",\n \"contractId\": \"96b8f1ef4c5deb38b3543216eaf21b988d0e700148857f87ef2bc014306b4d00\",\n \"groupIndex\": 0\n }\n },\n \"Position\": {\n \"txId\": \"7132ff283c41fbf7b4b9c07f7134629987ec4d7a8494b4258578be21bc46e309\",\n \"unsignedTx\": \"000101010103000000081500551362cc76354454f639b640f9c898aa72cf097706ad51d8fbcb2fcb4b65e78113c4016345785d8a0000a214429b0a0819402c410e413141d741f84276428a01000001010ece007a494d470d13216217000c0d160001350201000000020ace007a494d470d132162ce01020000030901408d160016010c0d3687170316001601371704160316043616031604314c020d4a010c36170516050c2f4c04160416022d02160216053313415f7b160016011602871706160516061604334c020d4a010c361705160416063617040c1602361602381707160216072d1702160416072d17040c16073616072d0d351707160416051607373917040f1602370e3a170816080e16021608373637170816080e16021608373637170816080e16021608373637170816080e16021608373637170816080e16021608373637170816080e16021608373637170816041608370200000304011216001601160200021703160016011602870c334c0416030d2a0216030201000409034062d379a1c203b4ce00451343857ba0003f16001f3d17040c0c0c1707170617050c170816080f314c403ea0000c334c403516087a0f314d0d2a7816087a0f314d0d2ac32ba00013cd0100000000000000000000000000000000000216087a0f314d112a7916087a0f314d102ac316087a0f314d112a782a16087a0f314d102ac416080d2a17084a7fbe160116021603a103a102a1011604a1001605160616070201000202000ed3b478489ab4ce00451343857ba00416002aa104a00516012aa10501000308034056d3ad05a194b4ce00451343857b0c0c0c1705170417030c170616060f314c404016067a0f314d7816067a0f314d102ac3334c0916067a0f314d102ac34a0616067a0f314d781707160716067a0f314d0f2a7916067a0f314d102ac316072b16067a0f314d102ac416060d2a17064a7fbc16031604160502010000000406d3f97c255fa000a001a002a0030214402d030403000000000000000000000000000000000000000000000000000000000000000002000306414c50480003140f070200020002000200020002000200ad188000e544c1174876e80001aaa31a3b355a1c2a5a3a7f882a32ad9e397ae612ccab22ecd42e27cb976b3af5f72678420002aa2b00c7436014a228d1aac67b64daf32f482052c2186c0efc78d9784ef0a19401c4074a98b1be3b5af600551362cc76354454f639b640f9c898aa72cf097706ad51d8fbcb2fcb4b65e78100000000000000000000\",\n \"signature\": \"07dbd1371500dbe6e77d4b86e1857fc9d6f3f9c1a63577c8d59d0536a539a81c660f7a7f8dc445545c50795a97ad1a061dc005563dd4ecd0d5a06d9faa2b2056\",\n \"gasPrice\": \"100000000000\",\n \"gasAmount\": 58692,\n \"blockHash\": \"0000004aad9966d0eca1bbf9b3513714f7d373f1652664b1a9107b1381209fc0\",\n \"codeHash\": \"e41d13dfcf3ff0f5c5d6e38ac4d01f757ead1861e7d2d5bf07c835a6317aeb36\",\n \"contractInstance\": {\n \"address\": \"26A5tQw7gQkyiB9pXKdTTVqj9CfC9c44P69V2298wX4H5\",\n \"contractId\": \"aa64075b8153cae814221291f102ae6e7ab756d4d53ddf86d9e3ec8296afb200\",\n \"groupIndex\": 0\n }\n },\n \"Tick\": {\n \"txId\": \"bb0ccba7e77196fac2a3961b188524929141b3e579557282d0f6321ec450bb1e\",\n \"unsignedTx\": \"000101010103000000081500551362cc76354454f639b640f9c898aa72cf097706ad51d8fbcb2fcb4b65e78113c4016345785d8a0000a21441810706405140a340f5410b416541730100030601402ad344ba8eddb4ce00451343217ba000170316033f16011f1704160405291343237b16043d170516051600321343227b1605a10016024c04a0011601204a03a00116011fa10116050c2f0201000405034032d3cfc5e9a41600ce01294c05a002a003a004024a40280c170416040f314c1e16047a0f314d0d2a7816047a0f314d0e2ac32b16047a0f314d0d2a7916040d2a17044a7fde1601160216030201000405034032d36efb0f181600ce01264c05a002a003a004024a40280c170416040f314c1e16047a0f314d0d2a7816047a0f314d0e2ac32b16047a0f314d0d2a7916040d2a17044a7fde16011602160302010201010008d3b0cd421fb4ce00451343217b1600b001000506014035d336cb1526b4ce00451343217b16034c03160417004a02160417010c170516050f314c1a16057a0f314d7816057a0f314d0e2ac32b16057a0f314d7916050d2a17054a22160016011602a104a103a102a00102010000000103d3602bc55da0010214402502040300000000000000000000000000000000000000000000000000000000000000000100140b0502000100020002000200ad188000e2bec1174876e80001aaa31a3b60f7c2b3cea2e09460824a0ed8615c621f945bb31658bc8586cf847a1cb9cc170002aa2b00c7436014a228d1aac67b64daf32f482052c2186c0efc78d9784ef0a19401c405d2b3f89fa12af600551362cc76354454f639b640f9c898aa72cf097706ad51d8fbcb2fcb4b65e78100000000000000000000\",\n \"signature\": \"db7a94df5640b6861f3fbe3afb9d6615765de3c563e98eaeff0dfb4c6d188f133fe90bfdbc865e830bd99fb20f1ad4c996ef79c112a955aef4c1f34757e8bf59\",\n \"gasPrice\": \"100000000000\",\n \"gasAmount\": 58046,\n \"blockHash\": \"00000080b51a3c5379e910eb41f4eae093bf3df7c9e3550570472ec4befb1900\",\n \"codeHash\": \"a3a857d9b52fea681f09b73760c8b2a0f637889c23c230911683dc1da4f32c04\",\n \"contractInstance\": {\n \"address\": \"27ddwybgRZ3pwx8qSxC5om9YHdzJJp12m595Wom85bLQo\",\n \"contractId\": \"c04ea64505b40f987898116ed2a7448d6ea21f97c0540fb66dbe9d9cbc995f00\",\n \"groupIndex\": 0\n }\n },\n \"BitmapWord\": {\n \"txId\": \"49415e25a3e54fba679595df2614b6e63557815b7320c96ec2027c23a7d5b52a\",\n \"unsignedTx\": \"000101010103000000081500551362cc76354454f639b640f9c898aa72cf097706ad51d8fbcb2fcb4b65e78113c4016345785d8a0000a21442b6020540d641c941e7429442aa0000010201406516000c301340967b0c1701160013cd0100000000000000000000000000000000344c0816001340803c170016011340802a1701160013c5010000000000000000344c0816001340403c170016011340402a1701160013c10100000000344c08160013203c1700160113202a170116001380010000344c08160013103c1700160113102a17011600134100344c08160013083c1700160113082a170116001310344c081600103c17001601102a1701160010344c0816000e3c170016010e2a170116000e344c0416010d2a17011601020000010201407c16000c301340977b1340ff1701160013ccffffffffffffffffffffffffffffffff380c334c0516011340802b17014a0416001340803c1700160013c4ffffffffffffffff380c334c0516011340402b17014a0416001340403c1700160013c0ffffffff380c334c05160113202b17014a04160013203c17001600138000ffff380c334c05160113102b17014a04160013103c170016001340ff380c334c05160113082b17014a04160013083c17001600130f380c334c051601102b17014a041600103c170016000f380c334c0516010e2b17014a0416000e3c170016000d380c334c0416010d2b170116010201000101000dd3ff38d2a3ce00b4451341937ba0000d160000043b3aa1000100030f024064d327ef6f9f16014c40301600000417030d16033b0d2b0d16033b2a1704a000160438170516050c30170616064c0e16001603160500002b3f20160221170716071606024a0a160016033f20160221170816081606024a40311600000417090d16093b0d2b0c0d363a170aa000160a38170b160b0c30170c160c4c0e1600160b000116092b3f1f160221170d160d160c024a0c16001240ff16093f201f160221170e160e160c020000010101091600124100231241001f124100233d0214402301040300000000000000000000000000000000000000000000000000000000000000001403010200ad188000e47ec1174876e80001aaa31a3b0c2c51ffa0bbf1f3ef61e8c0ec0c7147d85026d9d20a6226af59f2239abf75080002aa2b00c7436014a228d1aac67b64daf32f482052c2186c0efc78d9784ef0a19401c4045aa680b0f0faf600551362cc76354454f639b640f9c898aa72cf097706ad51d8fbcb2fcb4b65e78100000000000000000000\",\n \"signature\": \"0c0bd87d0a81b0d1c24dbd1a7139029baac0de5b029887f97c2474bd9550b7541724ec92799912903a4f6adb4a0bc336baaf3b18cf44d446c053b5ec8bb70f2b\",\n \"gasPrice\": \"100000000000\",\n \"gasAmount\": 58494,\n \"blockHash\": \"000000066bd668a7b3983ac93bab34b7b10cc0b925796aa985b8d00e3c9768d0\",\n \"codeHash\": \"136e9e4d258309171e8dfb22499a72f626715e0b59933d1a049efa0aa3a12474\",\n \"contractInstance\": {\n \"address\": \"22DkvTg3YMuGQLHNC9xT86AoZRGb6B9Vnnq315UaXhBzo\",\n \"contractId\": \"6fe6292b0ddb8d3ea99c6d34be75d25cd0e361fbf834ccfe834b3fc15abf9700\",\n \"groupIndex\": 0\n }\n },\n \"PoolConfig\": {\n \"txId\": \"439d8b0370212537a9619e457204e23baafee1b885bc118a903ce0b238e5525d\",\n \"unsignedTx\": \"000101010103000000081500551362cc76354454f639b640f9c898aa72cf097706ad51d8fbcb2fcb4b65e78113c4016345785d8a0000a21415030112010000000305d3bda4d814ce00ce01ce0202140703010002000200140100ad188000df3cc1174876e80001aaa31a3b5aeda1d8d88ef3bbf630a68fc9d4622831854b448edf0e9206c1fb51d9be89210002aa2b00c7436014a228d1aac67b64daf32f482052c2186c0efc78d9784ef0a19401c402e31373c3709af600551362cc76354454f639b640f9c898aa72cf097706ad51d8fbcb2fcb4b65e78100000000000000000000\",\n \"signature\": \"f630a361b0d13ca87eed7e820ec9d9d1d4d08dfde71cabcebebd254bcd78cc1f773df6c77899755aa4c59a452ece3601f704ec64f0306a2553661c9b719b9db6\",\n \"gasPrice\": \"100000000000\",\n \"gasAmount\": 57148,\n \"blockHash\": \"0000008e28e5f513edacb4af42523c85959558e00c4bf7a1faeee0c982a50a90\",\n \"codeHash\": \"a3767c513c0303c26970effa39737253d05a04ef162381703194b14ec501a98f\",\n \"contractInstance\": {\n \"address\": \"xBur314cQPHCd1DPxq3XiE7KVEwsThJYJemNzPuhocNb\",\n \"contractId\": \"33fe576fce516b3abf9f0135019f7609e86966f8a7ffb8dd3228bf4a55460c00\",\n \"groupIndex\": 0\n }\n },\n \"DexAccount\": {\n \"txId\": \"7099482e5b9cb2debfa7e918b26cba2a6ae124855be3750202bb018ced1ac4d2\",\n \"unsignedTx\": \"000101010103000000081500551362cc76354454f639b640f9c898aa72cf097706ad51d8fbcb2fcb4b65e78113c4016345785d8a0000a21440f20505404b409940b240ca40e60103050800402cd3bd481528b417051600ce0116011602aa16047a0e314dc3170616064313202f4c1816047a0e314dc31603cc17071605160777467a4c0418a0020c304c04a0020d2ba10201000106004029d365b302f9b41701160149191341f47b160047cb17021602c54c06ce000d0d160201024a01ce00170316011603130264a000a001a00213036417051704160147b116041605c11801000101010ad358cbdacfa0020c2f4c03ce00024a0216000201030101000ad3511324a7b4b1a50d2f1341937b1600a10201030202000cd375472acbb4b1a50d2f1341937b16001601a101a100144045020400551362cc76354454f639b640f9c898aa72cf097706ad51d8fbcb2fcb4b65e7810400551362cc76354454f639b640f9c898aa72cf097706ad51d8fbcb2fcb4b65e781140703030003000200ad188000e13cc1174876e80001aaa31a3bdccd1b961c872fa04dbb0435e5e064c1429d8a58979295c869d4a91b677ee6990002aa2b00c7436014a228d1aac67b64daf32f482052c2186c0efc78d9784ef0a19401c4016b51d5e8203af600551362cc76354454f639b640f9c898aa72cf097706ad51d8fbcb2fcb4b65e78100000000000000000000\",\n \"signature\": \"dc50545c66889c1de031dc77daa434e2400683a82d22f3ef49c67f800e6e4a2c641ed332c18646af853c1f1997f3710a308a5f0e866b60601f559384607255b8\",\n \"gasPrice\": \"100000000000\",\n \"gasAmount\": 57660,\n \"blockHash\": \"000000b1d3d5bc050fb1b8fa20fb27b2c41b2934ad816cded5647ef51575cd80\",\n \"codeHash\": \"6794ba94e0bbd9a742f21c9a53f85ea82851424d1fb551d8fb373685e7b5ed18\",\n \"contractInstance\": {\n \"address\": \"27eRBiCgrzbA7cEqHLRhRp2nS4rVaWZ7uYHQJnE6YAL5u\",\n \"contractId\": \"c081cc852039373625ffc15467b5a7b780271b5a5535926ff63308f507ecf000\",\n \"groupIndex\": 0\n }\n },\n \"PoolFactory\": {\n \"txId\": \"3ce4fb7e27d6e1813e9585ac8285348fcdc56a99bb5fe9496d5a45635f9ad461\",\n \"unsignedTx\": \"000101010103000000081500551362cc76354454f639b640f9c898aa72cf097706ad51d8fbcb2fcb4b65e78113c4016345785d8a0000a214425708090a1f403540a040ed41ce41f5422b424500000101010316004002000003040109160016020000cc17031601160344020000030401091600160116020001170316001603cc020000010401403a12bff276187a7a16003a7a05294b033a224a023a90160021170112800d89e87a7a16003a7a05294b033a904a023a22160021170216021601207a7a16003a7a05294b033a904a023a223d0d2a170313ccffffffffffffffffffffffffffffffff16032d0201000307014028d31c03e050b4ce00451341937b16001601160213036413006417041703a0001705a000000017061606ce0516031604c118a0000d2aa1000516055e07160116001605601605020100054020014079d3530365c2160071160171311342bd7b16020000cb17050c0f1605010017081707170616060003170916030d0dce010105170a1603160a0c170d170c170b0c0c0c0c0c0c0c0c0c171a171917181717171617151714171317120c0c0c171d171c171b0c0c171f171eb1ce02ce06ce03ce0416021600160116041607160616091406414c50480002130d640c160b160c160d0c16121613161416151616161716181619161a161b161c161d161e161f131364170f170eb116001601441602000117101610ce01160e160fc1171106161116001601160261161102010004050012d32d2d48cdb4ce00451342bf7bb1160216034416010002170416000d0c160401330103090a001ad3132dd93db4ce00451342be7bb11601160244160000021709160316041608a316031605160616071608110c1609013201000303000ad3333a48b8b4ce00451341937b160016011602bb1440f5070400551362cc76354454f639b640f9c898aa72cf097706ad51d8fbcb2fcb4b65e78103402096b8f1ef4c5deb38b3543216eaf21b988d0e700148857f87ef2bc014306b4d00034020aa64075b8153cae814221291f102ae6e7ab756d4d53ddf86d9e3ec8296afb200034020c04ea64505b40f987898116ed2a7448d6ea21f97c0540fb66dbe9d9cbc995f000340206fe6292b0ddb8d3ea99c6d34be75d25cd0e361fbf834ccfe834b3fc15abf970003402033fe576fce516b3abf9f0135019f7609e86966f8a7ffb8dd3228bf4a55460c00034020c081cc852039373625ffc15467b5a7b780271b5a5535926ff63308f507ecf0001403010200ad188000e552c1174876e80002aaa31a3bb2111a4dc4143194bf44b696e5c6eecbaf4272a02e7edaabb7025dc77273a8a90002aa2b00c7436014a228d1aac67b64daf32f482052c2186c0efc78d9784ef0a194aaa31a3bb185643b6f8a5716e670718195d56500243c0c96ccf516ccb520b8ab35f399940301c4a012811bfc071e8800551362cc76354454f639b640f9c898aa72cf097706ad51d8fbcb2fcb4b65e78100000000000000000000\",\n \"signature\": \"9ccc6314f5dff3ea4d967fff6df1f883fbffc2e20e94928edcbe11716f6d05ee635dff88aba42e3f790818e894aae0b202398feb32e008f5178a072bef515583\",\n \"gasPrice\": \"100000000000\",\n \"gasAmount\": 58706,\n \"blockHash\": \"00000036110d5fdb6744694fabeb48e407cffc72997f126e2693050523d1a940\",\n \"codeHash\": \"0e35acea6952e02d53c110d652cdcf6c2cf87bdfeada04befdb9b057ac85a11c\",\n \"contractInstance\": {\n \"address\": \"26qgWds3DgK4Z4Djge64n8W6d9ZeYvdGNbsTdii2N2ByH\",\n \"contractId\": \"b488d493ae86dc82da6ba93156c6c68a751bb2093438d29b12dc3f6b2dfbf100\",\n \"groupIndex\": 0\n }\n },\n \"PositionManager\": {\n \"txId\": \"25a92f7a45a4237619e72346dfb2a0d8cc582ef5f266ef7f0c4a954da260c8f6\",\n \"unsignedTx\": \"000101010103000000081500551362cc76354454f639b640f9c898aa72cf097706ad51d8fbcb2fcb4b65e78113c4016345785d8a0000a214446f0110409a40c840ec413e416c424e4271427b429042a642bc42d7431a438e43ec444d01030b16044051d39b20ce13ce00160116024416030009170b160516060e0f160b012e170e170d170c160c160d160e160716080003170f160b160416051606000b171016001610a5171116001601a5171216001602a5171316007a7a16011612a316021613a316101611a31600160416051606160f110e160b01251715171416141609347a4c04181615160a341343527b160f16141615160b0201000304010dd3b8a5f4fb1600160113c9010000000000000000000000000005170316021603160116002b000502010003030108d364be47fc160213c901000000000000000000000000160116002b00050201000507014027d345f12d7a16001601324c061601160216030001024a1c16001602314c13160016021603000117051601160016040002170616051606314c0216054a011606024a0516011602160400020201000304010ed374e08b3b160213c9010000000000000000000000002c160116002b160100051703160316002d020000030901408d160016010c0d3687170316001601371704160316043616031604314c020d4a010c36170516050c2f4c04160416022d02160216053313415f7b160016011602871706160516061604334c020d4a010c361705160416063617040c1602361602381707160216072d1702160416072d17040c16073616072d0d351707160416051607373917040f1602370e3a170816080e16021608373637170816080e16021608373637170816080e16021608373637170816080e16021608373637170816080e16021608373637170816080e16021608373637170816041608370200000304011216001601160200051703160016011602870c334c0416030d2a0216030200000101010316004002000003040109160016020007cc17031601160344020000030401091600160116020008170316001603cc02010003030108d37afb14100d1600160116021304640201000405010ad35b19984c160116021603000a170416001604cc0201030b0d004021d3259c1e8816001601a5170b16001602a5170c16007a1601160ba31602160ca31600160116021603160416051606160716081609160a00001818181801030a0e004041d35060929cce00160216034416040009170a160a160516061607000b170b1600160b0da316001605160616071601110e160a0126170d170c160c1608347a4c0418160d1609341343537b1600160b0da3160016051605160616070c0d360c0d360c0d3613080f160a012718181801030b0d004032d3ee4d9e3ace00160216034416040009170b160b160516071608000b170c1600160c0da316001605160716081601110e160b012618181600160c0da3160016061605160716081609160a0c0d3613080f160b012718181801000409044034d341eff2fd1600160116021603000b17040c17051604c54b041605d12a170516020d0d1600011ec54b041605d12a170516030d0d1600011ec54b041605d12a1705160216030e0f1600012e17081707170616061607160816050214402401034020b488d493ae86dc82da6ba93156c6c68a751bb2093438d29b12dc3f6b2dfbf100140100ad188000e7cfc1174876e80001aaa31a3b36b0bc6c246195842b2a888ecaa56a1bd6a3e94b840d21b7a9ea51534361e8a70002aa2b00c7436014a228d1aac67b64daf32f482052c2186c0efc78d9784ef0a19401c49e9a266cbaff868800551362cc76354454f639b640f9c898aa72cf097706ad51d8fbcb2fcb4b65e78100000000000000000000\",\n \"signature\": \"b77da41e01a3862e3fea0b9a3a58b3507275353e97847776dbd7006a1292b62e1441a1da2af6af570d47b0b05dc59a59cb4d4c7d141523fbe48701d013f1c428\",\n \"gasPrice\": \"100000000000\",\n \"gasAmount\": 59343,\n \"blockHash\": \"000000bb64c6de0fd3e6453d7a021407787f50f60e989a9e2e40dc4e9fd886a0\",\n \"codeHash\": \"a3262fd42be249f2241268f2a3b5a2de9e6fb4374f48fcad60c824a9aec559aa\",\n \"contractInstance\": {\n \"address\": \"23niYfpKCYJRM4qXBCXQxW8vuGA185QLpQsxYJb68rkSK\",\n \"contractId\": \"8733540697ca46ddc66c0c538c5a201f0851dd729993c1e5e7de17c6ca3f3000\",\n \"groupIndex\": 0\n }\n }\n },\n \"scripts\": {\n \"CreateConfig:CreateConfig0\": {\n \"signature\": \"95d88304507ca98cedce63cf4462948acfba331e705708b64638b95c45a6ed133cc4f0b21d2de36b27dc640037aac27faad6da0fab9da80ab9e226b6a86ede87\",\n \"type\": \"BuildSimpleExecuteScriptTxResult\",\n \"fromGroup\": 0,\n \"toGroup\": 0,\n \"unsignedTx\": \"00010101010300010011144020b488d493ae86dc82da6ba93156c6c68a751bb2093438d29b12dc3f6b2dfbf1000c40cc17001600c5194c08060c0c0f0d144020b488d493ae86dc82da6ba93156c6c68a751bb2093438d29b12dc3f6b2dfbf1000104188000e0e9c1174876e80001aaa31a3b6b4fbbd9b77682eff3fdc63b25a15342264a1616185ffab0a7039769edb9a6cd0002aa2b00c7436014a228d1aac67b64daf32f482052c2186c0efc78d9784ef0a19401c49d226c5b5e3c5e8800551362cc76354454f639b640f9c898aa72cf097706ad51d8fbcb2fcb4b65e78100000000000000000000\",\n \"gasAmount\": 57577,\n \"gasPrice\": \"100000000000\",\n \"txId\": \"4a3da68dafeebdf90405a318580b33505bd2f7ebf3d2bc86aedf8faa94f9744f\",\n \"simulationResult\": {\n \"contractInputs\": [],\n \"generatedOutputs\": [\n {\n \"address\": \"24zEovLCVJpYrjRdFJqZ8Zi1LTZzQmwM1vUJh2rPTYK7d\",\n \"attoAlphAmount\": \"100000000000000000\",\n \"tokens\": []\n }\n ]\n },\n \"groupIndex\": 0,\n \"blockHash\": \"000000071e2f5ce81071b18e9211a05e05dc0970de114c0fbdbe12a2306b1e10\",\n \"codeHash\": \"4ab499d346b0dcf71f9c0cac69ac409ec9b05871616160442abdfac721281d74\"\n },\n \"CreateConfig:CreateConfig1\": {\n \"signature\": \"621a2bd49bdd9799408f9a3d09ed53ae8c5ec5fbf02bc58ac3dd79a98076bf9275a34d7a485a8775e4b56d419acec4c6c467fd6f846c19290c24163a3682f4c8\",\n \"type\": \"BuildSimpleExecuteScriptTxResult\",\n \"fromGroup\": 0,\n \"toGroup\": 0,\n \"unsignedTx\": \"00010101010300010011144020b488d493ae86dc82da6ba93156c6c68a751bb2093438d29b12dc3f6b2dfbf1000d40cc17001600c5194c08071343e80c0f0d144020b488d493ae86dc82da6ba93156c6c68a751bb2093438d29b12dc3f6b2dfbf1000104188000e0ecc1174876e80001aaa31a3ba985b5a654b0b4fedb6ff13fea8bb95fb607b10556124b59c64571c29f305c640002aa2b00c7436014a228d1aac67b64daf32f482052c2186c0efc78d9784ef0a19401c49baab20428147e8800551362cc76354454f639b640f9c898aa72cf097706ad51d8fbcb2fcb4b65e78100000000000000000000\",\n \"gasAmount\": 57580,\n \"gasPrice\": \"100000000000\",\n \"txId\": \"8c43d35cf4245a1741120056e04260a97484f23656e721991b6ea653a5e49625\",\n \"simulationResult\": {\n \"contractInputs\": [],\n \"generatedOutputs\": [\n {\n \"address\": \"2BqWJ78ep8qqcNJ3MLvXms1r5vbs7TKp1XbaiBXb9Wrs1\",\n \"attoAlphAmount\": \"100000000000000000\",\n \"tokens\": []\n }\n ]\n },\n \"groupIndex\": 0,\n \"blockHash\": \"000000c85e8bac0ab648b08174a36df3a9266ff3c2169cfc43dd3e2c3664a9e0\",\n \"codeHash\": \"6c57c8a7a7c7d53bb42921f1c2ac7003bc08d592e2c677c4efd74b059abbef33\"\n },\n \"CreateConfig:CreateConfig2\": {\n \"signature\": \"445697991593d84980722b782627f5b5a6aebc38345a338b37633ebc574e0e2714c98aeaf74457a22c7bfc8326d99781bfbe60c00c6439ce5181e1f1123a306d\",\n \"type\": \"BuildSimpleExecuteScriptTxResult\",\n \"fromGroup\": 0,\n \"toGroup\": 0,\n \"unsignedTx\": \"00010101010300010011144020b488d493ae86dc82da6ba93156c6c68a751bb2093438d29b12dc3f6b2dfbf1000e40cc17001600c5194c08081347d00c0f0d144020b488d493ae86dc82da6ba93156c6c68a751bb2093438d29b12dc3f6b2dfbf1000104188000e0ecc1174876e80001aaa31a3beb352f28913400315a82ad1e04ee22c609a1be3d3fb617b0ae308c1fe784796e0002aa2b00c7436014a228d1aac67b64daf32f482052c2186c0efc78d9784ef0a19401c49a32f7acf1ec9e8800551362cc76354454f639b640f9c898aa72cf097706ad51d8fbcb2fcb4b65e78100000000000000000000\",\n \"gasAmount\": 57580,\n \"gasPrice\": \"100000000000\",\n \"txId\": \"68c2e0c9e96b7c25a31578033a3b8ab5a63646f6493894eb9e9ac604b3ebefe1\",\n \"simulationResult\": {\n \"contractInputs\": [],\n \"generatedOutputs\": [\n {\n \"address\": \"2ArtT7RmibE7Hb5VBo9xDyYn7mGZk5WymFPrXwoFxZXcj\",\n \"attoAlphAmount\": \"100000000000000000\",\n \"tokens\": []\n }\n ]\n },\n \"groupIndex\": 0,\n \"blockHash\": \"000000365eb515a8830fe9c3b080c5675f0cb445193625fad1821f2d912e2750\",\n \"codeHash\": \"131c73fe4e38cb084bed35806122ea23d73c8fd8224fbc5ade17ee8eb4a505e5\"\n },\n \"CreateConfig:CreateConfig3\": {\n \"signature\": \"f773602934078df30738308c068bbe6aef034569e641fe9a09b73ce24521d728615ce5aa03b0aa8f4baad35461ae88985b1c1706db773de2edacf8c9871c28b6\",\n \"type\": \"BuildSimpleExecuteScriptTxResult\",\n \"fromGroup\": 0,\n \"toGroup\": 0,\n \"unsignedTx\": \"00010101010300010011144020b488d493ae86dc82da6ba93156c6c68a751bb2093438d29b12dc3f6b2dfbf1000f40cc17001600c5194c0809134bb80c0f0d144020b488d493ae86dc82da6ba93156c6c68a751bb2093438d29b12dc3f6b2dfbf1000104188000e0ecc1174876e80001aaa31a3bf743087ff9358501462aa08999e5bbfaa8f52be889b8019f6389bb7520f103f20002aa2b00c7436014a228d1aac67b64daf32f482052c2186c0efc78d9784ef0a19401c498bb3d55bbc4be8800551362cc76354454f639b640f9c898aa72cf097706ad51d8fbcb2fcb4b65e78100000000000000000000\",\n \"gasAmount\": 57580,\n \"gasPrice\": \"100000000000\",\n \"txId\": \"1f3343aec9b4b4e7c311acd82f7cd1bf22ca90e5f81160ef1b9bcf6239fa5060\",\n \"simulationResult\": {\n \"contractInputs\": [],\n \"generatedOutputs\": [\n {\n \"address\": \"224KShDpNTBoHpoXdFySWKzfZV4K4fzeJpu6QQnawuH4s\",\n \"attoAlphAmount\": \"100000000000000000\",\n \"tokens\": []\n }\n ]\n },\n \"groupIndex\": 0,\n \"blockHash\": \"0000000eddeeb1563eb0b62c8e95ccb37e2973dd25a44b5efcbbcd2472dfc570\",\n \"codeHash\": \"56cc1d4421f4f23043899b7a0373b591a761b29975087688cdd0bd3f00808bbc\"\n },\n \"CreateConfig:CreateConfig4\": {\n \"signature\": \"e26b67750a9fdbef0612d73957e11244a280b009c5b54f662956ba714091efa904ee53c0475f735b091def0500836dc7541ca5c6d1b8942fe4917d1f24fadcfc\",\n \"type\": \"BuildSimpleExecuteScriptTxResult\",\n \"fromGroup\": 0,\n \"toGroup\": 0,\n \"unsignedTx\": \"00010101010300010011144020b488d493ae86dc82da6ba93156c6c68a751bb2093438d29b12dc3f6b2dfbf1001040cc17001600c5194c080a134fa00c0f0d144020b488d493ae86dc82da6ba93156c6c68a751bb2093438d29b12dc3f6b2dfbf1000104188000e0ecc1174876e80001aaa31a3b5720d76bd307754c5981b82d6f25053a11c933d0fa478ccdeaf99552263728dc0002aa2b00c7436014a228d1aac67b64daf32f482052c2186c0efc78d9784ef0a19401c4974382fe859cde8800551362cc76354454f639b640f9c898aa72cf097706ad51d8fbcb2fcb4b65e78100000000000000000000\",\n \"gasAmount\": 57580,\n \"gasPrice\": \"100000000000\",\n \"txId\": \"e840e41ea902b011bbe949f94545426699fcc7a953ce502c86c440ba331d5993\",\n \"simulationResult\": {\n \"contractInputs\": [],\n \"generatedOutputs\": [\n {\n \"address\": \"297o6U8udc82YWUx3PNnGn55kNAyfjpwHHiGUvcVbr5yy\",\n \"attoAlphAmount\": \"100000000000000000\",\n \"tokens\": []\n }\n ]\n },\n \"groupIndex\": 0,\n \"blockHash\": \"00000005ac0a2906039b53792fe59ecf73bc0046be85fe581e48128746915ac0\",\n \"codeHash\": \"cb2358ca6af3369fb99c381105861978b5db82f85424102882a46270b93e0c53\"\n },\n \"CreateConfig:CreateConfig5\": {\n \"signature\": \"b75ee406002e7e83c67ff2fed440e34bab62b4efc2849b6d0ca8a4fec6ded4c600beb892de5eba46c63137e739d2bdb848391ac2d6724cd7a60ed270be6d9883\",\n \"type\": \"BuildSimpleExecuteScriptTxResult\",\n \"fromGroup\": 0,\n \"toGroup\": 0,\n \"unsignedTx\": \"00010101010300010011144020b488d493ae86dc82da6ba93156c6c68a751bb2093438d29b12dc3f6b2dfbf1001140cc17001600c5194c0812061353880c0f0d144020b488d493ae86dc82da6ba93156c6c68a751bb2093438d29b12dc3f6b2dfbf1000104188000e0edc1174876e80001aaa31a3b21c3cb2e99ed2d7f04a6d23911d3bd655195098defd223452262376e99b285ab0002aa2b00c7436014a228d1aac67b64daf32f482052c2186c0efc78d9784ef0a19401c495cbc89006fe168800551362cc76354454f639b640f9c898aa72cf097706ad51d8fbcb2fcb4b65e78100000000000000000000\",\n \"gasAmount\": 57581,\n \"gasPrice\": \"100000000000\",\n \"txId\": \"603c3a6f3ce39bbf0fc10856b7040c8ed2f161ed3b8d4484e8f694612e0a4ad2\",\n \"simulationResult\": {\n \"contractInputs\": [],\n \"generatedOutputs\": [\n {\n \"address\": \"222HwgmBpLyFbs3AjCKbzbF92EfBRsyJnkRxu4xHQvpLX\",\n \"attoAlphAmount\": \"100000000000000000\",\n \"tokens\": []\n }\n ]\n },\n \"groupIndex\": 0,\n \"blockHash\": \"0000002e3c2d3880c281df7c87cc82ec6617e0a5ecebee589e1ecd6d7b1df790\",\n \"codeHash\": \"be4cec7139b1145c9c64a4b7c7c0a53e006393e78f08289e4fd4ae47a0cab758\"\n },\n \"CreateConfig:CreateConfig6\": {\n \"signature\": \"dab6743edd435549b4fd7179eb7c6df79de0220b3886ca65728d20781b6d571b4352c49d514f6fb35d4e0040126f22d94b3df81fb9b670308d5eda710821ab4f\",\n \"type\": \"BuildSimpleExecuteScriptTxResult\",\n \"fromGroup\": 0,\n \"toGroup\": 0,\n \"unsignedTx\": \"00010101010300010011144020b488d493ae86dc82da6ba93156c6c68a751bb2093438d29b12dc3f6b2dfbf100130640cc17001600c5194c0812071357700c0f0d144020b488d493ae86dc82da6ba93156c6c68a751bb2093438d29b12dc3f6b2dfbf1000104188000e0eec1174876e80001aaa31a3bdc2a0b550a49cea44d0edb260a642a3734daba9b41d30831eb148b073af8db7e0002aa2b00c7436014a228d1aac67b64daf32f482052c2186c0efc78d9784ef0a19401c494540e0a3fe8668800551362cc76354454f639b640f9c898aa72cf097706ad51d8fbcb2fcb4b65e78100000000000000000000\",\n \"gasAmount\": 57582,\n \"gasPrice\": \"100000000000\",\n \"txId\": \"3ffac49413eec60226fa6c69247fb65c10a21abaa21f5c2fdba566cc11281d6c\",\n \"simulationResult\": {\n \"contractInputs\": [],\n \"generatedOutputs\": [\n {\n \"address\": \"wrBRUYSa8GuKDL5UcTrnrfGSRiikrf372sw8rQTUF4Aj\",\n \"attoAlphAmount\": \"100000000000000000\",\n \"tokens\": []\n }\n ]\n },\n \"groupIndex\": 0,\n \"blockHash\": \"00000048670d6ec9c18df00e64e82303acf6732e6f2bb9205d88a6a93884c0b0\",\n \"codeHash\": \"c191c582f147334644dd3026d938869e34f42d8872556661e09f6b3fb77c180a\"\n },\n \"CreateConfig:CreateConfig7\": {\n \"signature\": \"66e3dd9fbb3d9619fb750b71406009c7edf4c7c2387877c1b9a1c0fc7c3ae9a8318f634a06b528663b1f4bd46e06fa348a0622ae80b8549b35ee87ce07b0de4f\",\n \"type\": \"BuildSimpleExecuteScriptTxResult\",\n \"fromGroup\": 0,\n \"toGroup\": 0,\n \"unsignedTx\": \"00010101010300010011144020b488d493ae86dc82da6ba93156c6c68a751bb2093438d29b12dc3f6b2dfbf100130740cc17001600c5194c081208135b580c0f0d144020b488d493ae86dc82da6ba93156c6c68a751bb2093438d29b12dc3f6b2dfbf1000104188000e0eec1174876e80001aaa31a3b6b5657b97915c24e9bef497962e7b189f25cbc49f765b3d00ea37e89eb026e4e0002aa2b00c7436014a228d1aac67b64daf32f482052c2186c0efc78d9784ef0a19401c492dc538478d2b68800551362cc76354454f639b640f9c898aa72cf097706ad51d8fbcb2fcb4b65e78100000000000000000000\",\n \"gasAmount\": 57582,\n \"gasPrice\": \"100000000000\",\n \"txId\": \"2d7d228802e20762b20cef01fbcf1b6463e17778c70b3814a7e8ea767d408b6a\",\n \"simulationResult\": {\n \"contractInputs\": [],\n \"generatedOutputs\": [\n {\n \"address\": \"26pJYvKQLfLiqDAd7tJbtmdqrZvZx1tMvbZ1YAuD42cWj\",\n \"attoAlphAmount\": \"100000000000000000\",\n \"tokens\": []\n }\n ]\n },\n \"groupIndex\": 0,\n \"blockHash\": \"0000007cfb61273fd897c5e41f55488d40cd5b23539c3f12bf840c415a2d7ae0\",\n \"codeHash\": \"38287a150e698cd14e9a732e1683155d5991af5e51dad6da946798935f695acb\"\n },\n \"CreateConfig:CreateConfig8\": {\n \"signature\": \"38b5bbbb318e9bfb2110c683c477dd009d99ebc3303d131fd00723a19ed8dc1e62bbc91250e4dbc0947c0e085257ea5a0c077f156fcd29a85431443188d7cf0d\",\n \"type\": \"BuildSimpleExecuteScriptTxResult\",\n \"fromGroup\": 0,\n \"toGroup\": 0,\n \"unsignedTx\": \"00010101010300010011144020b488d493ae86dc82da6ba93156c6c68a751bb2093438d29b12dc3f6b2dfbf100130840cc17001600c5194c081209135f400c0f0d144020b488d493ae86dc82da6ba93156c6c68a751bb2093438d29b12dc3f6b2dfbf1000104188000e0eec1174876e80001aaa31a3b75c027d222bd96fdac6bb47915a339fb5bf5dc6a749e28840c9e8ab32616eae00002aa2b00c7436014a228d1aac67b64daf32f482052c2186c0efc78d9784ef0a19401c4916498feb1bd068800551362cc76354454f639b640f9c898aa72cf097706ad51d8fbcb2fcb4b65e78100000000000000000000\",\n \"gasAmount\": 57582,\n \"gasPrice\": \"100000000000\",\n \"txId\": \"3976ca6f53010f4ee68028313e9204a15409a509893b5fec5aec2dd37013e15e\",\n \"simulationResult\": {\n \"contractInputs\": [],\n \"generatedOutputs\": [\n {\n \"address\": \"28VtFdmDsmXx4ZuNSJPfL4BmfdFZ6GJMuQMMmGdVeS3iw\",\n \"attoAlphAmount\": \"100000000000000000\",\n \"tokens\": []\n }\n ]\n },\n \"groupIndex\": 0,\n \"blockHash\": \"000000bb9372daf2ba4e1c89564877a54d559fc21edfea5293a119a6871b2f70\",\n \"codeHash\": \"975f7925440f30ad8a98fed86a2ab63b04d95217a28092a7781bbe1ecd40d7b7\"\n },\n \"CreateConfig:CreateConfig9\": {\n \"signature\": \"1750ab1becc014726ab696c8733054544f115e8db24183cf8229d23bfb46ba3f4113e34e508e9cc35a6564ae51b5d4da34a2743990b8a7c781509c76907c581c\",\n \"type\": \"BuildSimpleExecuteScriptTxResult\",\n \"fromGroup\": 0,\n \"toGroup\": 0,\n \"unsignedTx\": \"00010101010300010011144020b488d493ae86dc82da6ba93156c6c68a751bb2093438d29b12dc3f6b2dfbf100130940cc17001600c5194c08120a1363280c0f0d144020b488d493ae86dc82da6ba93156c6c68a751bb2093438d29b12dc3f6b2dfbf1000104188000e0eec1174876e80001aaa31a3bdf0ad6a5685a16a93e6f227e7835c34f06769786e5f9116124998f7eef4d115d0002aa2b00c7436014a228d1aac67b64daf32f482052c2186c0efc78d9784ef0a19401c48fecde78eaa7568800551362cc76354454f639b640f9c898aa72cf097706ad51d8fbcb2fcb4b65e78100000000000000000000\",\n \"gasAmount\": 57582,\n \"gasPrice\": \"100000000000\",\n \"txId\": \"aedc03098e4eb813475753842081027a2a86aea428fa8e0298f1f6e5c806ddeb\",\n \"simulationResult\": {\n \"contractInputs\": [],\n \"generatedOutputs\": [\n {\n \"address\": \"266AHYY8dLvi3BdhdBYiyXbct6pTbzCxrSHqqGvESnWsZ\",\n \"attoAlphAmount\": \"100000000000000000\",\n \"tokens\": []\n }\n ]\n },\n \"groupIndex\": 0,\n \"blockHash\": \"000000db4c4b21215b5c09a5c800e77f22434c633c09033cfcb5ef93f95ab270\",\n \"codeHash\": \"630837e8f671616373514acb6cd4e6a24c2f68f1f2a13cacf71349fdfbe1f197\"\n }\n },\n \"migrations\": {}\n}","{\n \"deployerAddress\": \"1DrDyTr9RpRsQnDnXo2YRiPzPW4ooHX5LLoqXrqfMrpQH\",\n \"contracts\": {\n \"Pool\": {\n \"txId\": \"679083e77c2b71bf55816f328146c37529b679bfbc3b6e024a96091848847753\",\n \"unsignedTx\": \"000401010103000000081500bee85f379545a2ed9f6cceb331288842f378cf0f04012ad4ac8824aae7d6f80a13c4016345785d8a0000a2145c6a4020403509124023403843b747b34916493049ca4a3c4a6c4a9c4ad04afc4b3b4b674c494c6c4c8a4cbc4cd84d0b4d6c4d824d9d4da74dbc4dd24df94e064e1b4e714e854eef4f5f4feb508b512f51b45206524e535c562056ae572f57af57c5589258af597a5a125a4b5bfe010000000102140002010000000102a0000201000101010716000c3413406e7bce0102010002030008160100021702160016024113406d7b0000010301413816000c3f264c061600057c203d4a0216003d1701160112800d89e83d321340ca7b16010d380c304c0213ccfffcb933bd6fad37aa2d162d1a5940014a0113cd0100000000000000000000000000000000170216010e380c304c06160213ccfff97272373d413259a46990580e213a2c1340803c4a0116021702160110380c304c06160213ccfff2e50f5f656932ef12357cf3c7fdcc2c1340803c4a011602170216011308380c304c06160213ccffe5caca7e10e4e61c3624eaa0941cd02c1340803c4a011602170216011310380c304c06160213ccffcb9843d60f6159c9db58835c9266442c1340803c4a011602170216011320380c304c06160213ccff973b41fa98c081472e6896dfb254c02c1340803c4a01160217021601134040380c304c06160213ccff2ea16466c96a3843ec78b326b528612c1340803c4a01160217021601134080380c304c06160213ccfe5dee046a99a2a811c461f1969c30532c1340803c4a01160217021601134100380c304c06160213ccfcbe86c7900a88aedcffc83b479aa3a42c1340803c4a01160217021601134200380c304c06160213ccf987a7253ac413176f2b074cf7815e542c1340803c4a01160217021601134400380c304c06160213ccf3392b0822b70005940c7a398e4b70f32c1340803c4a01160217021601134800380c304c06160213cce7159475a2c29b7443b29c7fa6e889d92c1340803c4a01160217021601135000380c304c06160213ccd097f3bdfd2022b8845ad8f792aa58252c1340803c4a01160217021601136000380c304c06160213cca9f746462d870fdf8a65dc1f90e061e52c1340803c4a011602170216011380004000380c304c06160213cc70d869a156d2a1b890bb3df62baf32f72c1340803c4a011602170216011380008000380c304c06160213cc31be135f97d08fd981231505542fcfa62c1340803c4a011602170216011380010000380c304c06160213cc09aa508b5b7a84e1c677de54f3e99bc92c1340803c4a011602170216011380020000380c304c06160213cb5d6af8dedb81196699c329225ee6042c1340803c4a011602170216011380040000380c304c06160213ca2216e584f5fa1ea926041bedfe982c1340803c4a011602170216011380080000380c304c06160213c8048a170391f7dc42444e8fa22c1340803c4a0116021702160005284c060c0d3616022d4a0116021702160213c1010000000091020100010b0141f2d3c6eb44f3160013c101000276a3347a4c0418160013d0fffd8963efd1fc6a506488495d951d5263988d26311340c97b160013203b1701160117020c1703160213cd01000000000000000000000000000000000d2b334c08160313408039170316021340803c1702160213c50100000000000000000d2b334c08160313404039170316021340403c1702160213c101000000000d2b334c0816031320391703160213203c17021602138000ffff334c0816031310391703160213103c170216021340ff334c0816031308391703160213083c17021602130f334c081603103917031602103c170216020f334c0816030e39170316020e3c170216020d334c0416030d3917031603134080344c071601160313407f2b3c17024a06160113407f16032b3b17021603134080314c0e0c0d3613407f2b16032a0c0d361340403c384a0316031340802b1340403b17040c1705160216022c13407f3c170216021340803c170516041605133f3b391704160216053c1702160216022c13407f3c170216021340803c170516041605133e3b391704160216053c1702160216022c13407f3c170216021340803c170516041605133d3b391704160216053c1702160216022c13407f3c170216021340803c170516041605133c3b391704160216053c1702160216022c13407f3c170216021340803c170516041605133b3b391704160216053c1702160216022c13407f3c170216021340803c170516041605133a3b391704160216053c1702160216022c13407f3c170216021340803c17051604160513393b391704160216053c1702160216022c13407f3c170216021340803c17051604160513383b391704160216053c1702160216022c13407f3c170216021340803c17051604160513373b391704160216053c1702160216022c13407f3c170216021340803c17051604160513363b391704160216053c1702160216022c13407f3c170216021340803c17051604160513353b391704160216053c1702160216022c13407f3c170216021340803c17051604160513343b391704160216053c1702160216022c13407f3c170216021340803c17051604160513333b391704160216053c1702160216022c13407f3c170216021340803c17051604160513323b391704160413c63627a301d71055774c85371706160613dcfffffffffffffffffffffffffffffffffd709b7e5480fba5a50fed5e62ffc556351340803c1707160613ccdb2df09e81959a81455e260799a0632f351340803c170816071380800000314c0316073f4a0616071380ffffff383f128100000020170916081380800000314c0316083f4a0616081380ffffff383f128100000020170a1609160a244c031609024a0a160a00041600324c03160a024a021609020000050d0440c5160016013417051603052917060c17070c17080c17090c170a16064c402316033d13800f424016042b13800f42400010170b16054c0616011600160203000c4a0516001601160203000e1707160b1607344c0216014a0516001602160b1605000a17094a402216054c0616011600160204000e4a0516001601160204000c17081603057c203d1608344c0216014a09160016021603057c203d1605000b1709160116092f170c16054c1e160c7a4c021816064c0216074a0516091600160203000c1707160c7a4c03181606194c0216084a0516091600160204000e17084a1d160c7a4c021816064c0216074a0516001609160203000e1707160c7a4c03181606194c0216084a0516001609160204000c17081606197a4c0818160316083f057c20284c061603057c203d170816067a4c041816091601304c0616033d16072b170a4a071607160413800f424016042b0011170a160916071608160a0200000202010e160016012d160016012e0c2f4c020c4a010d2a020000040901404916020c2f4c0216000216011340603b17041602160037170516034c1c160516022d16002f4c0d1604160535170616061604344c051604160016060011021604160416002d16022a0007024a1d160516022d16002f7a4c041816041605331340dd7b160416052b170716041600160700111708160813d1010000000000000000000000000000000000000000311340e17b1608020000040701402116034c11160213c901000000000000000000000000160100101704160016042a1705160513d1010000000000000000000000000000000000000000311340e17b1605024a0e160213c90100000000000000000000000016010011170616001606331340de7b160016062b0200000404011916000c331340df7b16010c331340e07b16034c07160016011602030008024a061600160116020300090200000404011916000c331340df7b16010c331340e07b16034c07160016011602040009024a061600160116020400080200000406011916021340603b1704160116002b170516034c08160416051601001116000007024a07160416051601001016002d0200000303011b16020b274c0f160016011602057c203d04000c3f057c20024a081600160116023d03000c3f02000004050111160116002b170416034c061602160413c9010000000000000000000000000011024a051602160413c90100000000000000000000000000100200000303011b160205264c0f160016011602057c203d04000e3f057c20024a081600160116023d03000e3f020000030901408d160016010c0d3687170316001601371704160316043616031604314c020d4a010c36170516050c2f4c04160416022d02160216053313415f7b160016011602871706160516061604334c020d4a010c361705160416063617040c1602361602381707160216072d1702160416072d17040c16073616072d0d351707160416051607373917040f1602370e3a170816080e16021608373637170816080e16021608373637170816080e16021608373637170816080e16021608373637170816080e16021608373637170816080e16021608373637170816041608370200000304011216001601160200101703160016011602870c334c0416030d2a021603020000010101120e16007a7a1241003a7a05294b033a904a023a221302640200000105011b1600001217011601cb17021602c54c02160202b21301640c130164170417031601ce0416031604c11816020200000103010d1600001217011601cb17021602c54c02160202ce040200000103001e1600ce0a23052413412d7b16007a7ace0a3a7a05294b033a904a023a22170116010013170216010d0c160201020000020602403016007a7ace0a3a7a05294b033a904a023a2216014c02054a01061f170216020014170316021601ce0a0f0e1603010317051704160412bff27618264c0212bff276181704160412800d89e8284c0212800d89e817041604160502010003030108d37afb14100d1600160116021304640201000405010ad35b19984c1601160216030017170416001604cc0200000101010316004002000003040109160016020019cc1703160116034402000003040109160016011602001a170316001603cc0200000202000f16001601261340667b160012bff27618291340677b160112800d89e8271340687b0000010101050c160013026402010001020107d30949c5981600001d17011601cb02000001080240301600001d17011601cb17021602c54c03160204021600a002274c04a00ea00fa0104a030c0c0c170517041703b216001302640c05160316041605130564170717061601ce0316061607c11816020302000003040108160016011602001717031603cb020000030d024039160016011602001717031603cb17041604c54c03160404020c0c0c1709170817070c0c0c170c170b170ab2a0001406414c504800031303640c160716081609160a160b160c13076417061705a0000d2aa1001603ce01160516060d1600c9181604030200000209034047a002a00ea00fa010100f16000101170417031702a002a00ea00fa010100f160101021707170617050c170816080f314c402716087a0f314d130e2ac316087a0f314d0e2a782b16087a0f314d112a783616087a0f314d0e2a7916080d2a17084a7fd5160216031604020000051103404b1602001f170617051603001f17081707ce0b1604040f0d160501001709ce0b1604030f0d16070100170a16097a4b021816064c0216020015160a7a4b021816084c0216030015160516070022170d170c170b1604160b160c160d100f160001041710170f170e16094c0516010d0c16050103160a4c0516010d0c16070103160e160f1610020003050f05405416021603001c560030160016011602160316040023170717061705160405254c403ca004170816020004170916030004170aa0021602264c0b1609160a1604000d170b160b0516051606160702a0021603264c16a001160a1604000d170c1609a0011604000f170d16083f16041f3da104160c160d160516061607021609160a1604000f170e05160e1605160616070205051605160616070201070513024056d3e58379f416011602160300211706170516064c0d16040c2f170716071913406b7b160016014513406c7b16011602160316043f170b170a170917081600160516064c020c4a010da3160516081609160a160b00241710170f170e170d170c160c3d1711160d3d17121600ce061611ac1600ce071612ac1207160116021603160e160f161056750916001601160216031604161116125676161116120201030511024048d39d5023b316011602160316043f057c20170817071706170516011602160300201709160016090da3160916051606160716080024170e170d170c170b170a160a057c203d170f160b057c203d1710160f16100e0c160901051207160116021603160c160d160e56750a16001601160216031604160f161075160f1610020103080c034027d3417830ee160216031604002017081605160616070f0f16080106170b170a1709160016080da316011609160a160b00281206160016011602160316041609160a160b761609160a160b020001040800402ece06ce07ce081706170517040c170716070f314c402216077a0f314d0d2a780c334c12160016077a0f314d102a7816077a0f314d0d2a78ab16070d2a17074a7fda01000418004097d34c88990ba0011704a0021705a00417061601052817070517081605160019001618170906160900045e16030c334c407c16030d2b1703160516000016170b170a160a0004170c1604160c16061601ce0900061710170f170e170d16074c0d1601160e16102a3f2017011608160f3f2017084a0c1601160f3f1f17011608160e16102a3f1f1708160b4c17160a001e17110c0d16110105171216004c051612057c204a011612171316063f16131f3d170616004c04160a06204a01160a1705160d170407160416065f160105244c1f1602430c2f4c0102160016071c4c02ce074a01ce061714160216141607002b171717161817151615160816171603100c16160129024a7f80010307403402416dd3d6407a21160405251340697b560030160405281707a001a002a003170a1709170816034c0c16051608317a4c0418160513c101000276a33313406a7b4a0b16051608337a4c0418160513d0fffd8963efd1fc6a506488495d951d5263988d263113406a7ba00416034c04160a13102e4a03160a103c170c170b1604051608160916034c02a00e4a01a00f160b0c1713171217111710170f170e170d160d05257a4c0418160f1605304c409b1610160300161715171416140004171616034c0416161605314a031616160533171716174c0216054a0116161718160f16181612160dce090006171c171b171a1719160f161416151616161a161b161c1723172217211720171f171e171d1619170f16074c0d160d162116232a3f20170d160e16223f20170e4a0c160d16223f1f170d160e162116232a3f1f170e160c0c334c041623160c2d4a010c1724161316242a171316120c334c091611162316242b13cd0100000000000000000000000000000000161200102a1711160f16202f4c4027161f4c1c161e001e1725a00ea00fa01016031611110d16250104172616034c051626057c204a011626172716123f16271f3d171216034c04161e06204a01161e17104a07160f161d304c03160f000517104a7f5b160fa1011610a1021612a1041613130a2d1728161316282b171316034c071611a10ea01116132aa1114a061611a10fa01216132aa1121604160d201729160e172a160316071d4c041629172a160e172916034c0e160016011602ce0616293dce07162a057c203d16064a0d160016011602ce07162a3dce061629057c203d1606173217311730172f172e172d172c172b16074c0f1600162e162fa3162b162c162d162e162f1630163116321628002d4a1216001602a51733160016021633a3162b162c162d162e162f1630163116321628002c08160016011629162aa001a004a002751629162a020000030d04404116000c13206217030e170416001320132016042a62170516056d1706160171160371311707160716021c170816084c0413c101000276a30d2a4a0313d0fffd8963efd1fc6a506488495d951d5263988d260d2b17091600132016042a16004362170a16074c0416011603444a031603160144170bce00160b1606001b170c16081609160c160a020001091000404716031602414c1e160016031604acce02160047cc1709ce00ce06ce0744ce05001a170a160016031608a3160016031608160a0c110c160901004a40211607160304002b170e170d170c170b16001602a5170f16001602160fa31600b21602160b16043f057c20160c160e13070e160d012a1818160116051606ab00010910004046160016031604acce02160147cc17091609c51340717b1609170ace00ce06ce0744ce05001a170b160016031608a3160016031608160b0c110c160a010016051602414c05160116051606ab4a1a1607160503002b170f170e170d170cb216051606a3b216011602160c16063f160d160f13070e160e012a1818010002020307d3c62bf5cfa0011600000416010004020000020800408716007a0f314d0f2c112ac3170216007a0f314d0f2c112a0d2ac3170316020c2f7a4b041816011602327a4b041816031602324c0102a0040c304c404f160116022b170416007a0f314d0f2c112a0e2ac31705160316022b170616041606314c0516041605160600104a011605170716007a0f314d130e2ac3160713cd0100000000000000000000000000000000a00400102a16007a0f314d130e2ac416007a0f314d0f2c112a0e2ac316072b16007a0f314d0f2c112a0e2ac4160116007a0f314d0f2c112ac400000102000e0c170116010f314c0816011600002f16010d2a17014a340107030a004096d34ca91e1416010f311340727b16020c331340747bce06ce07ce0817051704170316017a0f314d0f2a7817065617071607003016017a0f314d0f2c112a0e2ac3170816017a0f314d0f2c112a0d2ac31607337a4c041816080c331340737b16017a0f314d0f2c112a0d2ac316072b1709160716017a0f314d0f2c112ac416017a0f314d0f2c112a0d2ac316091602160800102a16017a0f314d0f2c112a0d2ac416017a0f314d0f2c112a0e2ac316022a16017a0f314d0f2c112a0e2ac4160016061602ac0107050a004065d375c252e5b4ce00774513406f7b16010f311340727b16040c331340747b56170516021605334c0216024a011605170616061603311340707b16050030ce06ce07ce08170917081707160616017a0f314d0f2c112ac4160316017a0f314d0f2c112a0d2ac416017a0f314d0f2c112a0e2ac316042a16017a0f314d0f2c112a0e2ac4160016017a0f314d13072a781604ac01020103001cd3960b26b3b3ce00411341937ba0111701a01217021600ce061601ab1600ce071602ab0ca1110ca1121208b41600160116026101000840270840d1d300611b5f1601001e17081602001e17091600160116020020170a0c10160a0107170e170d170c170b16081609002217111710170f160100041712160200041713051714051715160b3f1716a0021601264c06161216131616000d17144a14a0021602264c0ba00116131616000d17141612a0011616000f17154a05161216131616000f17150c0c0c171917181717160b0c334c40290c171a161a0f314c4023161a7a0f314d130f2a78161a7a0f314d130c2a782b171b161b160b13cd01000000000000000000000000000000000010161a7a0f314d13172a79161a0d2a171a4a7fd905171c05171d56171e161e16062b171f1607161f2a17201603160b161f2c2a3f1721a0021601264c06161216131621000d171c4a14a0021602264c0ba00116131621000d171c1612a0011621000f171d4a05161216131621000f171da001a00113c901000000000000000000000000001017221622161c3d13c9010000000000000000000000000010161d3d2a1723160416172a1724160516182a17251622162413c901000000000000000000000000001016252a172616141615161716181619162316261620021440210d0300030003000300030002000300030003000200010002000306414c50480002144027130200020001000200020002000200020002000200020002000200020002000200020002000200ad1880011aafc1174876e8000137a4444740c9154e7f571b29f47c7d93de1a6afce0ee3918f2630a868d4c015977269a81000381818e63bd9e35a5489b52a430accefc608fd60aa2c7c0d1b393b5239aedf6b001c406070832059b680000bee85f379545a2ed9f6cceb331288842f378cf0f04012ad4ac8824aae7d6f80a00000000000000000000\",\n \"signature\": \"41ab84eac3e6f62616c3e8afc9c29e06cc7fba59a9640b97c470a2cfb7f0d11833ef57fb36989c4b5c362184b50e830a74560b925c4adc94b0964a9f41768356\",\n \"gasPrice\": \"100000000000\",\n \"gasAmount\": 72367,\n \"blockHash\": \"4d47dd6cf64f35687ef8feecd53fc4df79dc82f575eb77f65994fb8d41f8adf0\",\n \"codeHash\": \"c49cf329e8847e20ba8e262407de56e66b03ad1761510dfa08581044914fa5eb\",\n \"contractInstance\": {\n \"address\": \"uermu1A4UyXXNXtkTxqVobmUzsrstYXNHqRxxFuGfVCs\",\n \"contractId\": \"0e527d65f488e70fcf3618e96013355547e8cacd3f56a1b95f14b40aa241ed00\",\n \"groupIndex\": 0\n }\n },\n \"Position\": {\n \"txId\": \"f27ac1ca3dec2f41afb9004948ac2ca5028e2088b495437e6cabace335ab7b5e\",\n \"unsignedTx\": \"000401010103000000081500bee85f379545a2ed9f6cceb331288842f378cf0f04012ad4ac8824aae7d6f80a13c4016345785d8a0000a214428a0a08091c40fe412141c741e84266427a01000000010214000201000000020ace007a494d470d132162ce01020000030901408d160016010c0d3687170316001601371704160316043616031604314c020d4a010c36170516050c2f4c04160416022d02160216053313415f7b160016011602871706160516061604334c020d4a010c361705160416063617040c1602361602381707160216072d1702160416072d17040c16073616072d0d351707160416051607373917040f1602370e3a170816080e16021608373637170816080e16021608373637170816080e16021608373637170816080e16021608373637170816080e16021608373637170816080e16021608373637170816041608370200000304011216001601160200021703160016011602870c334c0416030d2a0216030201000409034062d379a1c203b4ce00451343857ba0003f16001f3d17040c0c0c1707170617050c170816080f314c403ea0000c334c403516087a0f314d0d2a7816087a0f314d0d2ac32ba00013cd0100000000000000000000000000000000000216087a0f314d112a7916087a0f314d102ac316087a0f314d112a782a16087a0f314d102ac416080d2a17084a7fbe160116021603a103a102a1011604a1001605160616070201000202000ed3b478489ab4ce00451343857ba00416002aa104a00516012aa10501000308034056d3ad05a194b4ce00451343857b0c0c0c1705170417030c170616060f314c404016067a0f314d7816067a0f314d102ac3334c0916067a0f314d102ac34a0616067a0f314d781707160716067a0f314d0f2a7916067a0f314d102ac316072b16067a0f314d102ac416060d2a17064a7fbc16031604160502010000000406d3f97c255fa000a001a002a0030214402d030403000000000000000000000000000000000000000000000000000000000000000002000306414c50480003140f070200020002000200020002000200ad188000e522c1174876e8000137a44447e5b84f16c907398f54c8184a0f9bbd1229ade998e58229db3c089ddbc34ed109000381818e63bd9e35a5489b52a430accefc608fd60aa2c7c0d1b393b5239aedf6b001c4048eebcfaabe980000bee85f379545a2ed9f6cceb331288842f378cf0f04012ad4ac8824aae7d6f80a00000000000000000000\",\n \"signature\": \"f315995408ed9b1187188b3d5f42203bb8c8eec9beaea67502e2896131d258f01f0c10a34838f36d12166c720f5daf1a099a6dc2a87d138e446b19623f243669\",\n \"gasPrice\": \"100000000000\",\n \"gasAmount\": 58658,\n \"blockHash\": \"2004c19da6de04f32c916814c2636fb8b965fed8b14066ef1a01b7807fffa970\",\n \"codeHash\": \"2a56af5ded37a8003984377e33b58575d441f323541b78e26abf2659b520e2e3\",\n \"contractInstance\": {\n \"address\": \"26az8J8TD3gzVj481zs6UK2fNDvByojgZVEt1cjGLBYsq\",\n \"contractId\": \"b0c5090f18458a2023ef92ff5669c203d6dcfc5c615f0185f3818e28e354dd00\",\n \"groupIndex\": 0\n }\n },\n \"Tick\": {\n \"txId\": \"14752370615a65ce5267d5751ffc67f4e2f702ade381fecda172d2d2cd78ef18\",\n \"unsignedTx\": \"000401010103000000081500bee85f379545a2ed9f6cceb331288842f378cf0f04012ad4ac8824aae7d6f80a13c4016345785d8a0000a21441810706405140a340f5410b416541730100030601402ad344ba8eddb4ce00451343217ba000170316033f16011f1704160405291343237b16043d170516051600321343227b1605a10016024c04a0011601204a03a00116011fa10116050c2f0201000405034032d3cfc5e9a41600ce01294c05a002a003a004024a40280c170416040f314c1e16047a0f314d0d2a7816047a0f314d0e2ac32b16047a0f314d0d2a7916040d2a17044a7fde1601160216030201000405034032d36efb0f181600ce01264c05a002a003a004024a40280c170416040f314c1e16047a0f314d0d2a7816047a0f314d0e2ac32b16047a0f314d0d2a7916040d2a17044a7fde16011602160302010201010008d3b0cd421fb4ce00451343217b1600b001000506014035d336cb1526b4ce00451343217b16034c03160417004a02160417010c170516050f314c1a16057a0f314d7816057a0f314d0e2ac32b16057a0f314d7916050d2a17054a22160016011602a104a103a102a00102010000000103d3602bc55da0010214402502040300000000000000000000000000000000000000000000000000000000000000000100140b0502000100020002000200ad188000e2bec1174876e8000137a444474b56af6fc30023c09560f69fb947a63dd67ce0849d0128651427a12fa5d57638000381818e63bd9e35a5489b52a430accefc608fd60aa2c7c0d1b393b5239aedf6b001c4031707168c24680000bee85f379545a2ed9f6cceb331288842f378cf0f04012ad4ac8824aae7d6f80a00000000000000000000\",\n \"signature\": \"677ed83c471d1918ec08f41a4e8f0333a6aafefbda3c8c27d68c23adacbaa7c4088a3009cbc18b0cc26a562a146adadbdb84918ca5a2c6df6b064cfb4b9f90d2\",\n \"gasPrice\": \"100000000000\",\n \"gasAmount\": 58046,\n \"blockHash\": \"48da0a3fb12413788b56fb56e1f0902c53d6dc60654d1eb2c03e8147b058a210\",\n \"codeHash\": \"a3a857d9b52fea681f09b73760c8b2a0f637889c23c230911683dc1da4f32c04\",\n \"contractInstance\": {\n \"address\": \"xjnNf9wUVZwPBmfZvTgazvETmd1KE9LssBMHCAvJPN8P\",\n \"contractId\": \"3c287a934691eaf52cf9536729a3ed698aff90f7d32cd4abe0cdac8bb3692900\",\n \"groupIndex\": 0\n }\n },\n \"BitmapWord\": {\n \"txId\": \"f7297b261ef45362c80b8365ff9f56e7af9115af31dad14c23e4afae27b5ab64\",\n \"unsignedTx\": \"000401010103000000081500bee85f379545a2ed9f6cceb331288842f378cf0f04012ad4ac8824aae7d6f80a13c4016345785d8a0000a21442b6020540d641c941e7429442aa0000010201406516000c301340967b0c1701160013cd0100000000000000000000000000000000344c0816001340803c170016011340802a1701160013c5010000000000000000344c0816001340403c170016011340402a1701160013c10100000000344c08160013203c1700160113202a170116001380010000344c08160013103c1700160113102a17011600134100344c08160013083c1700160113082a170116001310344c081600103c17001601102a1701160010344c0816000e3c170016010e2a170116000e344c0416010d2a17011601020000010201407c16000c301340977b1340ff1701160013ccffffffffffffffffffffffffffffffff380c334c0516011340802b17014a0416001340803c1700160013c4ffffffffffffffff380c334c0516011340402b17014a0416001340403c1700160013c0ffffffff380c334c05160113202b17014a04160013203c17001600138000ffff380c334c05160113102b17014a04160013103c170016001340ff380c334c05160113082b17014a04160013083c17001600130f380c334c051601102b17014a041600103c170016000f380c334c0516010e2b17014a0416000e3c170016000d380c334c0416010d2b170116010201000101000dd3ff38d2a3ce00b4451341937ba0000d160000043b3aa1000100030f024064d327ef6f9f16014c40301600000417030d16033b0d2b0d16033b2a1704a000160438170516050c30170616064c0e16001603160500002b3f20160221170716071606024a0a160016033f20160221170816081606024a40311600000417090d16093b0d2b0c0d363a170aa000160a38170b160b0c30170c160c4c0e1600160b000116092b3f1f160221170d160d160c024a0c16001240ff16093f201f160221170e160e160c020000010101091600124100231241001f124100233d0214402301040300000000000000000000000000000000000000000000000000000000000000001403010200ad188000e47ec1174876e8000137a44447dbaba182d264fd646cdf2e40b9a316f448086e17bf22bfb5901531b5d6bb0668000381818e63bd9e35a5489b52a430accefc608fd60aa2c7c0d1b393b5239aedf6b001c4019ef99e9d74380000bee85f379545a2ed9f6cceb331288842f378cf0f04012ad4ac8824aae7d6f80a00000000000000000000\",\n \"signature\": \"43b84a389c7b3968a3dda3e9c8484afc6845a6c9fc22195cd64b7f1cc452af0a1db8ed2f4abb016984941bf06491419614a2e72f5de1a3bccbd48c7e38a76508\",\n \"gasPrice\": \"100000000000\",\n \"gasAmount\": 58494,\n \"blockHash\": \"46ec252c75891cb3ca8db732ff9379ad989e7b16b7b7acaf3ea5d6880c173220\",\n \"codeHash\": \"136e9e4d258309171e8dfb22499a72f626715e0b59933d1a049efa0aa3a12474\",\n \"contractInstance\": {\n \"address\": \"2AKCEFXysWPXNgxiJ45UyTrLaUWf8bP4RsuoHCUSZndmH\",\n \"contractId\": \"e8282cb84fe206ccea5b5b94473441bad3da632e48b286e21e1a8467331e1300\",\n \"groupIndex\": 0\n }\n },\n \"PoolConfig\": {\n \"txId\": \"761de3c7d8f9fea2fba21cefcac60c8546b488912276836ff30a86558c34d230\",\n \"unsignedTx\": \"000401010103000000081500bee85f379545a2ed9f6cceb331288842f378cf0f04012ad4ac8824aae7d6f80a13c4016345785d8a0000a21415030112010000000305d3bda4d814ce00ce01ce0202140703010002000200140100ad188000df3cc1174876e8000137a444472adaa8521c175c6443816f9e4d69fdb6f63608df0f62b0f7e2244521a879c1e7000381818e63bd9e35a5489b52a430accefc608fd60aa2c7c0d1b393b5239aedf6b001c3276691aff3d80000bee85f379545a2ed9f6cceb331288842f378cf0f04012ad4ac8824aae7d6f80a00000000000000000000\",\n \"signature\": \"b1d6088896627c808c3def57df80fdc80c8c50670e936e98de88624ccb490963151740fa8ff51211f292b8c9f46b82289e1d02d555ef8c9abeee0dda619b79c0\",\n \"gasPrice\": \"100000000000\",\n \"gasAmount\": 57148,\n \"blockHash\": \"038aea9f20395b6452518f01ee45b53b1ee3f963f952e111018fa837f309e790\",\n \"codeHash\": \"a3767c513c0303c26970effa39737253d05a04ef162381703194b14ec501a98f\",\n \"contractInstance\": {\n \"address\": \"26rk2sA4Sq4pXQtCX5pnFjhHDByNwAYF8d8Q7CteNLS95\",\n \"contractId\": \"b4ce64824ca288f6a1774b5d0939711ba1ddeffff3b7cead0f28ca7f2cfe0800\",\n \"groupIndex\": 0\n }\n },\n \"DexAccount\": {\n \"txId\": \"d64bb37c1951bc9ef127fdd12981445ed350c87d43f0df541148d9158d3cbd7b\",\n \"unsignedTx\": \"000401010103000000081500bee85f379545a2ed9f6cceb331288842f378cf0f04012ad4ac8824aae7d6f80a13c4016345785d8a0000a21440f20505404b409940b240ca40e60103050800402cd3bd481528b417051600ce0116011602aa16047a0e314dc3170616064313202f4c1816047a0e314dc31603cc17071605160777467a4c0418a0020c304c04a0020d2ba10201000106004029d365b302f9b41701160149191341f47b160047cb17021602c54c06ce000d0d160201024a01ce00170316011603130264a000a001a00213036417051704160147b116041605c11801000101010ad358cbdacfa0020c2f4c03ce00024a0216000201030101000ad3511324a7b4b1a50d2f1341937b1600a10201030202000cd375472acbb4b1a50d2f1341937b16001601a101a100144045020400bee85f379545a2ed9f6cceb331288842f378cf0f04012ad4ac8824aae7d6f80a0400bee85f379545a2ed9f6cceb331288842f378cf0f04012ad4ac8824aae7d6f80a140703030003000200ad188000e13cc1174876e8000237a44447da31564f9ff39f6a9c8f6798b33c6db1b102ca24741bca7c81da3b4c071cc9d1000381818e63bd9e35a5489b52a430accefc608fd60aa2c7c0d1b393b5239aedf6b037a44447d3f4a5230c3f314ffe3e19387c9092a0c77f3b0fc5ad4f75dd9845f8994814c70301c6d3c170af39c6bd6a180000bee85f379545a2ed9f6cceb331288842f378cf0f04012ad4ac8824aae7d6f80a00000000000000000000\",\n \"signature\": \"8c5f0e6276354d1f9db3ad41f03862a5faba333ee5a40398f0bcd8e14cd7968a2c039e2990ce489305b5ac8c47ed59a7b1b7492b6d63f4a5c3b11f194ed8ec66\",\n \"gasPrice\": \"100000000000\",\n \"gasAmount\": 57660,\n \"blockHash\": \"46a1b9bc9ef72ef0ebd5c677e5242801df275fc8844951c6bc12b455a78b09f0\",\n \"codeHash\": \"9ad9d41db87585370fca660e09c959922f022402dbf0d0ee529bc21f83836da7\",\n \"contractInstance\": {\n \"address\": \"zyhNdbUHuomvZQ23C2dQfEZHUq1LSyJWUpAUSgQWhnqV\",\n \"contractId\": \"5d7054776b72ade627e5fe0f5780a299dd1afdbdd4a9fe328e53e1460a2ee000\",\n \"groupIndex\": 0\n }\n },\n \"PoolFactory\": {\n \"txId\": \"f1823ca6922c35e151791e4738430611631743de784f3c35f53e9cf04ecd9807\",\n \"unsignedTx\": \"000401010103000000081500bee85f379545a2ed9f6cceb331288842f378cf0f04012ad4ac8824aae7d6f80a13c4016345785d8a0000a214425708090a1f403540a040ed41ce41f5422b424500000101010316004002000003040109160016020000cc17031601160344020000030401091600160116020001170316001603cc020000010401403a12bff276187a7a16003a7a05294b033a224a023a90160021170112800d89e87a7a16003a7a05294b033a904a023a22160021170216021601207a7a16003a7a05294b033a904a023a223d0d2a170313ccffffffffffffffffffffffffffffffff16032d0201000307014028d31c03e050b4ce00451341937b16001601160213036413006417041703a0001705a000000017061606ce0516031604c118a0000d2aa1000516055e07160116001605601605020100054020014079d3530365c2160071160171311342bd7b16020000cb17050c0f1605010017081707170616060003170916030d0dce010105170a1603160a0c170d170c170b0c0c0c0c0c0c0c0c0c171a171917181717171617151714171317120c0c0c171d171c171b0c0c171f171eb1ce02ce06ce03ce0416021600160116041607160616091406414c50480002130d640c160b160c160d0c16121613161416151616161716181619161a161b161c161d161e161f131364170f170eb116001601441602000117101610ce01160e160fc1171106161116001601160261161102010004050012d32d2d48cdb4ce00451342bf7bb1160216034416010002170416000d0c160401330103090a001ad3132dd93db4ce00451342be7bb11601160244160000021709160316041608a316031605160616071608110c1609013201000303000ad3333a48b8b4ce00451341937b160016011602bb1440f5070400bee85f379545a2ed9f6cceb331288842f378cf0f04012ad4ac8824aae7d6f80a0340200e527d65f488e70fcf3618e96013355547e8cacd3f56a1b95f14b40aa241ed00034020b0c5090f18458a2023ef92ff5669c203d6dcfc5c615f0185f3818e28e354dd000340203c287a934691eaf52cf9536729a3ed698aff90f7d32cd4abe0cdac8bb3692900034020e8282cb84fe206ccea5b5b94473441bad3da632e48b286e21e1a8467331e1300034020b4ce64824ca288f6a1774b5d0939711ba1ddeffff3b7cead0f28ca7f2cfe08000340205d7054776b72ade627e5fe0f5780a299dd1afdbdd4a9fe328e53e1460a2ee0001403010200ad188000e552c1174876e8000137a444478ce34d5c3402a72d472b08f3ef2c0e111c3d708e5ceb341c86273cba24341d6f000381818e63bd9e35a5489b52a430accefc608fd60aa2c7c0d1b393b5239aedf6b001c6d3c16f371906cc41c80000bee85f379545a2ed9f6cceb331288842f378cf0f04012ad4ac8824aae7d6f80a00000000000000000000\",\n \"signature\": \"378fe88f1f0ffed7ba5e288ede60c8c9461d3853d607cc5f572334f060c0ce3b6fb949e05733d450800b45839a9775e5a290cfe14856db92466f3e3294b8c91c\",\n \"gasPrice\": \"100000000000\",\n \"gasAmount\": 58706,\n \"blockHash\": \"05f639d8c41250189028a6cc1bd2cb221a4bc2df23d94a8ae2dd755729ea2440\",\n \"codeHash\": \"4071b77a85da548e6b3afe3808b0f40b86ea445fe666a0472deceb3af9a5312f\",\n \"contractInstance\": {\n \"address\": \"yJNj915oRppwvXogNkvUw4SQwYGeoqmU9SC9dxBaD8h5\",\n \"contractId\": \"4481e86adb5f44d22cff22caa4880db50984487752ffb7edb43f4c90bf0f7200\",\n \"groupIndex\": 0\n }\n },\n \"PositionManager\": {\n \"txId\": \"12c9506dc147baf40f1f87ef4956bbbe7bdd7515df32f6936a66d09d579f086d\",\n \"unsignedTx\": \"000401010103000000081500bee85f379545a2ed9f6cceb331288842f378cf0f04012ad4ac8824aae7d6f80a13c4016345785d8a0000a214446f0110409a40c840ec413e416c424e4271427b429042a642bc42d7431a438e43ec444d01030b16044051d39b20ce13ce00160116024416030009170b160516060e0f160b012e170e170d170c160c160d160e160716080003170f160b160416051606000b171016001610a5171116001601a5171216001602a5171316007a7a16011612a316021613a316101611a31600160416051606160f110e160b01251715171416141609347a4c04181615160a341343527b160f16141615160b0201000304010dd3b8a5f4fb1600160113c9010000000000000000000000000005170316021603160116002b000502010003030108d364be47fc160213c901000000000000000000000000160116002b00050201000507014027d345f12d7a16001601324c061601160216030001024a1c16001602314c13160016021603000117051601160016040002170616051606314c0216054a011606024a0516011602160400020201000304010ed374e08b3b160213c9010000000000000000000000002c160116002b160100051703160316002d020000030901408d160016010c0d3687170316001601371704160316043616031604314c020d4a010c36170516050c2f4c04160416022d02160216053313415f7b160016011602871706160516061604334c020d4a010c361705160416063617040c1602361602381707160216072d1702160416072d17040c16073616072d0d351707160416051607373917040f1602370e3a170816080e16021608373637170816080e16021608373637170816080e16021608373637170816080e16021608373637170816080e16021608373637170816080e16021608373637170816041608370200000304011216001601160200051703160016011602870c334c0416030d2a0216030200000101010316004002000003040109160016020007cc17031601160344020000030401091600160116020008170316001603cc02010003030108d37afb14100d1600160116021304640201000405010ad35b19984c160116021603000a170416001604cc0201030b0d004021d3259c1e8816001601a5170b16001602a5170c16007a1601160ba31602160ca31600160116021603160416051606160716081609160a00001818181801030a0e004041d35060929cce00160216034416040009170a160a160516061607000b170b1600160b0da316001605160616071601110e160a0126170d170c160c1608347a4c0418160d1609341343537b1600160b0da3160016051605160616070c0d360c0d360c0d3613080f160a012718181801030b0d004032d3ee4d9e3ace00160216034416040009170b160b160516071608000b170c1600160c0da316001605160716081601110e160b012618181600160c0da3160016061605160716081609160a0c0d3613080f160b012718181801000409044034d341eff2fd1600160116021603000b17040c17051604c54b041605d12a170516020d0d1600011ec54b041605d12a170516030d0d1600011ec54b041605d12a1705160216030e0f1600012e170817071706160616071608160502144024010340204481e86adb5f44d22cff22caa4880db50984487752ffb7edb43f4c90bf0f7200140100ad188000e7cfc1174876e8000137a444475d0a030edd828683b77e18c629eb305cedaef79007c9009536f5addab118cd49000381818e63bd9e35a5489b52a430accefc608fd60aa2c7c0d1b393b5239aedf6b001c6d3c16dbebe578b3a300000bee85f379545a2ed9f6cceb331288842f378cf0f04012ad4ac8824aae7d6f80a00000000000000000000\",\n \"signature\": \"084990842c7ff02a90ca2324caf5457b439a204fda9aada23192a29e065d3b4950b12301e5f01ab94e5dc14236aa69424d03cb193982709f74c68d88098e4b20\",\n \"gasPrice\": \"100000000000\",\n \"gasAmount\": 59343,\n \"blockHash\": \"3090e92f8db3b7e33fb36402522193362e42dabf5bd319604db68e7b08dafa20\",\n \"codeHash\": \"2011fefccf2fc09efe620e9f41d94137e9db1a3f435abbed305e3b8bd50fc61d\",\n \"contractInstance\": {\n \"address\": \"xRkwG8KJiZjGBz9csoDFF1wX1pX94tPWdahwZbSVNMJo\",\n \"contractId\": \"378a65ff89053ed1b974084747604b6c000e51ca3360a1090066e929ad9eb900\",\n \"groupIndex\": 0\n }\n }\n },\n \"scripts\": {\n \"CreateConfig:CreateConfig0\": {\n \"signature\": \"f99dbb590e95dec534b5ac44058375648129ee8a0612b4902e401721a1098df077e70d8033b308805a8b2a66c0d1248fa7a98b3e6e4b24a2a2f8b578d8022b2e\",\n \"type\": \"BuildSimpleExecuteScriptTxResult\",\n \"fromGroup\": 0,\n \"toGroup\": 0,\n \"unsignedTx\": \"000401010103000100111440204481e86adb5f44d22cff22caa4880db50984487752ffb7edb43f4c90bf0f72000c40cc17001600c5194c08060c0c0f0d1440204481e86adb5f44d22cff22caa4880db50984487752ffb7edb43f4c90bf0f72000104188000e0e9c1174876e8000137a44447adecd18d802beae7a1952447fe48c98168eea661c2118f664937cf00cebfe94d000381818e63bd9e35a5489b52a430accefc608fd60aa2c7c0d1b393b5239aedf6b001c6d3c16c4704462e77080000bee85f379545a2ed9f6cceb331288842f378cf0f04012ad4ac8824aae7d6f80a00000000000000000000\",\n \"gasAmount\": 57577,\n \"gasPrice\": \"100000000000\",\n \"txId\": \"7b2efd661c56e0399c07aea509bff044d47a8a0188ef99a906e0bd106599ca72\",\n \"simulationResult\": {\n \"contractInputs\": [],\n \"generatedOutputs\": [\n {\n \"address\": \"2BVE7xQu4AtoJ1hehQU2XFAMevaM8ToAUjeF6AbBwHP4T\",\n \"attoAlphAmount\": \"100000000000000000\",\n \"tokens\": []\n }\n ]\n },\n \"groupIndex\": 0,\n \"blockHash\": \"18e8b89ab0abf6dbdafd6ffa2d193da03a05a846335c58f6957c2b5d1b30c4c0\",\n \"codeHash\": \"dc0e582d72a0818d6ad6547b8a7e5f3924f6a99b7ec4acaec110a16be7fe41ea\"\n },\n \"CreateConfig:CreateConfig1\": {\n \"signature\": \"ac30ffdb4f65adf8cc1fa191d772969f19757ee2126e25ddd33e80930b01044b368400dbf9653e7ac2429dec79e09ab570bb3cdec6bd045de9b6bb7066da476d\",\n \"type\": \"BuildSimpleExecuteScriptTxResult\",\n \"fromGroup\": 0,\n \"toGroup\": 0,\n \"unsignedTx\": \"000401010103000100111440204481e86adb5f44d22cff22caa4880db50984487752ffb7edb43f4c90bf0f72000d40cc17001600c5194c08071343e80c0f0d1440204481e86adb5f44d22cff22caa4880db50984487752ffb7edb43f4c90bf0f72000104188000e0ecc1174876e8000137a44447fc7366980a0d6da52c81a3d598853bb3c69096e899c63a8d4d196952417b4613000381818e63bd9e35a5489b52a430accefc608fd60aa2c7c0d1b393b5239aedf6b001c6d3c16acf49eef84f280000bee85f379545a2ed9f6cceb331288842f378cf0f04012ad4ac8824aae7d6f80a00000000000000000000\",\n \"gasAmount\": 57580,\n \"gasPrice\": \"100000000000\",\n \"txId\": \"b93f84bc5b751cb71a2e1989d8b780885c7914d28794e11945397b82a113c247\",\n \"simulationResult\": {\n \"contractInputs\": [],\n \"generatedOutputs\": [\n {\n \"address\": \"zmcMrPRoFnLLQC7dUvvVMEhtQGGqfwmq8iC71uSX3i7H\",\n \"attoAlphAmount\": \"100000000000000000\",\n \"tokens\": []\n }\n ]\n },\n \"groupIndex\": 0,\n \"blockHash\": \"2e0567d43083962b09c08925176ebad959365835d56e420fa88c43cb66bc51a0\",\n \"codeHash\": \"8160acc80ce5edaae2fec483ad0c65bd9f8241e31abe8a5334d9894e653cb9ce\"\n },\n \"CreateConfig:CreateConfig2\": {\n \"signature\": \"df9bdf1fcdbd37fbf2d6b829526c558241ffa148c72afa4e2a8181d5bda453be7a3be24dec7350fc49cdb9abec6bfbfeed232e5e310aca615f3634f954074b6d\",\n \"type\": \"BuildSimpleExecuteScriptTxResult\",\n \"fromGroup\": 0,\n \"toGroup\": 0,\n \"unsignedTx\": \"000401010103000100111440204481e86adb5f44d22cff22caa4880db50984487752ffb7edb43f4c90bf0f72000e40cc17001600c5194c08081347d00c0f0d1440204481e86adb5f44d22cff22caa4880db50984487752ffb7edb43f4c90bf0f72000104188000e0ecc1174876e8000137a4444704fa862cdc155e10e13e38f24407c27278073eb5b5f38297f6b00b3bf6bc3280000381818e63bd9e35a5489b52a430accefc608fd60aa2c7c0d1b393b5239aedf6b001c6d3c169578f97c227480000bee85f379545a2ed9f6cceb331288842f378cf0f04012ad4ac8824aae7d6f80a00000000000000000000\",\n \"gasAmount\": 57580,\n \"gasPrice\": \"100000000000\",\n \"txId\": \"6dbead763fc235e277d19b5f6b274ece43b7594d38a582e5dd556ab97fe5d1b7\",\n \"simulationResult\": {\n \"contractInputs\": [],\n \"generatedOutputs\": [\n {\n \"address\": \"22bWsRSarTQT3RrqtBmLjoarQYTMHJkGzpS2As9ZK1E1D\",\n \"attoAlphAmount\": \"100000000000000000\",\n \"tokens\": []\n }\n ]\n },\n \"groupIndex\": 0,\n \"blockHash\": \"0d85cf09b445d564fb9ef4b4ba8e1ce2297dcdcd1b74fb55bdf107b0216624f0\",\n \"codeHash\": \"59285bb05a86762c214504193253d2c10e5880455c2d8f907b11530c3f2f6c93\"\n },\n \"CreateConfig:CreateConfig3\": {\n \"signature\": \"95444b0d409a3d2bb6f445fe1908bcdac0e9f042ed02f1d64857ee3719eb8b40498ddcbe669fff2d73390a6f0ce2fcd6120acd0484b333035ea0ac9bc278a09f\",\n \"type\": \"BuildSimpleExecuteScriptTxResult\",\n \"fromGroup\": 0,\n \"toGroup\": 0,\n \"unsignedTx\": \"000401010103000100111440204481e86adb5f44d22cff22caa4880db50984487752ffb7edb43f4c90bf0f72000f40cc17001600c5194c0809134bb80c0f0d1440204481e86adb5f44d22cff22caa4880db50984487752ffb7edb43f4c90bf0f72000104188000e0ecc1174876e8000137a444474a957f4fee1a25bf3a2aca33c947c594ce0050cfaea7c7e99eef8c04338c60a0000381818e63bd9e35a5489b52a430accefc608fd60aa2c7c0d1b393b5239aedf6b001c6d3c167dfd5408bff680000bee85f379545a2ed9f6cceb331288842f378cf0f04012ad4ac8824aae7d6f80a00000000000000000000\",\n \"gasAmount\": 57580,\n \"gasPrice\": \"100000000000\",\n \"txId\": \"95729bdd865ef50674d6d05b5adb714d1e92e0ae21da5d7d263b56da98f4f935\",\n \"simulationResult\": {\n \"contractInputs\": [],\n \"generatedOutputs\": [\n {\n \"address\": \"23YmZ4DM64drhbm1cwVZ7tQsf93hw1nMrRHCnRbB9kfpB\",\n \"attoAlphAmount\": \"100000000000000000\",\n \"tokens\": []\n }\n ]\n },\n \"groupIndex\": 0,\n \"blockHash\": \"135036fbf5dff46aa6e3bf68273ebd582bdc1608097deaf9c8390463bb747950\",\n \"codeHash\": \"abe62237560f16192bd76c7492409020bd0231bfe780da0ad4704a63ca820676\"\n },\n \"CreateConfig:CreateConfig4\": {\n \"signature\": \"45d01c441ea72cc64538dddfae4232221f793ed522ed03fda21eaed5fbadf28b2d7d7566de90a956c519d09eaec9431b43570d97ec354d911dbb34d38f9f7091\",\n \"type\": \"BuildSimpleExecuteScriptTxResult\",\n \"fromGroup\": 0,\n \"toGroup\": 0,\n \"unsignedTx\": \"000401010103000100111440204481e86adb5f44d22cff22caa4880db50984487752ffb7edb43f4c90bf0f72001040cc17001600c5194c080a134fa00c0f0d1440204481e86adb5f44d22cff22caa4880db50984487752ffb7edb43f4c90bf0f72000104188000e0ecc1174876e8000137a444479a36136c68a6d7037843737d708631056d64fe93ad9e8bd506d3c86e8f6891bf000381818e63bd9e35a5489b52a430accefc608fd60aa2c7c0d1b393b5239aedf6b001c6d3c166681ae955d7880000bee85f379545a2ed9f6cceb331288842f378cf0f04012ad4ac8824aae7d6f80a00000000000000000000\",\n \"gasAmount\": 57580,\n \"gasPrice\": \"100000000000\",\n \"txId\": \"01f5a6048f8170f1c7378d4d0bbdde778c303b9fe15467b6c83e14686bb5906c\",\n \"simulationResult\": {\n \"contractInputs\": [],\n \"generatedOutputs\": [\n {\n \"address\": \"23PugDfGgvpjwhD71QGP5iSg7PKFjAU94AiSFTz1mihm1\",\n \"attoAlphAmount\": \"100000000000000000\",\n \"tokens\": []\n }\n ]\n },\n \"groupIndex\": 0,\n \"blockHash\": \"14b6dc51e59c646652e5482258d3cb8fe25f9ac8ade324a6e04619bf8cd345a0\",\n \"codeHash\": \"e6a041b836d92ec25aebe5f68809cc6fd399ae76d74f8d2ba229c9d36161f9be\"\n },\n \"CreateConfig:CreateConfig5\": {\n \"signature\": \"512039a704608a1f6a5a56fde376699d0fa102ad911c5e09c5a87522ddcdfa2b23db0527d41ce94de85dfd87b43356a2ceeed1f3226fe28739e529810f9a015f\",\n \"type\": \"BuildSimpleExecuteScriptTxResult\",\n \"fromGroup\": 0,\n \"toGroup\": 0,\n \"unsignedTx\": \"000401010103000100111440204481e86adb5f44d22cff22caa4880db50984487752ffb7edb43f4c90bf0f72001140cc17001600c5194c0812061353880c0f0d1440204481e86adb5f44d22cff22caa4880db50984487752ffb7edb43f4c90bf0f72000104188000e0edc1174876e8000137a4444743056c18fb961e2f7b19e5c629111b872efc3ba85922d15771891ff7bc553a28000381818e63bd9e35a5489b52a430accefc608fd60aa2c7c0d1b393b5239aedf6b001c6d3c164f0607ad738c00000bee85f379545a2ed9f6cceb331288842f378cf0f04012ad4ac8824aae7d6f80a00000000000000000000\",\n \"gasAmount\": 57581,\n \"gasPrice\": \"100000000000\",\n \"txId\": \"c431653cf154672fd724980fd3cfb2214f8b7711a1a72fe4b6b300e89e663373\",\n \"simulationResult\": {\n \"contractInputs\": [],\n \"generatedOutputs\": [\n {\n \"address\": \"22Zy89z8UewRcuRiSjJtmucpVDuKgECm8aUHq6T9beSaT\",\n \"attoAlphAmount\": \"100000000000000000\",\n \"tokens\": []\n }\n ]\n },\n \"groupIndex\": 0,\n \"blockHash\": \"44ff24784a2a769112cab512e27de62a917e6ffee877253d427c2e0fd80e89f0\",\n \"codeHash\": \"b378a05b142b05281e843aa0b5c3bb42706fb020f3af6635b37bd0744a22178d\"\n },\n \"CreateConfig:CreateConfig6\": {\n \"signature\": \"d51d9f7698c8192ab4e053f2da5c21b56edeab39e54e73ebae2abdded1c9801b280a7d16daebc9c99f17f03a936bbb54d8dcbe534e888447e2c0bad2809652ef\",\n \"type\": \"BuildSimpleExecuteScriptTxResult\",\n \"fromGroup\": 0,\n \"toGroup\": 0,\n \"unsignedTx\": \"000401010103000100111440204481e86adb5f44d22cff22caa4880db50984487752ffb7edb43f4c90bf0f7200130640cc17001600c5194c0812071357700c0f0d1440204481e86adb5f44d22cff22caa4880db50984487752ffb7edb43f4c90bf0f72000104188000e0eec1174876e8000137a4444700368ac57f31110dd77598f5355333a027151438a99f4de212fa07142cf29f11000381818e63bd9e35a5489b52a430accefc608fd60aa2c7c0d1b393b5239aedf6b001c6d3c16378a5f51023100000bee85f379545a2ed9f6cceb331288842f378cf0f04012ad4ac8824aae7d6f80a00000000000000000000\",\n \"gasAmount\": 57582,\n \"gasPrice\": \"100000000000\",\n \"txId\": \"be04bf0ba6347aa45967047249ee25ba3d30cb983f60de93db5583477b200ecb\",\n \"simulationResult\": {\n \"contractInputs\": [],\n \"generatedOutputs\": [\n {\n \"address\": \"uVCiQizbRAktKWnCzNKcyRsdhZwJTnBEWoKhq3FuqvoZ\",\n \"attoAlphAmount\": \"100000000000000000\",\n \"tokens\": []\n }\n ]\n },\n \"groupIndex\": 0,\n \"blockHash\": \"19c7322412f986cadec59abd86fae1f8d6f5d85a633224572700afb7dc3b2360\",\n \"codeHash\": \"b89de99c7ce8702675970707fd8b87fc7a0ac066cea3eb0b5e3b16f736659158\"\n },\n \"CreateConfig:CreateConfig7\": {\n \"signature\": \"7add8e93ca31dfc1326337f3219e513984dcc1b6d24569fe6702b8e3cb99606b5653aa4fd410571aee2fac20ba50eba233d734914547984ddffd5337d7a0e1a0\",\n \"type\": \"BuildSimpleExecuteScriptTxResult\",\n \"fromGroup\": 0,\n \"toGroup\": 0,\n \"unsignedTx\": \"000401010103000100111440204481e86adb5f44d22cff22caa4880db50984487752ffb7edb43f4c90bf0f7200130740cc17001600c5194c081208135b580c0f0d1440204481e86adb5f44d22cff22caa4880db50984487752ffb7edb43f4c90bf0f72000104188000e0eec1174876e8000137a4444736a4b9dfecab49822e3534fa8fa3c8e4f8eb0a594d27c73878d427e62898736e000381818e63bd9e35a5489b52a430accefc608fd60aa2c7c0d1b393b5239aedf6b001c6d3c16200eb6f490d600000bee85f379545a2ed9f6cceb331288842f378cf0f04012ad4ac8824aae7d6f80a00000000000000000000\",\n \"gasAmount\": 57582,\n \"gasPrice\": \"100000000000\",\n \"txId\": \"dab9e0ab6f37cff618ff6e353d792550deee5a521fdbf7b00651a80371d080a3\",\n \"simulationResult\": {\n \"contractInputs\": [],\n \"generatedOutputs\": [\n {\n \"address\": \"26DqDUH6rFMxyViSgQJnN5UpBadhePGNmFAeEH3zwY5K5\",\n \"attoAlphAmount\": \"100000000000000000\",\n \"tokens\": []\n }\n ]\n },\n \"groupIndex\": 0,\n \"blockHash\": \"215c12f556337c28bc35f07476b811e47d94bf5e134f3eb9e11eb22d52101440\",\n \"codeHash\": \"01eac7d98d221623a35c9353ec2bf23e5e5939f575902e60a9cddd7f8bdb1f57\"\n },\n \"CreateConfig:CreateConfig8\": {\n \"signature\": \"bbe36f4316930693443aa3344d2069264dc83c361b641305a973ca62f8be23997636af578d60da8d676384fdd1bc4c0047d8431c3ccfd3db4b156a05430216cf\",\n \"type\": \"BuildSimpleExecuteScriptTxResult\",\n \"fromGroup\": 0,\n \"toGroup\": 0,\n \"unsignedTx\": \"000401010103000100111440204481e86adb5f44d22cff22caa4880db50984487752ffb7edb43f4c90bf0f7200130840cc17001600c5194c081209135f400c0f0d1440204481e86adb5f44d22cff22caa4880db50984487752ffb7edb43f4c90bf0f72000104188000e0eec1174876e8000137a44447d1d3db976215eea804c1d16791099a6635dec09e6081eafa0f6ccd5cf6576906000381818e63bd9e35a5489b52a430accefc608fd60aa2c7c0d1b393b5239aedf6b001c6d3c1608930e981f7b00000bee85f379545a2ed9f6cceb331288842f378cf0f04012ad4ac8824aae7d6f80a00000000000000000000\",\n \"gasAmount\": 57582,\n \"gasPrice\": \"100000000000\",\n \"txId\": \"999d8fc17cbf47ccf00f05ad46cad1f6631c90308498c581d734a152eded3fce\",\n \"simulationResult\": {\n \"contractInputs\": [],\n \"generatedOutputs\": [\n {\n \"address\": \"28Uw5Y3TgySVu1mT4ZiNun6fseJsScndDbmUQWRefwA2K\",\n \"attoAlphAmount\": \"100000000000000000\",\n \"tokens\": []\n }\n ]\n },\n \"groupIndex\": 0,\n \"blockHash\": \"4003fc1f3e65f535d16fb12f14eb93aeae8331057fd8ee0c581d19f0d95091d0\",\n \"codeHash\": \"402efb10fa7ed7821b6a2195ef97c0c0b5466f6f5ddb1b693d88b3bb82581210\"\n },\n \"CreateConfig:CreateConfig9\": {\n \"signature\": \"bafe7cb5c313c299489eb59de89445c2d63b5fa665f36c8d7e4d17ff1e84cd4807bcbe9dac85d55c09231b47e2f9366e6176ec1bcbc8820bf0e0ca757eefeae2\",\n \"type\": \"BuildSimpleExecuteScriptTxResult\",\n \"fromGroup\": 0,\n \"toGroup\": 0,\n \"unsignedTx\": \"000401010103000100111440204481e86adb5f44d22cff22caa4880db50984487752ffb7edb43f4c90bf0f7200130940cc17001600c5194c08120a1363280c0f0d1440204481e86adb5f44d22cff22caa4880db50984487752ffb7edb43f4c90bf0f72000104188000e0eec1174876e8000137a44447a99f1f5b7458f3bf6825fb9894176124181c3d1ecc21252500aea415d149281a000381818e63bd9e35a5489b52a430accefc608fd60aa2c7c0d1b393b5239aedf6b001c6d3c15f117663bae2000000bee85f379545a2ed9f6cceb331288842f378cf0f04012ad4ac8824aae7d6f80a00000000000000000000\",\n \"gasAmount\": 57582,\n \"gasPrice\": \"100000000000\",\n \"txId\": \"8cda3ab3c260c1f159169d2d5d6f9c5846144be4c7c015875708e2429c461c20\",\n \"simulationResult\": {\n \"contractInputs\": [],\n \"generatedOutputs\": [\n {\n \"address\": \"22jjAh9fYB5Anycmp2dvoxtzZfpjwpE13GV3wksws4fFd\",\n \"attoAlphAmount\": \"100000000000000000\",\n \"tokens\": []\n }\n ]\n },\n \"groupIndex\": 0,\n \"blockHash\": \"4005a3f0e3a6ffda87802b0d0d36606fd880791dbd1b9fd60678ac81e6725be0\",\n \"codeHash\": \"c96d60d43cb24d5e54dee4fdc59a4919d081bc43a4a8bff71a7327e21c138ee7\"\n }\n },\n \"migrations\": {}\n}","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport {\n RunScriptResult,\n DeployContractExecutionResult,\n NetworkId,\n} from \"@alephium/web3\";\nimport {\n Pool,\n PoolInstance,\n Position,\n PositionInstance,\n Tick,\n TickInstance,\n BitmapWord,\n BitmapWordInstance,\n PoolConfig,\n PoolConfigInstance,\n DexAccount,\n DexAccountInstance,\n PoolFactory,\n PoolFactoryInstance,\n PositionManager,\n PositionManagerInstance,\n} from \".\";\nimport { default as testnetDeployments } from \"../../deployments/.deployments.testnet.json\";\nimport { default as devnetDeployments } from \"../../deployments/.deployments.devnet.json\";\n\nexport type Deployments = {\n deployerAddress: string;\n contracts: {\n Pool: DeployContractExecutionResult<PoolInstance>;\n Position: DeployContractExecutionResult<PositionInstance>;\n Tick: DeployContractExecutionResult<TickInstance>;\n BitmapWord: DeployContractExecutionResult<BitmapWordInstance>;\n PoolConfig: DeployContractExecutionResult<PoolConfigInstance>;\n DexAccount: DeployContractExecutionResult<DexAccountInstance>;\n PoolFactory: DeployContractExecutionResult<PoolFactoryInstance>;\n PositionManager: DeployContractExecutionResult<PositionManagerInstance>;\n };\n scripts: {\n CreateConfig_CreateConfig0: RunScriptResult;\n CreateConfig_CreateConfig1: RunScriptResult;\n CreateConfig_CreateConfig2: RunScriptResult;\n CreateConfig_CreateConfig3: RunScriptResult;\n CreateConfig_CreateConfig4: RunScriptResult;\n CreateConfig_CreateConfig5: RunScriptResult;\n CreateConfig_CreateConfig6: RunScriptResult;\n CreateConfig_CreateConfig7: RunScriptResult;\n CreateConfig_CreateConfig8: RunScriptResult;\n CreateConfig_CreateConfig9: RunScriptResult;\n };\n};\n\nfunction toDeployments(json: any): Deployments {\n const contracts = {\n Pool: {\n ...json.contracts[\"Pool\"],\n contractInstance: Pool.at(\n json.contracts[\"Pool\"].contractInstance.address\n ),\n },\n Position: {\n ...json.contracts[\"Position\"],\n contractInstance: Position.at(\n json.contracts[\"Position\"].contractInstance.address\n ),\n },\n Tick: {\n ...json.contracts[\"Tick\"],\n contractInstance: Tick.at(\n json.contracts[\"Tick\"].contractInstance.address\n ),\n },\n BitmapWord: {\n ...json.contracts[\"BitmapWord\"],\n contractInstance: BitmapWord.at(\n json.contracts[\"BitmapWord\"].contractInstance.address\n ),\n },\n PoolConfig: {\n ...json.contracts[\"PoolConfig\"],\n contractInstance: PoolConfig.at(\n json.contracts[\"PoolConfig\"].contractInstance.address\n ),\n },\n DexAccount: {\n ...json.contracts[\"DexAccount\"],\n contractInstance: DexAccount.at(\n json.contracts[\"DexAccount\"].contractInstance.address\n ),\n },\n PoolFactory: {\n ...json.contracts[\"PoolFactory\"],\n contractInstance: PoolFactory.at(\n json.contracts[\"PoolFactory\"].contractInstance.address\n ),\n },\n PositionManager: {\n ...json.contracts[\"PositionManager\"],\n contractInstance: PositionManager.at(\n json.contracts[\"PositionManager\"].contractInstance.address\n ),\n },\n };\n return {\n ...json,\n contracts: contracts as Deployments[\"contracts\"],\n scripts: {\n CreateConfig_CreateConfig0: json.scripts[\"CreateConfig:CreateConfig0\"],\n CreateConfig_CreateConfig1: json.scripts[\"CreateConfig:CreateConfig1\"],\n CreateConfig_CreateConfig2: json.scripts[\"CreateConfig:CreateConfig2\"],\n CreateConfig_CreateConfig3: json.scripts[\"CreateConfig:CreateConfig3\"],\n CreateConfig_CreateConfig4: json.scripts[\"CreateConfig:CreateConfig4\"],\n CreateConfig_CreateConfig5: json.scripts[\"CreateConfig:CreateConfig5\"],\n CreateConfig_CreateConfig6: json.scripts[\"CreateConfig:CreateConfig6\"],\n CreateConfig_CreateConfig7: json.scripts[\"CreateConfig:CreateConfig7\"],\n CreateConfig_CreateConfig8: json.scripts[\"CreateConfig:CreateConfig8\"],\n CreateConfig_CreateConfig9: json.scripts[\"CreateConfig:CreateConfig9\"],\n },\n };\n}\n\nexport function loadDeployments(\n networkId: NetworkId,\n deployerAddress?: string\n): Deployments {\n const deployments =\n networkId === \"testnet\"\n ? testnetDeployments\n : networkId === \"devnet\"\n ? devnetDeployments\n : undefined;\n if (deployments === undefined) {\n throw Error(\"The contract has not been deployed to the \" + networkId);\n }\n const allDeployments: any[] = Array.isArray(deployments)\n ? deployments\n : [deployments];\n if (deployerAddress === undefined) {\n if (allDeployments.length > 1) {\n throw Error(\n \"The contract has been deployed multiple times on \" +\n networkId +\n \", please specify the deployer address\"\n );\n } else {\n return toDeployments(allDeployments[0]);\n }\n }\n const result = allDeployments.find(\n (d) => d.deployerAddress === deployerAddress\n );\n if (result === undefined) {\n throw Error(\"The contract deployment result does not exist\");\n }\n return toDeployments(result);\n}\n","import {\n binToHex,\n contractIdFromAddress,\n encodePrimitiveValues,\n groupOfAddress,\n isGrouplessAddressWithoutGroupIndex,\n subContractId,\n} from '@alephium/web3';\nimport { Pool } from 'clmm/artifacts/ts/Pool';\nimport { TickUtils } from './tick';\nimport type { LiquidityDistribution } from './types';\nimport { ClmmLiquidityUtils } from './liquidity';\nimport { MathUtil } from '../common/math';\n\nfunction normalizeAddress(address: string, group: number): string {\n return isGrouplessAddressWithoutGroupIndex(address) ? `${address}:${group}` : address;\n}\n\nexport class PoolUtils {\n static getPositionId(\n poolAddress: string,\n owner: string,\n tickLower: bigint,\n tickUpper: bigint,\n ): string {\n const group = groupOfAddress(poolAddress);\n const poolId = binToHex(contractIdFromAddress(poolAddress));\n const normalizedOwner = normalizeAddress(owner, group);\n const path = encodePrimitiveValues([\n { type: 'U256', value: Pool.consts.PathPrefixes.Position },\n { type: 'Address', value: normalizedOwner },\n { type: 'I256', value: tickLower },\n { type: 'I256', value: tickUpper },\n ]);\n return subContractId(poolId, binToHex(path), group);\n }\n\n static computeSwapStep(\n sqrtPriceX96: bigint,\n sqrtPriceTargetX96: bigint,\n liquidity: bigint,\n amount: bigint,\n feePips: bigint,\n ): [bigint, bigint, bigint, bigint] {\n const zeroForOne = sqrtPriceX96 < sqrtPriceTargetX96;\n const exactIn = amount > 0n;\n let amountIn = 0n;\n let amountOut = 0n;\n let feeAmount = 0n;\n let sqrtPriceNextX96 = 0n;\n if (exactIn) {\n amountIn = -ClmmLiquidityUtils.getAmountDelta(\n sqrtPriceX96,\n sqrtPriceTargetX96,\n -liquidity,\n zeroForOne,\n );\n const amountRemainingLessFee = MathUtil.divFloor(\n amount * (Pool.consts.MAX_PIPS - feePips),\n Pool.consts.MAX_PIPS,\n );\n const sqrtPriceRealTargetX96 = TickUtils.getNextSqrtPrice(\n sqrtPriceX96,\n liquidity,\n amountRemainingLessFee,\n zeroForOne,\n );\n sqrtPriceNextX96 =\n amountRemainingLessFee >= amountIn ? sqrtPriceTargetX96 : sqrtPriceRealTargetX96;\n } else {\n amountOut = ClmmLiquidityUtils.getAmountDelta(\n sqrtPriceTargetX96,\n sqrtPriceX96,\n liquidity,\n zeroForOne,\n );\n const sqrtPriceRealTargetX96 = TickUtils.getNextSqrtPrice(\n sqrtPriceX96,\n liquidity,\n amount,\n zeroForOne,\n );\n sqrtPriceNextX96 = -amount >= amountOut ? sqrtPriceTargetX96 : sqrtPriceRealTargetX96;\n }\n const max = sqrtPriceTargetX96 == sqrtPriceNextX96;\n if (zeroForOne) {\n const amountIn2 = -ClmmLiquidityUtils.getAmountDelta(\n sqrtPriceNextX96,\n sqrtPriceX96,\n -liquidity,\n zeroForOne,\n );\n const amountOut2 = ClmmLiquidityUtils.getAmountDelta(\n sqrtPriceNextX96,\n sqrtPriceX96,\n liquidity,\n zeroForOne,\n );\n amountIn = max && exactIn ? amountIn : amountIn2;\n amountOut = max && !exactIn ? amountOut : amountOut2;\n } else {\n const amountIn2 = -ClmmLiquidityUtils.getAmountDelta(\n sqrtPriceX96,\n sqrtPriceNextX96,\n -liquidity,\n zeroForOne,\n );\n const amountOut2 = ClmmLiquidityUtils.getAmountDelta(\n sqrtPriceX96,\n sqrtPriceNextX96,\n liquidity,\n zeroForOne,\n );\n amountIn = max && exactIn ? amountIn : amountIn2;\n amountOut = max && !exactIn ? amountOut : amountOut2;\n }\n if (!exactIn && amount > -amountOut) amountOut = -amount;\n\n if (exactIn && sqrtPriceNextX96 != sqrtPriceTargetX96) {\n feeAmount = amount - amountIn;\n } else {\n feeAmount = MathUtil.divFloor(amountIn * feePips, Pool.consts.MAX_PIPS - feePips);\n }\n\n return [sqrtPriceNextX96, amountIn, amountOut, feeAmount];\n }\n\n static offlineSwap(\n liqDist: LiquidityDistribution,\n amountSpecified: bigint,\n sqrtPriceX96: bigint,\n ): bigint {\n const exactIn = amountSpecified > 0n;\n let amountCalculated = 0n;\n for (const row of liqDist.rows) {\n const [sqrtPriceNextX96, amountIn, amountOut, feeAmount] = this.computeSwapStep(\n sqrtPriceX96,\n row.sqrtPriceX96,\n liqDist.liquidity,\n amountSpecified,\n liqDist.fee,\n );\n if (exactIn) {\n amountSpecified -= amountIn + feeAmount;\n amountCalculated -= amountOut;\n } else {\n amountSpecified += amountOut;\n amountCalculated += amountIn + feeAmount;\n }\n sqrtPriceX96 = sqrtPriceNextX96;\n }\n return amountCalculated;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nexport const MIN_TICK = BigInt(\"-887272\");\nexport const MAX_TICK = BigInt(\"887272\");\nexport const MIN_SQRT_RATIO = BigInt(\"4295128739\");\nexport const MAX_SQRT_RATIO = BigInt(\n \"1461446703485210103287273052203988822378723970342\"\n);\nexport const Q128 = BigInt(\"340282366920938463463374607431768211456\");\nexport const U128_MAX = BigInt(\"340282366920938463463374607431768211455\");\nexport const Q64 = BigInt(\"18446744073709551616\");\nexport const Q32 = BigInt(\"4294967296\");\nexport const Q96 = BigInt(\"79228162514264337593543950336\");\nexport const Q160 = BigInt(\"1461501637330902918203684832716283019655932542976\");\nexport const MAX_REWARDS = BigInt(\"3\");\n","export const U256_MAX = 2n ** 256n - 1n;\n\n// Default \"unlimited\" amount for CLMM calculations\n// This ensures the other amount is always the limiting factor\nexport const UNLIMITED_AMOUNT = 2n ** 128n - 1n; // uint128 max\n\nexport { MAX_TICK, MIN_TICK } from 'clmm/artifacts/ts/constants';\n","import {\n MAX_SQRT_RATIO,\n MAX_TICK,\n MIN_SQRT_RATIO,\n MIN_TICK,\n Q128,\n Q32,\n Q64,\n Q96,\n} from 'clmm/artifacts/ts/constants';\nimport { U256_MAX } from './constants';\nimport Decimal from 'decimal.js';\nimport { MathUtil } from '../common/math';\nimport { BPS } from '../common/constants';\nimport type { TokenInfo } from '@alephium/token-list';\n\nexport class TickUtils {\n static getSqrtRatioAtTick(tick: bigint): bigint {\n const absTick = tick < 0n ? -tick : tick;\n if (absTick > MAX_TICK) {\n throw new Error(`TickOutOfBounds: ${tick}`);\n }\n\n let ratio = (absTick & 0x1n) !== 0n ? 0xfffcb933bd6fad37aa2d162d1a594001n : Q128;\n\n if ((absTick & 0x2n) !== 0n) ratio = (ratio * 0xfff97272373d413259a46990580e213an) >> 128n;\n if ((absTick & 0x4n) !== 0n) ratio = (ratio * 0xfff2e50f5f656932ef12357cf3c7fdccn) >> 128n;\n if ((absTick & 0x8n) !== 0n) ratio = (ratio * 0xffe5caca7e10e4e61c3624eaa0941cd0n) >> 128n;\n if ((absTick & 0x10n) !== 0n) ratio = (ratio * 0xffcb9843d60f6159c9db58835c926644n) >> 128n;\n if ((absTick & 0x20n) !== 0n) ratio = (ratio * 0xff973b41fa98c081472e6896dfb254c0n) >> 128n;\n if ((absTick & 0x40n) !== 0n) ratio = (ratio * 0xff2ea16466c96a3843ec78b326b52861n) >> 128n;\n if ((absTick & 0x80n) !== 0n) ratio = (ratio * 0xfe5dee046a99a2a811c461f1969c3053n) >> 128n;\n if ((absTick & 0x100n) !== 0n) ratio = (ratio * 0xfcbe86c7900a88aedcffc83b479aa3a4n) >> 128n;\n if ((absTick & 0x200n) !== 0n) ratio = (ratio * 0xf987a7253ac413176f2b074cf7815e54n) >> 128n;\n if ((absTick & 0x400n) !== 0n) ratio = (ratio * 0xf3392b0822b70005940c7a398e4b70f3n) >> 128n;\n if ((absTick & 0x800n) !== 0n) ratio = (ratio * 0xe7159475a2c29b7443b29c7fa6e889d9n) >> 128n;\n if ((absTick & 0x1000n) !== 0n) ratio = (ratio * 0xd097f3bdfd2022b8845ad8f792aa5825n) >> 128n;\n if ((absTick & 0x2000n) !== 0n) ratio = (ratio * 0xa9f746462d870fdf8a65dc1f90e061e5n) >> 128n;\n if ((absTick & 0x4000n) !== 0n) ratio = (ratio * 0x70d869a156d2a1b890bb3df62baf32f7n) >> 128n;\n if ((absTick & 0x8000n) !== 0n) ratio = (ratio * 0x31be135f97d08fd981231505542fcfa6n) >> 128n;\n if ((absTick & 0x10000n) !== 0n) ratio = (ratio * 0x9aa508b5b7a84e1c677de54f3e99bc9n) >> 128n;\n if ((absTick & 0x20000n) !== 0n) ratio = (ratio * 0x5d6af8dedb81196699c329225ee604n) >> 128n;\n if ((absTick & 0x40000n) !== 0n) ratio = (ratio * 0x2216e584f5fa1ea926041bedfe98n) >> 128n;\n if ((absTick & 0x80000n) !== 0n) ratio = (ratio * 0x48a170391f7dc42444e8fa2n) >> 128n;\n\n if (tick > 0n) {\n ratio = U256_MAX / ratio;\n }\n\n return ratio >> 32n;\n }\n\n static getTickAtSqrtRatio(sqrtPriceX96: bigint): bigint {\n if (sqrtPriceX96 < MIN_SQRT_RATIO || sqrtPriceX96 >= MAX_SQRT_RATIO) {\n throw new Error('SqrtPriceX96OutOfBounds');\n }\n\n const ratio = sqrtPriceX96 << 32n;\n let r = ratio;\n let msb = 0n;\n\n if (r > Q128 - 1n) {\n msb |= 0x80n;\n r >>= 0x80n;\n }\n if (r > Q64 - 1n) {\n msb |= 0x40n;\n r >>= 0x40n;\n }\n if (r > Q32 - 1n) {\n msb |= 0x20n;\n r >>= 0x20n;\n }\n if (r > 0xffffn) {\n msb |= 0x10n;\n r >>= 0x10n;\n }\n if (r > 0xffn) {\n msb |= 0x8n;\n r >>= 0x8n;\n }\n if (r > 0xfn) {\n msb |= 0x4n;\n r >>= 0x4n;\n }\n if (r > 0x3n) {\n msb |= 0x2n;\n r >>= 0x2n;\n }\n if (r > 0x1n) {\n msb |= 0x1n;\n }\n\n if (msb >= 128n) {\n r = ratio >> (msb - 127n);\n } else {\n r = ratio << (127n - msb);\n }\n\n let log_2 = (msb - 128n) << 64n;\n\n for (let i = 63n; i >= 50n; i--) {\n r = (r * r) >> 127n;\n const f = r >> 128n;\n log_2 |= f << i;\n r >>= f;\n }\n\n const log_sqrt10001 = log_2 * 255738958999603826347141n;\n\n const tickLow = (log_sqrt10001 - 3402992956809132418596140100660247210n) >> 128n;\n const tickHi = (log_sqrt10001 + 291339464771989622907027621153398088495n) >> 128n;\n\n if (tickLow === tickHi) {\n return tickLow;\n } else {\n if (this.getSqrtRatioAtTick(tickHi) <= sqrtPriceX96) {\n return tickHi;\n } else {\n return tickLow;\n }\n }\n }\n\n static priceToSqrtPriceX96(\n price: Decimal.Value,\n token0Decimal: number,\n token1Decimal: number,\n ): bigint {\n const priceDecimal = new Decimal(price);\n if (!priceDecimal.isFinite() || priceDecimal.lte(0)) {\n throw new Error('Invalid price input');\n }\n\n const token0Unit = 10n ** BigInt(token0Decimal);\n const token1Amount = BigInt(\n priceDecimal\n .mul(10n ** BigInt(token1Decimal))\n .floor()\n .toFixed(),\n );\n return this.priceSqrt(token1Amount, token0Unit);\n }\n\n static sqrtPriceX96ToPrice(\n sqrtPriceX96: bigint,\n token0Decimal: number,\n token1Decimal: number,\n ): number {\n if (sqrtPriceX96 < 0n) {\n throw new Error('Invalid sqrtPriceX96');\n }\n\n const sqrtPriceDecimal = new Decimal(sqrtPriceX96.toString());\n const q96Decimal = new Decimal(Q96.toString());\n let priceDecimal = sqrtPriceDecimal.div(q96Decimal).pow(2);\n\n const exponentDiff = token0Decimal - token1Decimal;\n if (exponentDiff !== 0) {\n const factor = new Decimal(10).pow(Math.abs(exponentDiff));\n priceDecimal = exponentDiff > 0 ? priceDecimal.mul(factor) : priceDecimal.div(factor);\n }\n\n if (!priceDecimal.isFinite()) {\n throw new Error('Price overflow');\n }\n\n return priceDecimal.toNumber();\n }\n\n static getAlignedTick(\n price: number,\n token0Decimal: number,\n token1Decimal: number,\n tickSpacing: bigint,\n ): bigint {\n const sqrtPriceX96 = this.priceToSqrtPriceX96(price, token0Decimal, token1Decimal);\n const tick0 = this.getTickAtSqrtRatio(sqrtPriceX96);\n\n return MathUtil.alphCeil(tick0, tickSpacing) * tickSpacing;\n }\n\n static getNextTick(\n tick: bigint,\n tickSpacing: bigint,\n tokenBase: TokenInfo,\n tokenQuote: TokenInfo,\n baseIn: boolean,\n isAdd: boolean,\n ): bigint {\n const reverse = tokenBase.id > tokenQuote.id == baseIn;\n const delta = isAdd == reverse ? tickSpacing : -tickSpacing;\n return tick + delta;\n }\n\n static getAlignedPrice(\n priceIn: number,\n tokenBase: TokenInfo,\n tokenQuote: TokenInfo,\n tickSpacing: bigint,\n baseIn: boolean,\n ): { tick: bigint; price: number } {\n const reverse = tokenBase.id > tokenQuote.id == baseIn;\n const [token0, token1] = reverse ? [tokenQuote, tokenBase] : [tokenBase, tokenQuote];\n\n const rawPrice = reverse ? 1 / priceIn : priceIn;\n const tick = this.getAlignedTick(rawPrice, token0.decimals, token1.decimals, tickSpacing);\n return this.getPriceFromTick(tick, tokenBase, tokenQuote, baseIn);\n }\n\n static getPriceFromTick(\n tick: bigint,\n tokenBase: TokenInfo,\n tokenQuote: TokenInfo,\n baseIn: boolean,\n ): { tick: bigint; price: number } {\n const reverse = tokenBase.id > tokenQuote.id == baseIn;\n const [token0, token1] = reverse ? [tokenQuote, tokenBase] : [tokenBase, tokenQuote];\n\n const sqrtPriceX96 = this.getSqrtRatioAtTick(tick);\n const alignedPrice = this.sqrtPriceX96ToPrice(sqrtPriceX96, token0.decimals, token1.decimals);\n const price = reverse ? 1 / alignedPrice : alignedPrice;\n return { tick, price };\n }\n\n static getMinPriceFromTick(\n tokenBase: TokenInfo,\n tokenQuote: TokenInfo,\n tickSpacing: bigint,\n baseIn: boolean,\n ): { tick: bigint; price: number } {\n const reverse = tokenBase.id > tokenQuote.id == baseIn;\n const rawTick = reverse ? MAX_TICK : MIN_TICK;\n const tick = (rawTick / tickSpacing) * tickSpacing;\n return this.getPriceFromTick(tick, tokenBase, tokenQuote, baseIn);\n }\n\n static getMaxPriceFromTick(\n tokenBase: TokenInfo,\n tokenQuote: TokenInfo,\n tickSpacing: bigint,\n baseIn: boolean,\n ): { tick: bigint; price: number } {\n const reverse = tokenBase.id > tokenQuote.id == baseIn;\n const rawTick = reverse ? MIN_TICK : MAX_TICK;\n const tick = (rawTick / tickSpacing) * tickSpacing;\n return this.getPriceFromTick(tick, tokenBase, tokenQuote, baseIn);\n }\n\n static getNextSqrtPrice(\n sqrtPriceX96: bigint,\n liquidity: bigint,\n amount: bigint,\n zeroForOne: boolean,\n ): bigint {\n if (zeroForOne) {\n return this.getNextSqrtPriceFromAmount0(sqrtPriceX96, liquidity, amount);\n } else {\n return this.getNextSqrtPriceFromAmount1(sqrtPriceX96, liquidity, amount);\n }\n }\n\n static getNextSqrtPriceFromAmount0(\n sqrtPriceX96: bigint,\n liquidity: bigint,\n amount: bigint,\n ): bigint {\n const numerator1 = liquidity * Q96;\n const product = amount * sqrtPriceX96;\n if (product >= numerator1) {\n throw new Error('Amount0 exceeds available liquidity for the swap');\n }\n const denominator = numerator1 - product;\n return MathUtil.alphDiv(numerator1 * sqrtPriceX96, denominator);\n }\n\n static getNextSqrtPriceFromAmount1(\n sqrtPriceX96: bigint,\n liquidity: bigint,\n amount: bigint,\n ): bigint {\n const quotient = MathUtil.alphDiv(amount * Q96, liquidity);\n return sqrtPriceX96 + quotient;\n }\n\n static getSqrtPriceLimitX96(sqrtPriceX96: bigint, slippage: bigint, zeroForOne: boolean): bigint {\n if (slippage <= 0n || slippage >= BPS) {\n throw new Error('slippageBps must be in (0, 10000)');\n }\n\n const [minBound, maxBound] = this.getSqrtPriceX96Bounds(sqrtPriceX96, slippage);\n let limit = zeroForOne ? minBound : maxBound;\n\n if (zeroForOne) {\n if (limit >= sqrtPriceX96) limit = sqrtPriceX96 - 1n;\n if (limit <= MIN_SQRT_RATIO) limit = MIN_SQRT_RATIO + 1n;\n } else {\n if (limit <= sqrtPriceX96) limit = sqrtPriceX96 + 1n;\n if (limit >= MAX_SQRT_RATIO) limit = MAX_SQRT_RATIO - 1n;\n }\n return limit;\n }\n\n // Compute slippage bounds for a given sqrt price\n // The slippage is in bps.\n // Returns [minSqrtPriceX96, maxSqrtPriceX96], where:\n // min = floor(sqrtPriceX96 * sqrt(1 - slippage))\n // max = ceil(sqrtPriceX96 * sqrt(1 + slippage))\n // `slippage` is bps: e.g., 100 for 1%, 30 for 0.3%\n static getSqrtPriceX96Bounds(sqrtPriceX96: bigint, slippage: bigint): [bigint, bigint] {\n if (slippage < 0n || slippage >= BPS) {\n throw new Error('Invalid slippageBps; must be in [0, 10000)');\n }\n const numMinus = (BPS - slippage) * Q128;\n const numPlus = (BPS + slippage) * Q128;\n const den = BPS * Q128;\n const factorMinusQ96 = MathUtil.mulDivFloor(\n MathUtil.sqrt(numMinus) * Q96,\n 1n,\n MathUtil.sqrt(den),\n );\n const factorPlusQ96 = MathUtil.mulDivFloor(\n MathUtil.sqrt(numPlus) * Q96,\n 1n,\n MathUtil.sqrt(den),\n );\n const minSqrtPriceX96 = MathUtil.mulDivFloor(sqrtPriceX96, factorMinusQ96, Q96);\n const maxSqrtPriceX96 = (sqrtPriceX96 * factorPlusQ96 + Q96 - 1n) / Q96;\n return [minSqrtPriceX96, maxSqrtPriceX96];\n }\n\n private static priceSqrt(r1: bigint, r0: bigint): bigint {\n return MathUtil.sqrt(MathUtil.divFloor(r1 * Q96 * Q96, r0));\n }\n}\n","import type { TokenInfo } from '@alephium/token-list';\nimport { TickUtils } from './tick';\nimport { MathUtil } from '../common/math';\nimport { Q96 } from 'clmm/artifacts/ts/constants';\nimport type { GetPositionAmountsFromPriceProps, GetPositionAmountsFromPriceReturn } from './types';\n\nexport class ClmmLiquidityUtils {\n static getPositionAmountsFromPrice(\n p: GetPositionAmountsFromPriceProps,\n ): GetPositionAmountsFromPriceReturn {\n if (p.amountBase === 0n || p.amountQuote === 0n) {\n return { newAmountBase: 0n, newAmountQuote: 0n, liquidity: 0n };\n }\n const amounts = [p.amountBase, p.amountQuote];\n const sqrts = [\n TickUtils.getSqrtRatioAtTick(p.lowerTick),\n TickUtils.getSqrtRatioAtTick(p.upperTick),\n ];\n const reverse1 = p.lowerTick > p.upperTick;\n if (reverse1) {\n sqrts.reverse();\n }\n const reverse2 = p.tokenBaseId > p.tokenQuoteId;\n if (reverse2) {\n amounts.reverse();\n }\n const [amount0, amount1, liquidity] = this.getAmountsAndLiquidityAtSqrtPrice(\n p.sqrtRatioX96,\n sqrts[0],\n sqrts[1],\n amounts[0],\n amounts[1],\n );\n return reverse2\n ? { newAmountBase: amount1, newAmountQuote: amount0, liquidity }\n : { newAmountBase: amount0, newAmountQuote: amount1, liquidity };\n }\n\n static getAmountsAndLiquidityAtPrice(\n currentPrice: number,\n token0: TokenInfo,\n token1: TokenInfo,\n lowerTick: bigint,\n upperTick: bigint,\n amount0: bigint,\n amount1: bigint,\n ): [bigint, bigint, bigint] {\n const sqrtRatioX96 = TickUtils.priceToSqrtPriceX96(\n currentPrice,\n token0.decimals,\n token1.decimals,\n );\n const sqrtRatioAX96 = TickUtils.getSqrtRatioAtTick(lowerTick);\n const sqrtRatioBX96 = TickUtils.getSqrtRatioAtTick(upperTick);\n return this.getAmountsAndLiquidityAtSqrtPrice(\n sqrtRatioX96,\n sqrtRatioAX96,\n sqrtRatioBX96,\n amount0,\n amount1,\n );\n }\n\n static getAmountsAndLiquidityAtSqrtPrice(\n sqrtRatioX96: bigint,\n sqrtRatioAX96: bigint,\n sqrtRatioBX96: bigint,\n amount0: bigint,\n amount1: bigint,\n ): [bigint, bigint, bigint] {\n const liquidity = this.getLiquidityFromAmounts(\n sqrtRatioX96,\n sqrtRatioAX96,\n sqrtRatioBX96,\n amount0,\n amount1,\n );\n const [a0, a1] = this.getAmountsForLiquidity(\n sqrtRatioX96,\n sqrtRatioAX96,\n sqrtRatioBX96,\n -liquidity,\n );\n return [-a0, -a1, liquidity];\n }\n\n static getAmountsForLiquidity(\n sqrtRatioX96: bigint,\n sqrtRatioAX96: bigint,\n sqrtRatioBX96: bigint,\n liquidity: bigint,\n ): [bigint, bigint] {\n if (sqrtRatioX96 <= sqrtRatioAX96) {\n const amount0 = this.getToken0Delta(sqrtRatioAX96, sqrtRatioBX96, liquidity);\n return [amount0, 0n];\n } else if (sqrtRatioX96 < sqrtRatioBX96) {\n const amount0 = this.getToken0Delta(sqrtRatioX96, sqrtRatioBX96, liquidity);\n const amount1 = this.getToken1Delta(sqrtRatioAX96, sqrtRatioX96, liquidity);\n return [amount0, amount1];\n } else {\n const amount1 = this.getToken1Delta(sqrtRatioAX96, sqrtRatioBX96, liquidity);\n return [0n, amount1];\n }\n }\n\n static getLiquidityFromAmounts(\n sqrtRatioX96: bigint,\n sqrtRatioAX96: bigint,\n sqrtRatioBX96: bigint,\n amount0: bigint,\n amount1: bigint,\n ): bigint {\n if (sqrtRatioX96 < sqrtRatioAX96) {\n return this.getLiquidityFromToken0(sqrtRatioAX96, sqrtRatioBX96, amount0);\n } else if (sqrtRatioX96 < sqrtRatioBX96) {\n const liquidity0 = this.getLiquidityFromToken0(sqrtRatioX96, sqrtRatioBX96, amount0);\n const liquidity1 = this.getLiquidityFromToken1(sqrtRatioAX96, sqrtRatioX96, amount1);\n return liquidity0 < liquidity1 ? liquidity0 : liquidity1;\n } else {\n return this.getLiquidityFromToken1(sqrtRatioAX96, sqrtRatioBX96, amount1);\n }\n }\n\n static getLiquidityFromToken0(\n sqrtRatioAX96: bigint,\n sqrtRatioBX96: bigint,\n amount0: bigint,\n ): bigint {\n const intermediate = MathUtil.alphDiv(sqrtRatioAX96 * sqrtRatioBX96, Q96);\n return MathUtil.alphDiv(amount0 * intermediate, sqrtRatioBX96 - sqrtRatioAX96);\n }\n\n static getLiquidityFromToken1(\n sqrtRatioAX96: bigint,\n sqrtRatioBX96: bigint,\n amount1: bigint,\n ): bigint {\n return MathUtil.alphDiv(amount1 * Q96, sqrtRatioBX96 - sqrtRatioAX96);\n }\n\n static getAmountDelta(\n sqrtRatioAX96: bigint,\n sqrtRatioBX96: bigint,\n liquidity: bigint,\n zeroForOne: boolean,\n ): bigint {\n if (zeroForOne) {\n return this.getToken0Delta(sqrtRatioAX96, sqrtRatioBX96, liquidity);\n } else {\n return this.getToken1Delta(sqrtRatioAX96, sqrtRatioBX96, liquidity);\n }\n }\n\n static getToken0Delta(sqrtRatioAX96: bigint, sqrtRatioBX96: bigint, liquidity: bigint): bigint {\n const numerator1 = liquidity * Q96;\n const numerator2 = sqrtRatioBX96 - sqrtRatioAX96;\n return MathUtil.alphDiv(numerator1 * numerator2, sqrtRatioBX96 * sqrtRatioAX96);\n }\n\n static getToken1Delta(sqrtRatioAX96: bigint, sqrtRatioBX96: bigint, liquidity: bigint): bigint {\n return MathUtil.alphDiv(liquidity * (sqrtRatioBX96 - sqrtRatioAX96), Q96);\n }\n}\n","import Decimal from 'decimal.js';\n\nexport type NumericLike = Decimal | bigint | number | string | undefined | null;\n\nexport class NumericUtils {\n static decimalFrom(value: NumericLike): Decimal {\n if (value === undefined || value === null) {\n return new Decimal(0);\n }\n if (Decimal.isDecimal(value)) {\n return value;\n }\n if (typeof value === 'bigint') {\n return new Decimal(value.toString());\n }\n return new Decimal(value);\n }\n\n static decimalToString(value: Decimal): string {\n if (!value.isFinite()) {\n return value.toString();\n }\n return value.toFixed(value.decimalPlaces());\n }\n\n static scaleDecimal(value: NumericLike, decimals: number): Decimal {\n if (decimals < 0) {\n throw new Error('Decimals must be non-negative');\n }\n if (decimals === 0) {\n return this.decimalFrom(value);\n }\n return this.decimalFrom(value).div(new Decimal(10).pow(decimals));\n }\n\n static scaleToString(value: NumericLike, decimals: number): string {\n return this.decimalToString(this.scaleDecimal(value, decimals));\n }\n\n static numericToString(value: NumericLike): string {\n return this.decimalToString(this.decimalFrom(value));\n }\n\n static numericToBigInt(value: NumericLike): bigint {\n if (value === undefined || value === null) {\n return 0n;\n }\n if (typeof value === 'bigint') {\n return value;\n }\n\n const decimalValue = this.decimalFrom(value);\n\n if (!decimalValue.isFinite()) {\n throw new Error('Cannot convert non-finite value to bigint');\n }\n\n if (!decimalValue.isInteger()) {\n throw new Error('Cannot convert non-integer value to bigint');\n }\n\n return BigInt(decimalValue.toFixed(0));\n }\n}\n","import type { TokenInfo } from '@alephium/token-list';\nimport ModuleBase from '../moduleBase';\nimport type { Zeta } from '../zeta';\nimport { TokenListFetchError } from '../common/error';\n\ninterface TokenCache {\n tokens: TokenInfo[];\n lastFetched: Date;\n}\n\ntype TokenListResponse = {\n tokens: TokenInfo[];\n};\n\nexport class TokenModule extends ModuleBase {\n private cache?: TokenCache;\n private readonly cacheTimeMs: number;\n\n constructor(\n scope: Zeta,\n private readonly cacheTimeDays: number = 1,\n ) {\n super({ scope, moduleName: 'TokenModule' });\n\n this.scope = scope;\n this.cacheTimeMs = cacheTimeDays * 24 * 60 * 60 * 1000;\n }\n\n async getTokens(): Promise<TokenInfo[]> {\n if (this.isCacheValid()) {\n return this.cache!.tokens;\n }\n\n try {\n return await this.fetchTokens();\n } catch (error) {\n if (this.cache) {\n const reason = error instanceof Error ? error.message : String(error);\n this.logInfo(`Failed to refresh token list, using cached copy. Reason: ${reason}`);\n return this.cache.tokens;\n }\n this.logAndThrowError(`Failed to refresh token list`, error);\n }\n }\n\n async getTokenById(id: string): Promise<TokenInfo> {\n const tokenInfo = await this.getTokenInfoBy((token) => token.id === id);\n if (!tokenInfo) {\n throw new Error(`Unknown token, id not found in token list: ${id}`);\n }\n return tokenInfo;\n }\n\n async getTokenBySymbol(symbol: string): Promise<TokenInfo> {\n const tokenInfo = await this.getTokenInfoBy((token) => token.symbol === symbol);\n if (!tokenInfo) {\n throw new Error(`Unknown token, symbol not found in token list: ${symbol}`);\n }\n return tokenInfo;\n }\n\n async getTokenInfoBy(fn: (token: TokenInfo) => boolean): Promise<TokenInfo | undefined> {\n const tokenInfoz = await this.getTokens();\n return tokenInfoz.find(fn);\n }\n\n async fetchTokens(): Promise<TokenInfo[]> {\n try {\n const response = await fetch(this.scope.tokenListUrl);\n if (!response.ok) {\n throw new TokenListFetchError(this.scope.tokenListUrl, { status: response.status });\n }\n const payload: unknown = await response.json();\n const tokens = this.extractTokens(payload);\n this.cache = {\n tokens,\n lastFetched: new Date(),\n };\n\n return tokens;\n } catch (error) {\n if (error instanceof TokenListFetchError) {\n this.logAndThrowError(`Failed to fetch token list`, error);\n }\n\n this.logAndThrowError(\n `Failed to fetch token list`,\n new TokenListFetchError(this.scope.tokenListUrl, {\n cause: error,\n }),\n );\n }\n }\n\n private isCacheValid(): boolean {\n if (!this.cache) {\n return false;\n }\n\n const now = new Date();\n const timeDiff = now.getTime() - this.cache.lastFetched.getTime();\n return timeDiff < this.cacheTimeMs;\n }\n\n private extractTokens(payload: unknown): TokenInfo[] {\n if (!this.validateTokenListResponse(payload)) {\n throw new Error('Invalid token list payload received from token list endpoint');\n }\n return payload.tokens;\n }\n\n private validateTokenListResponse(value: unknown): value is TokenListResponse {\n if (typeof value !== 'object' || value === null) {\n return false;\n }\n const tokens = (value as { tokens?: unknown }).tokens;\n if (!Array.isArray(tokens)) {\n return false;\n }\n return tokens.every((token) => this.validateTokenInfo(token));\n }\n\n private validateTokenInfo(value: unknown): value is TokenInfo {\n if (typeof value !== 'object' || value === null) {\n return false;\n }\n\n const token = value as Partial<TokenInfo>;\n\n const requiredStringFields: Array<keyof TokenInfo> = [\n 'id',\n 'name',\n 'symbol',\n 'description',\n 'logoURI',\n ];\n\n if (requiredStringFields.some((field) => typeof token[field] !== 'string')) {\n return false;\n }\n\n const { decimals, originChain, unchainedLogoURI } = token;\n\n if (\n typeof decimals !== 'number' ||\n !Number.isInteger(decimals) ||\n decimals < 0 ||\n decimals > 255\n ) {\n return false;\n }\n\n if (originChain !== undefined && typeof originChain !== 'string') {\n return false;\n }\n\n if (unchainedLogoURI !== undefined && typeof unchainedLogoURI !== 'string') {\n return false;\n }\n\n return true;\n }\n}\n","import type { ExecuteScriptResult, HexString } from '@alephium/web3';\nimport {\n MINIMAL_CONTRACT_DEPOSIT,\n addressFromContractId,\n addressToBytes,\n binToHex,\n codec,\n groupOfAddress,\n isGrouplessAddressWithoutGroupIndex,\n subContractId,\n} from '@alephium/web3';\nimport type {\n AlphUnstakeVaultInstance,\n AlphUnstakeVaultTypes,\n GovernanceDemoInstance,\n RewardSharingVaultInstance,\n XAlphStakeVaultInstance,\n XAlphStakeVaultTypes,\n XAlphTokenInstance,\n XAlphTokenTypes,\n} from 'staking/artifacts/ts';\nimport {\n AlphStakeAndLock,\n AlphUnstakeVault,\n GovernanceDemo,\n RewardSharingVault,\n XAlphStakeVault,\n XAlphToken,\n XAlphUnlockAndStartUnstake,\n} from 'staking/artifacts/ts';\nimport { loadDeployments } from 'staking/artifacts/ts/deployments';\nimport ModuleBase from '../moduleBase';\nimport type { Zeta } from '../zeta';\nimport type { StakeVaultUserInfo, StakingConfig } from './types';\nimport { decodeContractIdList, decodeU256List } from './utils';\nimport type { StakingSettings } from './settings';\nimport { getStakingSettings } from './settings';\n\nexport class StakingModule extends ModuleBase {\n private config: StakingConfig;\n private xAlphTokenContract: XAlphTokenInstance;\n private stakeVaultContract: XAlphStakeVaultInstance;\n\n constructor(scope: Zeta) {\n super({ scope, moduleName: 'StakingModule' });\n\n this.config = this.loadStakingConfig();\n this.xAlphTokenContract = XAlphToken.at(addressFromContractId(this.config.xAlphTokenId));\n this.stakeVaultContract = XAlphStakeVault.at(\n addressFromContractId(this.config.xAlphStakeVaultId),\n );\n }\n\n setConfig(config: StakingConfig): void {\n this.config = config;\n this.xAlphTokenContract = XAlphToken.at(addressFromContractId(config.xAlphTokenId));\n this.stakeVaultContract = XAlphStakeVault.at(addressFromContractId(config.xAlphStakeVaultId));\n }\n\n getConfig(): StakingConfig {\n return this.config;\n }\n\n getXAlphToken(): XAlphTokenInstance {\n return this.xAlphTokenContract;\n }\n\n getStakeVault(): XAlphStakeVaultInstance {\n return this.stakeVaultContract;\n }\n\n getRewardSharingVault(contractId: string): RewardSharingVaultInstance {\n return RewardSharingVault.at(addressFromContractId(contractId));\n }\n\n getGovernanceContract(contractId: string): GovernanceDemoInstance {\n return GovernanceDemo.at(addressFromContractId(contractId));\n }\n\n async getXAlphTokenState(): Promise<XAlphTokenTypes.State> {\n return this.xAlphTokenContract.fetchState();\n }\n\n async getStakeVaultState(): Promise<XAlphStakeVaultTypes.State> {\n return this.stakeVaultContract.fetchState();\n }\n\n async stakeAlph(amount: bigint): Promise<XAlphTokenTypes.SignExecuteMethodResult<'stake'>> {\n this.ensurePositiveAmount(amount, 'Stake amount');\n return this.xAlphTokenContract.transact.stake({\n signer: this.scope.signer,\n args: { amount },\n attoAlphAmount: amount + MINIMAL_CONTRACT_DEPOSIT,\n });\n }\n\n async startUnstake(\n amount: bigint,\n ): Promise<XAlphTokenTypes.SignExecuteMethodResult<'startUnstake'>> {\n this.ensurePositiveAmount(amount, 'Unstake amount');\n return this.xAlphTokenContract.transact.startUnstake({\n signer: this.scope.signer,\n args: { amount },\n tokens: [{ id: this.config.xAlphTokenId, amount }],\n });\n }\n\n async claimUnstaked(\n vaultIndex: bigint,\n amount: bigint,\n ): Promise<XAlphTokenTypes.SignExecuteMethodResult<'claimUnstaked'>> {\n this.ensurePositiveAmount(amount, 'Claim amount');\n return this.xAlphTokenContract.transact.claimUnstaked({\n signer: this.scope.signer,\n args: {\n vaultIndex,\n amount,\n },\n });\n }\n\n async stakeXAlph(amount: bigint): Promise<XAlphStakeVaultTypes.SignExecuteMethodResult<'stake'>> {\n this.ensurePositiveAmount(amount, 'Stake amount');\n return this.stakeVaultContract.transact.stake({\n signer: this.scope.signer,\n args: { amount },\n tokens: [{ id: this.config.xAlphTokenId, amount }],\n attoAlphAmount: MINIMAL_CONTRACT_DEPOSIT,\n });\n }\n\n async unstakeXAlph(\n amount: bigint,\n ): Promise<XAlphStakeVaultTypes.SignExecuteMethodResult<'unstake'>> {\n this.ensurePositiveAmount(amount, 'Unstake amount');\n return this.stakeVaultContract.transact.unstake({\n signer: this.scope.signer,\n args: { amount },\n attoAlphAmount: MINIMAL_CONTRACT_DEPOSIT,\n });\n }\n\n async stakeAndLockAlph(amount: bigint): Promise<ExecuteScriptResult> {\n return AlphStakeAndLock.execute({\n signer: this.scope.signer,\n initialFields: {\n xAlphToken: this.xAlphTokenContract.contractId,\n xAlphStakeVault: this.stakeVaultContract.contractId,\n amount,\n },\n attoAlphAmount: amount + MINIMAL_CONTRACT_DEPOSIT,\n });\n }\n\n async unlockAndStartUnstake(amount: bigint): Promise<ExecuteScriptResult> {\n return XAlphUnlockAndStartUnstake.execute({\n signer: this.scope.signer,\n initialFields: {\n xAlphToken: this.xAlphTokenContract.contractId,\n xAlphStakeVault: this.stakeVaultContract.contractId,\n amount,\n },\n attoAlphAmount: MINIMAL_CONTRACT_DEPOSIT,\n });\n }\n\n getAlphUnstakeVault(userAddress: string, vaultIndex: bigint): AlphUnstakeVaultInstance {\n const userHex = binToHex(addressToBytes(userAddress));\n const indexHex = binToHex(codec.u256Codec.encode(vaultIndex));\n const contractId = subContractId(\n this.config.xAlphTokenId,\n `${userHex}${indexHex}`,\n groupOfAddress(this.config.xAlphTokenAddress),\n );\n return AlphUnstakeVault.at(addressFromContractId(contractId));\n }\n\n async getAlphUnstakeVaultState(\n userAddress: string,\n vaultIndex: bigint,\n ): Promise<AlphUnstakeVaultTypes.State> {\n return this.getAlphUnstakeVault(userAddress, vaultIndex).fetchState();\n }\n\n async connectToDapp(\n contractId: string,\n merkleProof: HexString,\n ): Promise<XAlphStakeVaultTypes.SignExecuteMethodResult<'connectToDapp'>> {\n return this.stakeVaultContract.transact.connectToDapp({\n signer: this.scope.signer,\n args: { contractId, merkleProof },\n attoAlphAmount: MINIMAL_CONTRACT_DEPOSIT,\n });\n }\n\n async disconnectFromDapp(\n contractId: string,\n ): Promise<XAlphStakeVaultTypes.SignExecuteMethodResult<'disconnectFromDapp'>> {\n return this.stakeVaultContract.transact.disconnectFromDapp({\n signer: this.scope.signer,\n args: { contractId },\n attoAlphAmount: MINIMAL_CONTRACT_DEPOSIT,\n });\n }\n\n async getUserStakeVaultInfo(address: string): Promise<StakeVaultUserInfo> {\n let stakerAddress = address;\n if (isGrouplessAddressWithoutGroupIndex(address)) {\n stakerAddress = `${address}:${this.stakeVaultContract.groupIndex}`;\n }\n const result = await this.stakeVaultContract.view.getUserStakingInfo({\n args: { user: stakerAddress },\n });\n return {\n amount: result.returns.amount,\n connectedDapps: decodeContractIdList(result.returns.connectedDapps),\n };\n }\n\n async isUserStaking(address: string): Promise<boolean> {\n const result = await this.stakeVaultContract.view.isStaking({ args: { user: address } });\n return result.returns;\n }\n\n async getUserWeight(address: string): Promise<bigint> {\n const result = await this.stakeVaultContract.view.getWeight({ args: { user: address } });\n return result.returns;\n }\n\n async getActiveUnstakeVaultIndexes(address: string): Promise<bigint[]> {\n const result = await this.xAlphTokenContract.view.getActiveUnstakeVaultIndexes({\n args: { caller: address },\n });\n return decodeU256List(result.returns);\n }\n\n async getClaimableAmount(address: string, vaultIndex: bigint): Promise<bigint> {\n const result = await this.xAlphTokenContract.view.getClaimableAmount({\n args: { user: address, vaultIndex },\n });\n return result.returns;\n }\n\n getSettings(): StakingSettings {\n return getStakingSettings(this.scope.network.id);\n }\n\n private loadStakingConfig(): StakingConfig {\n const networkId = this.scope.network.id;\n try {\n const deployments = loadDeployments(networkId);\n const alphUnstakeVault = deployments.contracts.AlphUnstakeVault.contractInstance;\n const xAlphToken = deployments.contracts.XAlphToken.contractInstance;\n const stakeVault = deployments.contracts.XAlphStakeVault.contractInstance;\n const rewardVault = deployments.contracts.RewardSharingVault.contractInstance;\n const governance = deployments.contracts.GovernanceDemo.contractInstance;\n return {\n groupIndex: stakeVault.groupIndex,\n alphUnstakeVaultTemplateId: alphUnstakeVault.contractId,\n xAlphTokenId: xAlphToken.contractId,\n xAlphTokenAddress: xAlphToken.address,\n xAlphStakeVaultId: stakeVault.contractId,\n xAlphStakeVaultAddress: stakeVault.address,\n rewardSharingTemplateId: rewardVault.contractId,\n governanceDemoTemplateId: governance.contractId,\n };\n } catch (error) {\n this.logAndThrowError(`Failed to load staking deployments on ${networkId}`, error);\n }\n }\n\n private ensurePositiveAmount(amount: bigint, label: string): void {\n if (amount <= 0n) {\n throw new Error(`${label} must be greater than zero`);\n }\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nexport * from \"./AlphUnstakeVault\";\nexport * from \"./FullMathTest\";\nexport * from \"./GovernanceDemo\";\nexport * from \"./RewardSharingVault\";\nexport * from \"./TestDynamicArrayByteVec32\";\nexport * from \"./TestDynamicSortedArrayForU256\";\nexport * from \"./TestMerkleProof\";\nexport * from \"./XAlphStakeVault\";\nexport * from \"./XAlphToken\";\nexport * from \"./contracts\";\nexport * from \"./scripts\";\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport {\n Address,\n Contract,\n ContractState,\n TestContractResult,\n HexString,\n ContractFactory,\n EventSubscribeOptions,\n EventSubscription,\n CallContractParams,\n CallContractResult,\n TestContractParams,\n ContractEvent,\n subscribeContractEvent,\n subscribeContractEvents,\n testMethod,\n callMethod,\n multicallMethods,\n fetchContractState,\n Asset,\n ContractInstance,\n getContractEventsCurrentCount,\n TestContractParamsWithoutMaps,\n TestContractResultWithoutMaps,\n SignExecuteContractMethodParams,\n SignExecuteScriptTxResult,\n signExecuteMethod,\n addStdIdToFields,\n encodeContractFields,\n Narrow,\n} from \"@alephium/web3\";\nimport { default as AlphUnstakeVaultContractJson } from \"../AlphUnstakeVault.ral.json\";\nimport { getContractByCodeHash, registerContract } from \"./contracts\";\nimport * as types from \"./types\";\n\n// Custom types for the contract\nexport namespace AlphUnstakeVaultTypes {\n export type Fields = {\n xalphToken: HexString;\n unstakerAddress: Address;\n totalUnstakeAmount: bigint;\n unstakeStartTime: bigint;\n unstakeDuration: bigint;\n withdrawnAmount: bigint;\n };\n\n export type State = ContractState<Fields>;\n\n export interface CallMethodTable {\n mulDiv: {\n params: CallContractParams<{ a: bigint; b: bigint; denominator: bigint }>;\n result: CallContractResult<bigint>;\n };\n getTotalUnstakeAmount: {\n params: Omit<CallContractParams<{}>, \"args\">;\n result: CallContractResult<bigint>;\n };\n getClaimableAmount: {\n params: Omit<CallContractParams<{}>, \"args\">;\n result: CallContractResult<bigint>;\n };\n claim: {\n params: CallContractParams<{ amount: bigint }>;\n result: CallContractResult<boolean>;\n };\n destroy: {\n params: Omit<CallContractParams<{}>, \"args\">;\n result: CallContractResult<null>;\n };\n }\n export type CallMethodParams<T extends keyof CallMethodTable> =\n CallMethodTable[T][\"params\"];\n export type CallMethodResult<T extends keyof CallMethodTable> =\n CallMethodTable[T][\"result\"];\n export type MultiCallParams = Partial<{\n [Name in keyof CallMethodTable]: CallMethodTable[Name][\"params\"];\n }>;\n export type MultiCallResults<T extends MultiCallParams> = {\n [MaybeName in keyof T]: MaybeName extends keyof CallMethodTable\n ? CallMethodTable[MaybeName][\"result\"]\n : undefined;\n };\n export type MulticallReturnType<Callss extends MultiCallParams[]> = {\n [index in keyof Callss]: MultiCallResults<Callss[index]>;\n };\n\n export interface SignExecuteMethodTable {\n mulDiv: {\n params: SignExecuteContractMethodParams<{\n a: bigint;\n b: bigint;\n denominator: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n getTotalUnstakeAmount: {\n params: Omit<SignExecuteContractMethodParams<{}>, \"args\">;\n result: SignExecuteScriptTxResult;\n };\n getClaimableAmount: {\n params: Omit<SignExecuteContractMethodParams<{}>, \"args\">;\n result: SignExecuteScriptTxResult;\n };\n claim: {\n params: SignExecuteContractMethodParams<{ amount: bigint }>;\n result: SignExecuteScriptTxResult;\n };\n destroy: {\n params: Omit<SignExecuteContractMethodParams<{}>, \"args\">;\n result: SignExecuteScriptTxResult;\n };\n }\n export type SignExecuteMethodParams<T extends keyof SignExecuteMethodTable> =\n SignExecuteMethodTable[T][\"params\"];\n export type SignExecuteMethodResult<T extends keyof SignExecuteMethodTable> =\n SignExecuteMethodTable[T][\"result\"];\n}\n\nclass Factory extends ContractFactory<\n AlphUnstakeVaultInstance,\n AlphUnstakeVaultTypes.Fields\n> {\n encodeFields(fields: AlphUnstakeVaultTypes.Fields) {\n return encodeContractFields(\n addStdIdToFields(this.contract, fields),\n this.contract.fieldsSig,\n types.AllStructs\n );\n }\n\n consts = {\n FullMathError: { DivByZero: BigInt(\"350\"), MulDivOverflow: BigInt(\"351\") },\n ErrorCodes: {\n InvalidCaller: BigInt(\"20\"),\n InsufficientClaimableAmount: BigInt(\"21\"),\n InvalidUnstakeDuration: BigInt(\"22\"),\n InvalidTimestamp: BigInt(\"23\"),\n },\n };\n\n at(address: string): AlphUnstakeVaultInstance {\n return new AlphUnstakeVaultInstance(address);\n }\n\n tests = {\n mulDiv: async (\n params: TestContractParamsWithoutMaps<\n AlphUnstakeVaultTypes.Fields,\n { a: bigint; b: bigint; denominator: bigint }\n >\n ): Promise<TestContractResultWithoutMaps<bigint>> => {\n return testMethod(this, \"mulDiv\", params, getContractByCodeHash);\n },\n getTotalUnstakeAmount: async (\n params: Omit<\n TestContractParamsWithoutMaps<AlphUnstakeVaultTypes.Fields, never>,\n \"args\"\n >\n ): Promise<TestContractResultWithoutMaps<bigint>> => {\n return testMethod(\n this,\n \"getTotalUnstakeAmount\",\n params,\n getContractByCodeHash\n );\n },\n getClaimableAmount: async (\n params: Omit<\n TestContractParamsWithoutMaps<AlphUnstakeVaultTypes.Fields, never>,\n \"args\"\n >\n ): Promise<TestContractResultWithoutMaps<bigint>> => {\n return testMethod(\n this,\n \"getClaimableAmount\",\n params,\n getContractByCodeHash\n );\n },\n claim: async (\n params: TestContractParamsWithoutMaps<\n AlphUnstakeVaultTypes.Fields,\n { amount: bigint }\n >\n ): Promise<TestContractResultWithoutMaps<boolean>> => {\n return testMethod(this, \"claim\", params, getContractByCodeHash);\n },\n destroy: async (\n params: Omit<\n TestContractParamsWithoutMaps<AlphUnstakeVaultTypes.Fields, never>,\n \"args\"\n >\n ): Promise<TestContractResultWithoutMaps<null>> => {\n return testMethod(this, \"destroy\", params, getContractByCodeHash);\n },\n };\n\n stateForTest(\n initFields: AlphUnstakeVaultTypes.Fields,\n asset?: Asset,\n address?: string\n ) {\n return this.stateForTest_(initFields, asset, address, undefined);\n }\n}\n\n// Use this object to test and deploy the contract\nexport const AlphUnstakeVault = new Factory(\n Contract.fromJson(\n AlphUnstakeVaultContractJson,\n \"\",\n \"5216c458f360d0f51f5e2109a760814ff97eab76f546adc835eb318c6cbc5256\",\n types.AllStructs\n )\n);\nregisterContract(AlphUnstakeVault);\n\n// Use this class to interact with the blockchain\nexport class AlphUnstakeVaultInstance extends ContractInstance {\n constructor(address: Address) {\n super(address);\n }\n\n async fetchState(): Promise<AlphUnstakeVaultTypes.State> {\n return fetchContractState(AlphUnstakeVault, this);\n }\n\n view = {\n mulDiv: async (\n params: AlphUnstakeVaultTypes.CallMethodParams<\"mulDiv\">\n ): Promise<AlphUnstakeVaultTypes.CallMethodResult<\"mulDiv\">> => {\n return callMethod(\n AlphUnstakeVault,\n this,\n \"mulDiv\",\n params,\n getContractByCodeHash\n );\n },\n getTotalUnstakeAmount: async (\n params?: AlphUnstakeVaultTypes.CallMethodParams<\"getTotalUnstakeAmount\">\n ): Promise<\n AlphUnstakeVaultTypes.CallMethodResult<\"getTotalUnstakeAmount\">\n > => {\n return callMethod(\n AlphUnstakeVault,\n this,\n \"getTotalUnstakeAmount\",\n params === undefined ? {} : params,\n getContractByCodeHash\n );\n },\n getClaimableAmount: async (\n params?: AlphUnstakeVaultTypes.CallMethodParams<\"getClaimableAmount\">\n ): Promise<\n AlphUnstakeVaultTypes.CallMethodResult<\"getClaimableAmount\">\n > => {\n return callMethod(\n AlphUnstakeVault,\n this,\n \"getClaimableAmount\",\n params === undefined ? {} : params,\n getContractByCodeHash\n );\n },\n claim: async (\n params: AlphUnstakeVaultTypes.CallMethodParams<\"claim\">\n ): Promise<AlphUnstakeVaultTypes.CallMethodResult<\"claim\">> => {\n return callMethod(\n AlphUnstakeVault,\n this,\n \"claim\",\n params,\n getContractByCodeHash\n );\n },\n destroy: async (\n params?: AlphUnstakeVaultTypes.CallMethodParams<\"destroy\">\n ): Promise<AlphUnstakeVaultTypes.CallMethodResult<\"destroy\">> => {\n return callMethod(\n AlphUnstakeVault,\n this,\n \"destroy\",\n params === undefined ? {} : params,\n getContractByCodeHash\n );\n },\n };\n\n transact = {\n mulDiv: async (\n params: AlphUnstakeVaultTypes.SignExecuteMethodParams<\"mulDiv\">\n ): Promise<AlphUnstakeVaultTypes.SignExecuteMethodResult<\"mulDiv\">> => {\n return signExecuteMethod(AlphUnstakeVault, this, \"mulDiv\", params);\n },\n getTotalUnstakeAmount: async (\n params: AlphUnstakeVaultTypes.SignExecuteMethodParams<\"getTotalUnstakeAmount\">\n ): Promise<\n AlphUnstakeVaultTypes.SignExecuteMethodResult<\"getTotalUnstakeAmount\">\n > => {\n return signExecuteMethod(\n AlphUnstakeVault,\n this,\n \"getTotalUnstakeAmount\",\n params\n );\n },\n getClaimableAmount: async (\n params: AlphUnstakeVaultTypes.SignExecuteMethodParams<\"getClaimableAmount\">\n ): Promise<\n AlphUnstakeVaultTypes.SignExecuteMethodResult<\"getClaimableAmount\">\n > => {\n return signExecuteMethod(\n AlphUnstakeVault,\n this,\n \"getClaimableAmount\",\n params\n );\n },\n claim: async (\n params: AlphUnstakeVaultTypes.SignExecuteMethodParams<\"claim\">\n ): Promise<AlphUnstakeVaultTypes.SignExecuteMethodResult<\"claim\">> => {\n return signExecuteMethod(AlphUnstakeVault, this, \"claim\", params);\n },\n destroy: async (\n params: AlphUnstakeVaultTypes.SignExecuteMethodParams<\"destroy\">\n ): Promise<AlphUnstakeVaultTypes.SignExecuteMethodResult<\"destroy\">> => {\n return signExecuteMethod(AlphUnstakeVault, this, \"destroy\", params);\n },\n };\n\n async multicall<Calls extends AlphUnstakeVaultTypes.MultiCallParams>(\n calls: Calls\n ): Promise<AlphUnstakeVaultTypes.MultiCallResults<Calls>>;\n async multicall<Callss extends AlphUnstakeVaultTypes.MultiCallParams[]>(\n callss: Narrow<Callss>\n ): Promise<AlphUnstakeVaultTypes.MulticallReturnType<Callss>>;\n async multicall<\n Callss extends\n | AlphUnstakeVaultTypes.MultiCallParams\n | AlphUnstakeVaultTypes.MultiCallParams[]\n >(callss: Callss): Promise<unknown> {\n return await multicallMethods(\n AlphUnstakeVault,\n this,\n callss,\n getContractByCodeHash\n );\n }\n}\n","{\n \"version\": \"v4.2.5\",\n \"name\": \"AlphUnstakeVault\",\n \"bytecode\": \"060540ea40f841384172418c0000030901409216020c3013415e7b160016010c0d3687170316001601371704160316043616031604314c020d4a010c36170516050c2f4c04160416022d02160216053313415f7b160016011602871706160516061604334c020d4a010c361705160416063617040c1602361602381707160216072d1702160416072d17040c16073616072d0d351707160416051607373917040f1602370e3a170816080e16021608373637170816080e16021608373637170816080e16021608373637170816080e16021608373637170816080e16021608373637170816080e160216083736371708160416083702010000000103d3f10c9d97ce020201000003014020d3223281b2ce040c3313167b5617001600ce033413177b1600ce032b1701ce0217021601ce04314c0516021601ce04000017021602a0002b0201020102011fd30e00e856b417011601ce0077457a4b04181601ce014513147b160000023213157bce011600a8a00016002aa100a000ce022f0201020001000bd38e18691cb417001600ce00774513147bce01b0\",\n \"codeHash\": \"5216c458f360d0f51f5e2109a760814ff97eab76f546adc835eb318c6cbc5256\",\n \"fieldsSig\": {\n \"names\": [\n \"xalphToken\",\n \"unstakerAddress\",\n \"totalUnstakeAmount\",\n \"unstakeStartTime\",\n \"unstakeDuration\",\n \"withdrawnAmount\"\n ],\n \"types\": [\n \"XAlphToken\",\n \"Address\",\n \"U256\",\n \"U256\",\n \"U256\",\n \"U256\"\n ],\n \"isMutable\": [\n false,\n false,\n false,\n false,\n false,\n true\n ]\n },\n \"eventsSig\": [],\n \"functions\": [\n {\n \"name\": \"mulDiv\",\n \"paramNames\": [\n \"a\",\n \"b\",\n \"denominator\"\n ],\n \"paramTypes\": [\n \"U256\",\n \"U256\",\n \"U256\"\n ],\n \"paramIsMutable\": [\n false,\n false,\n true\n ],\n \"returnTypes\": [\n \"U256\"\n ]\n },\n {\n \"name\": \"getTotalUnstakeAmount\",\n \"paramNames\": [],\n \"paramTypes\": [],\n \"paramIsMutable\": [],\n \"returnTypes\": [\n \"U256\"\n ]\n },\n {\n \"name\": \"getClaimableAmount\",\n \"paramNames\": [],\n \"paramTypes\": [],\n \"paramIsMutable\": [],\n \"returnTypes\": [\n \"U256\"\n ]\n },\n {\n \"name\": \"claim\",\n \"paramNames\": [\n \"amount\"\n ],\n \"paramTypes\": [\n \"U256\"\n ],\n \"paramIsMutable\": [\n false\n ],\n \"returnTypes\": [\n \"Bool\"\n ]\n },\n {\n \"name\": \"destroy\",\n \"paramNames\": [],\n \"paramTypes\": [],\n \"paramIsMutable\": [],\n \"returnTypes\": []\n }\n ],\n \"constants\": [],\n \"enums\": [\n {\n \"name\": \"FullMathError\",\n \"fields\": [\n {\n \"name\": \"DivByZero\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"350\"\n }\n },\n {\n \"name\": \"MulDivOverflow\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"351\"\n }\n }\n ]\n },\n {\n \"name\": \"ErrorCodes\",\n \"fields\": [\n {\n \"name\": \"InvalidCaller\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"20\"\n }\n },\n {\n \"name\": \"InsufficientClaimableAmount\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"21\"\n }\n },\n {\n \"name\": \"InvalidUnstakeDuration\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"22\"\n }\n },\n {\n \"name\": \"InvalidTimestamp\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"23\"\n }\n }\n ]\n }\n ]\n}","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport { Contract, ContractFactory } from \"@alephium/web3\";\n\nlet contracts: ContractFactory<any>[] | undefined = undefined;\n\nexport function getAllContracts(): ContractFactory<any>[] {\n return contracts ?? [];\n}\n\nexport function registerContract(factory: ContractFactory<any>) {\n if (contracts === undefined) {\n contracts = [factory];\n } else {\n contracts.push(factory);\n }\n}\nexport function getContractByCodeHash(codeHash: string): Contract {\n const c = contracts?.find((c) => c.contract.hasCodeHash(codeHash));\n if (c === undefined) {\n throw new Error(\"Unknown code with code hash: \" + codeHash);\n }\n return c.contract;\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport { Address, HexString, Val, Struct } from \"@alephium/web3\";\nimport { default as allStructsJson } from \"../structs.ral.json\";\nexport const AllStructs = allStructsJson.map((json) => Struct.fromJson(json));\nexport interface UserRewardSharingInfo extends Record<string, Val> {\n amount: bigint;\n rewardPerToken: bigint;\n}\nexport interface UserStakingInfo extends Record<string, Val> {\n amount: bigint;\n connectedDapps: HexString;\n}\nexport interface VoteInfo extends Record<string, Val> {\n proposalVoted: bigint;\n amount: bigint;\n}\n","[\n {\n \"name\": \"VoteInfo\",\n \"fieldNames\": [\n \"proposalVoted\",\n \"amount\"\n ],\n \"fieldTypes\": [\n \"U256\",\n \"U256\"\n ],\n \"isMutable\": [\n true,\n true\n ]\n },\n {\n \"name\": \"UserRewardSharingInfo\",\n \"fieldNames\": [\n \"amount\",\n \"rewardPerToken\"\n ],\n \"fieldTypes\": [\n \"U256\",\n \"U256\"\n ],\n \"isMutable\": [\n true,\n true\n ]\n },\n {\n \"name\": \"UserStakingInfo\",\n \"fieldNames\": [\n \"amount\",\n \"connectedDapps\"\n ],\n \"fieldTypes\": [\n \"U256\",\n \"ByteVec\"\n ],\n \"isMutable\": [\n true,\n true\n ]\n }\n]","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport {\n Address,\n Contract,\n ContractState,\n TestContractResult,\n HexString,\n ContractFactory,\n EventSubscribeOptions,\n EventSubscription,\n CallContractParams,\n CallContractResult,\n TestContractParams,\n ContractEvent,\n subscribeContractEvent,\n subscribeContractEvents,\n testMethod,\n callMethod,\n multicallMethods,\n fetchContractState,\n Asset,\n ContractInstance,\n getContractEventsCurrentCount,\n TestContractParamsWithoutMaps,\n TestContractResultWithoutMaps,\n SignExecuteContractMethodParams,\n SignExecuteScriptTxResult,\n signExecuteMethod,\n addStdIdToFields,\n encodeContractFields,\n Narrow,\n} from \"@alephium/web3\";\nimport { default as FullMathTestContractJson } from \"../utils/FullMathTest.ral.json\";\nimport { getContractByCodeHash, registerContract } from \"./contracts\";\nimport * as types from \"./types\";\n\n// Custom types for the contract\nexport namespace FullMathTestTypes {\n export type State = Omit<ContractState<any>, \"fields\">;\n\n export interface CallMethodTable {\n mulDiv: {\n params: CallContractParams<{ a: bigint; b: bigint; denominator: bigint }>;\n result: CallContractResult<bigint>;\n };\n }\n export type CallMethodParams<T extends keyof CallMethodTable> =\n CallMethodTable[T][\"params\"];\n export type CallMethodResult<T extends keyof CallMethodTable> =\n CallMethodTable[T][\"result\"];\n export type MultiCallParams = Partial<{\n [Name in keyof CallMethodTable]: CallMethodTable[Name][\"params\"];\n }>;\n export type MultiCallResults<T extends MultiCallParams> = {\n [MaybeName in keyof T]: MaybeName extends keyof CallMethodTable\n ? CallMethodTable[MaybeName][\"result\"]\n : undefined;\n };\n export type MulticallReturnType<Callss extends MultiCallParams[]> = {\n [index in keyof Callss]: MultiCallResults<Callss[index]>;\n };\n\n export interface SignExecuteMethodTable {\n mulDiv: {\n params: SignExecuteContractMethodParams<{\n a: bigint;\n b: bigint;\n denominator: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n }\n export type SignExecuteMethodParams<T extends keyof SignExecuteMethodTable> =\n SignExecuteMethodTable[T][\"params\"];\n export type SignExecuteMethodResult<T extends keyof SignExecuteMethodTable> =\n SignExecuteMethodTable[T][\"result\"];\n}\n\nclass Factory extends ContractFactory<FullMathTestInstance, {}> {\n encodeFields() {\n return encodeContractFields({}, this.contract.fieldsSig, types.AllStructs);\n }\n\n consts = {\n FullMathError: { DivByZero: BigInt(\"350\"), MulDivOverflow: BigInt(\"351\") },\n };\n\n at(address: string): FullMathTestInstance {\n return new FullMathTestInstance(address);\n }\n\n tests = {\n mulDiv: async (\n params: Omit<\n TestContractParamsWithoutMaps<\n never,\n { a: bigint; b: bigint; denominator: bigint }\n >,\n \"initialFields\"\n >\n ): Promise<TestContractResultWithoutMaps<bigint>> => {\n return testMethod(this, \"mulDiv\", params, getContractByCodeHash);\n },\n };\n\n stateForTest(initFields: {}, asset?: Asset, address?: string) {\n return this.stateForTest_(initFields, asset, address, undefined);\n }\n}\n\n// Use this object to test and deploy the contract\nexport const FullMathTest = new Factory(\n Contract.fromJson(\n FullMathTestContractJson,\n \"\",\n \"fd74df789eb5974e11dfa74960ba1323e0530fe5e1fe0aa43a6c3c9bf9ee1d98\",\n types.AllStructs\n )\n);\nregisterContract(FullMathTest);\n\n// Use this class to interact with the blockchain\nexport class FullMathTestInstance extends ContractInstance {\n constructor(address: Address) {\n super(address);\n }\n\n async fetchState(): Promise<FullMathTestTypes.State> {\n return fetchContractState(FullMathTest, this);\n }\n\n view = {\n mulDiv: async (\n params: FullMathTestTypes.CallMethodParams<\"mulDiv\">\n ): Promise<FullMathTestTypes.CallMethodResult<\"mulDiv\">> => {\n return callMethod(\n FullMathTest,\n this,\n \"mulDiv\",\n params,\n getContractByCodeHash\n );\n },\n };\n\n transact = {\n mulDiv: async (\n params: FullMathTestTypes.SignExecuteMethodParams<\"mulDiv\">\n ): Promise<FullMathTestTypes.SignExecuteMethodResult<\"mulDiv\">> => {\n return signExecuteMethod(FullMathTest, this, \"mulDiv\", params);\n },\n };\n\n async multicall<Calls extends FullMathTestTypes.MultiCallParams>(\n calls: Calls\n ): Promise<FullMathTestTypes.MultiCallResults<Calls>>;\n async multicall<Callss extends FullMathTestTypes.MultiCallParams[]>(\n callss: Narrow<Callss>\n ): Promise<FullMathTestTypes.MulticallReturnType<Callss>>;\n async multicall<\n Callss extends\n | FullMathTestTypes.MultiCallParams\n | FullMathTestTypes.MultiCallParams[]\n >(callss: Callss): Promise<unknown> {\n return await multicallMethods(\n FullMathTest,\n this,\n callss,\n getContractByCodeHash\n );\n }\n}\n","{\n \"version\": \"v4.2.5\",\n \"name\": \"FullMathTest\",\n \"bytecode\": \"000140ea0000030901409216020c3013415e7b160016010c0d3687170316001601371704160316043616031604314c020d4a010c36170516050c2f4c04160416022d02160216053313415f7b160016011602871706160516061604334c020d4a010c361705160416063617040c1602361602381707160216072d1702160416072d17040c16073616072d0d351707160416051607373917040f1602370e3a170816080e16021608373637170816080e16021608373637170816080e16021608373637170816080e16021608373637170816080e16021608373637170816080e160216083736371708160416083702\",\n \"codeHash\": \"fd74df789eb5974e11dfa74960ba1323e0530fe5e1fe0aa43a6c3c9bf9ee1d98\",\n \"fieldsSig\": {\n \"names\": [],\n \"types\": [],\n \"isMutable\": []\n },\n \"eventsSig\": [],\n \"functions\": [\n {\n \"name\": \"mulDiv\",\n \"paramNames\": [\n \"a\",\n \"b\",\n \"denominator\"\n ],\n \"paramTypes\": [\n \"U256\",\n \"U256\",\n \"U256\"\n ],\n \"paramIsMutable\": [\n false,\n false,\n true\n ],\n \"returnTypes\": [\n \"U256\"\n ]\n }\n ],\n \"constants\": [],\n \"enums\": [\n {\n \"name\": \"FullMathError\",\n \"fields\": [\n {\n \"name\": \"DivByZero\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"350\"\n }\n },\n {\n \"name\": \"MulDivOverflow\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"351\"\n }\n }\n ]\n }\n ]\n}","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport {\n Address,\n Contract,\n ContractState,\n TestContractResult,\n HexString,\n ContractFactory,\n EventSubscribeOptions,\n EventSubscription,\n CallContractParams,\n CallContractResult,\n TestContractParams,\n ContractEvent,\n subscribeContractEvent,\n subscribeContractEvents,\n testMethod,\n callMethod,\n multicallMethods,\n fetchContractState,\n Asset,\n ContractInstance,\n getContractEventsCurrentCount,\n TestContractParamsWithoutMaps,\n TestContractResultWithoutMaps,\n SignExecuteContractMethodParams,\n SignExecuteScriptTxResult,\n signExecuteMethod,\n addStdIdToFields,\n encodeContractFields,\n Narrow,\n} from \"@alephium/web3\";\nimport { default as GovernanceDemoContractJson } from \"../examples/GovernanceDemo.ral.json\";\nimport { getContractByCodeHash, registerContract } from \"./contracts\";\nimport * as types from \"./types\";\nimport { RalphMap } from \"@alephium/web3\";\n\n// Custom types for the contract\nexport namespace GovernanceDemoTypes {\n export type Fields = {\n xalphStakeVault: HexString;\n proposalOptions: [bigint, bigint, bigint, bigint];\n owner: Address;\n totalVotedAmount: bigint;\n votingStartTime: bigint;\n votingEndTime: bigint;\n };\n\n export type State = ContractState<Fields>;\n\n export type VotingStartedEvent = ContractEvent<{ votingStartTime: bigint }>;\n export type VoteCastEvent = ContractEvent<{\n voter: Address;\n proposalVoted: bigint;\n amount: bigint;\n }>;\n export type VotingEndedEvent = ContractEvent<{ votingEndTime: bigint }>;\n\n export interface CallMethodTable {\n onStake: {\n params: CallContractParams<{ user: Address; addedAmount: bigint }>;\n result: CallContractResult<null>;\n };\n onUnstake: {\n params: CallContractParams<{ user: Address; removedAmount: bigint }>;\n result: CallContractResult<null>;\n };\n startVoting: {\n params: Omit<CallContractParams<{}>, \"args\">;\n result: CallContractResult<null>;\n };\n endVoting: {\n params: Omit<CallContractParams<{}>, \"args\">;\n result: CallContractResult<null>;\n };\n getProposalOptions: {\n params: Omit<CallContractParams<{}>, \"args\">;\n result: CallContractResult<[bigint, bigint, bigint, bigint]>;\n };\n getUserVote: {\n params: CallContractParams<{ user: Address }>;\n result: CallContractResult<types.VoteInfo>;\n };\n getProposalVotes: {\n params: CallContractParams<{ proposal: bigint }>;\n result: CallContractResult<bigint>;\n };\n getTotalVotedAmount: {\n params: Omit<CallContractParams<{}>, \"args\">;\n result: CallContractResult<bigint>;\n };\n vote: {\n params: CallContractParams<{ proposal: bigint }>;\n result: CallContractResult<null>;\n };\n isVotingStarted: {\n params: Omit<CallContractParams<{}>, \"args\">;\n result: CallContractResult<boolean>;\n };\n isVotingEnded: {\n params: Omit<CallContractParams<{}>, \"args\">;\n result: CallContractResult<boolean>;\n };\n isVotingActive: {\n params: Omit<CallContractParams<{}>, \"args\">;\n result: CallContractResult<boolean>;\n };\n }\n export type CallMethodParams<T extends keyof CallMethodTable> =\n CallMethodTable[T][\"params\"];\n export type CallMethodResult<T extends keyof CallMethodTable> =\n CallMethodTable[T][\"result\"];\n export type MultiCallParams = Partial<{\n [Name in keyof CallMethodTable]: CallMethodTable[Name][\"params\"];\n }>;\n export type MultiCallResults<T extends MultiCallParams> = {\n [MaybeName in keyof T]: MaybeName extends keyof CallMethodTable\n ? CallMethodTable[MaybeName][\"result\"]\n : undefined;\n };\n export type MulticallReturnType<Callss extends MultiCallParams[]> = {\n [index in keyof Callss]: MultiCallResults<Callss[index]>;\n };\n\n export interface SignExecuteMethodTable {\n onStake: {\n params: SignExecuteContractMethodParams<{\n user: Address;\n addedAmount: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n onUnstake: {\n params: SignExecuteContractMethodParams<{\n user: Address;\n removedAmount: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n startVoting: {\n params: Omit<SignExecuteContractMethodParams<{}>, \"args\">;\n result: SignExecuteScriptTxResult;\n };\n endVoting: {\n params: Omit<SignExecuteContractMethodParams<{}>, \"args\">;\n result: SignExecuteScriptTxResult;\n };\n getProposalOptions: {\n params: Omit<SignExecuteContractMethodParams<{}>, \"args\">;\n result: SignExecuteScriptTxResult;\n };\n getUserVote: {\n params: SignExecuteContractMethodParams<{ user: Address }>;\n result: SignExecuteScriptTxResult;\n };\n getProposalVotes: {\n params: SignExecuteContractMethodParams<{ proposal: bigint }>;\n result: SignExecuteScriptTxResult;\n };\n getTotalVotedAmount: {\n params: Omit<SignExecuteContractMethodParams<{}>, \"args\">;\n result: SignExecuteScriptTxResult;\n };\n vote: {\n params: SignExecuteContractMethodParams<{ proposal: bigint }>;\n result: SignExecuteScriptTxResult;\n };\n isVotingStarted: {\n params: Omit<SignExecuteContractMethodParams<{}>, \"args\">;\n result: SignExecuteScriptTxResult;\n };\n isVotingEnded: {\n params: Omit<SignExecuteContractMethodParams<{}>, \"args\">;\n result: SignExecuteScriptTxResult;\n };\n isVotingActive: {\n params: Omit<SignExecuteContractMethodParams<{}>, \"args\">;\n result: SignExecuteScriptTxResult;\n };\n }\n export type SignExecuteMethodParams<T extends keyof SignExecuteMethodTable> =\n SignExecuteMethodTable[T][\"params\"];\n export type SignExecuteMethodResult<T extends keyof SignExecuteMethodTable> =\n SignExecuteMethodTable[T][\"result\"];\n\n export type Maps = {\n userVotes?: Map<Address, types.VoteInfo>;\n proposalVotes?: Map<bigint, bigint>;\n };\n}\n\nclass Factory extends ContractFactory<\n GovernanceDemoInstance,\n GovernanceDemoTypes.Fields\n> {\n encodeFields(fields: GovernanceDemoTypes.Fields) {\n return encodeContractFields(\n addStdIdToFields(this.contract, fields),\n this.contract.fieldsSig,\n types.AllStructs\n );\n }\n\n eventIndex = { VotingStarted: 0, VoteCast: 1, VotingEnded: 2 };\n consts = {\n ErrorCodes: {\n AssetAddressCallerOnly: BigInt(\"0\"),\n UserNotStaked: BigInt(\"1\"),\n InvalidVoteProposal: BigInt(\"2\"),\n VotingNotStarted: BigInt(\"3\"),\n VotingAlreadyStarted: BigInt(\"4\"),\n VotingAlreadyEnded: BigInt(\"5\"),\n AlreadyVoted: BigInt(\"6\"),\n OwnerOnly: BigInt(\"7\"),\n StakeVaultCallerOnly: BigInt(\"8\"),\n },\n };\n\n at(address: string): GovernanceDemoInstance {\n return new GovernanceDemoInstance(address);\n }\n\n tests = {\n onStake: async (\n params: TestContractParams<\n GovernanceDemoTypes.Fields,\n { user: Address; addedAmount: bigint },\n GovernanceDemoTypes.Maps\n >\n ): Promise<TestContractResult<null, GovernanceDemoTypes.Maps>> => {\n return testMethod(this, \"onStake\", params, getContractByCodeHash);\n },\n onUnstake: async (\n params: TestContractParams<\n GovernanceDemoTypes.Fields,\n { user: Address; removedAmount: bigint },\n GovernanceDemoTypes.Maps\n >\n ): Promise<TestContractResult<null, GovernanceDemoTypes.Maps>> => {\n return testMethod(this, \"onUnstake\", params, getContractByCodeHash);\n },\n startVoting: async (\n params: Omit<\n TestContractParams<\n GovernanceDemoTypes.Fields,\n never,\n GovernanceDemoTypes.Maps\n >,\n \"args\"\n >\n ): Promise<TestContractResult<null, GovernanceDemoTypes.Maps>> => {\n return testMethod(this, \"startVoting\", params, getContractByCodeHash);\n },\n endVoting: async (\n params: Omit<\n TestContractParams<\n GovernanceDemoTypes.Fields,\n never,\n GovernanceDemoTypes.Maps\n >,\n \"args\"\n >\n ): Promise<TestContractResult<null, GovernanceDemoTypes.Maps>> => {\n return testMethod(this, \"endVoting\", params, getContractByCodeHash);\n },\n getProposalOptions: async (\n params: Omit<\n TestContractParams<\n GovernanceDemoTypes.Fields,\n never,\n GovernanceDemoTypes.Maps\n >,\n \"args\"\n >\n ): Promise<\n TestContractResult<\n [bigint, bigint, bigint, bigint],\n GovernanceDemoTypes.Maps\n >\n > => {\n return testMethod(\n this,\n \"getProposalOptions\",\n params,\n getContractByCodeHash\n );\n },\n getUserVote: async (\n params: TestContractParams<\n GovernanceDemoTypes.Fields,\n { user: Address },\n GovernanceDemoTypes.Maps\n >\n ): Promise<\n TestContractResult<types.VoteInfo, GovernanceDemoTypes.Maps>\n > => {\n return testMethod(this, \"getUserVote\", params, getContractByCodeHash);\n },\n getProposalVotes: async (\n params: TestContractParams<\n GovernanceDemoTypes.Fields,\n { proposal: bigint },\n GovernanceDemoTypes.Maps\n >\n ): Promise<TestContractResult<bigint, GovernanceDemoTypes.Maps>> => {\n return testMethod(\n this,\n \"getProposalVotes\",\n params,\n getContractByCodeHash\n );\n },\n getTotalVotedAmount: async (\n params: Omit<\n TestContractParams<\n GovernanceDemoTypes.Fields,\n never,\n GovernanceDemoTypes.Maps\n >,\n \"args\"\n >\n ): Promise<TestContractResult<bigint, GovernanceDemoTypes.Maps>> => {\n return testMethod(\n this,\n \"getTotalVotedAmount\",\n params,\n getContractByCodeHash\n );\n },\n vote: async (\n params: TestContractParams<\n GovernanceDemoTypes.Fields,\n { proposal: bigint },\n GovernanceDemoTypes.Maps\n >\n ): Promise<TestContractResult<null, GovernanceDemoTypes.Maps>> => {\n return testMethod(this, \"vote\", params, getContractByCodeHash);\n },\n isVotingStarted: async (\n params: Omit<\n TestContractParams<\n GovernanceDemoTypes.Fields,\n never,\n GovernanceDemoTypes.Maps\n >,\n \"args\"\n >\n ): Promise<TestContractResult<boolean, GovernanceDemoTypes.Maps>> => {\n return testMethod(this, \"isVotingStarted\", params, getContractByCodeHash);\n },\n isVotingEnded: async (\n params: Omit<\n TestContractParams<\n GovernanceDemoTypes.Fields,\n never,\n GovernanceDemoTypes.Maps\n >,\n \"args\"\n >\n ): Promise<TestContractResult<boolean, GovernanceDemoTypes.Maps>> => {\n return testMethod(this, \"isVotingEnded\", params, getContractByCodeHash);\n },\n isVotingActive: async (\n params: Omit<\n TestContractParams<\n GovernanceDemoTypes.Fields,\n never,\n GovernanceDemoTypes.Maps\n >,\n \"args\"\n >\n ): Promise<TestContractResult<boolean, GovernanceDemoTypes.Maps>> => {\n return testMethod(this, \"isVotingActive\", params, getContractByCodeHash);\n },\n };\n\n stateForTest(\n initFields: GovernanceDemoTypes.Fields,\n asset?: Asset,\n address?: string,\n maps?: GovernanceDemoTypes.Maps\n ) {\n return this.stateForTest_(initFields, asset, address, maps);\n }\n}\n\n// Use this object to test and deploy the contract\nexport const GovernanceDemo = new Factory(\n Contract.fromJson(\n GovernanceDemoContractJson,\n \"=6-2+e2=2+c=1-5=2-2=1-3+0=3-1+2=2-1+7=4+7=1+2f1=1-2=1+ff=2-1+c=3-1+d=3-2+e343f3=13-1+a=339-1+b=34+7a7e0214696e73657274206174206d617020706174683a2000=26-2+60=353-1+b=38+7a7e021472656d6f7665206174206d617020706174683a2000=19-1+5=91-1+6=48+7a7e0214696e73657274206174206d617020706174683a2000=25-1+6=878\",\n \"551e89bdda9d4514effbfebcd14d1383bcfb9a8e1c10b78fda75c33aca894624\",\n types.AllStructs\n )\n);\nregisterContract(GovernanceDemo);\n\n// Use this class to interact with the blockchain\nexport class GovernanceDemoInstance extends ContractInstance {\n constructor(address: Address) {\n super(address);\n }\n\n maps = {\n userVotes: new RalphMap<Address, types.VoteInfo>(\n GovernanceDemo.contract,\n this.contractId,\n \"userVotes\"\n ),\n proposalVotes: new RalphMap<bigint, bigint>(\n GovernanceDemo.contract,\n this.contractId,\n \"proposalVotes\"\n ),\n };\n\n async fetchState(): Promise<GovernanceDemoTypes.State> {\n return fetchContractState(GovernanceDemo, this);\n }\n\n async getContractEventsCurrentCount(): Promise<number> {\n return getContractEventsCurrentCount(this.address);\n }\n\n subscribeVotingStartedEvent(\n options: EventSubscribeOptions<GovernanceDemoTypes.VotingStartedEvent>,\n fromCount?: number\n ): EventSubscription {\n return subscribeContractEvent(\n GovernanceDemo.contract,\n this,\n options,\n \"VotingStarted\",\n fromCount\n );\n }\n\n subscribeVoteCastEvent(\n options: EventSubscribeOptions<GovernanceDemoTypes.VoteCastEvent>,\n fromCount?: number\n ): EventSubscription {\n return subscribeContractEvent(\n GovernanceDemo.contract,\n this,\n options,\n \"VoteCast\",\n fromCount\n );\n }\n\n subscribeVotingEndedEvent(\n options: EventSubscribeOptions<GovernanceDemoTypes.VotingEndedEvent>,\n fromCount?: number\n ): EventSubscription {\n return subscribeContractEvent(\n GovernanceDemo.contract,\n this,\n options,\n \"VotingEnded\",\n fromCount\n );\n }\n\n subscribeAllEvents(\n options: EventSubscribeOptions<\n | GovernanceDemoTypes.VotingStartedEvent\n | GovernanceDemoTypes.VoteCastEvent\n | GovernanceDemoTypes.VotingEndedEvent\n >,\n fromCount?: number\n ): EventSubscription {\n return subscribeContractEvents(\n GovernanceDemo.contract,\n this,\n options,\n fromCount\n );\n }\n\n view = {\n onStake: async (\n params: GovernanceDemoTypes.CallMethodParams<\"onStake\">\n ): Promise<GovernanceDemoTypes.CallMethodResult<\"onStake\">> => {\n return callMethod(\n GovernanceDemo,\n this,\n \"onStake\",\n params,\n getContractByCodeHash\n );\n },\n onUnstake: async (\n params: GovernanceDemoTypes.CallMethodParams<\"onUnstake\">\n ): Promise<GovernanceDemoTypes.CallMethodResult<\"onUnstake\">> => {\n return callMethod(\n GovernanceDemo,\n this,\n \"onUnstake\",\n params,\n getContractByCodeHash\n );\n },\n startVoting: async (\n params?: GovernanceDemoTypes.CallMethodParams<\"startVoting\">\n ): Promise<GovernanceDemoTypes.CallMethodResult<\"startVoting\">> => {\n return callMethod(\n GovernanceDemo,\n this,\n \"startVoting\",\n params === undefined ? {} : params,\n getContractByCodeHash\n );\n },\n endVoting: async (\n params?: GovernanceDemoTypes.CallMethodParams<\"endVoting\">\n ): Promise<GovernanceDemoTypes.CallMethodResult<\"endVoting\">> => {\n return callMethod(\n GovernanceDemo,\n this,\n \"endVoting\",\n params === undefined ? {} : params,\n getContractByCodeHash\n );\n },\n getProposalOptions: async (\n params?: GovernanceDemoTypes.CallMethodParams<\"getProposalOptions\">\n ): Promise<GovernanceDemoTypes.CallMethodResult<\"getProposalOptions\">> => {\n return callMethod(\n GovernanceDemo,\n this,\n \"getProposalOptions\",\n params === undefined ? {} : params,\n getContractByCodeHash\n );\n },\n getUserVote: async (\n params: GovernanceDemoTypes.CallMethodParams<\"getUserVote\">\n ): Promise<GovernanceDemoTypes.CallMethodResult<\"getUserVote\">> => {\n return callMethod(\n GovernanceDemo,\n this,\n \"getUserVote\",\n params,\n getContractByCodeHash\n );\n },\n getProposalVotes: async (\n params: GovernanceDemoTypes.CallMethodParams<\"getProposalVotes\">\n ): Promise<GovernanceDemoTypes.CallMethodResult<\"getProposalVotes\">> => {\n return callMethod(\n GovernanceDemo,\n this,\n \"getProposalVotes\",\n params,\n getContractByCodeHash\n );\n },\n getTotalVotedAmount: async (\n params?: GovernanceDemoTypes.CallMethodParams<\"getTotalVotedAmount\">\n ): Promise<GovernanceDemoTypes.CallMethodResult<\"getTotalVotedAmount\">> => {\n return callMethod(\n GovernanceDemo,\n this,\n \"getTotalVotedAmount\",\n params === undefined ? {} : params,\n getContractByCodeHash\n );\n },\n vote: async (\n params: GovernanceDemoTypes.CallMethodParams<\"vote\">\n ): Promise<GovernanceDemoTypes.CallMethodResult<\"vote\">> => {\n return callMethod(\n GovernanceDemo,\n this,\n \"vote\",\n params,\n getContractByCodeHash\n );\n },\n isVotingStarted: async (\n params?: GovernanceDemoTypes.CallMethodParams<\"isVotingStarted\">\n ): Promise<GovernanceDemoTypes.CallMethodResult<\"isVotingStarted\">> => {\n return callMethod(\n GovernanceDemo,\n this,\n \"isVotingStarted\",\n params === undefined ? {} : params,\n getContractByCodeHash\n );\n },\n isVotingEnded: async (\n params?: GovernanceDemoTypes.CallMethodParams<\"isVotingEnded\">\n ): Promise<GovernanceDemoTypes.CallMethodResult<\"isVotingEnded\">> => {\n return callMethod(\n GovernanceDemo,\n this,\n \"isVotingEnded\",\n params === undefined ? {} : params,\n getContractByCodeHash\n );\n },\n isVotingActive: async (\n params?: GovernanceDemoTypes.CallMethodParams<\"isVotingActive\">\n ): Promise<GovernanceDemoTypes.CallMethodResult<\"isVotingActive\">> => {\n return callMethod(\n GovernanceDemo,\n this,\n \"isVotingActive\",\n params === undefined ? {} : params,\n getContractByCodeHash\n );\n },\n };\n\n transact = {\n onStake: async (\n params: GovernanceDemoTypes.SignExecuteMethodParams<\"onStake\">\n ): Promise<GovernanceDemoTypes.SignExecuteMethodResult<\"onStake\">> => {\n return signExecuteMethod(GovernanceDemo, this, \"onStake\", params);\n },\n onUnstake: async (\n params: GovernanceDemoTypes.SignExecuteMethodParams<\"onUnstake\">\n ): Promise<GovernanceDemoTypes.SignExecuteMethodResult<\"onUnstake\">> => {\n return signExecuteMethod(GovernanceDemo, this, \"onUnstake\", params);\n },\n startVoting: async (\n params: GovernanceDemoTypes.SignExecuteMethodParams<\"startVoting\">\n ): Promise<GovernanceDemoTypes.SignExecuteMethodResult<\"startVoting\">> => {\n return signExecuteMethod(GovernanceDemo, this, \"startVoting\", params);\n },\n endVoting: async (\n params: GovernanceDemoTypes.SignExecuteMethodParams<\"endVoting\">\n ): Promise<GovernanceDemoTypes.SignExecuteMethodResult<\"endVoting\">> => {\n return signExecuteMethod(GovernanceDemo, this, \"endVoting\", params);\n },\n getProposalOptions: async (\n params: GovernanceDemoTypes.SignExecuteMethodParams<\"getProposalOptions\">\n ): Promise<\n GovernanceDemoTypes.SignExecuteMethodResult<\"getProposalOptions\">\n > => {\n return signExecuteMethod(\n GovernanceDemo,\n this,\n \"getProposalOptions\",\n params\n );\n },\n getUserVote: async (\n params: GovernanceDemoTypes.SignExecuteMethodParams<\"getUserVote\">\n ): Promise<GovernanceDemoTypes.SignExecuteMethodResult<\"getUserVote\">> => {\n return signExecuteMethod(GovernanceDemo, this, \"getUserVote\", params);\n },\n getProposalVotes: async (\n params: GovernanceDemoTypes.SignExecuteMethodParams<\"getProposalVotes\">\n ): Promise<\n GovernanceDemoTypes.SignExecuteMethodResult<\"getProposalVotes\">\n > => {\n return signExecuteMethod(\n GovernanceDemo,\n this,\n \"getProposalVotes\",\n params\n );\n },\n getTotalVotedAmount: async (\n params: GovernanceDemoTypes.SignExecuteMethodParams<\"getTotalVotedAmount\">\n ): Promise<\n GovernanceDemoTypes.SignExecuteMethodResult<\"getTotalVotedAmount\">\n > => {\n return signExecuteMethod(\n GovernanceDemo,\n this,\n \"getTotalVotedAmount\",\n params\n );\n },\n vote: async (\n params: GovernanceDemoTypes.SignExecuteMethodParams<\"vote\">\n ): Promise<GovernanceDemoTypes.SignExecuteMethodResult<\"vote\">> => {\n return signExecuteMethod(GovernanceDemo, this, \"vote\", params);\n },\n isVotingStarted: async (\n params: GovernanceDemoTypes.SignExecuteMethodParams<\"isVotingStarted\">\n ): Promise<\n GovernanceDemoTypes.SignExecuteMethodResult<\"isVotingStarted\">\n > => {\n return signExecuteMethod(GovernanceDemo, this, \"isVotingStarted\", params);\n },\n isVotingEnded: async (\n params: GovernanceDemoTypes.SignExecuteMethodParams<\"isVotingEnded\">\n ): Promise<\n GovernanceDemoTypes.SignExecuteMethodResult<\"isVotingEnded\">\n > => {\n return signExecuteMethod(GovernanceDemo, this, \"isVotingEnded\", params);\n },\n isVotingActive: async (\n params: GovernanceDemoTypes.SignExecuteMethodParams<\"isVotingActive\">\n ): Promise<\n GovernanceDemoTypes.SignExecuteMethodResult<\"isVotingActive\">\n > => {\n return signExecuteMethod(GovernanceDemo, this, \"isVotingActive\", params);\n },\n };\n\n async multicall<Calls extends GovernanceDemoTypes.MultiCallParams>(\n calls: Calls\n ): Promise<GovernanceDemoTypes.MultiCallResults<Calls>>;\n async multicall<Callss extends GovernanceDemoTypes.MultiCallParams[]>(\n callss: Narrow<Callss>\n ): Promise<GovernanceDemoTypes.MulticallReturnType<Callss>>;\n async multicall<\n Callss extends\n | GovernanceDemoTypes.MultiCallParams\n | GovernanceDemoTypes.MultiCallParams[]\n >(callss: Callss): Promise<unknown> {\n return await multicallMethods(\n GovernanceDemo,\n this,\n callss,\n getContractByCodeHash\n );\n }\n}\n","{\n \"version\": \"v4.2.5\",\n \"name\": \"GovernanceDemo\",\n \"bytecode\": \"090c40c9419741f54217422b426c42a642b44382438d439843a801000206004058d3926b380bb417021602ce00774513087b140a5f5f6d61705f5f305f5f16004744cbc54c403f0c0d0d140a5f5f6d61705f5f305f5f16004744cb1705160501010d0d0d1605010117041703000b7a4c041816030c304c180c0d0d140a5f5f6d61705f5f315f5f16034044cb010116012a0c0e0c140a5f5f6d61705f5f315f5f16034044cb0102a00016012aa100160416012a0d0e0c140a5f5f6d61705f5f305f5f16004744cb01024a09ca140a5f5f6d61705f5f305f5f16004744b10c1601d201020100020700405ed365b06caeb417021602ce00774513087b140a5f5f6d61705f5f305f5f16004744cbc50d7b0c0d0d140a5f5f6d61705f5f305f5f16004744cb1706160601010d0d0d1606010117041703160416012b170516050d0e0c140a5f5f6d61705f5f305f5f16004744cb0102000b7a4c041816030c304c180c0d0d140a5f5f6d61705f5f315f5f16034044cb010116012b0c0e0c140a5f5f6d61705f5f315f5f16034044cb0102a00016012ba10016050c2f4c09ca0d0c140a5f5f6d61705f5f305f5f16004744cb010301000002004033d3ecf99ab7b4ce054513077b000919107b000a19117b56a101ce01ce02ce03ce041017000c170116011600314c14ca140a5f5f6d61705f5f315f5f16017a10314d0d2acf4044b10cd2010116010d2a17014a2805a0015e010000000012d33919f580b4ce054513077b00090f7b000a19117b56a10207a0025e010000000406d3068539face01ce02ce03ce040201000102021ad344a25325140a5f5f6d61705f5f305f5f16004744cbc50d7b0c0d0d140a5f5f6d61705f5f305f5f16004744cb1701160101010d0d0d1601010102010001010116d32e30a67700090f7b140a5f5f6d61705f5f315f5f16004044cbc50e7b0c0d0d140a5f5f6d61705f5f315f5f16004044cb010102010000000103d33cfd4f9ea000020100010300405cd376a80ea2b417011601480c7b00090f7b000a19117b140a5f5f6d61705f5f315f5f16004044cbc50e7b140a5f5f6d61705f5f305f5f16014744cbc50d7b0c0d0d140a5f5f6d61705f5f305f5f16014744cb01010c2f13067b0d0d0d140a5f5f6d61705f5f305f5f16014744cb01011702a00016022aa1000c0d0d140a5f5f6d61705f5f315f5f16004044cb010116022a0c0e0c140a5f5f6d61705f5f315f5f16004044cb010216000c0e0c140a5f5f6d61705f5f305f5f16014744cb01020616011600160260000000000104a0010c3002000000000104a0020c300200000000010700097a4c0318000a1902\",\n \"codeHash\": \"1d77f89642f8b3bd6364388e7b9b8ad9d58815365d4e7a02a932fe65ab913078\",\n \"fieldsSig\": {\n \"names\": [\n \"xalphStakeVault\",\n \"proposalOptions\",\n \"owner\",\n \"totalVotedAmount\",\n \"votingStartTime\",\n \"votingEndTime\"\n ],\n \"types\": [\n \"XAlphStakeVault\",\n \"[U256;4]\",\n \"Address\",\n \"U256\",\n \"U256\",\n \"U256\"\n ],\n \"isMutable\": [\n false,\n false,\n false,\n true,\n true,\n true\n ]\n },\n \"eventsSig\": [\n {\n \"name\": \"VotingStarted\",\n \"fieldNames\": [\n \"votingStartTime\"\n ],\n \"fieldTypes\": [\n \"U256\"\n ]\n },\n {\n \"name\": \"VoteCast\",\n \"fieldNames\": [\n \"voter\",\n \"proposalVoted\",\n \"amount\"\n ],\n \"fieldTypes\": [\n \"Address\",\n \"U256\",\n \"U256\"\n ]\n },\n {\n \"name\": \"VotingEnded\",\n \"fieldNames\": [\n \"votingEndTime\"\n ],\n \"fieldTypes\": [\n \"U256\"\n ]\n }\n ],\n \"functions\": [\n {\n \"name\": \"onStake\",\n \"paramNames\": [\n \"user\",\n \"addedAmount\"\n ],\n \"paramTypes\": [\n \"Address\",\n \"U256\"\n ],\n \"paramIsMutable\": [\n false,\n false\n ],\n \"returnTypes\": []\n },\n {\n \"name\": \"onUnstake\",\n \"paramNames\": [\n \"user\",\n \"removedAmount\"\n ],\n \"paramTypes\": [\n \"Address\",\n \"U256\"\n ],\n \"paramIsMutable\": [\n false,\n false\n ],\n \"returnTypes\": []\n },\n {\n \"name\": \"startVoting\",\n \"paramNames\": [],\n \"paramTypes\": [],\n \"paramIsMutable\": [],\n \"returnTypes\": []\n },\n {\n \"name\": \"endVoting\",\n \"paramNames\": [],\n \"paramTypes\": [],\n \"paramIsMutable\": [],\n \"returnTypes\": []\n },\n {\n \"name\": \"getProposalOptions\",\n \"paramNames\": [],\n \"paramTypes\": [],\n \"paramIsMutable\": [],\n \"returnTypes\": [\n \"[U256;4]\"\n ]\n },\n {\n \"name\": \"getUserVote\",\n \"paramNames\": [\n \"user\"\n ],\n \"paramTypes\": [\n \"Address\"\n ],\n \"paramIsMutable\": [\n false\n ],\n \"returnTypes\": [\n \"VoteInfo\"\n ]\n },\n {\n \"name\": \"getProposalVotes\",\n \"paramNames\": [\n \"proposal\"\n ],\n \"paramTypes\": [\n \"U256\"\n ],\n \"paramIsMutable\": [\n false\n ],\n \"returnTypes\": [\n \"U256\"\n ]\n },\n {\n \"name\": \"getTotalVotedAmount\",\n \"paramNames\": [],\n \"paramTypes\": [],\n \"paramIsMutable\": [],\n \"returnTypes\": [\n \"U256\"\n ]\n },\n {\n \"name\": \"vote\",\n \"paramNames\": [\n \"proposal\"\n ],\n \"paramTypes\": [\n \"U256\"\n ],\n \"paramIsMutable\": [\n false\n ],\n \"returnTypes\": []\n },\n {\n \"name\": \"isVotingStarted\",\n \"paramNames\": [],\n \"paramTypes\": [],\n \"paramIsMutable\": [],\n \"returnTypes\": [\n \"Bool\"\n ]\n },\n {\n \"name\": \"isVotingEnded\",\n \"paramNames\": [],\n \"paramTypes\": [],\n \"paramIsMutable\": [],\n \"returnTypes\": [\n \"Bool\"\n ]\n },\n {\n \"name\": \"isVotingActive\",\n \"paramNames\": [],\n \"paramTypes\": [],\n \"paramIsMutable\": [],\n \"returnTypes\": [\n \"Bool\"\n ]\n }\n ],\n \"constants\": [],\n \"enums\": [\n {\n \"name\": \"ErrorCodes\",\n \"fields\": [\n {\n \"name\": \"AssetAddressCallerOnly\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"0\"\n }\n },\n {\n \"name\": \"UserNotStaked\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"1\"\n }\n },\n {\n \"name\": \"InvalidVoteProposal\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"2\"\n }\n },\n {\n \"name\": \"VotingNotStarted\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"3\"\n }\n },\n {\n \"name\": \"VotingAlreadyStarted\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"4\"\n }\n },\n {\n \"name\": \"VotingAlreadyEnded\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"5\"\n }\n },\n {\n \"name\": \"AlreadyVoted\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"6\"\n }\n },\n {\n \"name\": \"OwnerOnly\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"7\"\n }\n },\n {\n \"name\": \"StakeVaultCallerOnly\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"8\"\n }\n }\n ]\n }\n ],\n \"mapsSig\": {\n \"names\": [\n \"userVotes\",\n \"proposalVotes\"\n ],\n \"types\": [\n \"Map[Address,VoteInfo]\",\n \"Map[U256,U256]\"\n ]\n }\n}","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport {\n Address,\n Contract,\n ContractState,\n TestContractResult,\n HexString,\n ContractFactory,\n EventSubscribeOptions,\n EventSubscription,\n CallContractParams,\n CallContractResult,\n TestContractParams,\n ContractEvent,\n subscribeContractEvent,\n subscribeContractEvents,\n testMethod,\n callMethod,\n multicallMethods,\n fetchContractState,\n Asset,\n ContractInstance,\n getContractEventsCurrentCount,\n TestContractParamsWithoutMaps,\n TestContractResultWithoutMaps,\n SignExecuteContractMethodParams,\n SignExecuteScriptTxResult,\n signExecuteMethod,\n addStdIdToFields,\n encodeContractFields,\n Narrow,\n} from \"@alephium/web3\";\nimport { default as RewardSharingVaultContractJson } from \"../examples/RewardSharingVault.ral.json\";\nimport { getContractByCodeHash, registerContract } from \"./contracts\";\nimport * as types from \"./types\";\nimport { RalphMap } from \"@alephium/web3\";\n\n// Custom types for the contract\nexport namespace RewardSharingVaultTypes {\n export type Fields = {\n stakeVault: HexString;\n rewardTokenId: HexString;\n totalAmountStaked: bigint;\n rewardPerTokenCumulative: bigint;\n };\n\n export type State = ContractState<Fields>;\n\n export type StakedEvent = ContractEvent<{ staker: Address; amount: bigint }>;\n export type UnstakedEvent = ContractEvent<{\n staker: Address;\n amount: bigint;\n }>;\n export type RewardDepositedEvent = ContractEvent<{\n depositor: Address;\n amount: bigint;\n }>;\n export type RewardClaimedEvent = ContractEvent<{\n staker: Address;\n amount: bigint;\n }>;\n\n export interface CallMethodTable {\n onStake: {\n params: CallContractParams<{ user: Address; newStakedAmount: bigint }>;\n result: CallContractResult<null>;\n };\n onUnstake: {\n params: CallContractParams<{ user: Address; unstakedAmount: bigint }>;\n result: CallContractResult<null>;\n };\n mulDiv: {\n params: CallContractParams<{ a: bigint; b: bigint; denominator: bigint }>;\n result: CallContractResult<bigint>;\n };\n depositReward: {\n params: CallContractParams<{ amount: bigint }>;\n result: CallContractResult<null>;\n };\n claimPendingRewards: {\n params: Omit<CallContractParams<{}>, \"args\">;\n result: CallContractResult<null>;\n };\n claimUserPendingRewards: {\n params: CallContractParams<{ user: Address }>;\n result: CallContractResult<null>;\n };\n getUserPendingRewards: {\n params: CallContractParams<{ user: Address }>;\n result: CallContractResult<bigint>;\n };\n }\n export type CallMethodParams<T extends keyof CallMethodTable> =\n CallMethodTable[T][\"params\"];\n export type CallMethodResult<T extends keyof CallMethodTable> =\n CallMethodTable[T][\"result\"];\n export type MultiCallParams = Partial<{\n [Name in keyof CallMethodTable]: CallMethodTable[Name][\"params\"];\n }>;\n export type MultiCallResults<T extends MultiCallParams> = {\n [MaybeName in keyof T]: MaybeName extends keyof CallMethodTable\n ? CallMethodTable[MaybeName][\"result\"]\n : undefined;\n };\n export type MulticallReturnType<Callss extends MultiCallParams[]> = {\n [index in keyof Callss]: MultiCallResults<Callss[index]>;\n };\n\n export interface SignExecuteMethodTable {\n onStake: {\n params: SignExecuteContractMethodParams<{\n user: Address;\n newStakedAmount: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n onUnstake: {\n params: SignExecuteContractMethodParams<{\n user: Address;\n unstakedAmount: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n mulDiv: {\n params: SignExecuteContractMethodParams<{\n a: bigint;\n b: bigint;\n denominator: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n depositReward: {\n params: SignExecuteContractMethodParams<{ amount: bigint }>;\n result: SignExecuteScriptTxResult;\n };\n claimPendingRewards: {\n params: Omit<SignExecuteContractMethodParams<{}>, \"args\">;\n result: SignExecuteScriptTxResult;\n };\n claimUserPendingRewards: {\n params: SignExecuteContractMethodParams<{ user: Address }>;\n result: SignExecuteScriptTxResult;\n };\n getUserPendingRewards: {\n params: SignExecuteContractMethodParams<{ user: Address }>;\n result: SignExecuteScriptTxResult;\n };\n }\n export type SignExecuteMethodParams<T extends keyof SignExecuteMethodTable> =\n SignExecuteMethodTable[T][\"params\"];\n export type SignExecuteMethodResult<T extends keyof SignExecuteMethodTable> =\n SignExecuteMethodTable[T][\"result\"];\n\n export type Maps = {\n userRewardSharingInfo?: Map<Address, types.UserRewardSharingInfo>;\n };\n}\n\nclass Factory extends ContractFactory<\n RewardSharingVaultInstance,\n RewardSharingVaultTypes.Fields\n> {\n encodeFields(fields: RewardSharingVaultTypes.Fields) {\n return encodeContractFields(\n addStdIdToFields(this.contract, fields),\n this.contract.fieldsSig,\n types.AllStructs\n );\n }\n\n eventIndex = { Staked: 0, Unstaked: 1, RewardDeposited: 2, RewardClaimed: 3 };\n consts = {\n SCALING_FACTOR: BigInt(\"1000000000000000000\"),\n FullMathError: { DivByZero: BigInt(\"350\"), MulDivOverflow: BigInt(\"351\") },\n ErrorCodes: {\n StakeVaultCallerOnly: BigInt(\"40\"),\n NoUserRewardSharingInfo: BigInt(\"41\"),\n TotalStakedAmountIsZero: BigInt(\"42\"),\n InvalidStakedAmount: BigInt(\"43\"),\n InvalidUnstakedAmount: BigInt(\"44\"),\n },\n };\n\n at(address: string): RewardSharingVaultInstance {\n return new RewardSharingVaultInstance(address);\n }\n\n tests = {\n onStake: async (\n params: TestContractParams<\n RewardSharingVaultTypes.Fields,\n { user: Address; newStakedAmount: bigint },\n RewardSharingVaultTypes.Maps\n >\n ): Promise<TestContractResult<null, RewardSharingVaultTypes.Maps>> => {\n return testMethod(this, \"onStake\", params, getContractByCodeHash);\n },\n onUnstake: async (\n params: TestContractParams<\n RewardSharingVaultTypes.Fields,\n { user: Address; unstakedAmount: bigint },\n RewardSharingVaultTypes.Maps\n >\n ): Promise<TestContractResult<null, RewardSharingVaultTypes.Maps>> => {\n return testMethod(this, \"onUnstake\", params, getContractByCodeHash);\n },\n mulDiv: async (\n params: TestContractParams<\n RewardSharingVaultTypes.Fields,\n { a: bigint; b: bigint; denominator: bigint },\n RewardSharingVaultTypes.Maps\n >\n ): Promise<TestContractResult<bigint, RewardSharingVaultTypes.Maps>> => {\n return testMethod(this, \"mulDiv\", params, getContractByCodeHash);\n },\n depositReward: async (\n params: TestContractParams<\n RewardSharingVaultTypes.Fields,\n { amount: bigint },\n RewardSharingVaultTypes.Maps\n >\n ): Promise<TestContractResult<null, RewardSharingVaultTypes.Maps>> => {\n return testMethod(this, \"depositReward\", params, getContractByCodeHash);\n },\n claimPendingRewards: async (\n params: Omit<\n TestContractParams<\n RewardSharingVaultTypes.Fields,\n never,\n RewardSharingVaultTypes.Maps\n >,\n \"args\"\n >\n ): Promise<TestContractResult<null, RewardSharingVaultTypes.Maps>> => {\n return testMethod(\n this,\n \"claimPendingRewards\",\n params,\n getContractByCodeHash\n );\n },\n claimUserPendingRewards: async (\n params: TestContractParams<\n RewardSharingVaultTypes.Fields,\n { user: Address },\n RewardSharingVaultTypes.Maps\n >\n ): Promise<TestContractResult<null, RewardSharingVaultTypes.Maps>> => {\n return testMethod(\n this,\n \"claimUserPendingRewards\",\n params,\n getContractByCodeHash\n );\n },\n getUserPendingRewards: async (\n params: TestContractParams<\n RewardSharingVaultTypes.Fields,\n { user: Address },\n RewardSharingVaultTypes.Maps\n >\n ): Promise<TestContractResult<bigint, RewardSharingVaultTypes.Maps>> => {\n return testMethod(\n this,\n \"getUserPendingRewards\",\n params,\n getContractByCodeHash\n );\n },\n };\n\n stateForTest(\n initFields: RewardSharingVaultTypes.Fields,\n asset?: Asset,\n address?: string,\n maps?: RewardSharingVaultTypes.Maps\n ) {\n return this.stateForTest_(initFields, asset, address, maps);\n }\n}\n\n// Use this object to test and deploy the contract\nexport const RewardSharingVault = new Factory(\n Contract.fromJson(\n RewardSharingVaultContractJson,\n \"=6-2+d0=2-2+8=1-3=2-2+6e=2-1+a=3-2+bb42f2=2-2+50=13-1+6=235-1+7=74+7a7e0214696e73657274206174206d617020706174683a2000=55-1+8=173-1+c=38+7a7e021472656d6f7665206174206d617020706174683a2000=1004\",\n \"ad1203de899174ecc3a6b2fdf1ea73664ad5ae8ae74b0113feb5404f15b96347\",\n types.AllStructs\n )\n);\nregisterContract(RewardSharingVault);\n\n// Use this class to interact with the blockchain\nexport class RewardSharingVaultInstance extends ContractInstance {\n constructor(address: Address) {\n super(address);\n }\n\n maps = {\n userRewardSharingInfo: new RalphMap<Address, types.UserRewardSharingInfo>(\n RewardSharingVault.contract,\n this.contractId,\n \"userRewardSharingInfo\"\n ),\n };\n\n async fetchState(): Promise<RewardSharingVaultTypes.State> {\n return fetchContractState(RewardSharingVault, this);\n }\n\n async getContractEventsCurrentCount(): Promise<number> {\n return getContractEventsCurrentCount(this.address);\n }\n\n subscribeStakedEvent(\n options: EventSubscribeOptions<RewardSharingVaultTypes.StakedEvent>,\n fromCount?: number\n ): EventSubscription {\n return subscribeContractEvent(\n RewardSharingVault.contract,\n this,\n options,\n \"Staked\",\n fromCount\n );\n }\n\n subscribeUnstakedEvent(\n options: EventSubscribeOptions<RewardSharingVaultTypes.UnstakedEvent>,\n fromCount?: number\n ): EventSubscription {\n return subscribeContractEvent(\n RewardSharingVault.contract,\n this,\n options,\n \"Unstaked\",\n fromCount\n );\n }\n\n subscribeRewardDepositedEvent(\n options: EventSubscribeOptions<RewardSharingVaultTypes.RewardDepositedEvent>,\n fromCount?: number\n ): EventSubscription {\n return subscribeContractEvent(\n RewardSharingVault.contract,\n this,\n options,\n \"RewardDeposited\",\n fromCount\n );\n }\n\n subscribeRewardClaimedEvent(\n options: EventSubscribeOptions<RewardSharingVaultTypes.RewardClaimedEvent>,\n fromCount?: number\n ): EventSubscription {\n return subscribeContractEvent(\n RewardSharingVault.contract,\n this,\n options,\n \"RewardClaimed\",\n fromCount\n );\n }\n\n subscribeAllEvents(\n options: EventSubscribeOptions<\n | RewardSharingVaultTypes.StakedEvent\n | RewardSharingVaultTypes.UnstakedEvent\n | RewardSharingVaultTypes.RewardDepositedEvent\n | RewardSharingVaultTypes.RewardClaimedEvent\n >,\n fromCount?: number\n ): EventSubscription {\n return subscribeContractEvents(\n RewardSharingVault.contract,\n this,\n options,\n fromCount\n );\n }\n\n view = {\n onStake: async (\n params: RewardSharingVaultTypes.CallMethodParams<\"onStake\">\n ): Promise<RewardSharingVaultTypes.CallMethodResult<\"onStake\">> => {\n return callMethod(\n RewardSharingVault,\n this,\n \"onStake\",\n params,\n getContractByCodeHash\n );\n },\n onUnstake: async (\n params: RewardSharingVaultTypes.CallMethodParams<\"onUnstake\">\n ): Promise<RewardSharingVaultTypes.CallMethodResult<\"onUnstake\">> => {\n return callMethod(\n RewardSharingVault,\n this,\n \"onUnstake\",\n params,\n getContractByCodeHash\n );\n },\n mulDiv: async (\n params: RewardSharingVaultTypes.CallMethodParams<\"mulDiv\">\n ): Promise<RewardSharingVaultTypes.CallMethodResult<\"mulDiv\">> => {\n return callMethod(\n RewardSharingVault,\n this,\n \"mulDiv\",\n params,\n getContractByCodeHash\n );\n },\n depositReward: async (\n params: RewardSharingVaultTypes.CallMethodParams<\"depositReward\">\n ): Promise<RewardSharingVaultTypes.CallMethodResult<\"depositReward\">> => {\n return callMethod(\n RewardSharingVault,\n this,\n \"depositReward\",\n params,\n getContractByCodeHash\n );\n },\n claimPendingRewards: async (\n params?: RewardSharingVaultTypes.CallMethodParams<\"claimPendingRewards\">\n ): Promise<\n RewardSharingVaultTypes.CallMethodResult<\"claimPendingRewards\">\n > => {\n return callMethod(\n RewardSharingVault,\n this,\n \"claimPendingRewards\",\n params === undefined ? {} : params,\n getContractByCodeHash\n );\n },\n claimUserPendingRewards: async (\n params: RewardSharingVaultTypes.CallMethodParams<\"claimUserPendingRewards\">\n ): Promise<\n RewardSharingVaultTypes.CallMethodResult<\"claimUserPendingRewards\">\n > => {\n return callMethod(\n RewardSharingVault,\n this,\n \"claimUserPendingRewards\",\n params,\n getContractByCodeHash\n );\n },\n getUserPendingRewards: async (\n params: RewardSharingVaultTypes.CallMethodParams<\"getUserPendingRewards\">\n ): Promise<\n RewardSharingVaultTypes.CallMethodResult<\"getUserPendingRewards\">\n > => {\n return callMethod(\n RewardSharingVault,\n this,\n \"getUserPendingRewards\",\n params,\n getContractByCodeHash\n );\n },\n };\n\n transact = {\n onStake: async (\n params: RewardSharingVaultTypes.SignExecuteMethodParams<\"onStake\">\n ): Promise<RewardSharingVaultTypes.SignExecuteMethodResult<\"onStake\">> => {\n return signExecuteMethod(RewardSharingVault, this, \"onStake\", params);\n },\n onUnstake: async (\n params: RewardSharingVaultTypes.SignExecuteMethodParams<\"onUnstake\">\n ): Promise<\n RewardSharingVaultTypes.SignExecuteMethodResult<\"onUnstake\">\n > => {\n return signExecuteMethod(RewardSharingVault, this, \"onUnstake\", params);\n },\n mulDiv: async (\n params: RewardSharingVaultTypes.SignExecuteMethodParams<\"mulDiv\">\n ): Promise<RewardSharingVaultTypes.SignExecuteMethodResult<\"mulDiv\">> => {\n return signExecuteMethod(RewardSharingVault, this, \"mulDiv\", params);\n },\n depositReward: async (\n params: RewardSharingVaultTypes.SignExecuteMethodParams<\"depositReward\">\n ): Promise<\n RewardSharingVaultTypes.SignExecuteMethodResult<\"depositReward\">\n > => {\n return signExecuteMethod(\n RewardSharingVault,\n this,\n \"depositReward\",\n params\n );\n },\n claimPendingRewards: async (\n params: RewardSharingVaultTypes.SignExecuteMethodParams<\"claimPendingRewards\">\n ): Promise<\n RewardSharingVaultTypes.SignExecuteMethodResult<\"claimPendingRewards\">\n > => {\n return signExecuteMethod(\n RewardSharingVault,\n this,\n \"claimPendingRewards\",\n params\n );\n },\n claimUserPendingRewards: async (\n params: RewardSharingVaultTypes.SignExecuteMethodParams<\"claimUserPendingRewards\">\n ): Promise<\n RewardSharingVaultTypes.SignExecuteMethodResult<\"claimUserPendingRewards\">\n > => {\n return signExecuteMethod(\n RewardSharingVault,\n this,\n \"claimUserPendingRewards\",\n params\n );\n },\n getUserPendingRewards: async (\n params: RewardSharingVaultTypes.SignExecuteMethodParams<\"getUserPendingRewards\">\n ): Promise<\n RewardSharingVaultTypes.SignExecuteMethodResult<\"getUserPendingRewards\">\n > => {\n return signExecuteMethod(\n RewardSharingVault,\n this,\n \"getUserPendingRewards\",\n params\n );\n },\n };\n\n async multicall<Calls extends RewardSharingVaultTypes.MultiCallParams>(\n calls: Calls\n ): Promise<RewardSharingVaultTypes.MultiCallResults<Calls>>;\n async multicall<Callss extends RewardSharingVaultTypes.MultiCallParams[]>(\n callss: Narrow<Callss>\n ): Promise<RewardSharingVaultTypes.MulticallReturnType<Callss>>;\n async multicall<\n Callss extends\n | RewardSharingVaultTypes.MultiCallParams\n | RewardSharingVaultTypes.MultiCallParams[]\n >(callss: Callss): Promise<unknown> {\n return await multicallMethods(\n RewardSharingVault,\n this,\n callss,\n getContractByCodeHash\n );\n }\n}\n","{\n \"version\": \"v4.2.5\",\n \"name\": \"RewardSharingVault\",\n \"bytecode\": \"040740b74152423c4277428942c0431e01000208004054d3926b380bb417021602ce00774513287b140a5f5f6d61705f5f305f5f16004744cbc54c40270c0d0d140a5f5f6d61705f5f305f5f16004744cb01011703160116032a16000d0ece00010d1707170616062f132b7b16000005160316012a0c0e0c140a5f5f6d61705f5f305f5f16004744cb01024a15160116000d0ece00010d1705170416042f132b7bca140a5f5f6d61705f5f305f5f16004744b11601a001d20102a00016012aa10005160016015f01000205004046d365b06caeb417021602ce00774513287b140a5f5f6d61705f5f305f5f16004744cbc513297b0c0d0d140a5f5f6d61705f5f305f5f16004744cb010117031601160332132c7b160316012b17041600000516040c2f4c0aca0d0c140a5f5f6d61705f5f305f5f16004744cb01034a0a16040c0e0c140a5f5f6d61705f5f305f5f16004744cb0102a00016012ba10006160016015f0000030901409216020c3013415e7b160016010c0d3687170316001601371704160316043616031604314c020d4a010c36170516050c2f4c04160416022d02160216053313415f7b160016011602871706160516061604334c020d4a010c361705160416063617040c1602361602381707160216072d1702160416072d17040c16073616072d0d351707160416051607373917040f1602370e3a170816080e16021608373637170816080e16021608373637170816080e16021608373637170816080e16021608373637170816080e16021608373637170816080e160216083736371708160416083702010101030019d3fe1110a1a0000c33132a7bb417011601ce011600ac160013c40de0b6b3a7640000a00000021702a00116022aa10107160116005f010300010005d3a28b71d5b417001600000500020102001916000006170116010c334c081600ce011601ab08160016015fa0010d0e0c140a5f5f6d61705f5f305f5f16004744cb010201000105014024d31191a066140a5f5f6d61705f5f305f5f16004744cbc513297b0c0d0d140a5f5f6d61705f5f305f5f16004744cb1704160401010d0d0d1604010117021701a00116022b17031601160313c40de0b6b3a7640000000202\",\n \"codeHash\": \"8beaa8b570543344d4352cf8534bbc7df4591b4ecda97cfc3c30bc28dca5adb9\",\n \"fieldsSig\": {\n \"names\": [\n \"stakeVault\",\n \"rewardTokenId\",\n \"totalAmountStaked\",\n \"rewardPerTokenCumulative\"\n ],\n \"types\": [\n \"XAlphStakeVault\",\n \"ByteVec\",\n \"U256\",\n \"U256\"\n ],\n \"isMutable\": [\n false,\n false,\n true,\n true\n ]\n },\n \"eventsSig\": [\n {\n \"name\": \"Staked\",\n \"fieldNames\": [\n \"staker\",\n \"amount\"\n ],\n \"fieldTypes\": [\n \"Address\",\n \"U256\"\n ]\n },\n {\n \"name\": \"Unstaked\",\n \"fieldNames\": [\n \"staker\",\n \"amount\"\n ],\n \"fieldTypes\": [\n \"Address\",\n \"U256\"\n ]\n },\n {\n \"name\": \"RewardDeposited\",\n \"fieldNames\": [\n \"depositor\",\n \"amount\"\n ],\n \"fieldTypes\": [\n \"Address\",\n \"U256\"\n ]\n },\n {\n \"name\": \"RewardClaimed\",\n \"fieldNames\": [\n \"staker\",\n \"amount\"\n ],\n \"fieldTypes\": [\n \"Address\",\n \"U256\"\n ]\n }\n ],\n \"functions\": [\n {\n \"name\": \"onStake\",\n \"paramNames\": [\n \"user\",\n \"newStakedAmount\"\n ],\n \"paramTypes\": [\n \"Address\",\n \"U256\"\n ],\n \"paramIsMutable\": [\n false,\n false\n ],\n \"returnTypes\": []\n },\n {\n \"name\": \"onUnstake\",\n \"paramNames\": [\n \"user\",\n \"unstakedAmount\"\n ],\n \"paramTypes\": [\n \"Address\",\n \"U256\"\n ],\n \"paramIsMutable\": [\n false,\n false\n ],\n \"returnTypes\": []\n },\n {\n \"name\": \"mulDiv\",\n \"paramNames\": [\n \"a\",\n \"b\",\n \"denominator\"\n ],\n \"paramTypes\": [\n \"U256\",\n \"U256\",\n \"U256\"\n ],\n \"paramIsMutable\": [\n false,\n false,\n true\n ],\n \"returnTypes\": [\n \"U256\"\n ]\n },\n {\n \"name\": \"depositReward\",\n \"paramNames\": [\n \"amount\"\n ],\n \"paramTypes\": [\n \"U256\"\n ],\n \"paramIsMutable\": [\n false\n ],\n \"returnTypes\": []\n },\n {\n \"name\": \"claimPendingRewards\",\n \"paramNames\": [],\n \"paramTypes\": [],\n \"paramIsMutable\": [],\n \"returnTypes\": []\n },\n {\n \"name\": \"claimUserPendingRewards\",\n \"paramNames\": [\n \"user\"\n ],\n \"paramTypes\": [\n \"Address\"\n ],\n \"paramIsMutable\": [\n false\n ],\n \"returnTypes\": []\n },\n {\n \"name\": \"getUserPendingRewards\",\n \"paramNames\": [\n \"user\"\n ],\n \"paramTypes\": [\n \"Address\"\n ],\n \"paramIsMutable\": [\n false\n ],\n \"returnTypes\": [\n \"U256\"\n ]\n }\n ],\n \"constants\": [\n {\n \"name\": \"SCALING_FACTOR\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"1000000000000000000\"\n }\n }\n ],\n \"enums\": [\n {\n \"name\": \"FullMathError\",\n \"fields\": [\n {\n \"name\": \"DivByZero\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"350\"\n }\n },\n {\n \"name\": \"MulDivOverflow\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"351\"\n }\n }\n ]\n },\n {\n \"name\": \"ErrorCodes\",\n \"fields\": [\n {\n \"name\": \"StakeVaultCallerOnly\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"40\"\n }\n },\n {\n \"name\": \"NoUserRewardSharingInfo\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"41\"\n }\n },\n {\n \"name\": \"TotalStakedAmountIsZero\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"42\"\n }\n },\n {\n \"name\": \"InvalidStakedAmount\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"43\"\n }\n },\n {\n \"name\": \"InvalidUnstakedAmount\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"44\"\n }\n }\n ]\n }\n ],\n \"mapsSig\": {\n \"names\": [\n \"userRewardSharingInfo\"\n ],\n \"types\": [\n \"Map[Address,UserRewardSharingInfo]\"\n ]\n }\n}","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport {\n Address,\n Contract,\n ContractState,\n TestContractResult,\n HexString,\n ContractFactory,\n EventSubscribeOptions,\n EventSubscription,\n CallContractParams,\n CallContractResult,\n TestContractParams,\n ContractEvent,\n subscribeContractEvent,\n subscribeContractEvents,\n testMethod,\n callMethod,\n multicallMethods,\n fetchContractState,\n Asset,\n ContractInstance,\n getContractEventsCurrentCount,\n TestContractParamsWithoutMaps,\n TestContractResultWithoutMaps,\n SignExecuteContractMethodParams,\n SignExecuteScriptTxResult,\n signExecuteMethod,\n addStdIdToFields,\n encodeContractFields,\n Narrow,\n} from \"@alephium/web3\";\nimport { default as TestDynamicArrayByteVec32ContractJson } from \"../utils/TestDynamicArrayByteVec32.ral.json\";\nimport { getContractByCodeHash, registerContract } from \"./contracts\";\nimport * as types from \"./types\";\n\n// Custom types for the contract\nexport namespace TestDynamicArrayByteVec32Types {\n export type State = Omit<ContractState<any>, \"fields\">;\n\n export interface CallMethodTable {\n get: {\n params: CallContractParams<{ array: HexString; index: bigint }>;\n result: CallContractResult<HexString>;\n };\n find: {\n params: CallContractParams<{ array: HexString; value: HexString }>;\n result: CallContractResult<bigint>;\n };\n remove: {\n params: CallContractParams<{ array: HexString; value: HexString }>;\n result: CallContractResult<HexString>;\n };\n push: {\n params: CallContractParams<{ array: HexString; value: HexString }>;\n result: CallContractResult<HexString>;\n };\n removeAt: {\n params: CallContractParams<{ array: HexString; index: bigint }>;\n result: CallContractResult<HexString>;\n };\n size: {\n params: CallContractParams<{ array: HexString }>;\n result: CallContractResult<bigint>;\n };\n empty: {\n params: Omit<CallContractParams<{}>, \"args\">;\n result: CallContractResult<HexString>;\n };\n }\n export type CallMethodParams<T extends keyof CallMethodTable> =\n CallMethodTable[T][\"params\"];\n export type CallMethodResult<T extends keyof CallMethodTable> =\n CallMethodTable[T][\"result\"];\n export type MultiCallParams = Partial<{\n [Name in keyof CallMethodTable]: CallMethodTable[Name][\"params\"];\n }>;\n export type MultiCallResults<T extends MultiCallParams> = {\n [MaybeName in keyof T]: MaybeName extends keyof CallMethodTable\n ? CallMethodTable[MaybeName][\"result\"]\n : undefined;\n };\n export type MulticallReturnType<Callss extends MultiCallParams[]> = {\n [index in keyof Callss]: MultiCallResults<Callss[index]>;\n };\n\n export interface SignExecuteMethodTable {\n get: {\n params: SignExecuteContractMethodParams<{\n array: HexString;\n index: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n find: {\n params: SignExecuteContractMethodParams<{\n array: HexString;\n value: HexString;\n }>;\n result: SignExecuteScriptTxResult;\n };\n remove: {\n params: SignExecuteContractMethodParams<{\n array: HexString;\n value: HexString;\n }>;\n result: SignExecuteScriptTxResult;\n };\n push: {\n params: SignExecuteContractMethodParams<{\n array: HexString;\n value: HexString;\n }>;\n result: SignExecuteScriptTxResult;\n };\n removeAt: {\n params: SignExecuteContractMethodParams<{\n array: HexString;\n index: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n size: {\n params: SignExecuteContractMethodParams<{ array: HexString }>;\n result: SignExecuteScriptTxResult;\n };\n empty: {\n params: Omit<SignExecuteContractMethodParams<{}>, \"args\">;\n result: SignExecuteScriptTxResult;\n };\n }\n export type SignExecuteMethodParams<T extends keyof SignExecuteMethodTable> =\n SignExecuteMethodTable[T][\"params\"];\n export type SignExecuteMethodResult<T extends keyof SignExecuteMethodTable> =\n SignExecuteMethodTable[T][\"result\"];\n}\n\nclass Factory extends ContractFactory<TestDynamicArrayByteVec32Instance, {}> {\n encodeFields() {\n return encodeContractFields({}, this.contract.fieldsSig, types.AllStructs);\n }\n\n consts = {\n IntByteLength: BigInt(\"32\"),\n ErrorCode: {\n InvalidArrayLength: BigInt(\"550\"),\n IndexOutOfBound: BigInt(\"551\"),\n InvalidByteVecLength: BigInt(\"552\"),\n },\n };\n\n at(address: string): TestDynamicArrayByteVec32Instance {\n return new TestDynamicArrayByteVec32Instance(address);\n }\n\n tests = {\n get: async (\n params: Omit<\n TestContractParamsWithoutMaps<\n never,\n { array: HexString; index: bigint }\n >,\n \"initialFields\"\n >\n ): Promise<TestContractResultWithoutMaps<HexString>> => {\n return testMethod(this, \"get\", params, getContractByCodeHash);\n },\n find: async (\n params: Omit<\n TestContractParamsWithoutMaps<\n never,\n { array: HexString; value: HexString }\n >,\n \"initialFields\"\n >\n ): Promise<TestContractResultWithoutMaps<bigint>> => {\n return testMethod(this, \"find\", params, getContractByCodeHash);\n },\n remove: async (\n params: Omit<\n TestContractParamsWithoutMaps<\n never,\n { array: HexString; value: HexString }\n >,\n \"initialFields\"\n >\n ): Promise<TestContractResultWithoutMaps<HexString>> => {\n return testMethod(this, \"remove\", params, getContractByCodeHash);\n },\n push: async (\n params: Omit<\n TestContractParamsWithoutMaps<\n never,\n { array: HexString; value: HexString }\n >,\n \"initialFields\"\n >\n ): Promise<TestContractResultWithoutMaps<HexString>> => {\n return testMethod(this, \"push\", params, getContractByCodeHash);\n },\n removeAt: async (\n params: Omit<\n TestContractParamsWithoutMaps<\n never,\n { array: HexString; index: bigint }\n >,\n \"initialFields\"\n >\n ): Promise<TestContractResultWithoutMaps<HexString>> => {\n return testMethod(this, \"removeAt\", params, getContractByCodeHash);\n },\n size: async (\n params: Omit<\n TestContractParamsWithoutMaps<never, { array: HexString }>,\n \"initialFields\"\n >\n ): Promise<TestContractResultWithoutMaps<bigint>> => {\n return testMethod(this, \"size\", params, getContractByCodeHash);\n },\n empty: async (\n params?: Omit<\n TestContractParamsWithoutMaps<never, never>,\n \"args\" | \"initialFields\"\n >\n ): Promise<TestContractResultWithoutMaps<HexString>> => {\n return testMethod(\n this,\n \"empty\",\n params === undefined ? {} : params,\n getContractByCodeHash\n );\n },\n };\n\n stateForTest(initFields: {}, asset?: Asset, address?: string) {\n return this.stateForTest_(initFields, asset, address, undefined);\n }\n}\n\n// Use this object to test and deploy the contract\nexport const TestDynamicArrayByteVec32 = new Factory(\n Contract.fromJson(\n TestDynamicArrayByteVec32ContractJson,\n \"\",\n \"594861ab1850f3d1872ee687c87ddfeca8746bfe5b9ade07fabc4ca27c56661c\",\n types.AllStructs\n )\n);\nregisterContract(TestDynamicArrayByteVec32);\n\n// Use this class to interact with the blockchain\nexport class TestDynamicArrayByteVec32Instance extends ContractInstance {\n constructor(address: Address) {\n super(address);\n }\n\n async fetchState(): Promise<TestDynamicArrayByteVec32Types.State> {\n return fetchContractState(TestDynamicArrayByteVec32, this);\n }\n\n view = {\n get: async (\n params: TestDynamicArrayByteVec32Types.CallMethodParams<\"get\">\n ): Promise<TestDynamicArrayByteVec32Types.CallMethodResult<\"get\">> => {\n return callMethod(\n TestDynamicArrayByteVec32,\n this,\n \"get\",\n params,\n getContractByCodeHash\n );\n },\n find: async (\n params: TestDynamicArrayByteVec32Types.CallMethodParams<\"find\">\n ): Promise<TestDynamicArrayByteVec32Types.CallMethodResult<\"find\">> => {\n return callMethod(\n TestDynamicArrayByteVec32,\n this,\n \"find\",\n params,\n getContractByCodeHash\n );\n },\n remove: async (\n params: TestDynamicArrayByteVec32Types.CallMethodParams<\"remove\">\n ): Promise<TestDynamicArrayByteVec32Types.CallMethodResult<\"remove\">> => {\n return callMethod(\n TestDynamicArrayByteVec32,\n this,\n \"remove\",\n params,\n getContractByCodeHash\n );\n },\n push: async (\n params: TestDynamicArrayByteVec32Types.CallMethodParams<\"push\">\n ): Promise<TestDynamicArrayByteVec32Types.CallMethodResult<\"push\">> => {\n return callMethod(\n TestDynamicArrayByteVec32,\n this,\n \"push\",\n params,\n getContractByCodeHash\n );\n },\n removeAt: async (\n params: TestDynamicArrayByteVec32Types.CallMethodParams<\"removeAt\">\n ): Promise<TestDynamicArrayByteVec32Types.CallMethodResult<\"removeAt\">> => {\n return callMethod(\n TestDynamicArrayByteVec32,\n this,\n \"removeAt\",\n params,\n getContractByCodeHash\n );\n },\n size: async (\n params: TestDynamicArrayByteVec32Types.CallMethodParams<\"size\">\n ): Promise<TestDynamicArrayByteVec32Types.CallMethodResult<\"size\">> => {\n return callMethod(\n TestDynamicArrayByteVec32,\n this,\n \"size\",\n params,\n getContractByCodeHash\n );\n },\n empty: async (\n params?: TestDynamicArrayByteVec32Types.CallMethodParams<\"empty\">\n ): Promise<TestDynamicArrayByteVec32Types.CallMethodResult<\"empty\">> => {\n return callMethod(\n TestDynamicArrayByteVec32,\n this,\n \"empty\",\n params === undefined ? {} : params,\n getContractByCodeHash\n );\n },\n };\n\n transact = {\n get: async (\n params: TestDynamicArrayByteVec32Types.SignExecuteMethodParams<\"get\">\n ): Promise<\n TestDynamicArrayByteVec32Types.SignExecuteMethodResult<\"get\">\n > => {\n return signExecuteMethod(TestDynamicArrayByteVec32, this, \"get\", params);\n },\n find: async (\n params: TestDynamicArrayByteVec32Types.SignExecuteMethodParams<\"find\">\n ): Promise<\n TestDynamicArrayByteVec32Types.SignExecuteMethodResult<\"find\">\n > => {\n return signExecuteMethod(TestDynamicArrayByteVec32, this, \"find\", params);\n },\n remove: async (\n params: TestDynamicArrayByteVec32Types.SignExecuteMethodParams<\"remove\">\n ): Promise<\n TestDynamicArrayByteVec32Types.SignExecuteMethodResult<\"remove\">\n > => {\n return signExecuteMethod(\n TestDynamicArrayByteVec32,\n this,\n \"remove\",\n params\n );\n },\n push: async (\n params: TestDynamicArrayByteVec32Types.SignExecuteMethodParams<\"push\">\n ): Promise<\n TestDynamicArrayByteVec32Types.SignExecuteMethodResult<\"push\">\n > => {\n return signExecuteMethod(TestDynamicArrayByteVec32, this, \"push\", params);\n },\n removeAt: async (\n params: TestDynamicArrayByteVec32Types.SignExecuteMethodParams<\"removeAt\">\n ): Promise<\n TestDynamicArrayByteVec32Types.SignExecuteMethodResult<\"removeAt\">\n > => {\n return signExecuteMethod(\n TestDynamicArrayByteVec32,\n this,\n \"removeAt\",\n params\n );\n },\n size: async (\n params: TestDynamicArrayByteVec32Types.SignExecuteMethodParams<\"size\">\n ): Promise<\n TestDynamicArrayByteVec32Types.SignExecuteMethodResult<\"size\">\n > => {\n return signExecuteMethod(TestDynamicArrayByteVec32, this, \"size\", params);\n },\n empty: async (\n params: TestDynamicArrayByteVec32Types.SignExecuteMethodParams<\"empty\">\n ): Promise<\n TestDynamicArrayByteVec32Types.SignExecuteMethodResult<\"empty\">\n > => {\n return signExecuteMethod(\n TestDynamicArrayByteVec32,\n this,\n \"empty\",\n params\n );\n },\n };\n\n async multicall<Calls extends TestDynamicArrayByteVec32Types.MultiCallParams>(\n calls: Calls\n ): Promise<TestDynamicArrayByteVec32Types.MultiCallResults<Calls>>;\n async multicall<\n Callss extends TestDynamicArrayByteVec32Types.MultiCallParams[]\n >(\n callss: Narrow<Callss>\n ): Promise<TestDynamicArrayByteVec32Types.MulticallReturnType<Callss>>;\n async multicall<\n Callss extends\n | TestDynamicArrayByteVec32Types.MultiCallParams\n | TestDynamicArrayByteVec32Types.MultiCallParams[]\n >(callss: Callss): Promise<unknown> {\n return await multicallMethods(\n TestDynamicArrayByteVec32,\n this,\n callss,\n getContractByCodeHash\n );\n }\n}\n","{\n \"version\": \"v4.2.5\",\n \"name\": \"TestDynamicArrayByteVec32\",\n \"bytecode\": \"00074028407340af40cc40fc411a4128010002030112d3545eacd4160116000005311342277b160113202c170216001602160213202a620201000204014028d3083a358916004313202e0c2f1342267b16014313202f1342287b1600000517020c170316031602314c0e1600160300001601414c0316033f0216030d2a17034a2e0b0201000203011fd3694941c216004313202e0c2f1342267b16014313202f1342287b160016010001170216020b244c031600024a05160016023d00040201000202010dd354ad273416004313202e0c2f1342267b160016014402010002030118d34b2e25b7160116000005311342277b160113202c170216000c1602621600160213202a16004362440201000101010ed30041471116004313202e0c2f1342267b16004313202d02010000000103d3676c3c33140002\",\n \"codeHash\": \"594861ab1850f3d1872ee687c87ddfeca8746bfe5b9ade07fabc4ca27c56661c\",\n \"fieldsSig\": {\n \"names\": [],\n \"types\": [],\n \"isMutable\": []\n },\n \"eventsSig\": [],\n \"functions\": [\n {\n \"name\": \"get\",\n \"paramNames\": [\n \"array\",\n \"index\"\n ],\n \"paramTypes\": [\n \"ByteVec\",\n \"U256\"\n ],\n \"paramIsMutable\": [\n false,\n false\n ],\n \"returnTypes\": [\n \"ByteVec\"\n ]\n },\n {\n \"name\": \"find\",\n \"paramNames\": [\n \"array\",\n \"value\"\n ],\n \"paramTypes\": [\n \"ByteVec\",\n \"ByteVec\"\n ],\n \"paramIsMutable\": [\n false,\n false\n ],\n \"returnTypes\": [\n \"I256\"\n ]\n },\n {\n \"name\": \"remove\",\n \"paramNames\": [\n \"array\",\n \"value\"\n ],\n \"paramTypes\": [\n \"ByteVec\",\n \"ByteVec\"\n ],\n \"paramIsMutable\": [\n false,\n false\n ],\n \"returnTypes\": [\n \"ByteVec\"\n ]\n },\n {\n \"name\": \"push\",\n \"paramNames\": [\n \"array\",\n \"value\"\n ],\n \"paramTypes\": [\n \"ByteVec\",\n \"ByteVec\"\n ],\n \"paramIsMutable\": [\n false,\n false\n ],\n \"returnTypes\": [\n \"ByteVec\"\n ]\n },\n {\n \"name\": \"removeAt\",\n \"paramNames\": [\n \"array\",\n \"index\"\n ],\n \"paramTypes\": [\n \"ByteVec\",\n \"U256\"\n ],\n \"paramIsMutable\": [\n false,\n false\n ],\n \"returnTypes\": [\n \"ByteVec\"\n ]\n },\n {\n \"name\": \"size\",\n \"paramNames\": [\n \"array\"\n ],\n \"paramTypes\": [\n \"ByteVec\"\n ],\n \"paramIsMutable\": [\n false\n ],\n \"returnTypes\": [\n \"U256\"\n ]\n },\n {\n \"name\": \"empty\",\n \"paramNames\": [],\n \"paramTypes\": [],\n \"paramIsMutable\": [],\n \"returnTypes\": [\n \"ByteVec\"\n ]\n }\n ],\n \"constants\": [\n {\n \"name\": \"IntByteLength\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"32\"\n }\n }\n ],\n \"enums\": [\n {\n \"name\": \"ErrorCode\",\n \"fields\": [\n {\n \"name\": \"InvalidArrayLength\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"550\"\n }\n },\n {\n \"name\": \"IndexOutOfBound\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"551\"\n }\n },\n {\n \"name\": \"InvalidByteVecLength\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"552\"\n }\n }\n ]\n }\n ]\n}","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport {\n Address,\n Contract,\n ContractState,\n TestContractResult,\n HexString,\n ContractFactory,\n EventSubscribeOptions,\n EventSubscription,\n CallContractParams,\n CallContractResult,\n TestContractParams,\n ContractEvent,\n subscribeContractEvent,\n subscribeContractEvents,\n testMethod,\n callMethod,\n multicallMethods,\n fetchContractState,\n Asset,\n ContractInstance,\n getContractEventsCurrentCount,\n TestContractParamsWithoutMaps,\n TestContractResultWithoutMaps,\n SignExecuteContractMethodParams,\n SignExecuteScriptTxResult,\n signExecuteMethod,\n addStdIdToFields,\n encodeContractFields,\n Narrow,\n} from \"@alephium/web3\";\nimport { default as TestDynamicSortedArrayForU256ContractJson } from \"../utils/TestDynamicSortedArrayForU256.ral.json\";\nimport { getContractByCodeHash, registerContract } from \"./contracts\";\nimport * as types from \"./types\";\n\n// Custom types for the contract\nexport namespace TestDynamicSortedArrayForU256Types {\n export type State = Omit<ContractState<any>, \"fields\">;\n\n export interface CallMethodTable {\n get: {\n params: CallContractParams<{ array: HexString; index: bigint }>;\n result: CallContractResult<bigint>;\n };\n find: {\n params: CallContractParams<{ array: HexString; value: bigint }>;\n result: CallContractResult<bigint>;\n };\n remove: {\n params: CallContractParams<{ array: HexString; value: bigint }>;\n result: CallContractResult<HexString>;\n };\n push: {\n params: CallContractParams<{ array: HexString; value: bigint }>;\n result: CallContractResult<HexString>;\n };\n binarySearch: {\n params: CallContractParams<{\n array: HexString;\n value: bigint;\n left: bigint;\n right: bigint;\n }>;\n result: CallContractResult<bigint>;\n };\n removeAt: {\n params: CallContractParams<{ array: HexString; index: bigint }>;\n result: CallContractResult<HexString>;\n };\n size: {\n params: CallContractParams<{ array: HexString }>;\n result: CallContractResult<bigint>;\n };\n empty: {\n params: Omit<CallContractParams<{}>, \"args\">;\n result: CallContractResult<HexString>;\n };\n }\n export type CallMethodParams<T extends keyof CallMethodTable> =\n CallMethodTable[T][\"params\"];\n export type CallMethodResult<T extends keyof CallMethodTable> =\n CallMethodTable[T][\"result\"];\n export type MultiCallParams = Partial<{\n [Name in keyof CallMethodTable]: CallMethodTable[Name][\"params\"];\n }>;\n export type MultiCallResults<T extends MultiCallParams> = {\n [MaybeName in keyof T]: MaybeName extends keyof CallMethodTable\n ? CallMethodTable[MaybeName][\"result\"]\n : undefined;\n };\n export type MulticallReturnType<Callss extends MultiCallParams[]> = {\n [index in keyof Callss]: MultiCallResults<Callss[index]>;\n };\n\n export interface SignExecuteMethodTable {\n get: {\n params: SignExecuteContractMethodParams<{\n array: HexString;\n index: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n find: {\n params: SignExecuteContractMethodParams<{\n array: HexString;\n value: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n remove: {\n params: SignExecuteContractMethodParams<{\n array: HexString;\n value: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n push: {\n params: SignExecuteContractMethodParams<{\n array: HexString;\n value: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n binarySearch: {\n params: SignExecuteContractMethodParams<{\n array: HexString;\n value: bigint;\n left: bigint;\n right: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n removeAt: {\n params: SignExecuteContractMethodParams<{\n array: HexString;\n index: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n size: {\n params: SignExecuteContractMethodParams<{ array: HexString }>;\n result: SignExecuteScriptTxResult;\n };\n empty: {\n params: Omit<SignExecuteContractMethodParams<{}>, \"args\">;\n result: SignExecuteScriptTxResult;\n };\n }\n export type SignExecuteMethodParams<T extends keyof SignExecuteMethodTable> =\n SignExecuteMethodTable[T][\"params\"];\n export type SignExecuteMethodResult<T extends keyof SignExecuteMethodTable> =\n SignExecuteMethodTable[T][\"result\"];\n}\n\nclass Factory extends ContractFactory<\n TestDynamicSortedArrayForU256Instance,\n {}\n> {\n encodeFields() {\n return encodeContractFields({}, this.contract.fieldsSig, types.AllStructs);\n }\n\n consts = {\n IntByteLength: BigInt(\"32\"),\n ErrorCode: {\n InvalidArrayLength: BigInt(\"550\"),\n IndexOutOfBound: BigInt(\"551\"),\n InvalidByteVecLength: BigInt(\"552\"),\n },\n };\n\n at(address: string): TestDynamicSortedArrayForU256Instance {\n return new TestDynamicSortedArrayForU256Instance(address);\n }\n\n tests = {\n get: async (\n params: Omit<\n TestContractParamsWithoutMaps<\n never,\n { array: HexString; index: bigint }\n >,\n \"initialFields\"\n >\n ): Promise<TestContractResultWithoutMaps<bigint>> => {\n return testMethod(this, \"get\", params, getContractByCodeHash);\n },\n find: async (\n params: Omit<\n TestContractParamsWithoutMaps<\n never,\n { array: HexString; value: bigint }\n >,\n \"initialFields\"\n >\n ): Promise<TestContractResultWithoutMaps<bigint>> => {\n return testMethod(this, \"find\", params, getContractByCodeHash);\n },\n remove: async (\n params: Omit<\n TestContractParamsWithoutMaps<\n never,\n { array: HexString; value: bigint }\n >,\n \"initialFields\"\n >\n ): Promise<TestContractResultWithoutMaps<HexString>> => {\n return testMethod(this, \"remove\", params, getContractByCodeHash);\n },\n push: async (\n params: Omit<\n TestContractParamsWithoutMaps<\n never,\n { array: HexString; value: bigint }\n >,\n \"initialFields\"\n >\n ): Promise<TestContractResultWithoutMaps<HexString>> => {\n return testMethod(this, \"push\", params, getContractByCodeHash);\n },\n binarySearch: async (\n params: Omit<\n TestContractParamsWithoutMaps<\n never,\n { array: HexString; value: bigint; left: bigint; right: bigint }\n >,\n \"initialFields\"\n >\n ): Promise<TestContractResultWithoutMaps<bigint>> => {\n return testMethod(this, \"binarySearch\", params, getContractByCodeHash);\n },\n removeAt: async (\n params: Omit<\n TestContractParamsWithoutMaps<\n never,\n { array: HexString; index: bigint }\n >,\n \"initialFields\"\n >\n ): Promise<TestContractResultWithoutMaps<HexString>> => {\n return testMethod(this, \"removeAt\", params, getContractByCodeHash);\n },\n size: async (\n params: Omit<\n TestContractParamsWithoutMaps<never, { array: HexString }>,\n \"initialFields\"\n >\n ): Promise<TestContractResultWithoutMaps<bigint>> => {\n return testMethod(this, \"size\", params, getContractByCodeHash);\n },\n empty: async (\n params?: Omit<\n TestContractParamsWithoutMaps<never, never>,\n \"args\" | \"initialFields\"\n >\n ): Promise<TestContractResultWithoutMaps<HexString>> => {\n return testMethod(\n this,\n \"empty\",\n params === undefined ? {} : params,\n getContractByCodeHash\n );\n },\n };\n\n stateForTest(initFields: {}, asset?: Asset, address?: string) {\n return this.stateForTest_(initFields, asset, address, undefined);\n }\n}\n\n// Use this object to test and deploy the contract\nexport const TestDynamicSortedArrayForU256 = new Factory(\n Contract.fromJson(\n TestDynamicSortedArrayForU256ContractJson,\n \"\",\n \"86f2584a16af632c63b6c1ead625d4d53f11b9a3f2d465010085bd740be281d3\",\n types.AllStructs\n )\n);\nregisterContract(TestDynamicSortedArrayForU256);\n\n// Use this class to interact with the blockchain\nexport class TestDynamicSortedArrayForU256Instance extends ContractInstance {\n constructor(address: Address) {\n super(address);\n }\n\n async fetchState(): Promise<TestDynamicSortedArrayForU256Types.State> {\n return fetchContractState(TestDynamicSortedArrayForU256, this);\n }\n\n view = {\n get: async (\n params: TestDynamicSortedArrayForU256Types.CallMethodParams<\"get\">\n ): Promise<TestDynamicSortedArrayForU256Types.CallMethodResult<\"get\">> => {\n return callMethod(\n TestDynamicSortedArrayForU256,\n this,\n \"get\",\n params,\n getContractByCodeHash\n );\n },\n find: async (\n params: TestDynamicSortedArrayForU256Types.CallMethodParams<\"find\">\n ): Promise<TestDynamicSortedArrayForU256Types.CallMethodResult<\"find\">> => {\n return callMethod(\n TestDynamicSortedArrayForU256,\n this,\n \"find\",\n params,\n getContractByCodeHash\n );\n },\n remove: async (\n params: TestDynamicSortedArrayForU256Types.CallMethodParams<\"remove\">\n ): Promise<\n TestDynamicSortedArrayForU256Types.CallMethodResult<\"remove\">\n > => {\n return callMethod(\n TestDynamicSortedArrayForU256,\n this,\n \"remove\",\n params,\n getContractByCodeHash\n );\n },\n push: async (\n params: TestDynamicSortedArrayForU256Types.CallMethodParams<\"push\">\n ): Promise<TestDynamicSortedArrayForU256Types.CallMethodResult<\"push\">> => {\n return callMethod(\n TestDynamicSortedArrayForU256,\n this,\n \"push\",\n params,\n getContractByCodeHash\n );\n },\n binarySearch: async (\n params: TestDynamicSortedArrayForU256Types.CallMethodParams<\"binarySearch\">\n ): Promise<\n TestDynamicSortedArrayForU256Types.CallMethodResult<\"binarySearch\">\n > => {\n return callMethod(\n TestDynamicSortedArrayForU256,\n this,\n \"binarySearch\",\n params,\n getContractByCodeHash\n );\n },\n removeAt: async (\n params: TestDynamicSortedArrayForU256Types.CallMethodParams<\"removeAt\">\n ): Promise<\n TestDynamicSortedArrayForU256Types.CallMethodResult<\"removeAt\">\n > => {\n return callMethod(\n TestDynamicSortedArrayForU256,\n this,\n \"removeAt\",\n params,\n getContractByCodeHash\n );\n },\n size: async (\n params: TestDynamicSortedArrayForU256Types.CallMethodParams<\"size\">\n ): Promise<TestDynamicSortedArrayForU256Types.CallMethodResult<\"size\">> => {\n return callMethod(\n TestDynamicSortedArrayForU256,\n this,\n \"size\",\n params,\n getContractByCodeHash\n );\n },\n empty: async (\n params?: TestDynamicSortedArrayForU256Types.CallMethodParams<\"empty\">\n ): Promise<\n TestDynamicSortedArrayForU256Types.CallMethodResult<\"empty\">\n > => {\n return callMethod(\n TestDynamicSortedArrayForU256,\n this,\n \"empty\",\n params === undefined ? {} : params,\n getContractByCodeHash\n );\n },\n };\n\n transact = {\n get: async (\n params: TestDynamicSortedArrayForU256Types.SignExecuteMethodParams<\"get\">\n ): Promise<\n TestDynamicSortedArrayForU256Types.SignExecuteMethodResult<\"get\">\n > => {\n return signExecuteMethod(\n TestDynamicSortedArrayForU256,\n this,\n \"get\",\n params\n );\n },\n find: async (\n params: TestDynamicSortedArrayForU256Types.SignExecuteMethodParams<\"find\">\n ): Promise<\n TestDynamicSortedArrayForU256Types.SignExecuteMethodResult<\"find\">\n > => {\n return signExecuteMethod(\n TestDynamicSortedArrayForU256,\n this,\n \"find\",\n params\n );\n },\n remove: async (\n params: TestDynamicSortedArrayForU256Types.SignExecuteMethodParams<\"remove\">\n ): Promise<\n TestDynamicSortedArrayForU256Types.SignExecuteMethodResult<\"remove\">\n > => {\n return signExecuteMethod(\n TestDynamicSortedArrayForU256,\n this,\n \"remove\",\n params\n );\n },\n push: async (\n params: TestDynamicSortedArrayForU256Types.SignExecuteMethodParams<\"push\">\n ): Promise<\n TestDynamicSortedArrayForU256Types.SignExecuteMethodResult<\"push\">\n > => {\n return signExecuteMethod(\n TestDynamicSortedArrayForU256,\n this,\n \"push\",\n params\n );\n },\n binarySearch: async (\n params: TestDynamicSortedArrayForU256Types.SignExecuteMethodParams<\"binarySearch\">\n ): Promise<\n TestDynamicSortedArrayForU256Types.SignExecuteMethodResult<\"binarySearch\">\n > => {\n return signExecuteMethod(\n TestDynamicSortedArrayForU256,\n this,\n \"binarySearch\",\n params\n );\n },\n removeAt: async (\n params: TestDynamicSortedArrayForU256Types.SignExecuteMethodParams<\"removeAt\">\n ): Promise<\n TestDynamicSortedArrayForU256Types.SignExecuteMethodResult<\"removeAt\">\n > => {\n return signExecuteMethod(\n TestDynamicSortedArrayForU256,\n this,\n \"removeAt\",\n params\n );\n },\n size: async (\n params: TestDynamicSortedArrayForU256Types.SignExecuteMethodParams<\"size\">\n ): Promise<\n TestDynamicSortedArrayForU256Types.SignExecuteMethodResult<\"size\">\n > => {\n return signExecuteMethod(\n TestDynamicSortedArrayForU256,\n this,\n \"size\",\n params\n );\n },\n empty: async (\n params: TestDynamicSortedArrayForU256Types.SignExecuteMethodParams<\"empty\">\n ): Promise<\n TestDynamicSortedArrayForU256Types.SignExecuteMethodResult<\"empty\">\n > => {\n return signExecuteMethod(\n TestDynamicSortedArrayForU256,\n this,\n \"empty\",\n params\n );\n },\n };\n\n async multicall<\n Calls extends TestDynamicSortedArrayForU256Types.MultiCallParams\n >(\n calls: Calls\n ): Promise<TestDynamicSortedArrayForU256Types.MultiCallResults<Calls>>;\n async multicall<\n Callss extends TestDynamicSortedArrayForU256Types.MultiCallParams[]\n >(\n callss: Narrow<Callss>\n ): Promise<TestDynamicSortedArrayForU256Types.MulticallReturnType<Callss>>;\n async multicall<\n Callss extends\n | TestDynamicSortedArrayForU256Types.MultiCallParams\n | TestDynamicSortedArrayForU256Types.MultiCallParams[]\n >(callss: Callss): Promise<unknown> {\n return await multicallMethods(\n TestDynamicSortedArrayForU256,\n this,\n callss,\n getContractByCodeHash\n );\n }\n}\n","{\n \"version\": \"v4.2.5\",\n \"name\": \"TestDynamicSortedArrayForU256\",\n \"bytecode\": \"0008402d4056408840a640f341234141414f010002040115d3cee93194160116000006311342277b160113202c170216001602160213202a62170316037102010002030114d33cd5e72916004313202e0c2f1342267b16004313202d1702160016010c1602000402010002030119d32cabd28216004313202e0c2f1342267b160016010001170216020b244c031600024a05160016023d00050201000202010ed31bc25d3416004313202e0c2f1342267b160016016b44020000040601402a16021603344c020b02160216032a0e2d17041600160400001705160516012f4c0316043f0216051601314c091600160116040d2a16030004024a061600160116021604000402010002030118d34b2e25b7160116000006311342277b160113202c170216000c1602621600160213202a16004362440201000101010ed30041471116004313202e0c2f1342267b16004313202d02010000000103d3676c3c33140002\",\n \"codeHash\": \"86f2584a16af632c63b6c1ead625d4d53f11b9a3f2d465010085bd740be281d3\",\n \"fieldsSig\": {\n \"names\": [],\n \"types\": [],\n \"isMutable\": []\n },\n \"eventsSig\": [],\n \"functions\": [\n {\n \"name\": \"get\",\n \"paramNames\": [\n \"array\",\n \"index\"\n ],\n \"paramTypes\": [\n \"ByteVec\",\n \"U256\"\n ],\n \"paramIsMutable\": [\n false,\n false\n ],\n \"returnTypes\": [\n \"U256\"\n ]\n },\n {\n \"name\": \"find\",\n \"paramNames\": [\n \"array\",\n \"value\"\n ],\n \"paramTypes\": [\n \"ByteVec\",\n \"U256\"\n ],\n \"paramIsMutable\": [\n false,\n false\n ],\n \"returnTypes\": [\n \"I256\"\n ]\n },\n {\n \"name\": \"remove\",\n \"paramNames\": [\n \"array\",\n \"value\"\n ],\n \"paramTypes\": [\n \"ByteVec\",\n \"U256\"\n ],\n \"paramIsMutable\": [\n false,\n false\n ],\n \"returnTypes\": [\n \"ByteVec\"\n ]\n },\n {\n \"name\": \"push\",\n \"paramNames\": [\n \"array\",\n \"value\"\n ],\n \"paramTypes\": [\n \"ByteVec\",\n \"U256\"\n ],\n \"paramIsMutable\": [\n false,\n false\n ],\n \"returnTypes\": [\n \"ByteVec\"\n ]\n },\n {\n \"name\": \"binarySearch\",\n \"paramNames\": [\n \"array\",\n \"value\",\n \"left\",\n \"right\"\n ],\n \"paramTypes\": [\n \"ByteVec\",\n \"U256\",\n \"U256\",\n \"U256\"\n ],\n \"paramIsMutable\": [\n false,\n false,\n false,\n false\n ],\n \"returnTypes\": [\n \"I256\"\n ]\n },\n {\n \"name\": \"removeAt\",\n \"paramNames\": [\n \"array\",\n \"index\"\n ],\n \"paramTypes\": [\n \"ByteVec\",\n \"U256\"\n ],\n \"paramIsMutable\": [\n false,\n false\n ],\n \"returnTypes\": [\n \"ByteVec\"\n ]\n },\n {\n \"name\": \"size\",\n \"paramNames\": [\n \"array\"\n ],\n \"paramTypes\": [\n \"ByteVec\"\n ],\n \"paramIsMutable\": [\n false\n ],\n \"returnTypes\": [\n \"U256\"\n ]\n },\n {\n \"name\": \"empty\",\n \"paramNames\": [],\n \"paramTypes\": [],\n \"paramIsMutable\": [],\n \"returnTypes\": [\n \"ByteVec\"\n ]\n }\n ],\n \"constants\": [\n {\n \"name\": \"IntByteLength\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"32\"\n }\n }\n ],\n \"enums\": [\n {\n \"name\": \"ErrorCode\",\n \"fields\": [\n {\n \"name\": \"InvalidArrayLength\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"550\"\n }\n },\n {\n \"name\": \"IndexOutOfBound\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"551\"\n }\n },\n {\n \"name\": \"InvalidByteVecLength\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"552\"\n }\n }\n ]\n }\n ]\n}","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport {\n Address,\n Contract,\n ContractState,\n TestContractResult,\n HexString,\n ContractFactory,\n EventSubscribeOptions,\n EventSubscription,\n CallContractParams,\n CallContractResult,\n TestContractParams,\n ContractEvent,\n subscribeContractEvent,\n subscribeContractEvents,\n testMethod,\n callMethod,\n multicallMethods,\n fetchContractState,\n Asset,\n ContractInstance,\n getContractEventsCurrentCount,\n TestContractParamsWithoutMaps,\n TestContractResultWithoutMaps,\n SignExecuteContractMethodParams,\n SignExecuteScriptTxResult,\n signExecuteMethod,\n addStdIdToFields,\n encodeContractFields,\n Narrow,\n} from \"@alephium/web3\";\nimport { default as TestMerkleProofContractJson } from \"../utils/TestMerkleProof.ral.json\";\nimport { getContractByCodeHash, registerContract } from \"./contracts\";\nimport * as types from \"./types\";\n\n// Custom types for the contract\nexport namespace TestMerkleProofTypes {\n export type Fields = {\n merkleRoot: HexString;\n };\n\n export type State = ContractState<Fields>;\n\n export type UpdateRootEvent = ContractEvent<{\n newMerkleRoot: HexString;\n updatedBy: Address;\n }>;\n\n export interface CallMethodTable {\n getMerkleRoot: {\n params: Omit<CallContractParams<{}>, \"args\">;\n result: CallContractResult<HexString>;\n };\n updateRoot: {\n params: CallContractParams<{ newMerkleRoot: HexString }>;\n result: CallContractResult<null>;\n };\n verify: {\n params: CallContractParams<{ proof: HexString; dataHash: HexString }>;\n result: CallContractResult<boolean>;\n };\n hashPair: {\n params: CallContractParams<{ a: HexString; b: HexString }>;\n result: CallContractResult<HexString>;\n };\n hash: {\n params: CallContractParams<{ dataToHash: HexString }>;\n result: CallContractResult<HexString>;\n };\n }\n export type CallMethodParams<T extends keyof CallMethodTable> =\n CallMethodTable[T][\"params\"];\n export type CallMethodResult<T extends keyof CallMethodTable> =\n CallMethodTable[T][\"result\"];\n export type MultiCallParams = Partial<{\n [Name in keyof CallMethodTable]: CallMethodTable[Name][\"params\"];\n }>;\n export type MultiCallResults<T extends MultiCallParams> = {\n [MaybeName in keyof T]: MaybeName extends keyof CallMethodTable\n ? CallMethodTable[MaybeName][\"result\"]\n : undefined;\n };\n export type MulticallReturnType<Callss extends MultiCallParams[]> = {\n [index in keyof Callss]: MultiCallResults<Callss[index]>;\n };\n\n export interface SignExecuteMethodTable {\n getMerkleRoot: {\n params: Omit<SignExecuteContractMethodParams<{}>, \"args\">;\n result: SignExecuteScriptTxResult;\n };\n updateRoot: {\n params: SignExecuteContractMethodParams<{ newMerkleRoot: HexString }>;\n result: SignExecuteScriptTxResult;\n };\n verify: {\n params: SignExecuteContractMethodParams<{\n proof: HexString;\n dataHash: HexString;\n }>;\n result: SignExecuteScriptTxResult;\n };\n hashPair: {\n params: SignExecuteContractMethodParams<{ a: HexString; b: HexString }>;\n result: SignExecuteScriptTxResult;\n };\n hash: {\n params: SignExecuteContractMethodParams<{ dataToHash: HexString }>;\n result: SignExecuteScriptTxResult;\n };\n }\n export type SignExecuteMethodParams<T extends keyof SignExecuteMethodTable> =\n SignExecuteMethodTable[T][\"params\"];\n export type SignExecuteMethodResult<T extends keyof SignExecuteMethodTable> =\n SignExecuteMethodTable[T][\"result\"];\n}\n\nclass Factory extends ContractFactory<\n TestMerkleProofInstance,\n TestMerkleProofTypes.Fields\n> {\n encodeFields(fields: TestMerkleProofTypes.Fields) {\n return encodeContractFields(\n addStdIdToFields(this.contract, fields),\n this.contract.fieldsSig,\n types.AllStructs\n );\n }\n\n eventIndex = { UpdateRoot: 0 };\n consts = {\n MerkleProofErrorCodes: {\n InvalidProofSize: BigInt(\"11001\"),\n InvalidDataHash: BigInt(\"11002\"),\n InvalidMerkleRoot: BigInt(\"11003\"),\n },\n };\n\n at(address: string): TestMerkleProofInstance {\n return new TestMerkleProofInstance(address);\n }\n\n tests = {\n getMerkleRoot: async (\n params: Omit<\n TestContractParamsWithoutMaps<TestMerkleProofTypes.Fields, never>,\n \"args\"\n >\n ): Promise<TestContractResultWithoutMaps<HexString>> => {\n return testMethod(this, \"getMerkleRoot\", params, getContractByCodeHash);\n },\n updateRoot: async (\n params: TestContractParamsWithoutMaps<\n TestMerkleProofTypes.Fields,\n { newMerkleRoot: HexString }\n >\n ): Promise<TestContractResultWithoutMaps<null>> => {\n return testMethod(this, \"updateRoot\", params, getContractByCodeHash);\n },\n verify: async (\n params: TestContractParamsWithoutMaps<\n TestMerkleProofTypes.Fields,\n { proof: HexString; dataHash: HexString }\n >\n ): Promise<TestContractResultWithoutMaps<boolean>> => {\n return testMethod(this, \"verify\", params, getContractByCodeHash);\n },\n hashPair: async (\n params: TestContractParamsWithoutMaps<\n TestMerkleProofTypes.Fields,\n { a: HexString; b: HexString }\n >\n ): Promise<TestContractResultWithoutMaps<HexString>> => {\n return testMethod(this, \"hashPair\", params, getContractByCodeHash);\n },\n hash: async (\n params: TestContractParamsWithoutMaps<\n TestMerkleProofTypes.Fields,\n { dataToHash: HexString }\n >\n ): Promise<TestContractResultWithoutMaps<HexString>> => {\n return testMethod(this, \"hash\", params, getContractByCodeHash);\n },\n };\n\n stateForTest(\n initFields: TestMerkleProofTypes.Fields,\n asset?: Asset,\n address?: string\n ) {\n return this.stateForTest_(initFields, asset, address, undefined);\n }\n}\n\n// Use this object to test and deploy the contract\nexport const TestMerkleProof = new Factory(\n Contract.fromJson(\n TestMerkleProofContractJson,\n \"\",\n \"a6d0eadb4c4fbe25c0155c0a2e31ba6cc7a993cd27b3f708c6af418af44a7c57\",\n types.AllStructs\n )\n);\nregisterContract(TestMerkleProof);\n\n// Use this class to interact with the blockchain\nexport class TestMerkleProofInstance extends ContractInstance {\n constructor(address: Address) {\n super(address);\n }\n\n async fetchState(): Promise<TestMerkleProofTypes.State> {\n return fetchContractState(TestMerkleProof, this);\n }\n\n async getContractEventsCurrentCount(): Promise<number> {\n return getContractEventsCurrentCount(this.address);\n }\n\n subscribeUpdateRootEvent(\n options: EventSubscribeOptions<TestMerkleProofTypes.UpdateRootEvent>,\n fromCount?: number\n ): EventSubscription {\n return subscribeContractEvent(\n TestMerkleProof.contract,\n this,\n options,\n \"UpdateRoot\",\n fromCount\n );\n }\n\n view = {\n getMerkleRoot: async (\n params?: TestMerkleProofTypes.CallMethodParams<\"getMerkleRoot\">\n ): Promise<TestMerkleProofTypes.CallMethodResult<\"getMerkleRoot\">> => {\n return callMethod(\n TestMerkleProof,\n this,\n \"getMerkleRoot\",\n params === undefined ? {} : params,\n getContractByCodeHash\n );\n },\n updateRoot: async (\n params: TestMerkleProofTypes.CallMethodParams<\"updateRoot\">\n ): Promise<TestMerkleProofTypes.CallMethodResult<\"updateRoot\">> => {\n return callMethod(\n TestMerkleProof,\n this,\n \"updateRoot\",\n params,\n getContractByCodeHash\n );\n },\n verify: async (\n params: TestMerkleProofTypes.CallMethodParams<\"verify\">\n ): Promise<TestMerkleProofTypes.CallMethodResult<\"verify\">> => {\n return callMethod(\n TestMerkleProof,\n this,\n \"verify\",\n params,\n getContractByCodeHash\n );\n },\n hashPair: async (\n params: TestMerkleProofTypes.CallMethodParams<\"hashPair\">\n ): Promise<TestMerkleProofTypes.CallMethodResult<\"hashPair\">> => {\n return callMethod(\n TestMerkleProof,\n this,\n \"hashPair\",\n params,\n getContractByCodeHash\n );\n },\n hash: async (\n params: TestMerkleProofTypes.CallMethodParams<\"hash\">\n ): Promise<TestMerkleProofTypes.CallMethodResult<\"hash\">> => {\n return callMethod(\n TestMerkleProof,\n this,\n \"hash\",\n params,\n getContractByCodeHash\n );\n },\n };\n\n transact = {\n getMerkleRoot: async (\n params: TestMerkleProofTypes.SignExecuteMethodParams<\"getMerkleRoot\">\n ): Promise<\n TestMerkleProofTypes.SignExecuteMethodResult<\"getMerkleRoot\">\n > => {\n return signExecuteMethod(TestMerkleProof, this, \"getMerkleRoot\", params);\n },\n updateRoot: async (\n params: TestMerkleProofTypes.SignExecuteMethodParams<\"updateRoot\">\n ): Promise<TestMerkleProofTypes.SignExecuteMethodResult<\"updateRoot\">> => {\n return signExecuteMethod(TestMerkleProof, this, \"updateRoot\", params);\n },\n verify: async (\n params: TestMerkleProofTypes.SignExecuteMethodParams<\"verify\">\n ): Promise<TestMerkleProofTypes.SignExecuteMethodResult<\"verify\">> => {\n return signExecuteMethod(TestMerkleProof, this, \"verify\", params);\n },\n hashPair: async (\n params: TestMerkleProofTypes.SignExecuteMethodParams<\"hashPair\">\n ): Promise<TestMerkleProofTypes.SignExecuteMethodResult<\"hashPair\">> => {\n return signExecuteMethod(TestMerkleProof, this, \"hashPair\", params);\n },\n hash: async (\n params: TestMerkleProofTypes.SignExecuteMethodParams<\"hash\">\n ): Promise<TestMerkleProofTypes.SignExecuteMethodResult<\"hash\">> => {\n return signExecuteMethod(TestMerkleProof, this, \"hash\", params);\n },\n };\n\n async multicall<Calls extends TestMerkleProofTypes.MultiCallParams>(\n calls: Calls\n ): Promise<TestMerkleProofTypes.MultiCallResults<Calls>>;\n async multicall<Callss extends TestMerkleProofTypes.MultiCallParams[]>(\n callss: Narrow<Callss>\n ): Promise<TestMerkleProofTypes.MulticallReturnType<Callss>>;\n async multicall<\n Callss extends\n | TestMerkleProofTypes.MultiCallParams\n | TestMerkleProofTypes.MultiCallParams[]\n >(callss: Callss): Promise<unknown> {\n return await multicallMethods(\n TestMerkleProof,\n this,\n callss,\n getContractByCodeHash\n );\n }\n}\n","{\n \"version\": \"v4.2.5\",\n \"name\": \"TestMerkleProof\",\n \"bytecode\": \"01050e4027407b409b40a5010000000103d393f264e8a0000200000101000c16004313202f136afb7b1600a10005a000b45f0000020601402e16014313202f136afa7b160117021600431703160313202e0c2f136af97b0c170416041603314c1016001604160413202a6217051605160200031702160413202a17044a2c160271a000712f02000002020110160071160171314c05160016014400044a04160116004400040200000101010316004f02\",\n \"codeHash\": \"a6d0eadb4c4fbe25c0155c0a2e31ba6cc7a993cd27b3f708c6af418af44a7c57\",\n \"fieldsSig\": {\n \"names\": [\n \"merkleRoot\"\n ],\n \"types\": [\n \"ByteVec\"\n ],\n \"isMutable\": [\n true\n ]\n },\n \"eventsSig\": [\n {\n \"name\": \"UpdateRoot\",\n \"fieldNames\": [\n \"newMerkleRoot\",\n \"updatedBy\"\n ],\n \"fieldTypes\": [\n \"ByteVec\",\n \"Address\"\n ]\n }\n ],\n \"functions\": [\n {\n \"name\": \"getMerkleRoot\",\n \"paramNames\": [],\n \"paramTypes\": [],\n \"paramIsMutable\": [],\n \"returnTypes\": [\n \"ByteVec\"\n ]\n },\n {\n \"name\": \"updateRoot\",\n \"paramNames\": [\n \"newMerkleRoot\"\n ],\n \"paramTypes\": [\n \"ByteVec\"\n ],\n \"paramIsMutable\": [\n false\n ],\n \"returnTypes\": []\n },\n {\n \"name\": \"verify\",\n \"paramNames\": [\n \"proof\",\n \"dataHash\"\n ],\n \"paramTypes\": [\n \"ByteVec\",\n \"ByteVec\"\n ],\n \"paramIsMutable\": [\n false,\n false\n ],\n \"returnTypes\": [\n \"Bool\"\n ]\n },\n {\n \"name\": \"hashPair\",\n \"paramNames\": [\n \"a\",\n \"b\"\n ],\n \"paramTypes\": [\n \"ByteVec\",\n \"ByteVec\"\n ],\n \"paramIsMutable\": [\n false,\n false\n ],\n \"returnTypes\": [\n \"ByteVec\"\n ]\n },\n {\n \"name\": \"hash\",\n \"paramNames\": [\n \"dataToHash\"\n ],\n \"paramTypes\": [\n \"ByteVec\"\n ],\n \"paramIsMutable\": [\n false\n ],\n \"returnTypes\": [\n \"ByteVec\"\n ]\n }\n ],\n \"constants\": [],\n \"enums\": [\n {\n \"name\": \"MerkleProofErrorCodes\",\n \"fields\": [\n {\n \"name\": \"InvalidProofSize\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"11001\"\n }\n },\n {\n \"name\": \"InvalidDataHash\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"11002\"\n }\n },\n {\n \"name\": \"InvalidMerkleRoot\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"11003\"\n }\n }\n ]\n }\n ]\n}","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport {\n Address,\n Contract,\n ContractState,\n TestContractResult,\n HexString,\n ContractFactory,\n EventSubscribeOptions,\n EventSubscription,\n CallContractParams,\n CallContractResult,\n TestContractParams,\n ContractEvent,\n subscribeContractEvent,\n subscribeContractEvents,\n testMethod,\n callMethod,\n multicallMethods,\n fetchContractState,\n Asset,\n ContractInstance,\n getContractEventsCurrentCount,\n TestContractParamsWithoutMaps,\n TestContractResultWithoutMaps,\n SignExecuteContractMethodParams,\n SignExecuteScriptTxResult,\n signExecuteMethod,\n addStdIdToFields,\n encodeContractFields,\n Narrow,\n} from \"@alephium/web3\";\nimport { default as XAlphStakeVaultContractJson } from \"../XAlphStakeVault.ral.json\";\nimport { getContractByCodeHash, registerContract } from \"./contracts\";\nimport * as types from \"./types\";\nimport { RalphMap } from \"@alephium/web3\";\n\n// Custom types for the contract\nexport namespace XAlphStakeVaultTypes {\n export type Fields = {\n stakeTokenId: HexString;\n maxConnectedDapps: bigint;\n merkleRoot: HexString;\n totalStakedAmount: bigint;\n owner: Address;\n };\n\n export type State = ContractState<Fields>;\n\n export type UpdateRootEvent = ContractEvent<{\n newMerkleRoot: HexString;\n updatedBy: Address;\n }>;\n export type StakedEvent = ContractEvent<{ staker: Address; amount: bigint }>;\n export type UnstakedEvent = ContractEvent<{\n staker: Address;\n amount: bigint;\n }>;\n\n export interface CallMethodTable {\n get: {\n params: CallContractParams<{ array: HexString; index: bigint }>;\n result: CallContractResult<HexString>;\n };\n find: {\n params: CallContractParams<{ array: HexString; value: HexString }>;\n result: CallContractResult<bigint>;\n };\n remove: {\n params: CallContractParams<{ array: HexString; value: HexString }>;\n result: CallContractResult<HexString>;\n };\n push: {\n params: CallContractParams<{ array: HexString; value: HexString }>;\n result: CallContractResult<HexString>;\n };\n removeAt: {\n params: CallContractParams<{ array: HexString; index: bigint }>;\n result: CallContractResult<HexString>;\n };\n size: {\n params: CallContractParams<{ array: HexString }>;\n result: CallContractResult<bigint>;\n };\n empty: {\n params: Omit<CallContractParams<{}>, \"args\">;\n result: CallContractResult<HexString>;\n };\n getMerkleRoot: {\n params: Omit<CallContractParams<{}>, \"args\">;\n result: CallContractResult<HexString>;\n };\n updateRoot: {\n params: CallContractParams<{ newMerkleRoot: HexString }>;\n result: CallContractResult<null>;\n };\n verify: {\n params: CallContractParams<{ proof: HexString; dataHash: HexString }>;\n result: CallContractResult<boolean>;\n };\n hashPair: {\n params: CallContractParams<{ a: HexString; b: HexString }>;\n result: CallContractResult<HexString>;\n };\n hash: {\n params: CallContractParams<{ dataToHash: HexString }>;\n result: CallContractResult<HexString>;\n };\n getStakeTokenId: {\n params: Omit<CallContractParams<{}>, \"args\">;\n result: CallContractResult<HexString>;\n };\n getUserStakingInfo: {\n params: CallContractParams<{ user: Address }>;\n result: CallContractResult<types.UserStakingInfo>;\n };\n isStaking: {\n params: CallContractParams<{ user: Address }>;\n result: CallContractResult<boolean>;\n };\n stake: {\n params: CallContractParams<{ amount: bigint }>;\n result: CallContractResult<null>;\n };\n unstake: {\n params: CallContractParams<{ amount: bigint }>;\n result: CallContractResult<null>;\n };\n connectToDapp: {\n params: CallContractParams<{\n contractId: HexString;\n merkleProof: HexString;\n }>;\n result: CallContractResult<null>;\n };\n disconnectFromDapp: {\n params: CallContractParams<{ contractId: HexString }>;\n result: CallContractResult<null>;\n };\n getWeight: {\n params: CallContractParams<{ user: Address }>;\n result: CallContractResult<bigint>;\n };\n updateDappTemplatesWhitelistMerkleRoot: {\n params: CallContractParams<{ newMerkleRoot: HexString }>;\n result: CallContractResult<null>;\n };\n updateOwner: {\n params: CallContractParams<{ newOwner: Address }>;\n result: CallContractResult<null>;\n };\n verifyDappTemplatesWhiteListed: {\n params: CallContractParams<{ proof: HexString; contractId: HexString }>;\n result: CallContractResult<boolean>;\n };\n }\n export type CallMethodParams<T extends keyof CallMethodTable> =\n CallMethodTable[T][\"params\"];\n export type CallMethodResult<T extends keyof CallMethodTable> =\n CallMethodTable[T][\"result\"];\n export type MultiCallParams = Partial<{\n [Name in keyof CallMethodTable]: CallMethodTable[Name][\"params\"];\n }>;\n export type MultiCallResults<T extends MultiCallParams> = {\n [MaybeName in keyof T]: MaybeName extends keyof CallMethodTable\n ? CallMethodTable[MaybeName][\"result\"]\n : undefined;\n };\n export type MulticallReturnType<Callss extends MultiCallParams[]> = {\n [index in keyof Callss]: MultiCallResults<Callss[index]>;\n };\n\n export interface SignExecuteMethodTable {\n get: {\n params: SignExecuteContractMethodParams<{\n array: HexString;\n index: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n find: {\n params: SignExecuteContractMethodParams<{\n array: HexString;\n value: HexString;\n }>;\n result: SignExecuteScriptTxResult;\n };\n remove: {\n params: SignExecuteContractMethodParams<{\n array: HexString;\n value: HexString;\n }>;\n result: SignExecuteScriptTxResult;\n };\n push: {\n params: SignExecuteContractMethodParams<{\n array: HexString;\n value: HexString;\n }>;\n result: SignExecuteScriptTxResult;\n };\n removeAt: {\n params: SignExecuteContractMethodParams<{\n array: HexString;\n index: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n size: {\n params: SignExecuteContractMethodParams<{ array: HexString }>;\n result: SignExecuteScriptTxResult;\n };\n empty: {\n params: Omit<SignExecuteContractMethodParams<{}>, \"args\">;\n result: SignExecuteScriptTxResult;\n };\n getMerkleRoot: {\n params: Omit<SignExecuteContractMethodParams<{}>, \"args\">;\n result: SignExecuteScriptTxResult;\n };\n updateRoot: {\n params: SignExecuteContractMethodParams<{ newMerkleRoot: HexString }>;\n result: SignExecuteScriptTxResult;\n };\n verify: {\n params: SignExecuteContractMethodParams<{\n proof: HexString;\n dataHash: HexString;\n }>;\n result: SignExecuteScriptTxResult;\n };\n hashPair: {\n params: SignExecuteContractMethodParams<{ a: HexString; b: HexString }>;\n result: SignExecuteScriptTxResult;\n };\n hash: {\n params: SignExecuteContractMethodParams<{ dataToHash: HexString }>;\n result: SignExecuteScriptTxResult;\n };\n getStakeTokenId: {\n params: Omit<SignExecuteContractMethodParams<{}>, \"args\">;\n result: SignExecuteScriptTxResult;\n };\n getUserStakingInfo: {\n params: SignExecuteContractMethodParams<{ user: Address }>;\n result: SignExecuteScriptTxResult;\n };\n isStaking: {\n params: SignExecuteContractMethodParams<{ user: Address }>;\n result: SignExecuteScriptTxResult;\n };\n stake: {\n params: SignExecuteContractMethodParams<{ amount: bigint }>;\n result: SignExecuteScriptTxResult;\n };\n unstake: {\n params: SignExecuteContractMethodParams<{ amount: bigint }>;\n result: SignExecuteScriptTxResult;\n };\n connectToDapp: {\n params: SignExecuteContractMethodParams<{\n contractId: HexString;\n merkleProof: HexString;\n }>;\n result: SignExecuteScriptTxResult;\n };\n disconnectFromDapp: {\n params: SignExecuteContractMethodParams<{ contractId: HexString }>;\n result: SignExecuteScriptTxResult;\n };\n getWeight: {\n params: SignExecuteContractMethodParams<{ user: Address }>;\n result: SignExecuteScriptTxResult;\n };\n updateDappTemplatesWhitelistMerkleRoot: {\n params: SignExecuteContractMethodParams<{ newMerkleRoot: HexString }>;\n result: SignExecuteScriptTxResult;\n };\n updateOwner: {\n params: SignExecuteContractMethodParams<{ newOwner: Address }>;\n result: SignExecuteScriptTxResult;\n };\n verifyDappTemplatesWhiteListed: {\n params: SignExecuteContractMethodParams<{\n proof: HexString;\n contractId: HexString;\n }>;\n result: SignExecuteScriptTxResult;\n };\n }\n export type SignExecuteMethodParams<T extends keyof SignExecuteMethodTable> =\n SignExecuteMethodTable[T][\"params\"];\n export type SignExecuteMethodResult<T extends keyof SignExecuteMethodTable> =\n SignExecuteMethodTable[T][\"result\"];\n\n export type Maps = { userStakingInfo?: Map<Address, types.UserStakingInfo> };\n}\n\nclass Factory extends ContractFactory<\n XAlphStakeVaultInstance,\n XAlphStakeVaultTypes.Fields\n> {\n encodeFields(fields: XAlphStakeVaultTypes.Fields) {\n return encodeContractFields(\n addStdIdToFields(this.contract, fields),\n this.contract.fieldsSig,\n types.AllStructs\n );\n }\n\n eventIndex = { UpdateRoot: 0, Staked: 1, Unstaked: 2 };\n consts = {\n IntByteLength: BigInt(\"32\"),\n WEIGHT_SCALING_FACTOR: BigInt(\"1000000000000000000\"),\n ErrorCode: {\n InvalidArrayLength: BigInt(\"550\"),\n IndexOutOfBound: BigInt(\"551\"),\n InvalidByteVecLength: BigInt(\"552\"),\n },\n MerkleProofErrorCodes: {\n InvalidProofSize: BigInt(\"11001\"),\n InvalidDataHash: BigInt(\"11002\"),\n InvalidMerkleRoot: BigInt(\"11003\"),\n },\n ErrorCodes: {\n NotOwner: BigInt(\"300\"),\n AssetAddressCallerOnly: BigInt(\"301\"),\n NoStakingInfo: BigInt(\"302\"),\n InsufficientStakedAmount: BigInt(\"303\"),\n InvalidStakedAmount: BigInt(\"304\"),\n InvalidUnstakedAmount: BigInt(\"305\"),\n MaxConnectedDappsReached: BigInt(\"306\"),\n DappAlreadyConnected: BigInt(\"307\"),\n DappNotConnected: BigInt(\"308\"),\n DappNotAllowed: BigInt(\"309\"),\n },\n };\n\n at(address: string): XAlphStakeVaultInstance {\n return new XAlphStakeVaultInstance(address);\n }\n\n tests = {\n get: async (\n params: TestContractParams<\n XAlphStakeVaultTypes.Fields,\n { array: HexString; index: bigint },\n XAlphStakeVaultTypes.Maps\n >\n ): Promise<TestContractResult<HexString, XAlphStakeVaultTypes.Maps>> => {\n return testMethod(this, \"get\", params, getContractByCodeHash);\n },\n find: async (\n params: TestContractParams<\n XAlphStakeVaultTypes.Fields,\n { array: HexString; value: HexString },\n XAlphStakeVaultTypes.Maps\n >\n ): Promise<TestContractResult<bigint, XAlphStakeVaultTypes.Maps>> => {\n return testMethod(this, \"find\", params, getContractByCodeHash);\n },\n remove: async (\n params: TestContractParams<\n XAlphStakeVaultTypes.Fields,\n { array: HexString; value: HexString },\n XAlphStakeVaultTypes.Maps\n >\n ): Promise<TestContractResult<HexString, XAlphStakeVaultTypes.Maps>> => {\n return testMethod(this, \"remove\", params, getContractByCodeHash);\n },\n push: async (\n params: TestContractParams<\n XAlphStakeVaultTypes.Fields,\n { array: HexString; value: HexString },\n XAlphStakeVaultTypes.Maps\n >\n ): Promise<TestContractResult<HexString, XAlphStakeVaultTypes.Maps>> => {\n return testMethod(this, \"push\", params, getContractByCodeHash);\n },\n removeAt: async (\n params: TestContractParams<\n XAlphStakeVaultTypes.Fields,\n { array: HexString; index: bigint },\n XAlphStakeVaultTypes.Maps\n >\n ): Promise<TestContractResult<HexString, XAlphStakeVaultTypes.Maps>> => {\n return testMethod(this, \"removeAt\", params, getContractByCodeHash);\n },\n size: async (\n params: TestContractParams<\n XAlphStakeVaultTypes.Fields,\n { array: HexString },\n XAlphStakeVaultTypes.Maps\n >\n ): Promise<TestContractResult<bigint, XAlphStakeVaultTypes.Maps>> => {\n return testMethod(this, \"size\", params, getContractByCodeHash);\n },\n empty: async (\n params: Omit<\n TestContractParams<\n XAlphStakeVaultTypes.Fields,\n never,\n XAlphStakeVaultTypes.Maps\n >,\n \"args\"\n >\n ): Promise<TestContractResult<HexString, XAlphStakeVaultTypes.Maps>> => {\n return testMethod(this, \"empty\", params, getContractByCodeHash);\n },\n getMerkleRoot: async (\n params: Omit<\n TestContractParams<\n XAlphStakeVaultTypes.Fields,\n never,\n XAlphStakeVaultTypes.Maps\n >,\n \"args\"\n >\n ): Promise<TestContractResult<HexString, XAlphStakeVaultTypes.Maps>> => {\n return testMethod(this, \"getMerkleRoot\", params, getContractByCodeHash);\n },\n updateRoot: async (\n params: TestContractParams<\n XAlphStakeVaultTypes.Fields,\n { newMerkleRoot: HexString },\n XAlphStakeVaultTypes.Maps\n >\n ): Promise<TestContractResult<null, XAlphStakeVaultTypes.Maps>> => {\n return testMethod(this, \"updateRoot\", params, getContractByCodeHash);\n },\n verify: async (\n params: TestContractParams<\n XAlphStakeVaultTypes.Fields,\n { proof: HexString; dataHash: HexString },\n XAlphStakeVaultTypes.Maps\n >\n ): Promise<TestContractResult<boolean, XAlphStakeVaultTypes.Maps>> => {\n return testMethod(this, \"verify\", params, getContractByCodeHash);\n },\n hashPair: async (\n params: TestContractParams<\n XAlphStakeVaultTypes.Fields,\n { a: HexString; b: HexString },\n XAlphStakeVaultTypes.Maps\n >\n ): Promise<TestContractResult<HexString, XAlphStakeVaultTypes.Maps>> => {\n return testMethod(this, \"hashPair\", params, getContractByCodeHash);\n },\n hash: async (\n params: TestContractParams<\n XAlphStakeVaultTypes.Fields,\n { dataToHash: HexString },\n XAlphStakeVaultTypes.Maps\n >\n ): Promise<TestContractResult<HexString, XAlphStakeVaultTypes.Maps>> => {\n return testMethod(this, \"hash\", params, getContractByCodeHash);\n },\n getStakeTokenId: async (\n params: Omit<\n TestContractParams<\n XAlphStakeVaultTypes.Fields,\n never,\n XAlphStakeVaultTypes.Maps\n >,\n \"args\"\n >\n ): Promise<TestContractResult<HexString, XAlphStakeVaultTypes.Maps>> => {\n return testMethod(this, \"getStakeTokenId\", params, getContractByCodeHash);\n },\n getUserStakingInfo: async (\n params: TestContractParams<\n XAlphStakeVaultTypes.Fields,\n { user: Address },\n XAlphStakeVaultTypes.Maps\n >\n ): Promise<\n TestContractResult<types.UserStakingInfo, XAlphStakeVaultTypes.Maps>\n > => {\n return testMethod(\n this,\n \"getUserStakingInfo\",\n params,\n getContractByCodeHash\n );\n },\n isStaking: async (\n params: TestContractParams<\n XAlphStakeVaultTypes.Fields,\n { user: Address },\n XAlphStakeVaultTypes.Maps\n >\n ): Promise<TestContractResult<boolean, XAlphStakeVaultTypes.Maps>> => {\n return testMethod(this, \"isStaking\", params, getContractByCodeHash);\n },\n stake: async (\n params: TestContractParams<\n XAlphStakeVaultTypes.Fields,\n { amount: bigint },\n XAlphStakeVaultTypes.Maps\n >\n ): Promise<TestContractResult<null, XAlphStakeVaultTypes.Maps>> => {\n return testMethod(this, \"stake\", params, getContractByCodeHash);\n },\n unstake: async (\n params: TestContractParams<\n XAlphStakeVaultTypes.Fields,\n { amount: bigint },\n XAlphStakeVaultTypes.Maps\n >\n ): Promise<TestContractResult<null, XAlphStakeVaultTypes.Maps>> => {\n return testMethod(this, \"unstake\", params, getContractByCodeHash);\n },\n connectToDapp: async (\n params: TestContractParams<\n XAlphStakeVaultTypes.Fields,\n { contractId: HexString; merkleProof: HexString },\n XAlphStakeVaultTypes.Maps\n >\n ): Promise<TestContractResult<null, XAlphStakeVaultTypes.Maps>> => {\n return testMethod(this, \"connectToDapp\", params, getContractByCodeHash);\n },\n disconnectFromDapp: async (\n params: TestContractParams<\n XAlphStakeVaultTypes.Fields,\n { contractId: HexString },\n XAlphStakeVaultTypes.Maps\n >\n ): Promise<TestContractResult<null, XAlphStakeVaultTypes.Maps>> => {\n return testMethod(\n this,\n \"disconnectFromDapp\",\n params,\n getContractByCodeHash\n );\n },\n getWeight: async (\n params: TestContractParams<\n XAlphStakeVaultTypes.Fields,\n { user: Address },\n XAlphStakeVaultTypes.Maps\n >\n ): Promise<TestContractResult<bigint, XAlphStakeVaultTypes.Maps>> => {\n return testMethod(this, \"getWeight\", params, getContractByCodeHash);\n },\n updateDappTemplatesWhitelistMerkleRoot: async (\n params: TestContractParams<\n XAlphStakeVaultTypes.Fields,\n { newMerkleRoot: HexString },\n XAlphStakeVaultTypes.Maps\n >\n ): Promise<TestContractResult<null, XAlphStakeVaultTypes.Maps>> => {\n return testMethod(\n this,\n \"updateDappTemplatesWhitelistMerkleRoot\",\n params,\n getContractByCodeHash\n );\n },\n updateOwner: async (\n params: TestContractParams<\n XAlphStakeVaultTypes.Fields,\n { newOwner: Address },\n XAlphStakeVaultTypes.Maps\n >\n ): Promise<TestContractResult<null, XAlphStakeVaultTypes.Maps>> => {\n return testMethod(this, \"updateOwner\", params, getContractByCodeHash);\n },\n verifyDappTemplatesWhiteListed: async (\n params: TestContractParams<\n XAlphStakeVaultTypes.Fields,\n { proof: HexString; contractId: HexString },\n XAlphStakeVaultTypes.Maps\n >\n ): Promise<TestContractResult<boolean, XAlphStakeVaultTypes.Maps>> => {\n return testMethod(\n this,\n \"verifyDappTemplatesWhiteListed\",\n params,\n getContractByCodeHash\n );\n },\n };\n\n stateForTest(\n initFields: XAlphStakeVaultTypes.Fields,\n asset?: Asset,\n address?: string,\n maps?: XAlphStakeVaultTypes.Maps\n ) {\n return this.stateForTest_(initFields, asset, address, maps);\n }\n}\n\n// Use this object to test and deploy the contract\nexport const XAlphStakeVault = new Factory(\n Contract.fromJson(\n XAlphStakeVaultContractJson,\n \"=66-2+29=1-3=1+22=1-1+4=1+d=2-2+43=2-2+92=2-2+a9=2-2+c0=2-2+d9=1166-2+61=323-1+b=34+7a7e0214696e73657274206174206d617020706174683a2000=55-1+d=297-1+c=38+7a7e021472656d6f7665206174206d617020706174683a2000=976\",\n \"5a98904451536bfc5851ac53658d832b096d820da66892272b361692d7a31790\",\n types.AllStructs\n )\n);\nregisterContract(XAlphStakeVault);\n\n// Use this class to interact with the blockchain\nexport class XAlphStakeVaultInstance extends ContractInstance {\n constructor(address: Address) {\n super(address);\n }\n\n maps = {\n userStakingInfo: new RalphMap<Address, types.UserStakingInfo>(\n XAlphStakeVault.contract,\n this.contractId,\n \"userStakingInfo\"\n ),\n };\n\n async fetchState(): Promise<XAlphStakeVaultTypes.State> {\n return fetchContractState(XAlphStakeVault, this);\n }\n\n async getContractEventsCurrentCount(): Promise<number> {\n return getContractEventsCurrentCount(this.address);\n }\n\n subscribeUpdateRootEvent(\n options: EventSubscribeOptions<XAlphStakeVaultTypes.UpdateRootEvent>,\n fromCount?: number\n ): EventSubscription {\n return subscribeContractEvent(\n XAlphStakeVault.contract,\n this,\n options,\n \"UpdateRoot\",\n fromCount\n );\n }\n\n subscribeStakedEvent(\n options: EventSubscribeOptions<XAlphStakeVaultTypes.StakedEvent>,\n fromCount?: number\n ): EventSubscription {\n return subscribeContractEvent(\n XAlphStakeVault.contract,\n this,\n options,\n \"Staked\",\n fromCount\n );\n }\n\n subscribeUnstakedEvent(\n options: EventSubscribeOptions<XAlphStakeVaultTypes.UnstakedEvent>,\n fromCount?: number\n ): EventSubscription {\n return subscribeContractEvent(\n XAlphStakeVault.contract,\n this,\n options,\n \"Unstaked\",\n fromCount\n );\n }\n\n subscribeAllEvents(\n options: EventSubscribeOptions<\n | XAlphStakeVaultTypes.UpdateRootEvent\n | XAlphStakeVaultTypes.StakedEvent\n | XAlphStakeVaultTypes.UnstakedEvent\n >,\n fromCount?: number\n ): EventSubscription {\n return subscribeContractEvents(\n XAlphStakeVault.contract,\n this,\n options,\n fromCount\n );\n }\n\n view = {\n get: async (\n params: XAlphStakeVaultTypes.CallMethodParams<\"get\">\n ): Promise<XAlphStakeVaultTypes.CallMethodResult<\"get\">> => {\n return callMethod(\n XAlphStakeVault,\n this,\n \"get\",\n params,\n getContractByCodeHash\n );\n },\n find: async (\n params: XAlphStakeVaultTypes.CallMethodParams<\"find\">\n ): Promise<XAlphStakeVaultTypes.CallMethodResult<\"find\">> => {\n return callMethod(\n XAlphStakeVault,\n this,\n \"find\",\n params,\n getContractByCodeHash\n );\n },\n remove: async (\n params: XAlphStakeVaultTypes.CallMethodParams<\"remove\">\n ): Promise<XAlphStakeVaultTypes.CallMethodResult<\"remove\">> => {\n return callMethod(\n XAlphStakeVault,\n this,\n \"remove\",\n params,\n getContractByCodeHash\n );\n },\n push: async (\n params: XAlphStakeVaultTypes.CallMethodParams<\"push\">\n ): Promise<XAlphStakeVaultTypes.CallMethodResult<\"push\">> => {\n return callMethod(\n XAlphStakeVault,\n this,\n \"push\",\n params,\n getContractByCodeHash\n );\n },\n removeAt: async (\n params: XAlphStakeVaultTypes.CallMethodParams<\"removeAt\">\n ): Promise<XAlphStakeVaultTypes.CallMethodResult<\"removeAt\">> => {\n return callMethod(\n XAlphStakeVault,\n this,\n \"removeAt\",\n params,\n getContractByCodeHash\n );\n },\n size: async (\n params: XAlphStakeVaultTypes.CallMethodParams<\"size\">\n ): Promise<XAlphStakeVaultTypes.CallMethodResult<\"size\">> => {\n return callMethod(\n XAlphStakeVault,\n this,\n \"size\",\n params,\n getContractByCodeHash\n );\n },\n empty: async (\n params?: XAlphStakeVaultTypes.CallMethodParams<\"empty\">\n ): Promise<XAlphStakeVaultTypes.CallMethodResult<\"empty\">> => {\n return callMethod(\n XAlphStakeVault,\n this,\n \"empty\",\n params === undefined ? {} : params,\n getContractByCodeHash\n );\n },\n getMerkleRoot: async (\n params?: XAlphStakeVaultTypes.CallMethodParams<\"getMerkleRoot\">\n ): Promise<XAlphStakeVaultTypes.CallMethodResult<\"getMerkleRoot\">> => {\n return callMethod(\n XAlphStakeVault,\n this,\n \"getMerkleRoot\",\n params === undefined ? {} : params,\n getContractByCodeHash\n );\n },\n updateRoot: async (\n params: XAlphStakeVaultTypes.CallMethodParams<\"updateRoot\">\n ): Promise<XAlphStakeVaultTypes.CallMethodResult<\"updateRoot\">> => {\n return callMethod(\n XAlphStakeVault,\n this,\n \"updateRoot\",\n params,\n getContractByCodeHash\n );\n },\n verify: async (\n params: XAlphStakeVaultTypes.CallMethodParams<\"verify\">\n ): Promise<XAlphStakeVaultTypes.CallMethodResult<\"verify\">> => {\n return callMethod(\n XAlphStakeVault,\n this,\n \"verify\",\n params,\n getContractByCodeHash\n );\n },\n hashPair: async (\n params: XAlphStakeVaultTypes.CallMethodParams<\"hashPair\">\n ): Promise<XAlphStakeVaultTypes.CallMethodResult<\"hashPair\">> => {\n return callMethod(\n XAlphStakeVault,\n this,\n \"hashPair\",\n params,\n getContractByCodeHash\n );\n },\n hash: async (\n params: XAlphStakeVaultTypes.CallMethodParams<\"hash\">\n ): Promise<XAlphStakeVaultTypes.CallMethodResult<\"hash\">> => {\n return callMethod(\n XAlphStakeVault,\n this,\n \"hash\",\n params,\n getContractByCodeHash\n );\n },\n getStakeTokenId: async (\n params?: XAlphStakeVaultTypes.CallMethodParams<\"getStakeTokenId\">\n ): Promise<XAlphStakeVaultTypes.CallMethodResult<\"getStakeTokenId\">> => {\n return callMethod(\n XAlphStakeVault,\n this,\n \"getStakeTokenId\",\n params === undefined ? {} : params,\n getContractByCodeHash\n );\n },\n getUserStakingInfo: async (\n params: XAlphStakeVaultTypes.CallMethodParams<\"getUserStakingInfo\">\n ): Promise<XAlphStakeVaultTypes.CallMethodResult<\"getUserStakingInfo\">> => {\n return callMethod(\n XAlphStakeVault,\n this,\n \"getUserStakingInfo\",\n params,\n getContractByCodeHash\n );\n },\n isStaking: async (\n params: XAlphStakeVaultTypes.CallMethodParams<\"isStaking\">\n ): Promise<XAlphStakeVaultTypes.CallMethodResult<\"isStaking\">> => {\n return callMethod(\n XAlphStakeVault,\n this,\n \"isStaking\",\n params,\n getContractByCodeHash\n );\n },\n stake: async (\n params: XAlphStakeVaultTypes.CallMethodParams<\"stake\">\n ): Promise<XAlphStakeVaultTypes.CallMethodResult<\"stake\">> => {\n return callMethod(\n XAlphStakeVault,\n this,\n \"stake\",\n params,\n getContractByCodeHash\n );\n },\n unstake: async (\n params: XAlphStakeVaultTypes.CallMethodParams<\"unstake\">\n ): Promise<XAlphStakeVaultTypes.CallMethodResult<\"unstake\">> => {\n return callMethod(\n XAlphStakeVault,\n this,\n \"unstake\",\n params,\n getContractByCodeHash\n );\n },\n connectToDapp: async (\n params: XAlphStakeVaultTypes.CallMethodParams<\"connectToDapp\">\n ): Promise<XAlphStakeVaultTypes.CallMethodResult<\"connectToDapp\">> => {\n return callMethod(\n XAlphStakeVault,\n this,\n \"connectToDapp\",\n params,\n getContractByCodeHash\n );\n },\n disconnectFromDapp: async (\n params: XAlphStakeVaultTypes.CallMethodParams<\"disconnectFromDapp\">\n ): Promise<XAlphStakeVaultTypes.CallMethodResult<\"disconnectFromDapp\">> => {\n return callMethod(\n XAlphStakeVault,\n this,\n \"disconnectFromDapp\",\n params,\n getContractByCodeHash\n );\n },\n getWeight: async (\n params: XAlphStakeVaultTypes.CallMethodParams<\"getWeight\">\n ): Promise<XAlphStakeVaultTypes.CallMethodResult<\"getWeight\">> => {\n return callMethod(\n XAlphStakeVault,\n this,\n \"getWeight\",\n params,\n getContractByCodeHash\n );\n },\n updateDappTemplatesWhitelistMerkleRoot: async (\n params: XAlphStakeVaultTypes.CallMethodParams<\"updateDappTemplatesWhitelistMerkleRoot\">\n ): Promise<\n XAlphStakeVaultTypes.CallMethodResult<\"updateDappTemplatesWhitelistMerkleRoot\">\n > => {\n return callMethod(\n XAlphStakeVault,\n this,\n \"updateDappTemplatesWhitelistMerkleRoot\",\n params,\n getContractByCodeHash\n );\n },\n updateOwner: async (\n params: XAlphStakeVaultTypes.CallMethodParams<\"updateOwner\">\n ): Promise<XAlphStakeVaultTypes.CallMethodResult<\"updateOwner\">> => {\n return callMethod(\n XAlphStakeVault,\n this,\n \"updateOwner\",\n params,\n getContractByCodeHash\n );\n },\n verifyDappTemplatesWhiteListed: async (\n params: XAlphStakeVaultTypes.CallMethodParams<\"verifyDappTemplatesWhiteListed\">\n ): Promise<\n XAlphStakeVaultTypes.CallMethodResult<\"verifyDappTemplatesWhiteListed\">\n > => {\n return callMethod(\n XAlphStakeVault,\n this,\n \"verifyDappTemplatesWhiteListed\",\n params,\n getContractByCodeHash\n );\n },\n };\n\n transact = {\n get: async (\n params: XAlphStakeVaultTypes.SignExecuteMethodParams<\"get\">\n ): Promise<XAlphStakeVaultTypes.SignExecuteMethodResult<\"get\">> => {\n return signExecuteMethod(XAlphStakeVault, this, \"get\", params);\n },\n find: async (\n params: XAlphStakeVaultTypes.SignExecuteMethodParams<\"find\">\n ): Promise<XAlphStakeVaultTypes.SignExecuteMethodResult<\"find\">> => {\n return signExecuteMethod(XAlphStakeVault, this, \"find\", params);\n },\n remove: async (\n params: XAlphStakeVaultTypes.SignExecuteMethodParams<\"remove\">\n ): Promise<XAlphStakeVaultTypes.SignExecuteMethodResult<\"remove\">> => {\n return signExecuteMethod(XAlphStakeVault, this, \"remove\", params);\n },\n push: async (\n params: XAlphStakeVaultTypes.SignExecuteMethodParams<\"push\">\n ): Promise<XAlphStakeVaultTypes.SignExecuteMethodResult<\"push\">> => {\n return signExecuteMethod(XAlphStakeVault, this, \"push\", params);\n },\n removeAt: async (\n params: XAlphStakeVaultTypes.SignExecuteMethodParams<\"removeAt\">\n ): Promise<XAlphStakeVaultTypes.SignExecuteMethodResult<\"removeAt\">> => {\n return signExecuteMethod(XAlphStakeVault, this, \"removeAt\", params);\n },\n size: async (\n params: XAlphStakeVaultTypes.SignExecuteMethodParams<\"size\">\n ): Promise<XAlphStakeVaultTypes.SignExecuteMethodResult<\"size\">> => {\n return signExecuteMethod(XAlphStakeVault, this, \"size\", params);\n },\n empty: async (\n params: XAlphStakeVaultTypes.SignExecuteMethodParams<\"empty\">\n ): Promise<XAlphStakeVaultTypes.SignExecuteMethodResult<\"empty\">> => {\n return signExecuteMethod(XAlphStakeVault, this, \"empty\", params);\n },\n getMerkleRoot: async (\n params: XAlphStakeVaultTypes.SignExecuteMethodParams<\"getMerkleRoot\">\n ): Promise<\n XAlphStakeVaultTypes.SignExecuteMethodResult<\"getMerkleRoot\">\n > => {\n return signExecuteMethod(XAlphStakeVault, this, \"getMerkleRoot\", params);\n },\n updateRoot: async (\n params: XAlphStakeVaultTypes.SignExecuteMethodParams<\"updateRoot\">\n ): Promise<XAlphStakeVaultTypes.SignExecuteMethodResult<\"updateRoot\">> => {\n return signExecuteMethod(XAlphStakeVault, this, \"updateRoot\", params);\n },\n verify: async (\n params: XAlphStakeVaultTypes.SignExecuteMethodParams<\"verify\">\n ): Promise<XAlphStakeVaultTypes.SignExecuteMethodResult<\"verify\">> => {\n return signExecuteMethod(XAlphStakeVault, this, \"verify\", params);\n },\n hashPair: async (\n params: XAlphStakeVaultTypes.SignExecuteMethodParams<\"hashPair\">\n ): Promise<XAlphStakeVaultTypes.SignExecuteMethodResult<\"hashPair\">> => {\n return signExecuteMethod(XAlphStakeVault, this, \"hashPair\", params);\n },\n hash: async (\n params: XAlphStakeVaultTypes.SignExecuteMethodParams<\"hash\">\n ): Promise<XAlphStakeVaultTypes.SignExecuteMethodResult<\"hash\">> => {\n return signExecuteMethod(XAlphStakeVault, this, \"hash\", params);\n },\n getStakeTokenId: async (\n params: XAlphStakeVaultTypes.SignExecuteMethodParams<\"getStakeTokenId\">\n ): Promise<\n XAlphStakeVaultTypes.SignExecuteMethodResult<\"getStakeTokenId\">\n > => {\n return signExecuteMethod(\n XAlphStakeVault,\n this,\n \"getStakeTokenId\",\n params\n );\n },\n getUserStakingInfo: async (\n params: XAlphStakeVaultTypes.SignExecuteMethodParams<\"getUserStakingInfo\">\n ): Promise<\n XAlphStakeVaultTypes.SignExecuteMethodResult<\"getUserStakingInfo\">\n > => {\n return signExecuteMethod(\n XAlphStakeVault,\n this,\n \"getUserStakingInfo\",\n params\n );\n },\n isStaking: async (\n params: XAlphStakeVaultTypes.SignExecuteMethodParams<\"isStaking\">\n ): Promise<XAlphStakeVaultTypes.SignExecuteMethodResult<\"isStaking\">> => {\n return signExecuteMethod(XAlphStakeVault, this, \"isStaking\", params);\n },\n stake: async (\n params: XAlphStakeVaultTypes.SignExecuteMethodParams<\"stake\">\n ): Promise<XAlphStakeVaultTypes.SignExecuteMethodResult<\"stake\">> => {\n return signExecuteMethod(XAlphStakeVault, this, \"stake\", params);\n },\n unstake: async (\n params: XAlphStakeVaultTypes.SignExecuteMethodParams<\"unstake\">\n ): Promise<XAlphStakeVaultTypes.SignExecuteMethodResult<\"unstake\">> => {\n return signExecuteMethod(XAlphStakeVault, this, \"unstake\", params);\n },\n connectToDapp: async (\n params: XAlphStakeVaultTypes.SignExecuteMethodParams<\"connectToDapp\">\n ): Promise<\n XAlphStakeVaultTypes.SignExecuteMethodResult<\"connectToDapp\">\n > => {\n return signExecuteMethod(XAlphStakeVault, this, \"connectToDapp\", params);\n },\n disconnectFromDapp: async (\n params: XAlphStakeVaultTypes.SignExecuteMethodParams<\"disconnectFromDapp\">\n ): Promise<\n XAlphStakeVaultTypes.SignExecuteMethodResult<\"disconnectFromDapp\">\n > => {\n return signExecuteMethod(\n XAlphStakeVault,\n this,\n \"disconnectFromDapp\",\n params\n );\n },\n getWeight: async (\n params: XAlphStakeVaultTypes.SignExecuteMethodParams<\"getWeight\">\n ): Promise<XAlphStakeVaultTypes.SignExecuteMethodResult<\"getWeight\">> => {\n return signExecuteMethod(XAlphStakeVault, this, \"getWeight\", params);\n },\n updateDappTemplatesWhitelistMerkleRoot: async (\n params: XAlphStakeVaultTypes.SignExecuteMethodParams<\"updateDappTemplatesWhitelistMerkleRoot\">\n ): Promise<\n XAlphStakeVaultTypes.SignExecuteMethodResult<\"updateDappTemplatesWhitelistMerkleRoot\">\n > => {\n return signExecuteMethod(\n XAlphStakeVault,\n this,\n \"updateDappTemplatesWhitelistMerkleRoot\",\n params\n );\n },\n updateOwner: async (\n params: XAlphStakeVaultTypes.SignExecuteMethodParams<\"updateOwner\">\n ): Promise<XAlphStakeVaultTypes.SignExecuteMethodResult<\"updateOwner\">> => {\n return signExecuteMethod(XAlphStakeVault, this, \"updateOwner\", params);\n },\n verifyDappTemplatesWhiteListed: async (\n params: XAlphStakeVaultTypes.SignExecuteMethodParams<\"verifyDappTemplatesWhiteListed\">\n ): Promise<\n XAlphStakeVaultTypes.SignExecuteMethodResult<\"verifyDappTemplatesWhiteListed\">\n > => {\n return signExecuteMethod(\n XAlphStakeVault,\n this,\n \"verifyDappTemplatesWhiteListed\",\n params\n );\n },\n };\n\n async multicall<Calls extends XAlphStakeVaultTypes.MultiCallParams>(\n calls: Calls\n ): Promise<XAlphStakeVaultTypes.MultiCallResults<Calls>>;\n async multicall<Callss extends XAlphStakeVaultTypes.MultiCallParams[]>(\n callss: Narrow<Callss>\n ): Promise<XAlphStakeVaultTypes.MulticallReturnType<Callss>>;\n async multicall<\n Callss extends\n | XAlphStakeVaultTypes.MultiCallParams\n | XAlphStakeVaultTypes.MultiCallParams[]\n >(callss: Callss): Promise<unknown> {\n return await multicallMethods(\n XAlphStakeVault,\n this,\n callss,\n getContractByCodeHash\n );\n }\n}\n","{\n \"version\": \"v4.2.5\",\n \"name\": \"XAlphStakeVault\",\n \"bytecode\": \"05174028407340af40cc40fc411a41284136414f41a341c341cd41db42234241431043f0448b451145604577458e45a7010002030112d3545eacd4160116000005311342277b160113202c170216001602160213202a620201000204014028d3083a358916004313202e0c2f1342267b16014313202f1342287b1600000517020c170316031602314c0e1600160300001601414c0316033f0216030d2a17034a2e0b0201000203011fd3694941c216004313202e0c2f1342267b16014313202f1342287b160016010001170216020b244c031600024a05160016023d00040201000202010dd354ad273416004313202e0c2f1342267b160016014402010002030118d34b2e25b7160116000005311342277b160113202c170216000c1602621600160213202a16004362440201000101010ed30041471116004313202e0c2f1342267b16004313202d02010000000103d3676c3c33140002010000000103d393f264e8a0000200000101000c16004313202f136afb7b1600a10005a000b45f0000020601402e16014313202f136afa7b160117021600431703160313202e0c2f136af97b0c170416041603314c1016001604160413202a62170516051602000a1702160413202a17044a2c160271a000712f02000002020110160071160171314c051600160144000b4a041601160044000b0200000101010316004f02010000000103d3b299f80ace000201000102021ed3f87904e4140a5f5f6d61705f5f305f5f16004744cbc5194c040c0006024a110c0d0d140a5f5f6d61705f5f305f5f16004744cb1701160101010d0d0d1601010102010001010108d32b875d11140a5f5f6d61705f5f305f5f16004744cbc5020101010800405fd3d63c543cb4170116014813412d7b16000c331341307b1601ce001600ac140a5f5f6d61705f5f305f5f16014744cbc54c40370c0d0d140a5f5f6d61705f5f305f5f16014744cb1707160701010d0d0d1607010117031702160216002a0c0e0c140a5f5f6d61705f5f305f5f16014744cb01021603000517040c170516051604314c0f1603160500001706160116000e0c1606d4926b380b16050d2a17054a2d4a09ca140a5f5f6d61705f5f305f5f16014744b116000006d20102a00116002aa10106160116005f0102010900406bd310bd129fb4170116014813412d7b140a5f5f6d61705f5f305f5f16014744cbc513412e7b16000c331341317b0c0d0d140a5f5f6d61705f5f305f5f16014744cb1708160801010d0d0d1608010117031702160216003413412f7b160216002b17041603000517050c170616061605314c0f1603160600001707160116000e0c1607d465b06cae16060d2a17064a2d16040c2f4c0aca0d0c140a5f5f6d61705f5f305f5f16014744cb01034a0a16040c0e0c140a5f5f6d61705f5f305f5f16014744cb01021601ce001600aba00116002ba10107160116005f01000206004045d3c5f91cb4b4170216024813412d7b1601160000161341357b140a5f5f6d61705f5f305f5f16024744cbc513412e7b0c0d0d140a5f5f6d61705f5f305f5f16024744cb1705160501010d0d0d160501011704170316040005ce01311341327b1604160000010b241341337b160216030e0c1600d4926b380b1604160000030d0e0c140a5f5f6d61705f5f305f5f16024744cb01020100010500403ad3b6398887b4170116014813412d7b140a5f5f6d61705f5f305f5f16014744cbc513412e7b0c0d0d140a5f5f6d61705f5f305f5f16014744cb1704160401010d0d0d16040101170317021603160000010b251341347b160116020e0c1600d465b06cae1603160000020d0e0c140a5f5f6d61705f5f305f5f16014744cb010201000101011fd3e5725392140a5f5f6d61705f5f305f5f16004744cbc5197a4b0418a0010c2f4c020c020c0d0d140a5f5f6d61705f5f305f5f16004744cb010113c40de0b6b3a76400002ca0012d02010001010008d3e5bf78dcb4a0024513412c7b16000008010001010008d34f58efe6b4a0024513412c7b1600a102010002030109d3af1ed9dd1601b9170216001602000b000902\",\n \"codeHash\": \"06a6db7355978ed027d5a0d36573bf54cef4a67d503b270b8ede5870b3117c7b\",\n \"fieldsSig\": {\n \"names\": [\n \"stakeTokenId\",\n \"maxConnectedDapps\",\n \"merkleRoot\",\n \"totalStakedAmount\",\n \"owner\"\n ],\n \"types\": [\n \"ByteVec\",\n \"U256\",\n \"ByteVec\",\n \"U256\",\n \"Address\"\n ],\n \"isMutable\": [\n false,\n false,\n true,\n true,\n true\n ]\n },\n \"eventsSig\": [\n {\n \"name\": \"UpdateRoot\",\n \"fieldNames\": [\n \"newMerkleRoot\",\n \"updatedBy\"\n ],\n \"fieldTypes\": [\n \"ByteVec\",\n \"Address\"\n ]\n },\n {\n \"name\": \"Staked\",\n \"fieldNames\": [\n \"staker\",\n \"amount\"\n ],\n \"fieldTypes\": [\n \"Address\",\n \"U256\"\n ]\n },\n {\n \"name\": \"Unstaked\",\n \"fieldNames\": [\n \"staker\",\n \"amount\"\n ],\n \"fieldTypes\": [\n \"Address\",\n \"U256\"\n ]\n }\n ],\n \"functions\": [\n {\n \"name\": \"get\",\n \"paramNames\": [\n \"array\",\n \"index\"\n ],\n \"paramTypes\": [\n \"ByteVec\",\n \"U256\"\n ],\n \"paramIsMutable\": [\n false,\n false\n ],\n \"returnTypes\": [\n \"ByteVec\"\n ]\n },\n {\n \"name\": \"find\",\n \"paramNames\": [\n \"array\",\n \"value\"\n ],\n \"paramTypes\": [\n \"ByteVec\",\n \"ByteVec\"\n ],\n \"paramIsMutable\": [\n false,\n false\n ],\n \"returnTypes\": [\n \"I256\"\n ]\n },\n {\n \"name\": \"remove\",\n \"paramNames\": [\n \"array\",\n \"value\"\n ],\n \"paramTypes\": [\n \"ByteVec\",\n \"ByteVec\"\n ],\n \"paramIsMutable\": [\n false,\n false\n ],\n \"returnTypes\": [\n \"ByteVec\"\n ]\n },\n {\n \"name\": \"push\",\n \"paramNames\": [\n \"array\",\n \"value\"\n ],\n \"paramTypes\": [\n \"ByteVec\",\n \"ByteVec\"\n ],\n \"paramIsMutable\": [\n false,\n false\n ],\n \"returnTypes\": [\n \"ByteVec\"\n ]\n },\n {\n \"name\": \"removeAt\",\n \"paramNames\": [\n \"array\",\n \"index\"\n ],\n \"paramTypes\": [\n \"ByteVec\",\n \"U256\"\n ],\n \"paramIsMutable\": [\n false,\n false\n ],\n \"returnTypes\": [\n \"ByteVec\"\n ]\n },\n {\n \"name\": \"size\",\n \"paramNames\": [\n \"array\"\n ],\n \"paramTypes\": [\n \"ByteVec\"\n ],\n \"paramIsMutable\": [\n false\n ],\n \"returnTypes\": [\n \"U256\"\n ]\n },\n {\n \"name\": \"empty\",\n \"paramNames\": [],\n \"paramTypes\": [],\n \"paramIsMutable\": [],\n \"returnTypes\": [\n \"ByteVec\"\n ]\n },\n {\n \"name\": \"getMerkleRoot\",\n \"paramNames\": [],\n \"paramTypes\": [],\n \"paramIsMutable\": [],\n \"returnTypes\": [\n \"ByteVec\"\n ]\n },\n {\n \"name\": \"updateRoot\",\n \"paramNames\": [\n \"newMerkleRoot\"\n ],\n \"paramTypes\": [\n \"ByteVec\"\n ],\n \"paramIsMutable\": [\n false\n ],\n \"returnTypes\": []\n },\n {\n \"name\": \"verify\",\n \"paramNames\": [\n \"proof\",\n \"dataHash\"\n ],\n \"paramTypes\": [\n \"ByteVec\",\n \"ByteVec\"\n ],\n \"paramIsMutable\": [\n false,\n false\n ],\n \"returnTypes\": [\n \"Bool\"\n ]\n },\n {\n \"name\": \"hashPair\",\n \"paramNames\": [\n \"a\",\n \"b\"\n ],\n \"paramTypes\": [\n \"ByteVec\",\n \"ByteVec\"\n ],\n \"paramIsMutable\": [\n false,\n false\n ],\n \"returnTypes\": [\n \"ByteVec\"\n ]\n },\n {\n \"name\": \"hash\",\n \"paramNames\": [\n \"dataToHash\"\n ],\n \"paramTypes\": [\n \"ByteVec\"\n ],\n \"paramIsMutable\": [\n false\n ],\n \"returnTypes\": [\n \"ByteVec\"\n ]\n },\n {\n \"name\": \"getStakeTokenId\",\n \"paramNames\": [],\n \"paramTypes\": [],\n \"paramIsMutable\": [],\n \"returnTypes\": [\n \"ByteVec\"\n ]\n },\n {\n \"name\": \"getUserStakingInfo\",\n \"paramNames\": [\n \"user\"\n ],\n \"paramTypes\": [\n \"Address\"\n ],\n \"paramIsMutable\": [\n false\n ],\n \"returnTypes\": [\n \"UserStakingInfo\"\n ]\n },\n {\n \"name\": \"isStaking\",\n \"paramNames\": [\n \"user\"\n ],\n \"paramTypes\": [\n \"Address\"\n ],\n \"paramIsMutable\": [\n false\n ],\n \"returnTypes\": [\n \"Bool\"\n ]\n },\n {\n \"name\": \"stake\",\n \"paramNames\": [\n \"amount\"\n ],\n \"paramTypes\": [\n \"U256\"\n ],\n \"paramIsMutable\": [\n false\n ],\n \"returnTypes\": []\n },\n {\n \"name\": \"unstake\",\n \"paramNames\": [\n \"amount\"\n ],\n \"paramTypes\": [\n \"U256\"\n ],\n \"paramIsMutable\": [\n false\n ],\n \"returnTypes\": []\n },\n {\n \"name\": \"connectToDapp\",\n \"paramNames\": [\n \"contractId\",\n \"merkleProof\"\n ],\n \"paramTypes\": [\n \"ByteVec\",\n \"ByteVec\"\n ],\n \"paramIsMutable\": [\n false,\n false\n ],\n \"returnTypes\": []\n },\n {\n \"name\": \"disconnectFromDapp\",\n \"paramNames\": [\n \"contractId\"\n ],\n \"paramTypes\": [\n \"ByteVec\"\n ],\n \"paramIsMutable\": [\n false\n ],\n \"returnTypes\": []\n },\n {\n \"name\": \"getWeight\",\n \"paramNames\": [\n \"user\"\n ],\n \"paramTypes\": [\n \"Address\"\n ],\n \"paramIsMutable\": [\n false\n ],\n \"returnTypes\": [\n \"U256\"\n ]\n },\n {\n \"name\": \"updateDappTemplatesWhitelistMerkleRoot\",\n \"paramNames\": [\n \"newMerkleRoot\"\n ],\n \"paramTypes\": [\n \"ByteVec\"\n ],\n \"paramIsMutable\": [\n false\n ],\n \"returnTypes\": []\n },\n {\n \"name\": \"updateOwner\",\n \"paramNames\": [\n \"newOwner\"\n ],\n \"paramTypes\": [\n \"Address\"\n ],\n \"paramIsMutable\": [\n false\n ],\n \"returnTypes\": []\n },\n {\n \"name\": \"verifyDappTemplatesWhiteListed\",\n \"paramNames\": [\n \"proof\",\n \"contractId\"\n ],\n \"paramTypes\": [\n \"ByteVec\",\n \"ByteVec\"\n ],\n \"paramIsMutable\": [\n false,\n false\n ],\n \"returnTypes\": [\n \"Bool\"\n ]\n }\n ],\n \"constants\": [\n {\n \"name\": \"IntByteLength\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"32\"\n }\n },\n {\n \"name\": \"WEIGHT_SCALING_FACTOR\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"1000000000000000000\"\n }\n }\n ],\n \"enums\": [\n {\n \"name\": \"ErrorCode\",\n \"fields\": [\n {\n \"name\": \"InvalidArrayLength\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"550\"\n }\n },\n {\n \"name\": \"IndexOutOfBound\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"551\"\n }\n },\n {\n \"name\": \"InvalidByteVecLength\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"552\"\n }\n }\n ]\n },\n {\n \"name\": \"MerkleProofErrorCodes\",\n \"fields\": [\n {\n \"name\": \"InvalidProofSize\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"11001\"\n }\n },\n {\n \"name\": \"InvalidDataHash\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"11002\"\n }\n },\n {\n \"name\": \"InvalidMerkleRoot\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"11003\"\n }\n }\n ]\n },\n {\n \"name\": \"ErrorCodes\",\n \"fields\": [\n {\n \"name\": \"NotOwner\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"300\"\n }\n },\n {\n \"name\": \"AssetAddressCallerOnly\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"301\"\n }\n },\n {\n \"name\": \"NoStakingInfo\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"302\"\n }\n },\n {\n \"name\": \"InsufficientStakedAmount\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"303\"\n }\n },\n {\n \"name\": \"InvalidStakedAmount\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"304\"\n }\n },\n {\n \"name\": \"InvalidUnstakedAmount\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"305\"\n }\n },\n {\n \"name\": \"MaxConnectedDappsReached\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"306\"\n }\n },\n {\n \"name\": \"DappAlreadyConnected\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"307\"\n }\n },\n {\n \"name\": \"DappNotConnected\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"308\"\n }\n },\n {\n \"name\": \"DappNotAllowed\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"309\"\n }\n }\n ]\n }\n ],\n \"mapsSig\": {\n \"names\": [\n \"userStakingInfo\"\n ],\n \"types\": [\n \"Map[Address,UserStakingInfo]\"\n ]\n }\n}","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport {\n Address,\n Contract,\n ContractState,\n TestContractResult,\n HexString,\n ContractFactory,\n EventSubscribeOptions,\n EventSubscription,\n CallContractParams,\n CallContractResult,\n TestContractParams,\n ContractEvent,\n subscribeContractEvent,\n subscribeContractEvents,\n testMethod,\n callMethod,\n multicallMethods,\n fetchContractState,\n Asset,\n ContractInstance,\n getContractEventsCurrentCount,\n TestContractParamsWithoutMaps,\n TestContractResultWithoutMaps,\n SignExecuteContractMethodParams,\n SignExecuteScriptTxResult,\n signExecuteMethod,\n addStdIdToFields,\n encodeContractFields,\n Narrow,\n} from \"@alephium/web3\";\nimport { default as XAlphTokenContractJson } from \"../XAlphToken.ral.json\";\nimport { getContractByCodeHash, registerContract } from \"./contracts\";\nimport * as types from \"./types\";\nimport { RalphMap } from \"@alephium/web3\";\n\n// Custom types for the contract\nexport namespace XAlphTokenTypes {\n export type Fields = {\n symbol: HexString;\n name: HexString;\n decimals: bigint;\n unstakeVaultTemplateId: HexString;\n maxActiveUnstakeRequestsPerUser: bigint;\n unstakeDuration: bigint;\n totalStaked: bigint;\n lastUnstakeVaultIndex: bigint;\n };\n\n export type State = ContractState<Fields>;\n\n export type StakedEvent = ContractEvent<{ to: Address; amount: bigint }>;\n export type UnstakeScheduledEvent = ContractEvent<{\n to: Address;\n amount: bigint;\n }>;\n\n export interface CallMethodTable {\n getSymbol: {\n params: Omit<CallContractParams<{}>, \"args\">;\n result: CallContractResult<HexString>;\n };\n getName: {\n params: Omit<CallContractParams<{}>, \"args\">;\n result: CallContractResult<HexString>;\n };\n getDecimals: {\n params: Omit<CallContractParams<{}>, \"args\">;\n result: CallContractResult<bigint>;\n };\n getTotalSupply: {\n params: Omit<CallContractParams<{}>, \"args\">;\n result: CallContractResult<bigint>;\n };\n get: {\n params: CallContractParams<{ array: HexString; index: bigint }>;\n result: CallContractResult<bigint>;\n };\n find: {\n params: CallContractParams<{ array: HexString; value: bigint }>;\n result: CallContractResult<bigint>;\n };\n remove: {\n params: CallContractParams<{ array: HexString; value: bigint }>;\n result: CallContractResult<HexString>;\n };\n push: {\n params: CallContractParams<{ array: HexString; value: bigint }>;\n result: CallContractResult<HexString>;\n };\n binarySearch: {\n params: CallContractParams<{\n array: HexString;\n value: bigint;\n left: bigint;\n right: bigint;\n }>;\n result: CallContractResult<bigint>;\n };\n removeAt: {\n params: CallContractParams<{ array: HexString; index: bigint }>;\n result: CallContractResult<HexString>;\n };\n size: {\n params: CallContractParams<{ array: HexString }>;\n result: CallContractResult<bigint>;\n };\n empty: {\n params: Omit<CallContractParams<{}>, \"args\">;\n result: CallContractResult<HexString>;\n };\n stake: {\n params: CallContractParams<{ amount: bigint }>;\n result: CallContractResult<null>;\n };\n startUnstake: {\n params: CallContractParams<{ amount: bigint }>;\n result: CallContractResult<HexString>;\n };\n getActiveUnstakeVaultIndexes: {\n params: CallContractParams<{ caller: Address }>;\n result: CallContractResult<HexString>;\n };\n getClaimableAmount: {\n params: CallContractParams<{ user: Address; vaultIndex: bigint }>;\n result: CallContractResult<bigint>;\n };\n claimUnstaked: {\n params: CallContractParams<{ vaultIndex: bigint; amount: bigint }>;\n result: CallContractResult<null>;\n };\n }\n export type CallMethodParams<T extends keyof CallMethodTable> =\n CallMethodTable[T][\"params\"];\n export type CallMethodResult<T extends keyof CallMethodTable> =\n CallMethodTable[T][\"result\"];\n export type MultiCallParams = Partial<{\n [Name in keyof CallMethodTable]: CallMethodTable[Name][\"params\"];\n }>;\n export type MultiCallResults<T extends MultiCallParams> = {\n [MaybeName in keyof T]: MaybeName extends keyof CallMethodTable\n ? CallMethodTable[MaybeName][\"result\"]\n : undefined;\n };\n export type MulticallReturnType<Callss extends MultiCallParams[]> = {\n [index in keyof Callss]: MultiCallResults<Callss[index]>;\n };\n\n export interface SignExecuteMethodTable {\n getSymbol: {\n params: Omit<SignExecuteContractMethodParams<{}>, \"args\">;\n result: SignExecuteScriptTxResult;\n };\n getName: {\n params: Omit<SignExecuteContractMethodParams<{}>, \"args\">;\n result: SignExecuteScriptTxResult;\n };\n getDecimals: {\n params: Omit<SignExecuteContractMethodParams<{}>, \"args\">;\n result: SignExecuteScriptTxResult;\n };\n getTotalSupply: {\n params: Omit<SignExecuteContractMethodParams<{}>, \"args\">;\n result: SignExecuteScriptTxResult;\n };\n get: {\n params: SignExecuteContractMethodParams<{\n array: HexString;\n index: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n find: {\n params: SignExecuteContractMethodParams<{\n array: HexString;\n value: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n remove: {\n params: SignExecuteContractMethodParams<{\n array: HexString;\n value: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n push: {\n params: SignExecuteContractMethodParams<{\n array: HexString;\n value: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n binarySearch: {\n params: SignExecuteContractMethodParams<{\n array: HexString;\n value: bigint;\n left: bigint;\n right: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n removeAt: {\n params: SignExecuteContractMethodParams<{\n array: HexString;\n index: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n size: {\n params: SignExecuteContractMethodParams<{ array: HexString }>;\n result: SignExecuteScriptTxResult;\n };\n empty: {\n params: Omit<SignExecuteContractMethodParams<{}>, \"args\">;\n result: SignExecuteScriptTxResult;\n };\n stake: {\n params: SignExecuteContractMethodParams<{ amount: bigint }>;\n result: SignExecuteScriptTxResult;\n };\n startUnstake: {\n params: SignExecuteContractMethodParams<{ amount: bigint }>;\n result: SignExecuteScriptTxResult;\n };\n getActiveUnstakeVaultIndexes: {\n params: SignExecuteContractMethodParams<{ caller: Address }>;\n result: SignExecuteScriptTxResult;\n };\n getClaimableAmount: {\n params: SignExecuteContractMethodParams<{\n user: Address;\n vaultIndex: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n claimUnstaked: {\n params: SignExecuteContractMethodParams<{\n vaultIndex: bigint;\n amount: bigint;\n }>;\n result: SignExecuteScriptTxResult;\n };\n }\n export type SignExecuteMethodParams<T extends keyof SignExecuteMethodTable> =\n SignExecuteMethodTable[T][\"params\"];\n export type SignExecuteMethodResult<T extends keyof SignExecuteMethodTable> =\n SignExecuteMethodTable[T][\"result\"];\n\n export type Maps = { userActiveUnstakeVaults?: Map<Address, HexString> };\n}\n\nclass Factory extends ContractFactory<\n XAlphTokenInstance,\n XAlphTokenTypes.Fields\n> {\n encodeFields(fields: XAlphTokenTypes.Fields) {\n return encodeContractFields(\n addStdIdToFields(this.contract, fields),\n this.contract.fieldsSig,\n types.AllStructs\n );\n }\n\n eventIndex = { Staked: 0, UnstakeScheduled: 1 };\n consts = {\n IntByteLength: BigInt(\"32\"),\n ErrorCode: {\n InvalidArrayLength: BigInt(\"550\"),\n IndexOutOfBound: BigInt(\"551\"),\n InvalidByteVecLength: BigInt(\"552\"),\n },\n ErrorCodes: {\n AssetAddressCallerOnly: BigInt(\"10\"),\n TooManyActiveUnstakeVaults: BigInt(\"11\"),\n InvalidUnstakeDuration: BigInt(\"12\"),\n NonExistantUnstakeVault: BigInt(\"13\"),\n AmountMustBeGreaterThanZero: BigInt(\"14\"),\n },\n };\n\n at(address: string): XAlphTokenInstance {\n return new XAlphTokenInstance(address);\n }\n\n tests = {\n getSymbol: async (\n params: Omit<\n TestContractParams<XAlphTokenTypes.Fields, never, XAlphTokenTypes.Maps>,\n \"args\"\n >\n ): Promise<TestContractResult<HexString, XAlphTokenTypes.Maps>> => {\n return testMethod(this, \"getSymbol\", params, getContractByCodeHash);\n },\n getName: async (\n params: Omit<\n TestContractParams<XAlphTokenTypes.Fields, never, XAlphTokenTypes.Maps>,\n \"args\"\n >\n ): Promise<TestContractResult<HexString, XAlphTokenTypes.Maps>> => {\n return testMethod(this, \"getName\", params, getContractByCodeHash);\n },\n getDecimals: async (\n params: Omit<\n TestContractParams<XAlphTokenTypes.Fields, never, XAlphTokenTypes.Maps>,\n \"args\"\n >\n ): Promise<TestContractResult<bigint, XAlphTokenTypes.Maps>> => {\n return testMethod(this, \"getDecimals\", params, getContractByCodeHash);\n },\n getTotalSupply: async (\n params: Omit<\n TestContractParams<XAlphTokenTypes.Fields, never, XAlphTokenTypes.Maps>,\n \"args\"\n >\n ): Promise<TestContractResult<bigint, XAlphTokenTypes.Maps>> => {\n return testMethod(this, \"getTotalSupply\", params, getContractByCodeHash);\n },\n get: async (\n params: TestContractParams<\n XAlphTokenTypes.Fields,\n { array: HexString; index: bigint },\n XAlphTokenTypes.Maps\n >\n ): Promise<TestContractResult<bigint, XAlphTokenTypes.Maps>> => {\n return testMethod(this, \"get\", params, getContractByCodeHash);\n },\n find: async (\n params: TestContractParams<\n XAlphTokenTypes.Fields,\n { array: HexString; value: bigint },\n XAlphTokenTypes.Maps\n >\n ): Promise<TestContractResult<bigint, XAlphTokenTypes.Maps>> => {\n return testMethod(this, \"find\", params, getContractByCodeHash);\n },\n remove: async (\n params: TestContractParams<\n XAlphTokenTypes.Fields,\n { array: HexString; value: bigint },\n XAlphTokenTypes.Maps\n >\n ): Promise<TestContractResult<HexString, XAlphTokenTypes.Maps>> => {\n return testMethod(this, \"remove\", params, getContractByCodeHash);\n },\n push: async (\n params: TestContractParams<\n XAlphTokenTypes.Fields,\n { array: HexString; value: bigint },\n XAlphTokenTypes.Maps\n >\n ): Promise<TestContractResult<HexString, XAlphTokenTypes.Maps>> => {\n return testMethod(this, \"push\", params, getContractByCodeHash);\n },\n binarySearch: async (\n params: TestContractParams<\n XAlphTokenTypes.Fields,\n { array: HexString; value: bigint; left: bigint; right: bigint },\n XAlphTokenTypes.Maps\n >\n ): Promise<TestContractResult<bigint, XAlphTokenTypes.Maps>> => {\n return testMethod(this, \"binarySearch\", params, getContractByCodeHash);\n },\n removeAt: async (\n params: TestContractParams<\n XAlphTokenTypes.Fields,\n { array: HexString; index: bigint },\n XAlphTokenTypes.Maps\n >\n ): Promise<TestContractResult<HexString, XAlphTokenTypes.Maps>> => {\n return testMethod(this, \"removeAt\", params, getContractByCodeHash);\n },\n size: async (\n params: TestContractParams<\n XAlphTokenTypes.Fields,\n { array: HexString },\n XAlphTokenTypes.Maps\n >\n ): Promise<TestContractResult<bigint, XAlphTokenTypes.Maps>> => {\n return testMethod(this, \"size\", params, getContractByCodeHash);\n },\n empty: async (\n params: Omit<\n TestContractParams<XAlphTokenTypes.Fields, never, XAlphTokenTypes.Maps>,\n \"args\"\n >\n ): Promise<TestContractResult<HexString, XAlphTokenTypes.Maps>> => {\n return testMethod(this, \"empty\", params, getContractByCodeHash);\n },\n stake: async (\n params: TestContractParams<\n XAlphTokenTypes.Fields,\n { amount: bigint },\n XAlphTokenTypes.Maps\n >\n ): Promise<TestContractResult<null, XAlphTokenTypes.Maps>> => {\n return testMethod(this, \"stake\", params, getContractByCodeHash);\n },\n startUnstake: async (\n params: TestContractParams<\n XAlphTokenTypes.Fields,\n { amount: bigint },\n XAlphTokenTypes.Maps\n >\n ): Promise<TestContractResult<HexString, XAlphTokenTypes.Maps>> => {\n return testMethod(this, \"startUnstake\", params, getContractByCodeHash);\n },\n getActiveUnstakeVaultIndexes: async (\n params: TestContractParams<\n XAlphTokenTypes.Fields,\n { caller: Address },\n XAlphTokenTypes.Maps\n >\n ): Promise<TestContractResult<HexString, XAlphTokenTypes.Maps>> => {\n return testMethod(\n this,\n \"getActiveUnstakeVaultIndexes\",\n params,\n getContractByCodeHash\n );\n },\n getClaimableAmount: async (\n params: TestContractParams<\n XAlphTokenTypes.Fields,\n { user: Address; vaultIndex: bigint },\n XAlphTokenTypes.Maps\n >\n ): Promise<TestContractResult<bigint, XAlphTokenTypes.Maps>> => {\n return testMethod(\n this,\n \"getClaimableAmount\",\n params,\n getContractByCodeHash\n );\n },\n claimUnstaked: async (\n params: TestContractParams<\n XAlphTokenTypes.Fields,\n { vaultIndex: bigint; amount: bigint },\n XAlphTokenTypes.Maps\n >\n ): Promise<TestContractResult<null, XAlphTokenTypes.Maps>> => {\n return testMethod(this, \"claimUnstaked\", params, getContractByCodeHash);\n },\n };\n\n stateForTest(\n initFields: XAlphTokenTypes.Fields,\n asset?: Asset,\n address?: string,\n maps?: XAlphTokenTypes.Maps\n ) {\n return this.stateForTest_(initFields, asset, address, maps);\n }\n}\n\n// Use this object to test and deploy the contract\nexport const XAlphToken = new Factory(\n Contract.fromJson(\n XAlphTokenContractJson,\n \"=52-2+91=2+c=1-1=2+e=1-1=2-2+8f=857-1+b=235-1+b=34+7a7e0214696e73657274206174206d617020706174683a2000=333-1+2=79-1+b=69-1+c=40+7a7e021472656d6f7665206174206d617020706174683a2000=70\",\n \"8ded2201203cffd39adc32f6278f37f0ef1a543cf34872a159a1f36de68620d4\",\n types.AllStructs\n )\n);\nregisterContract(XAlphToken);\n\n// Use this class to interact with the blockchain\nexport class XAlphTokenInstance extends ContractInstance {\n constructor(address: Address) {\n super(address);\n }\n\n maps = {\n userActiveUnstakeVaults: new RalphMap<Address, HexString>(\n XAlphToken.contract,\n this.contractId,\n \"userActiveUnstakeVaults\"\n ),\n };\n\n async fetchState(): Promise<XAlphTokenTypes.State> {\n return fetchContractState(XAlphToken, this);\n }\n\n async getContractEventsCurrentCount(): Promise<number> {\n return getContractEventsCurrentCount(this.address);\n }\n\n subscribeStakedEvent(\n options: EventSubscribeOptions<XAlphTokenTypes.StakedEvent>,\n fromCount?: number\n ): EventSubscription {\n return subscribeContractEvent(\n XAlphToken.contract,\n this,\n options,\n \"Staked\",\n fromCount\n );\n }\n\n subscribeUnstakeScheduledEvent(\n options: EventSubscribeOptions<XAlphTokenTypes.UnstakeScheduledEvent>,\n fromCount?: number\n ): EventSubscription {\n return subscribeContractEvent(\n XAlphToken.contract,\n this,\n options,\n \"UnstakeScheduled\",\n fromCount\n );\n }\n\n subscribeAllEvents(\n options: EventSubscribeOptions<\n XAlphTokenTypes.StakedEvent | XAlphTokenTypes.UnstakeScheduledEvent\n >,\n fromCount?: number\n ): EventSubscription {\n return subscribeContractEvents(\n XAlphToken.contract,\n this,\n options,\n fromCount\n );\n }\n\n view = {\n getSymbol: async (\n params?: XAlphTokenTypes.CallMethodParams<\"getSymbol\">\n ): Promise<XAlphTokenTypes.CallMethodResult<\"getSymbol\">> => {\n return callMethod(\n XAlphToken,\n this,\n \"getSymbol\",\n params === undefined ? {} : params,\n getContractByCodeHash\n );\n },\n getName: async (\n params?: XAlphTokenTypes.CallMethodParams<\"getName\">\n ): Promise<XAlphTokenTypes.CallMethodResult<\"getName\">> => {\n return callMethod(\n XAlphToken,\n this,\n \"getName\",\n params === undefined ? {} : params,\n getContractByCodeHash\n );\n },\n getDecimals: async (\n params?: XAlphTokenTypes.CallMethodParams<\"getDecimals\">\n ): Promise<XAlphTokenTypes.CallMethodResult<\"getDecimals\">> => {\n return callMethod(\n XAlphToken,\n this,\n \"getDecimals\",\n params === undefined ? {} : params,\n getContractByCodeHash\n );\n },\n getTotalSupply: async (\n params?: XAlphTokenTypes.CallMethodParams<\"getTotalSupply\">\n ): Promise<XAlphTokenTypes.CallMethodResult<\"getTotalSupply\">> => {\n return callMethod(\n XAlphToken,\n this,\n \"getTotalSupply\",\n params === undefined ? {} : params,\n getContractByCodeHash\n );\n },\n get: async (\n params: XAlphTokenTypes.CallMethodParams<\"get\">\n ): Promise<XAlphTokenTypes.CallMethodResult<\"get\">> => {\n return callMethod(XAlphToken, this, \"get\", params, getContractByCodeHash);\n },\n find: async (\n params: XAlphTokenTypes.CallMethodParams<\"find\">\n ): Promise<XAlphTokenTypes.CallMethodResult<\"find\">> => {\n return callMethod(\n XAlphToken,\n this,\n \"find\",\n params,\n getContractByCodeHash\n );\n },\n remove: async (\n params: XAlphTokenTypes.CallMethodParams<\"remove\">\n ): Promise<XAlphTokenTypes.CallMethodResult<\"remove\">> => {\n return callMethod(\n XAlphToken,\n this,\n \"remove\",\n params,\n getContractByCodeHash\n );\n },\n push: async (\n params: XAlphTokenTypes.CallMethodParams<\"push\">\n ): Promise<XAlphTokenTypes.CallMethodResult<\"push\">> => {\n return callMethod(\n XAlphToken,\n this,\n \"push\",\n params,\n getContractByCodeHash\n );\n },\n binarySearch: async (\n params: XAlphTokenTypes.CallMethodParams<\"binarySearch\">\n ): Promise<XAlphTokenTypes.CallMethodResult<\"binarySearch\">> => {\n return callMethod(\n XAlphToken,\n this,\n \"binarySearch\",\n params,\n getContractByCodeHash\n );\n },\n removeAt: async (\n params: XAlphTokenTypes.CallMethodParams<\"removeAt\">\n ): Promise<XAlphTokenTypes.CallMethodResult<\"removeAt\">> => {\n return callMethod(\n XAlphToken,\n this,\n \"removeAt\",\n params,\n getContractByCodeHash\n );\n },\n size: async (\n params: XAlphTokenTypes.CallMethodParams<\"size\">\n ): Promise<XAlphTokenTypes.CallMethodResult<\"size\">> => {\n return callMethod(\n XAlphToken,\n this,\n \"size\",\n params,\n getContractByCodeHash\n );\n },\n empty: async (\n params?: XAlphTokenTypes.CallMethodParams<\"empty\">\n ): Promise<XAlphTokenTypes.CallMethodResult<\"empty\">> => {\n return callMethod(\n XAlphToken,\n this,\n \"empty\",\n params === undefined ? {} : params,\n getContractByCodeHash\n );\n },\n stake: async (\n params: XAlphTokenTypes.CallMethodParams<\"stake\">\n ): Promise<XAlphTokenTypes.CallMethodResult<\"stake\">> => {\n return callMethod(\n XAlphToken,\n this,\n \"stake\",\n params,\n getContractByCodeHash\n );\n },\n startUnstake: async (\n params: XAlphTokenTypes.CallMethodParams<\"startUnstake\">\n ): Promise<XAlphTokenTypes.CallMethodResult<\"startUnstake\">> => {\n return callMethod(\n XAlphToken,\n this,\n \"startUnstake\",\n params,\n getContractByCodeHash\n );\n },\n getActiveUnstakeVaultIndexes: async (\n params: XAlphTokenTypes.CallMethodParams<\"getActiveUnstakeVaultIndexes\">\n ): Promise<\n XAlphTokenTypes.CallMethodResult<\"getActiveUnstakeVaultIndexes\">\n > => {\n return callMethod(\n XAlphToken,\n this,\n \"getActiveUnstakeVaultIndexes\",\n params,\n getContractByCodeHash\n );\n },\n getClaimableAmount: async (\n params: XAlphTokenTypes.CallMethodParams<\"getClaimableAmount\">\n ): Promise<XAlphTokenTypes.CallMethodResult<\"getClaimableAmount\">> => {\n return callMethod(\n XAlphToken,\n this,\n \"getClaimableAmount\",\n params,\n getContractByCodeHash\n );\n },\n claimUnstaked: async (\n params: XAlphTokenTypes.CallMethodParams<\"claimUnstaked\">\n ): Promise<XAlphTokenTypes.CallMethodResult<\"claimUnstaked\">> => {\n return callMethod(\n XAlphToken,\n this,\n \"claimUnstaked\",\n params,\n getContractByCodeHash\n );\n },\n };\n\n transact = {\n getSymbol: async (\n params: XAlphTokenTypes.SignExecuteMethodParams<\"getSymbol\">\n ): Promise<XAlphTokenTypes.SignExecuteMethodResult<\"getSymbol\">> => {\n return signExecuteMethod(XAlphToken, this, \"getSymbol\", params);\n },\n getName: async (\n params: XAlphTokenTypes.SignExecuteMethodParams<\"getName\">\n ): Promise<XAlphTokenTypes.SignExecuteMethodResult<\"getName\">> => {\n return signExecuteMethod(XAlphToken, this, \"getName\", params);\n },\n getDecimals: async (\n params: XAlphTokenTypes.SignExecuteMethodParams<\"getDecimals\">\n ): Promise<XAlphTokenTypes.SignExecuteMethodResult<\"getDecimals\">> => {\n return signExecuteMethod(XAlphToken, this, \"getDecimals\", params);\n },\n getTotalSupply: async (\n params: XAlphTokenTypes.SignExecuteMethodParams<\"getTotalSupply\">\n ): Promise<XAlphTokenTypes.SignExecuteMethodResult<\"getTotalSupply\">> => {\n return signExecuteMethod(XAlphToken, this, \"getTotalSupply\", params);\n },\n get: async (\n params: XAlphTokenTypes.SignExecuteMethodParams<\"get\">\n ): Promise<XAlphTokenTypes.SignExecuteMethodResult<\"get\">> => {\n return signExecuteMethod(XAlphToken, this, \"get\", params);\n },\n find: async (\n params: XAlphTokenTypes.SignExecuteMethodParams<\"find\">\n ): Promise<XAlphTokenTypes.SignExecuteMethodResult<\"find\">> => {\n return signExecuteMethod(XAlphToken, this, \"find\", params);\n },\n remove: async (\n params: XAlphTokenTypes.SignExecuteMethodParams<\"remove\">\n ): Promise<XAlphTokenTypes.SignExecuteMethodResult<\"remove\">> => {\n return signExecuteMethod(XAlphToken, this, \"remove\", params);\n },\n push: async (\n params: XAlphTokenTypes.SignExecuteMethodParams<\"push\">\n ): Promise<XAlphTokenTypes.SignExecuteMethodResult<\"push\">> => {\n return signExecuteMethod(XAlphToken, this, \"push\", params);\n },\n binarySearch: async (\n params: XAlphTokenTypes.SignExecuteMethodParams<\"binarySearch\">\n ): Promise<XAlphTokenTypes.SignExecuteMethodResult<\"binarySearch\">> => {\n return signExecuteMethod(XAlphToken, this, \"binarySearch\", params);\n },\n removeAt: async (\n params: XAlphTokenTypes.SignExecuteMethodParams<\"removeAt\">\n ): Promise<XAlphTokenTypes.SignExecuteMethodResult<\"removeAt\">> => {\n return signExecuteMethod(XAlphToken, this, \"removeAt\", params);\n },\n size: async (\n params: XAlphTokenTypes.SignExecuteMethodParams<\"size\">\n ): Promise<XAlphTokenTypes.SignExecuteMethodResult<\"size\">> => {\n return signExecuteMethod(XAlphToken, this, \"size\", params);\n },\n empty: async (\n params: XAlphTokenTypes.SignExecuteMethodParams<\"empty\">\n ): Promise<XAlphTokenTypes.SignExecuteMethodResult<\"empty\">> => {\n return signExecuteMethod(XAlphToken, this, \"empty\", params);\n },\n stake: async (\n params: XAlphTokenTypes.SignExecuteMethodParams<\"stake\">\n ): Promise<XAlphTokenTypes.SignExecuteMethodResult<\"stake\">> => {\n return signExecuteMethod(XAlphToken, this, \"stake\", params);\n },\n startUnstake: async (\n params: XAlphTokenTypes.SignExecuteMethodParams<\"startUnstake\">\n ): Promise<XAlphTokenTypes.SignExecuteMethodResult<\"startUnstake\">> => {\n return signExecuteMethod(XAlphToken, this, \"startUnstake\", params);\n },\n getActiveUnstakeVaultIndexes: async (\n params: XAlphTokenTypes.SignExecuteMethodParams<\"getActiveUnstakeVaultIndexes\">\n ): Promise<\n XAlphTokenTypes.SignExecuteMethodResult<\"getActiveUnstakeVaultIndexes\">\n > => {\n return signExecuteMethod(\n XAlphToken,\n this,\n \"getActiveUnstakeVaultIndexes\",\n params\n );\n },\n getClaimableAmount: async (\n params: XAlphTokenTypes.SignExecuteMethodParams<\"getClaimableAmount\">\n ): Promise<\n XAlphTokenTypes.SignExecuteMethodResult<\"getClaimableAmount\">\n > => {\n return signExecuteMethod(XAlphToken, this, \"getClaimableAmount\", params);\n },\n claimUnstaked: async (\n params: XAlphTokenTypes.SignExecuteMethodParams<\"claimUnstaked\">\n ): Promise<XAlphTokenTypes.SignExecuteMethodResult<\"claimUnstaked\">> => {\n return signExecuteMethod(XAlphToken, this, \"claimUnstaked\", params);\n },\n };\n\n async multicall<Calls extends XAlphTokenTypes.MultiCallParams>(\n calls: Calls\n ): Promise<XAlphTokenTypes.MultiCallResults<Calls>>;\n async multicall<Callss extends XAlphTokenTypes.MultiCallParams[]>(\n callss: Narrow<Callss>\n ): Promise<XAlphTokenTypes.MulticallReturnType<Callss>>;\n async multicall<\n Callss extends\n | XAlphTokenTypes.MultiCallParams\n | XAlphTokenTypes.MultiCallParams[]\n >(callss: Callss): Promise<unknown> {\n return await multicallMethods(\n XAlphToken,\n this,\n callss,\n getContractByCodeHash\n );\n }\n}\n","{\n \"version\": \"v4.2.5\",\n \"name\": \"XAlphToken\",\n \"bytecode\": \"091109121b40244051407a40ac40ca411741474165417341a6427842b242d4435d010000000102ce0002010000000102ce0102010000000102ce0202010000000102a00002010002040115d3cee9319416011600000a311342277b160113202c170216001602160213202a62170316037102010002030114d33cd5e72916004313202e0c2f1342267b16004313202d1702160016010c1602000802010002030119d32cabd28216004313202e0c2f1342267b160016010005170216020b244c031600024a05160016023d00090201000202010ed31bc25d3416004313202e0c2f1342267b160016016b44020000040601402a16021603344c020b02160216032a0e2d17041600160400041705160516012f4c0316043f0216051601314c091600160116040d2a16030008024a061600160116021604000802010002030118d34b2e25b716011600000a311342277b160113202c170216000c1602621600160213202a16004362440201000101010ed30041471116004313202e0c2f1342267b16004313202d02010000000103d3676c3c3314000201010102001bd3d63c543cb41701160148130a7b16000c33130e7b1601b11600ab16011600a9a00016002aa10005160116005f01010106014069d33538a49fb41701160148130a7bce050c33130c7b16000c33130e7ba0010d2aa101140a5f5f6d61705f5f305f5f16014744cbc54c1d0c0d0d140a5f5f6d61705f5f305f5f16014744cb010117021602000ace0431130b7b1602a00100070c0e0c140a5f5f6d61705f5f305f5f16014744cb01024a09ca140a5f5f6d61705f5f305f5f16014744b1a0016bd201011601b11600acb11601160056ce051305640c13016417041703b21600a2160147a0014044ce0316031604c11705a00016002ba10006160116005f160502010001010115d38072397d140a5f5f6d61705f5f305f5f16004744cbc5194c021400020c0d0d140a5f5f6d61705f5f305f5f16004744cb010102010002030111d3fd3d3af616004716014044cb17021602c5130d7b0c0d160201020201000206004040d38bb32147b4170216024716004044cb170316010c33130e7b16010d0d16030103170416044c40290c0d0d140a5f5f6d61705f5f305f5f16024744cb01011600000617051605430c2f4c0a16020d0c140a5f5f6d61705f5f305f5f16024744cb01034a0a16050c0e0c140a5f5f6d61705f5f305f5f16024744cb01020c0c16030104\",\n \"codeHash\": \"5f95704fd2f96ed987b89fdb6e0659cc32d2accc50194a6bd2aedcffdce2f3e5\",\n \"fieldsSig\": {\n \"names\": [\n \"symbol\",\n \"name\",\n \"decimals\",\n \"unstakeVaultTemplateId\",\n \"maxActiveUnstakeRequestsPerUser\",\n \"unstakeDuration\",\n \"totalStaked\",\n \"lastUnstakeVaultIndex\",\n \"__stdInterfaceId\"\n ],\n \"types\": [\n \"ByteVec\",\n \"ByteVec\",\n \"U256\",\n \"ByteVec\",\n \"U256\",\n \"U256\",\n \"U256\",\n \"U256\",\n \"ByteVec\"\n ],\n \"isMutable\": [\n false,\n false,\n false,\n false,\n false,\n false,\n true,\n true,\n false\n ]\n },\n \"eventsSig\": [\n {\n \"name\": \"Staked\",\n \"fieldNames\": [\n \"to\",\n \"amount\"\n ],\n \"fieldTypes\": [\n \"Address\",\n \"U256\"\n ]\n },\n {\n \"name\": \"UnstakeScheduled\",\n \"fieldNames\": [\n \"to\",\n \"amount\"\n ],\n \"fieldTypes\": [\n \"Address\",\n \"U256\"\n ]\n }\n ],\n \"functions\": [\n {\n \"name\": \"getSymbol\",\n \"paramNames\": [],\n \"paramTypes\": [],\n \"paramIsMutable\": [],\n \"returnTypes\": [\n \"ByteVec\"\n ]\n },\n {\n \"name\": \"getName\",\n \"paramNames\": [],\n \"paramTypes\": [],\n \"paramIsMutable\": [],\n \"returnTypes\": [\n \"ByteVec\"\n ]\n },\n {\n \"name\": \"getDecimals\",\n \"paramNames\": [],\n \"paramTypes\": [],\n \"paramIsMutable\": [],\n \"returnTypes\": [\n \"U256\"\n ]\n },\n {\n \"name\": \"getTotalSupply\",\n \"paramNames\": [],\n \"paramTypes\": [],\n \"paramIsMutable\": [],\n \"returnTypes\": [\n \"U256\"\n ]\n },\n {\n \"name\": \"get\",\n \"paramNames\": [\n \"array\",\n \"index\"\n ],\n \"paramTypes\": [\n \"ByteVec\",\n \"U256\"\n ],\n \"paramIsMutable\": [\n false,\n false\n ],\n \"returnTypes\": [\n \"U256\"\n ]\n },\n {\n \"name\": \"find\",\n \"paramNames\": [\n \"array\",\n \"value\"\n ],\n \"paramTypes\": [\n \"ByteVec\",\n \"U256\"\n ],\n \"paramIsMutable\": [\n false,\n false\n ],\n \"returnTypes\": [\n \"I256\"\n ]\n },\n {\n \"name\": \"remove\",\n \"paramNames\": [\n \"array\",\n \"value\"\n ],\n \"paramTypes\": [\n \"ByteVec\",\n \"U256\"\n ],\n \"paramIsMutable\": [\n false,\n false\n ],\n \"returnTypes\": [\n \"ByteVec\"\n ]\n },\n {\n \"name\": \"push\",\n \"paramNames\": [\n \"array\",\n \"value\"\n ],\n \"paramTypes\": [\n \"ByteVec\",\n \"U256\"\n ],\n \"paramIsMutable\": [\n false,\n false\n ],\n \"returnTypes\": [\n \"ByteVec\"\n ]\n },\n {\n \"name\": \"binarySearch\",\n \"paramNames\": [\n \"array\",\n \"value\",\n \"left\",\n \"right\"\n ],\n \"paramTypes\": [\n \"ByteVec\",\n \"U256\",\n \"U256\",\n \"U256\"\n ],\n \"paramIsMutable\": [\n false,\n false,\n false,\n false\n ],\n \"returnTypes\": [\n \"I256\"\n ]\n },\n {\n \"name\": \"removeAt\",\n \"paramNames\": [\n \"array\",\n \"index\"\n ],\n \"paramTypes\": [\n \"ByteVec\",\n \"U256\"\n ],\n \"paramIsMutable\": [\n false,\n false\n ],\n \"returnTypes\": [\n \"ByteVec\"\n ]\n },\n {\n \"name\": \"size\",\n \"paramNames\": [\n \"array\"\n ],\n \"paramTypes\": [\n \"ByteVec\"\n ],\n \"paramIsMutable\": [\n false\n ],\n \"returnTypes\": [\n \"U256\"\n ]\n },\n {\n \"name\": \"empty\",\n \"paramNames\": [],\n \"paramTypes\": [],\n \"paramIsMutable\": [],\n \"returnTypes\": [\n \"ByteVec\"\n ]\n },\n {\n \"name\": \"stake\",\n \"paramNames\": [\n \"amount\"\n ],\n \"paramTypes\": [\n \"U256\"\n ],\n \"paramIsMutable\": [\n false\n ],\n \"returnTypes\": []\n },\n {\n \"name\": \"startUnstake\",\n \"paramNames\": [\n \"amount\"\n ],\n \"paramTypes\": [\n \"U256\"\n ],\n \"paramIsMutable\": [\n false\n ],\n \"returnTypes\": [\n \"ByteVec\"\n ]\n },\n {\n \"name\": \"getActiveUnstakeVaultIndexes\",\n \"paramNames\": [\n \"caller\"\n ],\n \"paramTypes\": [\n \"Address\"\n ],\n \"paramIsMutable\": [\n false\n ],\n \"returnTypes\": [\n \"ByteVec\"\n ]\n },\n {\n \"name\": \"getClaimableAmount\",\n \"paramNames\": [\n \"user\",\n \"vaultIndex\"\n ],\n \"paramTypes\": [\n \"Address\",\n \"U256\"\n ],\n \"paramIsMutable\": [\n false,\n false\n ],\n \"returnTypes\": [\n \"U256\"\n ]\n },\n {\n \"name\": \"claimUnstaked\",\n \"paramNames\": [\n \"vaultIndex\",\n \"amount\"\n ],\n \"paramTypes\": [\n \"U256\",\n \"U256\"\n ],\n \"paramIsMutable\": [\n false,\n false\n ],\n \"returnTypes\": []\n }\n ],\n \"constants\": [\n {\n \"name\": \"IntByteLength\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"32\"\n }\n }\n ],\n \"enums\": [\n {\n \"name\": \"ErrorCode\",\n \"fields\": [\n {\n \"name\": \"InvalidArrayLength\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"550\"\n }\n },\n {\n \"name\": \"IndexOutOfBound\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"551\"\n }\n },\n {\n \"name\": \"InvalidByteVecLength\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"552\"\n }\n }\n ]\n },\n {\n \"name\": \"ErrorCodes\",\n \"fields\": [\n {\n \"name\": \"AssetAddressCallerOnly\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"10\"\n }\n },\n {\n \"name\": \"TooManyActiveUnstakeVaults\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"11\"\n }\n },\n {\n \"name\": \"InvalidUnstakeDuration\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"12\"\n }\n },\n {\n \"name\": \"NonExistantUnstakeVault\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"13\"\n }\n },\n {\n \"name\": \"AmountMustBeGreaterThanZero\",\n \"value\": {\n \"type\": \"U256\",\n \"value\": \"14\"\n }\n }\n ]\n }\n ],\n \"mapsSig\": {\n \"names\": [\n \"userActiveUnstakeVaults\"\n ],\n \"types\": [\n \"Map[Address,ByteVec]\"\n ]\n },\n \"stdInterfaceId\": \"0001\"\n}","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport {\n Address,\n ExecutableScript,\n ExecuteScriptParams,\n ExecuteScriptResult,\n Script,\n SignerProvider,\n HexString,\n} from \"@alephium/web3\";\nimport { getContractByCodeHash } from \"./contracts\";\nimport { default as AlphStakeAndLockScriptJson } from \"../AlphStakeAndLock.ral.json\";\nimport { default as XAlphUnlockAndStartUnstakeScriptJson } from \"../XAlphUnlockAndStartUnstake.ral.json\";\nimport * as types from \"./types\";\n\nexport const AlphStakeAndLock = new ExecutableScript<{\n xAlphToken: HexString;\n xAlphStakeVault: HexString;\n amount: bigint;\n}>(\n Script.fromJson(AlphStakeAndLockScriptJson, \"\", types.AllStructs),\n getContractByCodeHash\n);\n\nexport const XAlphUnlockAndStartUnstake = new ExecutableScript<{\n xAlphToken: HexString;\n xAlphStakeVault: HexString;\n amount: bigint;\n}>(\n Script.fromJson(XAlphUnlockAndStartUnstakeScriptJson, \"\", types.AllStructs),\n getContractByCodeHash\n);\n","{\n \"version\": \"v4.2.5\",\n \"name\": \"AlphStakeAndLock\",\n \"bytecodeTemplate\": \"01010300020018b417001600{2}a2{2}0d0c{0}010c0c0d{1}010c170116001601{2}a3{2}0d0c{1}010f\",\n \"fieldsSig\": {\n \"names\": [\n \"xAlphToken\",\n \"xAlphStakeVault\",\n \"amount\"\n ],\n \"types\": [\n \"XAlphToken\",\n \"XAlphStakeVault\",\n \"U256\"\n ],\n \"isMutable\": [\n false,\n false,\n false\n ]\n },\n \"functions\": [\n {\n \"name\": \"main\",\n \"paramNames\": [],\n \"paramTypes\": [],\n \"paramIsMutable\": [],\n \"returnTypes\": []\n }\n ]\n}","{\n \"version\": \"v4.2.5\",\n \"name\": \"XAlphUnlockAndStartUnstake\",\n \"bytecodeTemplate\": \"01010300020016b41700{2}0d0c{1}01100c0d{1}010c170116001601{2}a3{2}0d0d{0}010d18\",\n \"fieldsSig\": {\n \"names\": [\n \"xAlphToken\",\n \"xAlphStakeVault\",\n \"amount\"\n ],\n \"types\": [\n \"XAlphToken\",\n \"XAlphStakeVault\",\n \"U256\"\n ],\n \"isMutable\": [\n false,\n false,\n false\n ]\n },\n \"functions\": [\n {\n \"name\": \"main\",\n \"paramNames\": [],\n \"paramTypes\": [],\n \"paramIsMutable\": [],\n \"returnTypes\": []\n }\n ]\n}","{\n \"deployerAddress\": \"16j6oMwCc768CSjXst5ftHwyu7gUn6PvCX7YVvAQWWbZ2\",\n \"contracts\": {\n \"AlphUnstakeVault\": {\n \"txId\": \"36ad2eb4a64bcc3b89441a0f0775dd57fbefe02ad6e647680f830217c8d80f9f\",\n \"unsignedTx\": \"000101010103000000081500551362cc76354454f639b640f9c898aa72cf097706ad51d8fbcb2fcb4b65e78113c4016345785d8a0000a2144198060540ea40f841384172418c0000030901409216020c3013415e7b160016010c0d3687170316001601371704160316043616031604314c020d4a010c36170516050c2f4c04160416022d02160216053313415f7b160016011602871706160516061604334c020d4a010c361705160416063617040c1602361602381707160216072d1702160416072d17040c16073616072d0d351707160416051607373917040f1602370e3a170816080e16021608373637170816080e16021608373637170816080e16021608373637170816080e16021608373637170816080e16021608373637170816080e160216083736371708160416083702010000000103d3f10c9d97ce020201000003014020d3223281b2ce040c3313167b5617001600ce033413177b1600ce032b1701ce0217021601ce04314c0516021601ce04000017021602a0002b0201020102011fd30e00e856b417011601ce0077457a4b04181601ce014513147b160000023213157bce011600a8a00016002aa100a000ce022f0201020001000bd38e18691cb417001600ce00774513147bce01b014402b050300040300000000000000000000000000000000000000000000000000000000000000000200020002001403010200ad188000e2aac1174876e80001aaa31a3b5062a1147e3559b7fcb53ab81ac66522b83e13ac0ec1738cf7ad0a43e97914770002aa2b00c7436014a228d1aac67b64daf32f482052c2186c0efc78d9784ef0a19401c463d9bafbc3883a7600551362cc76354454f639b640f9c898aa72cf097706ad51d8fbcb2fcb4b65e78100000000000000000000\",\n \"signature\": \"ba1361ee2f4aebad5dbe1d4d374c28e503575318a1d0d13e4b48c0a6877e4b8031749843b7c639d9b853594d181f48c0189510e9c247f33d3d90abde01a7fb03\",\n \"gasPrice\": \"100000000000\",\n \"gasAmount\": 58026,\n \"blockHash\": \"0000005cfe48f0844e82228b25567d14e12b8889eae8152045758c3e8acaea30\",\n \"codeHash\": \"cdc7cec3c418bb3e4f7f43d28a151fbe950e6429ff56c060c04d0f207cd4e5a4\",\n \"contractInstance\": {\n \"address\": \"211Z8st6gChA7GMXboHH2jepvGhyksnDUQ7nkzgZrcTeo\",\n \"contractId\": \"5dea2d84f611879bf5d9486bd6b0f7e590f0b6cdbf50fb8062ea94a70fef8d00\",\n \"groupIndex\": 0\n }\n },\n \"XAlphToken\": {\n \"txId\": \"d0efd4c2375b501ac8d69612d633f6ab87e2d06be74942be768d7f425f6c0390\",\n \"unsignedTx\": \"000101010103000000091500551362cc76354454f639b640f9c898aa72cf097706ad51d8fbcb2fcb4b65e78113c4016345785d8a0000a214437e091109121b40244051407a40ac40ca411741474165417341a6427842b242d4435d010000000102ce0002010000000102ce0102010000000102ce0202010000000102a00002010002040115d3cee9319416011600000a311342277b160113202c170216001602160213202a62170316037102010002030114d33cd5e72916004313202e0c2f1342267b16004313202d1702160016010c1602000802010002030119d32cabd28216004313202e0c2f1342267b160016010005170216020b244c031600024a05160016023d00090201000202010ed31bc25d3416004313202e0c2f1342267b160016016b44020000040601402a16021603344c020b02160216032a0e2d17041600160400041705160516012f4c0316043f0216051601314c091600160116040d2a16030008024a061600160116021604000802010002030118d34b2e25b716011600000a311342277b160113202c170216000c1602621600160213202a16004362440201000101010ed30041471116004313202e0c2f1342267b16004313202d02010000000103d3676c3c3314000201010102001bd3d63c543cb41701160148130a7b16000c33130e7b1601b11600ab16011600a9a00016002aa10005160116005f01010106014069d33538a49fb41701160148130a7bce050c33130c7b16000c33130e7ba0010d2aa101140a5f5f6d61705f5f305f5f16014744cbc54c1d0c0d0d140a5f5f6d61705f5f305f5f16014744cb010117021602000ace0431130b7b1602a00100070c0e0c140a5f5f6d61705f5f305f5f16014744cb01024a09ca140a5f5f6d61705f5f305f5f16014744b1a0016bd201011601b11600acb11601160056ce051305640c13016417041703b21600a2160147a0014044ce0316031604c11705a00016002ba10006160116005f160502010001010115d38072397d140a5f5f6d61705f5f305f5f16004744cbc5194c021400020c0d0d140a5f5f6d61705f5f305f5f16004744cb010102010002030111d3fd3d3af616004716014044cb17021602c5130d7b0c0d160201020201000206004040d38bb32147b4170216024716004044cb170316010c33130e7b16010d0d16030103170416044c40290c0d0d140a5f5f6d61705f5f305f5f16024744cb01011600000617051605430c2f4c0a16020d0c140a5f5f6d61705f5f305f5f16024744cb01034a0a16050c0e0c140a5f5f6d61705f5f305f5f16024744cb01020c0c1603010414404a07030558414c5048030b5374616b656420414c504802120340205dea2d84f611879bf5d9486bd6b0f7e590f0b6cdbf50fb8062ea94a70fef8d00021002c09a7ec8000306414c504800011405020200020013c8033b2e3c9fd0803ce8000000ae188000e6ddc1174876e80001aaa31a3b25ad7129900a12a0855ce79fec7338a1c60ae9d9bce40de14794cae54f8bca3d0002aa2b00c7436014a228d1aac67b64daf32f482052c2186c0efc78d9784ef0a19401c45c8013d8c10e0a7600551362cc76354454f639b640f9c898aa72cf097706ad51d8fbcb2fcb4b65e78100000000000000000000\",\n \"signature\": \"3407dc308b6427d361e73fbbc7313060afdf88f8c1a4571986176bbf3831e2b60cd78d2e3384e40cfa54ff86d32bdcbf9a8929515bcb40f9af20d1efb1faa210\",\n \"gasPrice\": \"100000000000\",\n \"gasAmount\": 59101,\n \"blockHash\": \"000000aff89ba10a3749c17a394741b90c7d076db81300a3b5db4d589c9deed0\",\n \"codeHash\": \"19e6ebe6ce7c8a3e338d3fd9696fb8dbe965893904c9ff5cd99116109ce56273\",\n \"contractInstance\": {\n \"address\": \"2BnHxjxAaPgkpHQrU7DzrwHnpR7f8FNrk18HqkMKjB5xB\",\n \"contractId\": \"fdf5067af438da490b166c913768a646fd34c3891957b350cbf87820ae77ad00\",\n \"groupIndex\": 0\n },\n \"issueTokenAmount\": \"1000000000000000000000000000\"\n },\n \"GovernanceDemo\": {\n \"txId\": \"65dde7bebdbd3414a9db9affdce739c530d32e28d48ff32a360d46e4814c1251\",\n \"unsignedTx\": \"000101010103000000081500551362cc76354454f639b640f9c898aa72cf097706ad51d8fbcb2fcb4b65e78113c4016345785d8a0000a21443c2090c40c9419741f54217422b426c42a642b44382438d439843a801000206004058d3926b380bb417021602ce00774513087b140a5f5f6d61705f5f305f5f16004744cbc54c403f0c0d0d140a5f5f6d61705f5f305f5f16004744cb1705160501010d0d0d1605010117041703000b7a4c041816030c304c180c0d0d140a5f5f6d61705f5f315f5f16034044cb010116012a0c0e0c140a5f5f6d61705f5f315f5f16034044cb0102a00016012aa100160416012a0d0e0c140a5f5f6d61705f5f305f5f16004744cb01024a09ca140a5f5f6d61705f5f305f5f16004744b10c1601d201020100020700405ed365b06caeb417021602ce00774513087b140a5f5f6d61705f5f305f5f16004744cbc50d7b0c0d0d140a5f5f6d61705f5f305f5f16004744cb1706160601010d0d0d1606010117041703160416012b170516050d0e0c140a5f5f6d61705f5f305f5f16004744cb0102000b7a4c041816030c304c180c0d0d140a5f5f6d61705f5f315f5f16034044cb010116012b0c0e0c140a5f5f6d61705f5f315f5f16034044cb0102a00016012ba10016050c2f4c09ca0d0c140a5f5f6d61705f5f305f5f16004744cb010301000002004033d3ecf99ab7b4ce054513077b000919107b000a19117b56a101ce01ce02ce03ce041017000c170116011600314c14ca140a5f5f6d61705f5f315f5f16017a10314d0d2acf4044b10cd2010116010d2a17014a2805a0015e010000000012d33919f580b4ce054513077b00090f7b000a19117b56a10207a0025e010000000406d3068539face01ce02ce03ce040201000102021ad344a25325140a5f5f6d61705f5f305f5f16004744cbc50d7b0c0d0d140a5f5f6d61705f5f305f5f16004744cb1701160101010d0d0d1601010102010001010116d32e30a67700090f7b140a5f5f6d61705f5f315f5f16004044cbc50e7b0c0d0d140a5f5f6d61705f5f315f5f16004044cb010102010000000103d33cfd4f9ea000020100010300405cd376a80ea2b417011601480c7b00090f7b000a19117b140a5f5f6d61705f5f315f5f16004044cbc50e7b140a5f5f6d61705f5f305f5f16014744cbc50d7b0c0d0d140a5f5f6d61705f5f305f5f16014744cb01010c2f13067b0d0d0d140a5f5f6d61705f5f305f5f16014744cb01011702a00016022aa1000c0d0d140a5f5f6d61705f5f315f5f16004044cb010116022a0c0e0c140a5f5f6d61705f5f315f5f16004044cb010216000c0e0c140a5f5f6d61705f5f305f5f16014744cb01020616011600160260000000000104a0010c3002000000000104a0020c300200000000010700097a4c0318000a190214402d060300020002000200020004030000000000000000000000000000000000000000000000000000000000000000140703020002000200ad188000e764c1174876e80001aaa31a3bba73c035d5028365f9899524362abe6ece62c5dec6570246632b20bc0dd605160002aa2b00c7436014a228d1aac67b64daf32f482052c2186c0efc78d9784ef0a19401c460e926cf9301d27600551362cc76354454f639b640f9c898aa72cf097706ad51d8fbcb2fcb4b65e78100000000000000000000\",\n \"signature\": \"0604bbb32add7106fc08ac4c5f7c25c705e4fbdd0cf2e613ac1ddc7bc0c4a09959a1f4e621c30953bc83f6d1c6288ff69949ab8a5ba5815b54b5cd93298727c4\",\n \"gasPrice\": \"100000000000\",\n \"gasAmount\": 59236,\n \"blockHash\": \"000000a19610c75ca22cddee5d522e3949a5a0c5f1c68f58a5ce34463145a9b0\",\n \"codeHash\": \"1d690d8074cb6684908dc8465d055adebb69e9faaafe5293459e9901e0e13fd2\",\n \"contractInstance\": {\n \"address\": \"26NN5Dr2qABRfNf3vxikfTYkhQSh1jsnVKpxxbJoWHDm9\",\n \"contractId\": \"ad894ce88fb5be0e70f08df50f8667f771cb6ad8583b9400d119d7caccfdd000\",\n \"groupIndex\": 0\n }\n },\n \"RewardSharingVault\": {\n \"txId\": \"2fe75ba0e80253b049406acc06de6eadebb09893716bdc01cf2b49bdf8afa113\",\n \"unsignedTx\": \"000101010103000000081500551362cc76354454f639b640f9c898aa72cf097706ad51d8fbcb2fcb4b65e78113c4016345785d8a0000a214432e040740b74152423c4277428942c0431e01000208004054d3926b380bb417021602ce00774513287b140a5f5f6d61705f5f305f5f16004744cbc54c40270c0d0d140a5f5f6d61705f5f305f5f16004744cb01011703160116032a16000d0ece00010d1707170616062f132b7b16000005160316012a0c0e0c140a5f5f6d61705f5f305f5f16004744cb01024a15160116000d0ece00010d1705170416042f132b7bca140a5f5f6d61705f5f305f5f16004744b11601a001d20102a00016012aa10005160016015f01000205004046d365b06caeb417021602ce00774513287b140a5f5f6d61705f5f305f5f16004744cbc513297b0c0d0d140a5f5f6d61705f5f305f5f16004744cb010117031601160332132c7b160316012b17041600000516040c2f4c0aca0d0c140a5f5f6d61705f5f305f5f16004744cb01034a0a16040c0e0c140a5f5f6d61705f5f305f5f16004744cb0102a00016012ba10006160016015f0000030901409216020c3013415e7b160016010c0d3687170316001601371704160316043616031604314c020d4a010c36170516050c2f4c04160416022d02160216053313415f7b160016011602871706160516061604334c020d4a010c361705160416063617040c1602361602381707160216072d1702160416072d17040c16073616072d0d351707160416051607373917040f1602370e3a170816080e16021608373637170816080e16021608373637170816080e16021608373637170816080e16021608373637170816080e16021608373637170816080e160216083736371708160416083702010101030019d3fe1110a1a0000c33132a7bb417011601ce011600ac160013c40de0b6b3a7640000a00000021702a00116022aa10107160116005f010300010005d3a28b71d5b417001600000500020102001916000006170116010c334c081600ce011601ab08160016015fa0010d0e0c140a5f5f6d61705f5f305f5f16004744cb010201000105014024d31191a066140a5f5f6d61705f5f305f5f16004744cbc513297b0c0d0d140a5f5f6d61705f5f305f5f16004744cb1704160401010d0d0d1604010117021701a00116022b17031601160313c40de0b6b3a76400000002021405020300030014050202000200ad188000e551c1174876e80001aaa31a3b2219a77dd8363a506c890e31dce08d61b4cf53e0bf552837842171ebbd2022640002aa2b00c7436014a228d1aac67b64daf32f482052c2186c0efc78d9784ef0a19401c45f710626ea506a7600551362cc76354454f639b640f9c898aa72cf097706ad51d8fbcb2fcb4b65e78100000000000000000000\",\n \"signature\": \"ff6c60717382cfad82744a5a47a0a0450fdae3db36024e48a70c491fa63bc5a74efc34cefc25e40bdd059a5958a7cbfd809bd1efff1c02976821ad5a1ad04375\",\n \"gasPrice\": \"100000000000\",\n \"gasAmount\": 58705,\n \"blockHash\": \"000000af5d3769937ed5c660489f6868f6a74384af5db9de1a5d3195da3ca380\",\n \"codeHash\": \"6f1a8ea9a68cabdd02e85c33844c76c21ec4ccc1007effb7b71ca1f7640ead23\",\n \"contractInstance\": {\n \"address\": \"x2hFgxMnAhV2DAuodrXQrk4u2BRKUYsSpPDg335nuFzo\",\n \"contractId\": \"31a1e0529c6b0349e0b1f1ad8a3f16d5d60b7fe2f6dc8128cb14d922668e3800\",\n \"groupIndex\": 0\n }\n },\n \"XAlphStakeVault\": {\n \"txId\": \"4d65707e5baf56d589f3c3941677cdba98b4fa4745d7f1f025b71a89fbcc4817\",\n \"unsignedTx\": \"000101010103000000081500551362cc76354454f639b640f9c898aa72cf097706ad51d8fbcb2fcb4b65e78113c4016345785d8a0000a21445d705174028407340af40cc40fc411a41284136414f41a341c341cd41db42234241431043f0448b451145604577458e45a7010002030112d3545eacd4160116000005311342277b160113202c170216001602160213202a620201000204014028d3083a358916004313202e0c2f1342267b16014313202f1342287b1600000517020c170316031602314c0e1600160300001601414c0316033f0216030d2a17034a2e0b0201000203011fd3694941c216004313202e0c2f1342267b16014313202f1342287b160016010001170216020b244c031600024a05160016023d00040201000202010dd354ad273416004313202e0c2f1342267b160016014402010002030118d34b2e25b7160116000005311342277b160113202c170216000c1602621600160213202a16004362440201000101010ed30041471116004313202e0c2f1342267b16004313202d02010000000103d3676c3c33140002010000000103d393f264e8a0000200000101000c16004313202f136afb7b1600a10005a000b45f0000020601402e16014313202f136afa7b160117021600431703160313202e0c2f136af97b0c170416041603314c1016001604160413202a62170516051602000a1702160413202a17044a2c160271a000712f02000002020110160071160171314c051600160144000b4a041601160044000b0200000101010316004f02010000000103d3b299f80ace000201000102021ed3f87904e4140a5f5f6d61705f5f305f5f16004744cbc5194c040c0006024a110c0d0d140a5f5f6d61705f5f305f5f16004744cb1701160101010d0d0d1601010102010001010108d32b875d11140a5f5f6d61705f5f305f5f16004744cbc5020101010800405fd3d63c543cb4170116014813412d7b16000c331341307b1601ce001600ac140a5f5f6d61705f5f305f5f16014744cbc54c40370c0d0d140a5f5f6d61705f5f305f5f16014744cb1707160701010d0d0d1607010117031702160216002a0c0e0c140a5f5f6d61705f5f305f5f16014744cb01021603000517040c170516051604314c0f1603160500001706160116000e0c1606d4926b380b16050d2a17054a2d4a09ca140a5f5f6d61705f5f305f5f16014744b116000006d20102a00116002aa10106160116005f0102010900406bd310bd129fb4170116014813412d7b140a5f5f6d61705f5f305f5f16014744cbc513412e7b16000c331341317b0c0d0d140a5f5f6d61705f5f305f5f16014744cb1708160801010d0d0d1608010117031702160216003413412f7b160216002b17041603000517050c170616061605314c0f1603160600001707160116000e0c1607d465b06cae16060d2a17064a2d16040c2f4c0aca0d0c140a5f5f6d61705f5f305f5f16014744cb01034a0a16040c0e0c140a5f5f6d61705f5f305f5f16014744cb01021601ce001600aba00116002ba10107160116005f01000206004045d3c5f91cb4b4170216024813412d7b1601160000161341357b140a5f5f6d61705f5f305f5f16024744cbc513412e7b0c0d0d140a5f5f6d61705f5f305f5f16024744cb1705160501010d0d0d160501011704170316040005ce01311341327b1604160000010b241341337b160216030e0c1600d4926b380b1604160000030d0e0c140a5f5f6d61705f5f305f5f16024744cb01020100010500403ad3b6398887b4170116014813412d7b140a5f5f6d61705f5f305f5f16014744cbc513412e7b0c0d0d140a5f5f6d61705f5f305f5f16014744cb1704160401010d0d0d16040101170317021603160000010b251341347b160116020e0c1600d465b06cae1603160000020d0e0c140a5f5f6d61705f5f305f5f16014744cb010201000101011fd3e5725392140a5f5f6d61705f5f305f5f16004744cbc5197a4b0418a0010c2f4c020c020c0d0d140a5f5f6d61705f5f305f5f16004744cb010113c40de0b6b3a76400002ca0012d02010001010008d3e5bf78dcb4a0024513412c7b16000008010001010008d34f58efe6b4a0024513412c7b1600a102010002030109d3af1ed9dd1601b9170216001602000b00090214402602034020fdf5067af438da490b166c913768a646fd34c3891957b350cbf87820ae77ad00020a144048030340209d203f022693e95c512474ee9d788706c567247b6862b802b90355fcc46784a202000400551362cc76354454f639b640f9c898aa72cf097706ad51d8fbcb2fcb4b65e781ad188000eb69c1174876e80002aaa31a3b2cd52d7ce3a8ce5d59e5ae88e7d11cef7b8c31d3f74d55051412367f6bc1e92a0002aa2b00c7436014a228d1aac67b64daf32f482052c2186c0efc78d9784ef0a194aaa31a3b9cf7d98fff4154d2fdf629284fa96e8275b040537070a04446ee303b8d6c50ba0301c4891ecbb280614adc00551362cc76354454f639b640f9c898aa72cf097706ad51d8fbcb2fcb4b65e78100000000000000000000\",\n \"signature\": \"f02c9f5d77b79b5c2af9558180381295d3d8a0598cf8e909d1f582606a6b9469243af28fb1570c72550fce5733c28f58b11f022fbbeff64a12f628669fc4afcc\",\n \"gasPrice\": \"100000000000\",\n \"gasAmount\": 60265,\n \"blockHash\": \"000000064709ddf4dcb27cd606ae682caa4e05b25e0da635e8b3440bd5dcbfb0\",\n \"codeHash\": \"16a37508b26e9522baf304b39ed18846da97112687dd13aa560c6c18cae39e6e\",\n \"contractInstance\": {\n \"address\": \"2AAtQ91a2kFv2xLEdaU9DSR7QJJSFuHX7SRKVy3wuGWTq\",\n \"contractId\": \"e6075e494aa5a1fd2a59aec971d165b2913eac6c20dbb852c2a39cf9842dd300\",\n \"groupIndex\": 0\n }\n }\n },\n \"scripts\": {},\n \"migrations\": {}\n}","{\n \"deployerAddress\": \"1DrDyTr9RpRsQnDnXo2YRiPzPW4ooHX5LLoqXrqfMrpQH\",\n \"contracts\": {\n \"AlphUnstakeVault\": {\n \"txId\": \"5d1b4e3d691a02df4b53a9992c2e9a96b4e392a5c0889de02688a293bd99c785\",\n \"unsignedTx\": \"000401010103000000081500bee85f379545a2ed9f6cceb331288842f378cf0f04012ad4ac8824aae7d6f80a13c4016345785d8a0000a2144198060540ea40f841384172418c0000030901409216020c3013415e7b160016010c0d3687170316001601371704160316043616031604314c020d4a010c36170516050c2f4c04160416022d02160216053313415f7b160016011602871706160516061604334c020d4a010c361705160416063617040c1602361602381707160216072d1702160416072d17040c16073616072d0d351707160416051607373917040f1602370e3a170816080e16021608373637170816080e16021608373637170816080e16021608373637170816080e16021608373637170816080e16021608373637170816080e160216083736371708160416083702010000000103d3f10c9d97ce020201000003014020d3223281b2ce040c3313167b5617001600ce033413177b1600ce032b1701ce0217021601ce04314c0516021601ce04000017021602a0002b0201020102011fd30e00e856b417011601ce0077457a4b04181601ce014513147b160000023213157bce011600a8a00016002aa100a000ce022f0201020001000bd38e18691cb417001600ce00774513147bce01b014402b050300040300000000000000000000000000000000000000000000000000000000000000000200020002001403010200ad188000e2aac1174876e8000137a4444713f113d86f559e1e84171b1a3b40f6218d5ab90700dd8c5e85f2e7123833e11e000381818e63bd9e35a5489b52a430accefc608fd60aa2c7c0d1b393b5239aedf6b001c6b85ed9214f8f1f1e900000bee85f379545a2ed9f6cceb331288842f378cf0f04012ad4ac8824aae7d6f80a00000000000000000000\",\n \"signature\": \"ca5285b7a549134e7968b69fb733d376b923a5eca2fd41bf0e4eb75cb0244dd3345016ddd9b8397c585b875307959909caf109849924679976dbde317fc7be9c\",\n \"gasPrice\": \"100000000000\",\n \"gasAmount\": 58026,\n \"blockHash\": \"0474d8bb002ba67ad14daeb77399431db2038a5a40640055ca47ebecfde690e0\",\n \"codeHash\": \"cdc7cec3c418bb3e4f7f43d28a151fbe950e6429ff56c060c04d0f207cd4e5a4\",\n \"contractInstance\": {\n \"address\": \"vVaqDXgWSb21kJjJRbdvB9VtaVR1QzhmEbE9vYjpijdR\",\n \"contractId\": \"1acdec45831016d1cbc02a86046186189874216703d81af9d17d80a6a08e4b00\",\n \"groupIndex\": 0\n }\n },\n \"XAlphToken\": {\n \"txId\": \"419f046f3dde9f00d62a885727c0ea6c33c3637556f97172900ecf3b5ca043a2\",\n \"unsignedTx\": \"000401010103000000081500bee85f379545a2ed9f6cceb331288842f378cf0f04012ad4ac8824aae7d6f80a13c4016345785d8a0000a21443b0091109121b40244051407a40ac40ca411741474165417341a6429142cb42ed438f010000000102ce0002010000000102ce0102010000000102ce0202010000000102a00002010002040115d3cee9319416011600000a311342277b160113202c170216001602160213202a62170316037102010002030114d33cd5e72916004313202e0c2f1342267b16004313202d1702160016010c1602000802010002030119d32cabd28216004313202e0c2f1342267b160016010005170216020b244c031600024a05160016023d00090201000202010ed31bc25d3416004313202e0c2f1342267b160016016b44020000040601402a16021603344c020b02160216032a0e2d17041600160400041705160516012f4c0316043f0216051601314c091600160116040d2a16030008024a061600160116021604000802010002030118d34b2e25b716011600000a311342277b160113202c170216000c1602621600160213202a16004362440201000101010ed30041471116004313202e0c2f1342267b16004313202d02010000000103d3676c3c3314000201010102001bd3d63c543cb41701160148130a7b16000c33130e7b1601b11600ab16011600a9a00016002aa10005160116005f0101010601406bd33538a49fb41701160148130a7bce050c33130c7b16000c33130e7ba0010d2aa101140a5f5f6d61705f5f305f5f16014744cbc54c1d0c0d0d140a5f5f6d61705f5f305f5f16014744cb010117021602000ace0431130b7b1602a00100070c0e0c140a5f5f6d61705f5f305f5f16014744cb01024a0bca140a5f5f6d61705f5f305f5f160147447a7e0214696e73657274206174206d617020706174683a2000b1a0016bd201011601b11600acb11601160056ce051305640c13016417041703b21600a2160147a0014044ce0316031604c11705a00016002ba10006160116005f160502010001010115d38072397d140a5f5f6d61705f5f305f5f16004744cbc5194c021400020c0d0d140a5f5f6d61705f5f305f5f16004744cb010102010002030111d3fd3d3af616004716014044cb17021602c5130d7b0c0d160201020201000206004042d38bb32147b4170216024716004044cb170316010c33130e7b16010d0d16030103170416044c402b0c0d0d140a5f5f6d61705f5f305f5f16024744cb01011600000617051605430c2f4c0c16020d0c140a5f5f6d61705f5f305f5f160247447a7e021472656d6f7665206174206d617020706174683a2000cb01034a0a16050c0e0c140a5f5f6d61705f5f305f5f16024744cb01020c0c1603010414404907030558414c5048030b5374616b656420414c504802120340201acdec45831016d1cbc02a86046186189874216703d81af9d17d80a6a08e4b000210028000ea600306414c5048000114050202000200ad188000e730c1174876e8000137a444477f7b4b7130c2284dcf645bc7c3a02145dad57a952c8c6403f3e039829a626c6d000381818e63bd9e35a5489b52a430accefc608fd60aa2c7c0d1b393b5239aedf6b001c6b85ed7a90355dff1100000bee85f379545a2ed9f6cceb331288842f378cf0f04012ad4ac8824aae7d6f80a00000000000000000000\",\n \"signature\": \"8de92f39d121f6572f78a302127d8853d03932a154b65fef58a1e45e6ae595c7297f7e2f50c940de534b12f149f79e32d74c0636190cab6f9b8cee6aa6407498\",\n \"gasPrice\": \"100000000000\",\n \"gasAmount\": 59184,\n \"blockHash\": \"0a45f073ea3b7a3e43dda2bcc30dc82db263469bae16d49433850e7b618dfc00\",\n \"codeHash\": \"ff82445fd49b9aa5904a68c1aad286b3fedb9b314d840ff35f687c78fb52201d\",\n \"contractInstance\": {\n \"address\": \"u8vQcnnKuncdvooyN4EDU7fXFRNkdMKNFVF8QU1qBQzB\",\n \"contractId\": \"06a72c6ce8eb96c1d40fd6c2bfbc51e522cae9ec355d9c63ff6c8a8fcd119100\",\n \"groupIndex\": 0\n }\n },\n \"RewardSharingVault\": {\n \"txId\": \"bda7709b86eb33e62548d1f29361d5f96dd4887d840e46b62386312788d2206a\",\n \"unsignedTx\": \"000401010103000000081500bee85f379545a2ed9f6cceb331288842f378cf0f04012ad4ac8824aae7d6f80a13c4016345785d8a0000a2144360040740d04184426e42a942bb42f2435001000208004056d3926b380bb417021602ce00774513287b140a5f5f6d61705f5f305f5f16004744cbc54c40270c0d0d140a5f5f6d61705f5f305f5f16004744cb01011703160116032a16000d0ece00010d1707170616062f132b7b16000005160316012a0c0e0c140a5f5f6d61705f5f305f5f16004744cb01024a17160116000d0ece00010d1705170416042f132b7bca140a5f5f6d61705f5f305f5f160047447a7e0214696e73657274206174206d617020706174683a2000b11601a001d20102a00016012aa10005160016015f01000205004048d365b06caeb417021602ce00774513287b140a5f5f6d61705f5f305f5f16004744cbc513297b0c0d0d140a5f5f6d61705f5f305f5f16004744cb010117031601160332132c7b160316012b17041600000516040c2f4c0cca0d0c140a5f5f6d61705f5f305f5f160047447a7e021472656d6f7665206174206d617020706174683a2000cb01034a0a16040c0e0c140a5f5f6d61705f5f305f5f16004744cb0102a00016012ba10006160016015f0000030901409216020c3013415e7b160016010c0d3687170316001601371704160316043616031604314c020d4a010c36170516050c2f4c04160416022d02160216053313415f7b160016011602871706160516061604334c020d4a010c361705160416063617040c1602361602381707160216072d1702160416072d17040c16073616072d0d351707160416051607373917040f1602370e3a170816080e16021608373637170816080e16021608373637170816080e16021608373637170816080e16021608373637170816080e16021608373637170816080e160216083736371708160416083702010101030019d3fe1110a1a0000c33132a7bb417011601ce011600ac160013c40de0b6b3a7640000a00000021702a00116022aa10107160116005f010300010005d3a28b71d5b417001600000500020102001916000006170116010c334c081600ce011601ab08160016015fa0010d0e0c140a5f5f6d61705f5f305f5f16004744cb010201000105014024d31191a066140a5f5f6d61705f5f305f5f16004744cbc513297b0c0d0d140a5f5f6d61705f5f305f5f16004744cb1704160401010d0d0d1604010117021701a00116022b17031601160313c40de0b6b3a76400000002021405020300030014050202000200ad188000e5b5c1174876e8000137a44447d79d999377ba4b33e0b3ca20c672a9a2112f17d90d90ee6147824c53ae4fd760000381818e63bd9e35a5489b52a430accefc608fd60aa2c7c0d1b393b5239aedf6b001c6b85ed630d994e8cd080000bee85f379545a2ed9f6cceb331288842f378cf0f04012ad4ac8824aae7d6f80a00000000000000000000\",\n \"signature\": \"89222a8c53905b172735af31d1bb4020b4e33e3ebadf84e641c2feba28f512876a6ea700f10c986d7563da365227f1a97b91a2f003c0af0e8f57a3d1ded32dd3\",\n \"gasPrice\": \"100000000000\",\n \"gasAmount\": 58805,\n \"blockHash\": \"0301c8976c0ecb0a4022b1d64ec581f5bcc3f43323c6708fd0e4fe715d146be0\",\n \"codeHash\": \"947e9fadaac74c9e777046a286e060c51e228762d1a484593aebcbd4409c8509\",\n \"contractInstance\": {\n \"address\": \"26iWN6j81TzsXWp8fUFs2t9EoQvCcjtCFq9K4PMAEAAbq\",\n \"contractId\": \"b2b24a8fa27013a41afedcfc5d8603ef3c3778e385708113ddd76ad2a1cd3100\",\n \"groupIndex\": 0\n }\n },\n \"XAlphStakeVault\": {\n \"txId\": \"a0ec98e20ae70a1b70f805cdb9307695c69601eb175a44bcf56e88eac4ad1331\",\n \"unsignedTx\": \"000401010103000000081500bee85f379545a2ed9f6cceb331288842f378cf0f04012ad4ac8824aae7d6f80a13c4016345785d8a0000a214460405174028407340af40cc40fc411a41284136414f41a341c341cd41db421e423c4324441d44b8453e458d45a445bb45d4010002030112d3545eacd4160116000005311342277b160113202c170216001602160213202a620201000204014028d3083a358916004313202e0c2f1342267b16014313202f1342287b1600000517020c170316031602314c0e1600160300001601414c0316033f0216030d2a17034a2e0b0201000203011fd3694941c216004313202e0c2f1342267b16014313202f1342287b160016010001170216020b244c031600024a05160016023d00040201000202010dd354ad273416004313202e0c2f1342267b160016014402010002030118d34b2e25b7160116000005311342277b160113202c170216000c1602621600160213202a16004362440201000101010ed30041471116004313202e0c2f1342267b16004313202d02010000000103d3676c3c33140002010000000103d393f264e8a0000200000101000c16004313202f136afb7b1600a10005a000b45f0000020601402e16014313202f136afa7b160117021600431703160313202e0c2f136af97b0c170416041603314c1016001604160413202a62170516051602000a1702160413202a17044a2c160271a000712f02000002020110160071160171314c051600160144000b4a041601160044000b0200000101010316004f02010000000103d3b299f80ace000201000102021ad3f87904e4140a5f5f6d61705f5f305f5f16004744cbc513412e7b0c0d0d140a5f5f6d61705f5f305f5f16004744cb1701160101010d0d0d1601010102010001010108d32b875d11140a5f5f6d61705f5f305f5f16004744cbc50201010108004061d3d63c543cb4170116014813412d7b16000c331341307b1601ce001600ac140a5f5f6d61705f5f305f5f16014744cbc54c40370c0d0d140a5f5f6d61705f5f305f5f16014744cb1707160701010d0d0d1607010117031702160216002a0c0e0c140a5f5f6d61705f5f305f5f16014744cb01021603000517040c170516051604314c0f1603160500001706160116000e0c1606d4926b380b16050d2a17054a2d4a0bca140a5f5f6d61705f5f305f5f160147447a7e0214696e73657274206174206d617020706174683a2000b116000006d20102a00116002aa10106160116005f0101010900406dd310bd129fb4170116014813412d7b140a5f5f6d61705f5f305f5f16014744cbc513412e7b16000c331341317b0c0d0d140a5f5f6d61705f5f305f5f16014744cb1708160801010d0d0d1608010117031702160216003413412f7b160216002b17041603000517050c170616061605314c0f1603160600001707160116000e0c1607d465b06cae16060d2a17064a2d16040c2f4c0cca0d0c140a5f5f6d61705f5f305f5f160147447a7e021472656d6f7665206174206d617020706174683a2000cb01034a0a16040c0e0c140a5f5f6d61705f5f305f5f16014744cb01021601ce001600aba00116002ba10107160116005f01000206004045d3c5f91cb4b4170216024813412d7b1601160000161341357b140a5f5f6d61705f5f305f5f16024744cbc513412e7b0c0d0d140a5f5f6d61705f5f305f5f16024744cb1705160501010d0d0d160501011704170316040005ce01311341327b1604160000010b241341337b160216030e0c1600d4926b380b1604160000030d0e0c140a5f5f6d61705f5f305f5f16024744cb01020100010500403ad3b6398887b4170116014813412d7b140a5f5f6d61705f5f305f5f16014744cbc513412e7b0c0d0d140a5f5f6d61705f5f305f5f16014744cb1704160401010d0d0d16040101170317021603160000010b251341347b160116020e0c1600d465b06cae1603160000020d0e0c140a5f5f6d61705f5f305f5f16014744cb010201000101011fd3e5725392140a5f5f6d61705f5f305f5f16004744cbc5197a4b0418a0010c2f4c020c020c0d0d140a5f5f6d61705f5f305f5f16004744cb010113c40de0b6b3a76400002ca0012d02010001010008d3e5bf78dcb4a0024513412c7b16000008010001010008d34f58efe6b4a0024513412c7b1600a102010002030109d3af1ed9dd1601b9170216001602000b0009021440260203402006a72c6ce8eb96c1d40fd6c2bfbc51e522cae9ec355d9c63ff6c8a8fcd119100020214404803034020fea099302300b2e1cd13efcf93a4a421f15ba3978dd53a0e391cd2134035eadb02000400bee85f379545a2ed9f6cceb331288842f378cf0f04012ad4ac8824aae7d6f80aad188000ebc3c1174876e8000137a44447a67cbe36b901780ebb884d3eb0acb3cd77813f67fbc4d88a761e5ec0583d7e5e000381818e63bd9e35a5489b52a430accefc608fd60aa2c7c0d1b393b5239aedf6b001c6b328e8c2658537f0100000bee85f379545a2ed9f6cceb331288842f378cf0f04012ad4ac8824aae7d6f80a00000000000000000000\",\n \"signature\": \"bf5e34710abec3d507483a925287205449787da0678071c7b3eddb14e7b161a40e98fccaf83602e338d21957e8e96c156d07771391ed455021c00f5f8f99414b\",\n \"gasPrice\": \"100000000000\",\n \"gasAmount\": 60355,\n \"blockHash\": \"02c04dac6bb586ea6428ac21cf82d502013e4017081fc4ec6ef779493039fcc0\",\n \"codeHash\": \"363b235338a6ed130bea561739876c8d5122a344aa131085b5d8ee6a8b8fd73e\",\n \"contractInstance\": {\n \"address\": \"26Mp4LUrqM4uJW1zbvJwvBrGFvcjH8Sns8CbfLmM8Y23Z\",\n \"contractId\": \"ad6519c3c5b3d820f7a5104032990a78e85379d0e987d3b4880484d243cebd00\",\n \"groupIndex\": 0\n }\n },\n \"GovernanceDemo\": {\n \"txId\": \"55bbbfdd126faa90658a8ea502462b763c90731621b624c5aa68ee14b3631317\",\n \"unsignedTx\": \"000401010103000000081500bee85f379545a2ed9f6cceb331288842f378cf0f04012ad4ac8824aae7d6f80a13c4016345785d8a0000a214440d090c40e241c942404262427642b742f142ff43cd43d843e343f30100020600405ad3926b380bb417021602ce00774513087b140a5f5f6d61705f5f305f5f16004744cbc54c403f0c0d0d140a5f5f6d61705f5f305f5f16004744cb1705160501010d0d0d1605010117041703000b7a4c041816030c304c180c0d0d140a5f5f6d61705f5f315f5f16034044cb010116012a0c0e0c140a5f5f6d61705f5f315f5f16034044cb0102a00016012aa100160416012a0d0e0c140a5f5f6d61705f5f305f5f16004744cb01024a0bca140a5f5f6d61705f5f305f5f160047447a7e0214696e73657274206174206d617020706174683a2000b10c1601d2010201000207004060d365b06caeb417021602ce00774513087b140a5f5f6d61705f5f305f5f16004744cbc50d7b0c0d0d140a5f5f6d61705f5f305f5f16004744cb1706160601010d0d0d1606010117041703160416012b170516050d0e0c140a5f5f6d61705f5f305f5f16004744cb0102000b7a4c041816030c304c180c0d0d140a5f5f6d61705f5f315f5f16034044cb010116012b0c0e0c140a5f5f6d61705f5f315f5f16034044cb0102a00016012ba10016050c2f4c0bca0d0c140a5f5f6d61705f5f305f5f160047447a7e021472656d6f7665206174206d617020706174683a2000cb010301000002004035d3ecf99ab7b4ce054513077b000919107b000a19117b56a101ce01ce02ce03ce041017000c170116011600314c16ca140a5f5f6d61705f5f315f5f16017a10314d0d2acf40447a7e0214696e73657274206174206d617020706174683a2000b10cd2010116010d2a17014a2605a0015e010000000012d33919f580b4ce054513077b00090f7b000a19117b56a10207a0025e010000000406d3068539face01ce02ce03ce040201000102021ad344a25325140a5f5f6d61705f5f305f5f16004744cbc50d7b0c0d0d140a5f5f6d61705f5f305f5f16004744cb1701160101010d0d0d1601010102010001010116d32e30a67700090f7b140a5f5f6d61705f5f315f5f16004044cbc50e7b0c0d0d140a5f5f6d61705f5f315f5f16004044cb010102010000000103d33cfd4f9ea000020100010300405cd376a80ea2b417011601480c7b00090f7b000a19117b140a5f5f6d61705f5f315f5f16004044cbc50e7b140a5f5f6d61705f5f305f5f16014744cbc50d7b0c0d0d140a5f5f6d61705f5f305f5f16014744cb01010c2f13067b0d0d0d140a5f5f6d61705f5f305f5f16014744cb01011702a00016022aa1000c0d0d140a5f5f6d61705f5f315f5f16004044cb010116022a0c0e0c140a5f5f6d61705f5f315f5f16004044cb010216000c0e0c140a5f5f6d61705f5f305f5f16014744cb01020616011600160260000000000104a0010c3002000000000104a0020c300200000000010700097a4c0318000a190214402d060300020002000200020004030000000000000000000000000000000000000000000000000000000000000000140703020002000200ad188000e7fac1174876e8000137a44447629d8865f0377d63a95c83b089d78f8f36cef8794c0c63d9c8bfa4737b43163b000381818e63bd9e35a5489b52a430accefc608fd60aa2c7c0d1b393b5239aedf6b001c6b328ea3b1c3eef04c80000bee85f379545a2ed9f6cceb331288842f378cf0f04012ad4ac8824aae7d6f80a00000000000000000000\",\n \"signature\": \"71402f7759070a743093ac7927029c09fb28c751d86015778776502fb740cf81299c12b9629a05a39f9ef52c1de3a5372969f92adc84271062c3a2a5db9cab6a\",\n \"gasPrice\": \"100000000000\",\n \"gasAmount\": 59386,\n \"blockHash\": \"0890c618cdc93a4eafa277b94a060dd5f7f0fd27fdde6515e64b6a2615b61280\",\n \"codeHash\": \"214804d168d252924a8a1a8e14570e4e26f8a09a93f8ce3848daee36038f2804\",\n \"contractInstance\": {\n \"address\": \"2463zao2CfMyco56hnwe2JGQz9feg7aDjkyfRR9CLaTPd\",\n \"contractId\": \"8ba430c66789eb7096b50e180d6c6bbb598e2ebd9d3b958fe8a85918a9741a00\",\n \"groupIndex\": 0\n }\n }\n },\n \"scripts\": {},\n \"migrations\": {}\n}","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport {\n RunScriptResult,\n DeployContractExecutionResult,\n NetworkId,\n} from \"@alephium/web3\";\nimport {\n AlphUnstakeVault,\n AlphUnstakeVaultInstance,\n XAlphToken,\n XAlphTokenInstance,\n GovernanceDemo,\n GovernanceDemoInstance,\n RewardSharingVault,\n RewardSharingVaultInstance,\n XAlphStakeVault,\n XAlphStakeVaultInstance,\n} from \".\";\nimport { default as testnetDeployments } from \"../../deployments/.deployments.testnet.json\";\nimport { default as devnetDeployments } from \"../../deployments/.deployments.devnet.json\";\n\nexport type Deployments = {\n deployerAddress: string;\n contracts: {\n AlphUnstakeVault: DeployContractExecutionResult<AlphUnstakeVaultInstance>;\n XAlphToken: DeployContractExecutionResult<XAlphTokenInstance>;\n GovernanceDemo: DeployContractExecutionResult<GovernanceDemoInstance>;\n RewardSharingVault: DeployContractExecutionResult<RewardSharingVaultInstance>;\n XAlphStakeVault: DeployContractExecutionResult<XAlphStakeVaultInstance>;\n };\n};\n\nfunction toDeployments(json: any): Deployments {\n const contracts = {\n AlphUnstakeVault: {\n ...json.contracts[\"AlphUnstakeVault\"],\n contractInstance: AlphUnstakeVault.at(\n json.contracts[\"AlphUnstakeVault\"].contractInstance.address\n ),\n },\n XAlphToken: {\n ...json.contracts[\"XAlphToken\"],\n contractInstance: XAlphToken.at(\n json.contracts[\"XAlphToken\"].contractInstance.address\n ),\n },\n GovernanceDemo: {\n ...json.contracts[\"GovernanceDemo\"],\n contractInstance: GovernanceDemo.at(\n json.contracts[\"GovernanceDemo\"].contractInstance.address\n ),\n },\n RewardSharingVault: {\n ...json.contracts[\"RewardSharingVault\"],\n contractInstance: RewardSharingVault.at(\n json.contracts[\"RewardSharingVault\"].contractInstance.address\n ),\n },\n XAlphStakeVault: {\n ...json.contracts[\"XAlphStakeVault\"],\n contractInstance: XAlphStakeVault.at(\n json.contracts[\"XAlphStakeVault\"].contractInstance.address\n ),\n },\n };\n return {\n ...json,\n contracts: contracts as Deployments[\"contracts\"],\n };\n}\n\nexport function loadDeployments(\n networkId: NetworkId,\n deployerAddress?: string\n): Deployments {\n const deployments =\n networkId === \"testnet\"\n ? testnetDeployments\n : networkId === \"devnet\"\n ? devnetDeployments\n : undefined;\n if (deployments === undefined) {\n throw Error(\"The contract has not been deployed to the \" + networkId);\n }\n const allDeployments: any[] = Array.isArray(deployments)\n ? deployments\n : [deployments];\n if (deployerAddress === undefined) {\n if (allDeployments.length > 1) {\n throw Error(\n \"The contract has been deployed multiple times on \" +\n networkId +\n \", please specify the deployer address\"\n );\n } else {\n return toDeployments(allDeployments[0]);\n }\n }\n const result = allDeployments.find(\n (d) => d.deployerAddress === deployerAddress\n );\n if (result === undefined) {\n throw Error(\"The contract deployment result does not exist\");\n }\n return toDeployments(result);\n}\n","const U256_HEX_CHARS = 64;\nconst CONTRACT_ID_HEX_CHARS = 64;\n\nconst chunkHexString = (hex: string, chunkLength: number): string[] => {\n if (hex.length === 0) {\n return [];\n }\n if (hex.length % chunkLength !== 0) {\n throw new Error(`Packed data must be a multiple of ${chunkLength / 2} bytes`);\n }\n const chunks: string[] = [];\n for (let offset = 0; offset < hex.length; offset += chunkLength) {\n const chunk = hex.slice(offset, offset + chunkLength);\n chunks.push(chunk);\n }\n return chunks;\n};\n\nexport const decodeU256List = (str: string): bigint[] => {\n return chunkHexString(str, U256_HEX_CHARS).map((chunk) => BigInt(`0x${chunk}`));\n};\n\nexport const decodeContractIdList = (str: string): string[] => {\n return chunkHexString(str, CONTRACT_ID_HEX_CHARS);\n};\n","import type { NetworkId } from '@alephium/web3';\n\nexport type StakingSettings = {\n unstakeDuration: bigint;\n maxActiveUnstakeRequestsPerUser: bigint;\n maxConnectedDapps: bigint;\n};\n\nconst defaultSettings: StakingSettings = {\n unstakeDuration: 30n * 24n * 60n * 60n * 1000n, // 30 days in milliseconds\n maxActiveUnstakeRequestsPerUser: 16n,\n maxConnectedDapps: 10n,\n};\n\nconst networkOverrides: Partial<Record<NetworkId, Partial<StakingSettings>>> = {\n devnet: {\n unstakeDuration: 60n * 1000n, // 1 minute\n maxConnectedDapps: 2n,\n },\n};\n\nfunction buildSettings(networkId: NetworkId): StakingSettings {\n const overrides = networkOverrides[networkId];\n return {\n ...defaultSettings,\n ...(overrides ?? {}),\n };\n}\n\nexport const stakingSettingsByNetwork: Record<NetworkId, StakingSettings> = {\n mainnet: buildSettings('mainnet'),\n testnet: buildSettings('testnet'),\n devnet: buildSettings('devnet'),\n};\n\nexport function getStakingSettings(networkId: NetworkId): StakingSettings {\n return stakingSettingsByNetwork[networkId];\n}\n","import type { TokenInfo } from '@alephium/token-list';\nimport { Pool } from 'clmm/artifacts/ts/Pool';\nimport { PositionInfo } from 'clmm/artifacts/ts/types';\n\nexport interface ClmmConfig {\n groupIndex: number;\n factoryId: string;\n positionManagerId: string;\n defaultConfigIndex: bigint;\n accountRoot: string;\n}\n\nexport interface ClmmSwapParams {\n token0: string;\n token1: string;\n amount: bigint;\n slippage: bigint;\n routePlan: bigint[];\n}\n\nexport interface SimulateSwap {\n configIndex: bigint;\n token0: string;\n token1: string;\n zeroForOne: boolean;\n amount: bigint;\n}\n\nexport interface LiquidityForPrice {\n liquidity: bigint;\n sqrtPriceX96: bigint;\n}\n\nexport interface LiquidityDistribution {\n baseSqrtPriceX96: bigint;\n sqrtPriceX96: bigint;\n liquidity: bigint;\n fee: bigint;\n rows: Array<LiquidityForPrice>;\n}\n\nexport interface AddLiquidity {\n token0: string;\n token1: string;\n configIndex: bigint;\n owner?: string;\n tickLower: bigint;\n tickUpper: bigint;\n slippage: bigint;\n amount0: bigint;\n amount1: bigint;\n existingPosition?: boolean;\n}\n\nexport interface RemoveLiquidity {\n token0: string;\n token1: string;\n configIndex: bigint;\n owner: string;\n tickLower: bigint;\n tickUpper: bigint;\n liquidity: bigint;\n base: 'token0' | 'token1';\n baseAmount: bigint;\n otherAmountMax: bigint;\n}\n\nexport interface CollectTokens {\n token0: string;\n token1: string;\n configIndex: bigint;\n owner: string;\n recipient: string;\n tickLower: bigint;\n tickUpper: bigint;\n liquidity: bigint; // != 0 if also remove liquidity\n amount0Max: bigint;\n amount1Max: bigint;\n}\n\nexport interface PositionPath {\n poolId: string;\n owner: string;\n tickLower: bigint;\n tickUpper: bigint;\n acc: bigint;\n iacc0: bigint;\n iacc1: bigint;\n t0: bigint;\n acct0: bigint;\n}\n\nexport interface CollectProtocolFees {\n token0: string;\n token1: string;\n configIndex: bigint;\n recipient: string;\n}\n\nexport interface SetRewardParams {\n token0: string;\n token1: string;\n configIndex: bigint;\n rewardToken: string;\n payer: string;\n amount: bigint;\n openTime: bigint;\n endTime: bigint;\n}\n\nexport interface ExtendRewards {\n token0: string;\n token1: string;\n configIndex: bigint;\n rewardToken: string;\n payer: string;\n amount: bigint;\n}\n\nexport interface ClmmPoolContractState extends ClmmPoolConfig {\n poolId: string;\n token0Info: TokenInfo;\n token1Info: TokenInfo;\n liquidity: bigint;\n sqrtPriceX96: bigint;\n tick: bigint;\n}\n\nexport interface ClmmPoolConfig {\n configIndex: bigint;\n tickSpacing: bigint;\n tradingFee: bigint;\n protocolFee: bigint;\n}\n\nexport const MAX_PIPS = Pool.consts.MAX_PIPS;\n\n\nexport type ClmmPositionInfo = PositionInfo\n\nexport interface GetPositionAmountsFromPriceProps {\n sqrtRatioX96: bigint;\n tokenBaseId: string;\n tokenQuoteId: string;\n lowerTick: bigint;\n upperTick: bigint;\n amountBase: bigint;\n amountQuote: bigint;\n}\n\nexport interface GetPositionAmountsFromPriceReturn {\n newAmountBase: bigint;\n newAmountQuote: bigint;\n liquidity: bigint;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA,uBAAAA;AAAA,EAAA;AAAA;AAAA,qBAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0BAAAD;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,6BAAAE;AAAA,EAAA;AAAA,gCAAAA;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;;;ACCA,IAAAC,gBAAqD;;;ACArD,IAAAC,gBAOO;;;ACRP;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACIA,kBA8BO;;;AClCP;AAAA,EACE,SAAW;AAAA,EACX,MAAQ;AAAA,EACR,UAAY;AAAA,EACZ,UAAY;AAAA,EACZ,WAAa;AAAA,IACX,OAAS;AAAA,MACP;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,OAAS;AAAA,MACP;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,WAAa;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EACA,WAAa,CAAC;AAAA,EACd,WAAa;AAAA,IACX;AAAA,MACE,MAAQ;AAAA,MACR,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,gBAAkB;AAAA,QAChB;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,aAAe,CAAC;AAAA,IAClB;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,YAAc;AAAA,QACZ;AAAA,MACF;AAAA,MACA,YAAc;AAAA,QACZ;AAAA,MACF;AAAA,MACA,gBAAkB;AAAA,QAChB;AAAA,MACF;AAAA,MACA,aAAe,CAAC;AAAA,IAClB;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,YAAc;AAAA,QACZ;AAAA,MACF;AAAA,MACA,YAAc;AAAA,QACZ;AAAA,MACF;AAAA,MACA,gBAAkB;AAAA,QAChB;AAAA,MACF;AAAA,MACA,aAAe;AAAA,QACb;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,YAAc;AAAA,QACZ;AAAA,MACF;AAAA,MACA,YAAc;AAAA,QACZ;AAAA,MACF;AAAA,MACA,gBAAkB;AAAA,QAChB;AAAA,MACF;AAAA,MACA,aAAe,CAAC;AAAA,IAClB;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,YAAc;AAAA,QACZ;AAAA,MACF;AAAA,MACA,YAAc;AAAA,QACZ;AAAA,MACF;AAAA,MACA,gBAAkB;AAAA,QAChB;AAAA,MACF;AAAA,MACA,aAAe,CAAC;AAAA,IAClB;AAAA,EACF;AAAA,EACA,WAAa,CAAC;AAAA,EACd,OAAS,CAAC;AACZ;;;ACvGA,IAAI,YAAgD;AAE7C,SAAS,kBAA0C;AACxD,SAAO,aAAa,CAAC;AACvB;AAEO,SAAS,iBAAiB,SAA+B;AAC9D,MAAI,cAAc,QAAW;AAC3B,gBAAY,CAAC,OAAO;AAAA,EACtB,OAAO;AACL,cAAU,KAAK,OAAO;AAAA,EACxB;AACF;AACO,SAAS,sBAAsB,UAA4B;AAChE,QAAM,IAAI,WAAW,KAAK,CAACC,OAAMA,GAAE,SAAS,YAAY,QAAQ,CAAC;AACjE,MAAI,MAAM,QAAW;AACnB,UAAM,IAAI,MAAM,kCAAkC,QAAQ;AAAA,EAC5D;AACA,SAAO,EAAE;AACX;;;AFwGA,IAAM,UAAN,cAAsB,4BAGpB;AAAA,EACA,aAAa,QAAgC;AAC3C,eAAO;AAAA,UACL,8BAAiB,KAAK,UAAU,MAAM;AAAA,MACtC,KAAK,SAAS;AAAA,MACd,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EAEA,GAAG,SAAqC;AACtC,WAAO,IAAI,mBAAmB,OAAO;AAAA,EACvC;AAAA,EAEA,QAAQ;AAAA,IACN,SAAS,OACP,WAUiD;AACjD,iBAAO,wBAAW,MAAM,WAAW,QAAQ,qBAAqB;AAAA,IAClE;AAAA,IACA,eAAe,OACb,WAIiD;AACjD,iBAAO,wBAAW,MAAM,iBAAiB,QAAQ,qBAAqB;AAAA,IACxE;AAAA,IACA,OAAO,OACL,WAIoD;AACpD,iBAAO,wBAAW,MAAM,SAAS,QAAQ,qBAAqB;AAAA,IAChE;AAAA,IACA,eAAe,OACb,WAIiD;AACjD,iBAAO,wBAAW,MAAM,iBAAiB,QAAQ,qBAAqB;AAAA,IACxE;AAAA,IACA,YAAY,OACV,WAIiD;AACjD,iBAAO,wBAAW,MAAM,cAAc,QAAQ,qBAAqB;AAAA,IACrE;AAAA,EACF;AAAA,EAEA,aACE,YACA,OACA,SACA;AACA,WAAO,KAAK,cAAc,YAAY,OAAO,SAAS,MAAS;AAAA,EACjE;AACF;AAGO,IAAM,aAAa,IAAI;AAAA,EAC5B,qBAAS;AAAA,IACP;AAAA,IACA;AAAA,IACA;AAAA,IACA,CAAC;AAAA,EACH;AACF;AACA,iBAAiB,UAAU;AAGpB,IAAM,qBAAN,cAAiC,6BAAiB;AAAA,EACvD,YAAY,SAAkB;AAC5B,UAAM,OAAO;AAAA,EACf;AAAA,EAEA,MAAM,aAA6C;AACjD,eAAO,gCAAmB,YAAY,IAAI;AAAA,EAC5C;AAAA,EAEA,OAAO;AAAA,IACL,SAAS,OACP,WACyD;AACzD,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA,eAAe,OACb,WAC+D;AAC/D,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA,OAAO,OACL,WACuD;AACvD,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA,eAAe,OACb,WAC+D;AAC/D,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA,YAAY,OACV,WAC4D;AAC5D,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,WAAW;AAAA,IACT,SAAS,OACP,WACgE;AAChE,iBAAO,+BAAkB,YAAY,MAAM,WAAW,MAAM;AAAA,IAC9D;AAAA,IACA,eAAe,OACb,WACsE;AACtE,iBAAO,+BAAkB,YAAY,MAAM,iBAAiB,MAAM;AAAA,IACpE;AAAA,IACA,OAAO,OACL,WAC8D;AAC9D,iBAAO,+BAAkB,YAAY,MAAM,SAAS,MAAM;AAAA,IAC5D;AAAA,IACA,eAAe,OACb,WACsE;AACtE,iBAAO,+BAAkB,YAAY,MAAM,iBAAiB,MAAM;AAAA,IACpE;AAAA,IACA,YAAY,OACV,WACmE;AACnE,iBAAO,+BAAkB,YAAY,MAAM,cAAc,MAAM;AAAA,IACjE;AAAA,EACF;AAAA,EAQA,MAAM,UAIJ,QAAkC;AAClC,WAAO,UAAM;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACF;;;AGpUA,IAAAC,eA8BO;;;AClCP;AAAA,EACE,SAAW;AAAA,EACX,MAAQ;AAAA,EACR,UAAY;AAAA,EACZ,UAAY;AAAA,EACZ,WAAa;AAAA,IACX,OAAS;AAAA,MACP;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,OAAS;AAAA,MACP;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,WAAa;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EACA,WAAa,CAAC;AAAA,EACd,WAAa;AAAA,IACX;AAAA,MACE,MAAQ;AAAA,MACR,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,MACF;AAAA,MACA,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,MACF;AAAA,MACA,gBAAkB;AAAA,QAChB;AAAA,QACA;AAAA,MACF;AAAA,MACA,aAAe;AAAA,QACb;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,gBAAkB;AAAA,QAChB;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,aAAe;AAAA,QACb;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,MACF;AAAA,MACA,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,MACF;AAAA,MACA,gBAAkB;AAAA,QAChB;AAAA,QACA;AAAA,MACF;AAAA,MACA,aAAe;AAAA,QACb;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,YAAc;AAAA,QACZ;AAAA,MACF;AAAA,MACA,YAAc;AAAA,QACZ;AAAA,MACF;AAAA,MACA,gBAAkB;AAAA,QAChB;AAAA,MACF;AAAA,MACA,aAAe;AAAA,QACb;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,YAAc,CAAC;AAAA,MACf,YAAc,CAAC;AAAA,MACf,gBAAkB,CAAC;AAAA,MACnB,aAAe,CAAC;AAAA,IAClB;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,MACF;AAAA,MACA,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,MACF;AAAA,MACA,gBAAkB;AAAA,QAChB;AAAA,QACA;AAAA,MACF;AAAA,MACA,aAAe;AAAA,QACb;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EACA,WAAa;AAAA,IACX;AAAA,MACE,MAAQ;AAAA,MACR,OAAS;AAAA,QACP,MAAQ;AAAA,QACR,OAAS;AAAA,MACX;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,OAAS;AAAA,QACP,MAAQ;AAAA,QACR,OAAS;AAAA,MACX;AAAA,IACF;AAAA,EACF;AAAA,EACA,OAAS;AAAA,IACP;AAAA,MACE,MAAQ;AAAA,MACR,QAAU;AAAA,QACR;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;;;ADtDA,IAAMC,WAAN,cAAsB,6BAGpB;AAAA,EACA,aAAa,QAAyC;AACpD,eAAO;AAAA,UACL,+BAAiB,KAAK,UAAU,MAAM;AAAA,MACtC,KAAK,SAAS;AAAA,MACd,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EAEA,SAAS;AAAA,IACP,YAAY,OAAO,KAAK;AAAA,IACxB,QAAQ,OAAO,OAAO;AAAA,IACtB,YAAY;AAAA,MACV,iBAAiB,OAAO,GAAG;AAAA,MAC3B,WAAW,OAAO,GAAG;AAAA,MACrB,kBAAkB,OAAO,GAAG;AAAA,MAC5B,kBAAkB,OAAO,GAAG;AAAA,MAC5B,cAAc,OAAO,GAAG;AAAA,IAC1B;AAAA,EACF;AAAA,EAEA,GAAG,SAA8C;AAC/C,WAAO,IAAI,4BAA4B,OAAO;AAAA,EAChD;AAAA,EAEA,QAAQ;AAAA,IACN,SAAS,OACP,WAI6D;AAC7D,iBAAO,yBAAW,MAAM,WAAW,QAAQ,qBAAqB;AAAA,IAClE;AAAA,IACA,QAAQ,OACN,WAImD;AACnD,iBAAO,yBAAW,MAAM,UAAU,QAAQ,qBAAqB;AAAA,IACjE;AAAA,IACA,UAAU,OACR,WAImD;AACnD,iBAAO,yBAAW,MAAM,YAAY,QAAQ,qBAAqB;AAAA,IACnE;AAAA,IACA,yBAAyB,OACvB,WAI6D;AAC7D,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA,QAAQ,OACN,WAIiD;AACjD,iBAAO,yBAAW,MAAM,UAAU,QAAQ,qBAAqB;AAAA,IACjE;AAAA,IACA,SAAS,OACP,WAImD;AACnD,iBAAO,yBAAW,MAAM,WAAW,QAAQ,qBAAqB;AAAA,IAClE;AAAA,EACF;AAAA,EAEA,aACE,YACA,OACA,SACA;AACA,WAAO,KAAK,cAAc,YAAY,OAAO,SAAS,MAAS;AAAA,EACjE;AACF;AAGO,IAAM,sBAAsB,IAAIA;AAAA,EACrC,sBAAS;AAAA,IACP;AAAA,IACA;AAAA,IACA;AAAA,IACA,CAAC;AAAA,EACH;AACF;AACA,iBAAiB,mBAAmB;AAG7B,IAAM,8BAAN,cAA0C,8BAAiB;AAAA,EAChE,YAAY,SAAkB;AAC5B,UAAM,OAAO;AAAA,EACf;AAAA,EAEA,MAAM,aAAsD;AAC1D,eAAO,iCAAmB,qBAAqB,IAAI;AAAA,EACrD;AAAA,EAEA,OAAO;AAAA,IACL,SAAS,OACP,WACkE;AAClE,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA,QAAQ,OACN,WACiE;AACjE,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA,UAAU,OACR,WACmE;AACnE,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA,yBAAyB,OACvB,WAGG;AACH,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA,QAAQ,OACN,WACiE;AACjE,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA,WAAW,SAAY,CAAC,IAAI;AAAA,QAC5B;AAAA,MACF;AAAA,IACF;AAAA,IACA,SAAS,OACP,WACkE;AAClE,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,WAAW;AAAA,IACT,SAAS,OACP,WACyE;AACzE,iBAAO,gCAAkB,qBAAqB,MAAM,WAAW,MAAM;AAAA,IACvE;AAAA,IACA,QAAQ,OACN,WACwE;AACxE,iBAAO,gCAAkB,qBAAqB,MAAM,UAAU,MAAM;AAAA,IACtE;AAAA,IACA,UAAU,OACR,WAGG;AACH,iBAAO,gCAAkB,qBAAqB,MAAM,YAAY,MAAM;AAAA,IACxE;AAAA,IACA,yBAAyB,OACvB,WAGG;AACH,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA,QAAQ,OACN,WACwE;AACxE,iBAAO,gCAAkB,qBAAqB,MAAM,UAAU,MAAM;AAAA,IACtE;AAAA,IACA,SAAS,OACP,WACyE;AACzE,iBAAO,gCAAkB,qBAAqB,MAAM,WAAW,MAAM;AAAA,IACvE;AAAA,EACF;AAAA,EAQA,MAAM,UAIJ,QAAkC;AAClC,WAAO,UAAM;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACF;;;AE1XA,IAAAC,eA8BO;;;AClCP;AAAA,EACE,SAAW;AAAA,EACX,MAAQ;AAAA,EACR,UAAY;AAAA,EACZ,UAAY;AAAA,EACZ,WAAa;AAAA,IACX,OAAS;AAAA,MACP;AAAA,MACA;AAAA,IACF;AAAA,IACA,OAAS;AAAA,MACP;AAAA,MACA;AAAA,IACF;AAAA,IACA,WAAa;AAAA,MACX;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EACA,WAAa,CAAC;AAAA,EACd,WAAa;AAAA,IACX;AAAA,MACE,MAAQ;AAAA,MACR,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,gBAAkB;AAAA,QAChB;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,aAAe;AAAA,QACb;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EACA,WAAa,CAAC;AAAA,EACd,OAAS;AAAA,IACP;AAAA,MACE,MAAQ;AAAA,MACR,QAAU;AAAA,QACR;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;;;AD/FA,IAAMC,WAAN,cAAsB,6BAGpB;AAAA,EACA,aAAa,QAA6C;AACxD,eAAO;AAAA,UACL,+BAAiB,KAAK,UAAU,MAAM;AAAA,MACtC,KAAK,SAAS;AAAA,MACd,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EAEA,SAAS;AAAA,IACP,YAAY;AAAA,MACV,iBAAiB,OAAO,GAAG;AAAA,MAC3B,2BAA2B,OAAO,GAAG;AAAA,MACrC,6BAA6B,OAAO,GAAG;AAAA,MACvC,6BAA6B,OAAO,GAAG;AAAA,MACvC,kBAAkB,OAAO,GAAG;AAAA,MAC5B,uBAAuB,OAAO,GAAG;AAAA,MACjC,kBAAkB,OAAO,GAAG;AAAA,MAC5B,iBAAiB,OAAO,GAAG;AAAA,MAC3B,UAAU,OAAO,GAAG;AAAA,MACpB,0BAA0B,OAAO,GAAG;AAAA,MACpC,yBAAyB,OAAO,IAAI;AAAA,MACpC,mBAAmB,OAAO,IAAI;AAAA,MAC9B,SAAS,OAAO,IAAI;AAAA,MACpB,0BAA0B,OAAO,IAAI;AAAA,MACrC,0BAA0B,OAAO,IAAI;AAAA,MACrC,eAAe,OAAO,IAAI;AAAA,MAC1B,eAAe,OAAO,IAAI;AAAA,MAC1B,wBAAwB,OAAO,IAAI;AAAA,MACnC,gBAAgB,OAAO,IAAI;AAAA,IAC7B;AAAA,EACF;AAAA,EAEA,GAAG,SAAkD;AACnD,WAAO,IAAI,gCAAgC,OAAO;AAAA,EACpD;AAAA,EAEA,QAAQ;AAAA,IACN,oBAAoB,OAClB,WAIsD;AACtD,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,aACE,YACA,OACA,SACA;AACA,WAAO,KAAK,cAAc,YAAY,OAAO,SAAS,MAAS;AAAA,EACjE;AACF;AAGO,IAAM,0BAA0B,IAAIA;AAAA,EACzC,sBAAS;AAAA,IACP;AAAA,IACA;AAAA,IACA;AAAA,IACA,CAAC;AAAA,EACH;AACF;AACA,iBAAiB,uBAAuB;AAGjC,IAAM,kCAAN,cAA8C,8BAAiB;AAAA,EACpE,YAAY,SAAkB;AAC5B,UAAM,OAAO;AAAA,EACf;AAAA,EAEA,MAAM,aAA0D;AAC9D,eAAO,iCAAmB,yBAAyB,IAAI;AAAA,EACzD;AAAA,EAEA,OAAO;AAAA,IACL,oBAAoB,OAClB,WAGG;AACH,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,WAAW;AAAA,IACT,oBAAoB,OAClB,WAGG;AACH,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAUA,MAAM,UAIJ,QAAkC;AAClC,WAAO,UAAM;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACF;;;AE9NA,IAAAC,eA8BO;;;AClCP;AAAA,EACE,SAAW;AAAA,EACX,MAAQ;AAAA,EACR,UAAY;AAAA,EACZ,UAAY;AAAA,EACZ,WAAa;AAAA,IACX,OAAS;AAAA,MACP;AAAA,MACA;AAAA,IACF;AAAA,IACA,OAAS;AAAA,MACP;AAAA,MACA;AAAA,IACF;AAAA,IACA,WAAa;AAAA,MACX;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EACA,WAAa,CAAC;AAAA,EACd,WAAa;AAAA,IACX;AAAA,MACE,MAAQ;AAAA,MACR,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,MACF;AAAA,MACA,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,MACF;AAAA,MACA,gBAAkB;AAAA,QAChB;AAAA,QACA;AAAA,MACF;AAAA,MACA,aAAe,CAAC;AAAA,IAClB;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,MACF;AAAA,MACA,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,MACF;AAAA,MACA,gBAAkB;AAAA,QAChB;AAAA,QACA;AAAA,MACF;AAAA,MACA,aAAe,CAAC;AAAA,IAClB;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,YAAc;AAAA,QACZ;AAAA,MACF;AAAA,MACA,YAAc;AAAA,QACZ;AAAA,MACF;AAAA,MACA,gBAAkB;AAAA,QAChB;AAAA,MACF;AAAA,MACA,aAAe,CAAC;AAAA,IAClB;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,YAAc,CAAC;AAAA,MACf,YAAc,CAAC;AAAA,MACf,gBAAkB,CAAC;AAAA,MACnB,aAAe,CAAC;AAAA,IAClB;AAAA,EACF;AAAA,EACA,WAAa,CAAC;AAAA,EACd,OAAS;AAAA,IACP;AAAA,MACE,MAAQ;AAAA,MACR,QAAU;AAAA,QACR;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;;;AD3GA,IAAMC,WAAN,cAAsB,6BAGpB;AAAA,EACA,aAAa,QAAkD;AAC7D,eAAO;AAAA,UACL,+BAAiB,KAAK,UAAU,MAAM;AAAA,MACtC,KAAK,SAAS;AAAA,MACd,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EAEA,SAAS;AAAA,IACP,YAAY;AAAA,MACV,iBAAiB,OAAO,GAAG;AAAA,MAC3B,2BAA2B,OAAO,GAAG;AAAA,MACrC,6BAA6B,OAAO,GAAG;AAAA,MACvC,6BAA6B,OAAO,GAAG;AAAA,MACvC,kBAAkB,OAAO,GAAG;AAAA,MAC5B,uBAAuB,OAAO,GAAG;AAAA,MACjC,kBAAkB,OAAO,GAAG;AAAA,MAC5B,iBAAiB,OAAO,GAAG;AAAA,MAC3B,UAAU,OAAO,GAAG;AAAA,MACpB,0BAA0B,OAAO,GAAG;AAAA,MACpC,yBAAyB,OAAO,IAAI;AAAA,MACpC,mBAAmB,OAAO,IAAI;AAAA,MAC9B,SAAS,OAAO,IAAI;AAAA,MACpB,0BAA0B,OAAO,IAAI;AAAA,MACrC,0BAA0B,OAAO,IAAI;AAAA,MACrC,eAAe,OAAO,IAAI;AAAA,MAC1B,eAAe,OAAO,IAAI;AAAA,MAC1B,wBAAwB,OAAO,IAAI;AAAA,MACnC,gBAAgB,OAAO,IAAI;AAAA,IAC7B;AAAA,EACF;AAAA,EAEA,GAAG,SAAuD;AACxD,WAAO,IAAI,qCAAqC,OAAO;AAAA,EACzD;AAAA,EAEA,QAAQ;AAAA,IACN,YAAY,OACV,WAIiD;AACjD,iBAAO,yBAAW,MAAM,cAAc,QAAQ,qBAAqB;AAAA,IACrE;AAAA,IACA,UAAU,OACR,WAIiD;AACjD,iBAAO,yBAAW,MAAM,YAAY,QAAQ,qBAAqB;AAAA,IACnE;AAAA,IACA,SAAS,OACP,WAIiD;AACjD,iBAAO,yBAAW,MAAM,WAAW,QAAQ,qBAAqB;AAAA,IAClE;AAAA,IACA,oBAAoB,OAClB,WAOiD;AACjD,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,aACE,YACA,OACA,SACA;AACA,WAAO,KAAK,cAAc,YAAY,OAAO,SAAS,MAAS;AAAA,EACjE;AACF;AAGO,IAAM,+BAA+B,IAAIA;AAAA,EAC9C,sBAAS;AAAA,IACP;AAAA,IACA;AAAA,IACA;AAAA,IACA,CAAC;AAAA,EACH;AACF;AACA,iBAAiB,4BAA4B;AAGtC,IAAM,uCAAN,cAAmD,8BAAiB;AAAA,EACzE,YAAY,SAAkB;AAC5B,UAAM,OAAO;AAAA,EACf;AAAA,EAEA,MAAM,aAA+D;AACnE,eAAO,iCAAmB,8BAA8B,IAAI;AAAA,EAC9D;AAAA,EAEA,OAAO;AAAA,IACL,YAAY,OACV,WAGG;AACH,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA,UAAU,OACR,WAGG;AACH,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA,SAAS,OACP,WAGG;AACH,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA,oBAAoB,OAClB,WAGG;AACH,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA,WAAW,SAAY,CAAC,IAAI;AAAA,QAC5B;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,WAAW;AAAA,IACT,YAAY,OACV,WAGG;AACH,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA,UAAU,OACR,WAGG;AACH,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA,SAAS,OACP,WAGG;AACH,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA,oBAAoB,OAClB,WAGG;AACH,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;;;AElUA,IAAAC,eA8BO;;;AClCP;AAAA,EACE,SAAW;AAAA,EACX,MAAQ;AAAA,EACR,UAAY;AAAA,EACZ,UAAY;AAAA,EACZ,WAAa;AAAA,IACX,OAAS,CAAC;AAAA,IACV,OAAS,CAAC;AAAA,IACV,WAAa,CAAC;AAAA,EAChB;AAAA,EACA,WAAa,CAAC;AAAA,EACd,WAAa;AAAA,IACX;AAAA,MACE,MAAQ;AAAA,MACR,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,MACF;AAAA,MACA,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,MACF;AAAA,MACA,gBAAkB;AAAA,QAChB;AAAA,QACA;AAAA,MACF;AAAA,MACA,aAAe;AAAA,QACb;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,gBAAkB;AAAA,QAChB;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,aAAe;AAAA,QACb;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,MACF;AAAA,MACA,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,MACF;AAAA,MACA,gBAAkB;AAAA,QAChB;AAAA,QACA;AAAA,MACF;AAAA,MACA,aAAe;AAAA,QACb;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EACA,WAAa;AAAA,IACX;AAAA,MACE,MAAQ;AAAA,MACR,OAAS;AAAA,QACP,MAAQ;AAAA,QACR,OAAS;AAAA,MACX;AAAA,IACF;AAAA,EACF;AAAA,EACA,OAAS;AAAA,IACP;AAAA,MACE,MAAQ;AAAA,MACR,QAAU;AAAA,QACR;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;;;ADvBA,IAAMC,WAAN,cAAsB,6BAA0C;AAAA,EAC9D,eAAe;AACb,eAAO,mCAAqB,CAAC,GAAG,KAAK,SAAS,WAAW,CAAC,CAAC;AAAA,EAC7D;AAAA,EAEA,SAAS;AAAA,IACP,YAAY,OAAO,KAAK;AAAA,IACxB,YAAY;AAAA,MACV,iBAAiB,OAAO,GAAG;AAAA,MAC3B,WAAW,OAAO,GAAG;AAAA,MACrB,kBAAkB,OAAO,GAAG;AAAA,MAC5B,kBAAkB,OAAO,GAAG;AAAA,MAC5B,cAAc,OAAO,GAAG;AAAA,IAC1B;AAAA,EACF;AAAA,EAEA,GAAG,SAAuC;AACxC,WAAO,IAAI,qBAAqB,OAAO;AAAA,EACzC;AAAA,EAEA,QAAQ;AAAA,IACN,SAAS,OACP,WAI6D;AAC7D,iBAAO,yBAAW,MAAM,WAAW,QAAQ,qBAAqB;AAAA,IAClE;AAAA,IACA,QAAQ,OACN,WAOmD;AACnD,iBAAO,yBAAW,MAAM,UAAU,QAAQ,qBAAqB;AAAA,IACjE;AAAA,IACA,UAAU,OACR,WAOmD;AACnD,iBAAO,yBAAW,MAAM,YAAY,QAAQ,qBAAqB;AAAA,IACnE;AAAA,EACF;AAAA,EAEA,aAAa,YAAgB,OAAe,SAAkB;AAC5D,WAAO,KAAK,cAAc,YAAY,OAAO,SAAS,MAAS;AAAA,EACjE;AACF;AAGO,IAAM,eAAe,IAAIA;AAAA,EAC9B,sBAAS;AAAA,IACP;AAAA,IACA;AAAA,IACA;AAAA,IACA,CAAC;AAAA,EACH;AACF;AACA,iBAAiB,YAAY;AAGtB,IAAM,uBAAN,cAAmC,8BAAiB;AAAA,EACzD,YAAY,SAAkB;AAC5B,UAAM,OAAO;AAAA,EACf;AAAA,EAEA,MAAM,aAA+C;AACnD,eAAO,iCAAmB,cAAc,IAAI;AAAA,EAC9C;AAAA,EAEA,OAAO;AAAA,IACL,SAAS,OACP,WAC2D;AAC3D,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA,QAAQ,OACN,WAC0D;AAC1D,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA,UAAU,OACR,WAC4D;AAC5D,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,WAAW;AAAA,IACT,SAAS,OACP,WACkE;AAClE,iBAAO,gCAAkB,cAAc,MAAM,WAAW,MAAM;AAAA,IAChE;AAAA,IACA,QAAQ,OACN,WACiE;AACjE,iBAAO,gCAAkB,cAAc,MAAM,UAAU,MAAM;AAAA,IAC/D;AAAA,IACA,UAAU,OACR,WACmE;AACnE,iBAAO,gCAAkB,cAAc,MAAM,YAAY,MAAM;AAAA,IACjE;AAAA,EACF;AAAA,EAQA,MAAM,UAIJ,QAAkC;AAClC,WAAO,UAAM;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACF;;;AEtPA,IAAAC,eA8BO;;;AClCP;AAAA,EACE,SAAW;AAAA,EACX,MAAQ;AAAA,EACR,UAAY;AAAA,EACZ,UAAY;AAAA,EACZ,WAAa;AAAA,IACX,OAAS,CAAC;AAAA,IACV,OAAS,CAAC;AAAA,IACV,WAAa,CAAC;AAAA,EAChB;AAAA,EACA,WAAa,CAAC;AAAA,EACd,WAAa;AAAA,IACX;AAAA,MACE,MAAQ;AAAA,MACR,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,MACF;AAAA,MACA,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,MACF;AAAA,MACA,gBAAkB;AAAA,QAChB;AAAA,QACA;AAAA,MACF;AAAA,MACA,aAAe;AAAA,QACb;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,YAAc;AAAA,QACZ;AAAA,MACF;AAAA,MACA,YAAc;AAAA,QACZ;AAAA,MACF;AAAA,MACA,gBAAkB;AAAA,QAChB;AAAA,MACF;AAAA,MACA,aAAe;AAAA,QACb;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EACA,WAAa,CAAC;AAAA,EACd,OAAS,CAAC;AACZ;;;ADoCA,IAAMC,WAAN,cAAsB,6BAAsC;AAAA,EAC1D,eAAe;AACb,eAAO,mCAAqB,CAAC,GAAG,KAAK,SAAS,WAAW,CAAC,CAAC;AAAA,EAC7D;AAAA,EAEA,GAAG,SAAmC;AACpC,WAAO,IAAI,iBAAiB,OAAO;AAAA,EACrC;AAAA,EAEA,QAAQ;AAAA,IACN,OAAO,OACL,WAImD;AACnD,iBAAO,yBAAW,MAAM,SAAS,QAAQ,qBAAqB;AAAA,IAChE;AAAA,IACA,MAAM,OACJ,WAImD;AACnD,iBAAO,yBAAW,MAAM,QAAQ,QAAQ,qBAAqB;AAAA,IAC/D;AAAA,EACF;AAAA,EAEA,aAAa,YAAgB,OAAe,SAAkB;AAC5D,WAAO,KAAK,cAAc,YAAY,OAAO,SAAS,MAAS;AAAA,EACjE;AACF;AAGO,IAAM,WAAW,IAAIA;AAAA,EAC1B,sBAAS;AAAA,IACP;AAAA,IACA;AAAA,IACA;AAAA,IACA,CAAC;AAAA,EACH;AACF;AACA,iBAAiB,QAAQ;AAGlB,IAAM,mBAAN,cAA+B,8BAAiB;AAAA,EACrD,YAAY,SAAkB;AAC5B,UAAM,OAAO;AAAA,EACf;AAAA,EAEA,MAAM,aAA2C;AAC/C,eAAO,iCAAmB,UAAU,IAAI;AAAA,EAC1C;AAAA,EAEA,OAAO;AAAA,IACL,OAAO,OACL,WACqD;AACrD,iBAAO,yBAAW,UAAU,MAAM,SAAS,QAAQ,qBAAqB;AAAA,IAC1E;AAAA,IACA,MAAM,OACJ,WACoD;AACpD,iBAAO,yBAAW,UAAU,MAAM,QAAQ,QAAQ,qBAAqB;AAAA,IACzE;AAAA,EACF;AAAA,EAEA,WAAW;AAAA,IACT,OAAO,OACL,WAC4D;AAC5D,iBAAO,gCAAkB,UAAU,MAAM,SAAS,MAAM;AAAA,IAC1D;AAAA,IACA,MAAM,OACJ,WAC2D;AAC3D,iBAAO,gCAAkB,UAAU,MAAM,QAAQ,MAAM;AAAA,IACzD;AAAA,EACF;AAAA,EAQA,MAAM,UAIJ,QAAkC;AAClC,WAAO,UAAM;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACF;;;AElLA,IAAAC,eA8BO;;;AClCP;AAAA,EACE,SAAW;AAAA,EACX,MAAQ;AAAA,EACR,UAAY;AAAA,EACZ,UAAY;AAAA,EACZ,WAAa;AAAA,IACX,OAAS,CAAC;AAAA,IACV,OAAS,CAAC;AAAA,IACV,WAAa,CAAC;AAAA,EAChB;AAAA,EACA,WAAa,CAAC;AAAA,EACd,WAAa;AAAA,IACX;AAAA,MACE,MAAQ;AAAA,MACR,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,gBAAkB;AAAA,QAChB;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,aAAe;AAAA,QACb;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,gBAAkB;AAAA,QAChB;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,aAAe;AAAA,QACb;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,gBAAkB;AAAA,QAChB;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,aAAe;AAAA,QACb;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,MACF;AAAA,MACA,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,MACF;AAAA,MACA,gBAAkB;AAAA,QAChB;AAAA,QACA;AAAA,MACF;AAAA,MACA,aAAe;AAAA,QACb;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,gBAAkB;AAAA,QAChB;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,aAAe,CAAC;AAAA,IAClB;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,gBAAkB;AAAA,QAChB;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,aAAe,CAAC;AAAA,IAClB;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,gBAAkB;AAAA,QAChB;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,aAAe,CAAC;AAAA,IAClB;AAAA,EACF;AAAA,EACA,WAAa,CAAC;AAAA,EACd,OAAS;AAAA,IACP;AAAA,MACE,MAAQ;AAAA,MACR,QAAU;AAAA,QACR;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;;;AD5IA,IAAMC,WAAN,cAAsB,6BAAoC;AAAA,EACxD,eAAe;AACb,eAAO,mCAAqB,CAAC,GAAG,KAAK,SAAS,WAAW,CAAC,CAAC;AAAA,EAC7D;AAAA,EAEA,SAAS;AAAA,IACP,YAAY;AAAA,MACV,iBAAiB,OAAO,GAAG;AAAA,MAC3B,2BAA2B,OAAO,GAAG;AAAA,MACrC,6BAA6B,OAAO,GAAG;AAAA,MACvC,6BAA6B,OAAO,GAAG;AAAA,MACvC,kBAAkB,OAAO,GAAG;AAAA,MAC5B,uBAAuB,OAAO,GAAG;AAAA,MACjC,kBAAkB,OAAO,GAAG;AAAA,MAC5B,iBAAiB,OAAO,GAAG;AAAA,MAC3B,UAAU,OAAO,GAAG;AAAA,MACpB,0BAA0B,OAAO,GAAG;AAAA,MACpC,yBAAyB,OAAO,IAAI;AAAA,MACpC,mBAAmB,OAAO,IAAI;AAAA,MAC9B,SAAS,OAAO,IAAI;AAAA,MACpB,0BAA0B,OAAO,IAAI;AAAA,MACrC,0BAA0B,OAAO,IAAI;AAAA,MACrC,eAAe,OAAO,IAAI;AAAA,MAC1B,eAAe,OAAO,IAAI;AAAA,MAC1B,wBAAwB,OAAO,IAAI;AAAA,MACnC,gBAAgB,OAAO,IAAI;AAAA,IAC7B;AAAA,EACF;AAAA,EAEA,GAAG,SAAiC;AAClC,WAAO,IAAI,eAAe,OAAO;AAAA,EACnC;AAAA,EAEA,QAAQ;AAAA,IACN,eAAe,OACb,WAc6D;AAC7D,iBAAO,yBAAW,MAAM,iBAAiB,QAAQ,qBAAqB;AAAA,IACxE;AAAA,IACA,cAAc,OACZ,WAeqE;AACrE,iBAAO,yBAAW,MAAM,gBAAgB,QAAQ,qBAAqB;AAAA,IACvE;AAAA,IACA,iBAAiB,OACf,WAc6D;AAC7D,iBAAO,yBAAW,MAAM,mBAAmB,QAAQ,qBAAqB;AAAA,IAC1E;AAAA,IACA,2BAA2B,OACzB,WAO6D;AAC7D,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA,wBAAwB,OACtB,WAeiD;AACjD,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA,wBAAwB,OACtB,WAeiD;AACjD,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA,MAAM,OACJ,WAciD;AACjD,iBAAO,yBAAW,MAAM,QAAQ,QAAQ,qBAAqB;AAAA,IAC/D;AAAA,EACF;AAAA,EAEA,aAAa,YAAgB,OAAe,SAAkB;AAC5D,WAAO,KAAK,cAAc,YAAY,OAAO,SAAS,MAAS;AAAA,EACjE;AACF;AAGO,IAAM,SAAS,IAAIA;AAAA,EACxB,sBAAS;AAAA,IACP;AAAA,IACA;AAAA,IACA;AAAA,IACA,CAAC;AAAA,EACH;AACF;AACA,iBAAiB,MAAM;AAGhB,IAAM,iBAAN,cAA6B,8BAAiB;AAAA,EACnD,YAAY,SAAkB;AAC5B,UAAM,OAAO;AAAA,EACf;AAAA,EAEA,MAAM,aAAyC;AAC7C,eAAO,iCAAmB,QAAQ,IAAI;AAAA,EACxC;AAAA,EAEA,OAAO;AAAA,IACL,eAAe,OACb,WAC2D;AAC3D,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA,cAAc,OACZ,WAC0D;AAC1D,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA,iBAAiB,OACf,WAC6D;AAC7D,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA,2BAA2B,OACzB,WACuE;AACvE,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA,wBAAwB,OACtB,WACoE;AACpE,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA,wBAAwB,OACtB,WACoE;AACpE,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA,MAAM,OACJ,WACkD;AAClD,iBAAO,yBAAW,QAAQ,MAAM,QAAQ,QAAQ,qBAAqB;AAAA,IACvE;AAAA,EACF;AAAA,EAEA,WAAW;AAAA,IACT,eAAe,OACb,WACkE;AAClE,iBAAO,gCAAkB,QAAQ,MAAM,iBAAiB,MAAM;AAAA,IAChE;AAAA,IACA,cAAc,OACZ,WACiE;AACjE,iBAAO,gCAAkB,QAAQ,MAAM,gBAAgB,MAAM;AAAA,IAC/D;AAAA,IACA,iBAAiB,OACf,WACoE;AACpE,iBAAO,gCAAkB,QAAQ,MAAM,mBAAmB,MAAM;AAAA,IAClE;AAAA,IACA,2BAA2B,OACzB,WAGG;AACH,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA,wBAAwB,OACtB,WAGG;AACH,iBAAO,gCAAkB,QAAQ,MAAM,0BAA0B,MAAM;AAAA,IACzE;AAAA,IACA,wBAAwB,OACtB,WAGG;AACH,iBAAO,gCAAkB,QAAQ,MAAM,0BAA0B,MAAM;AAAA,IACzE;AAAA,IACA,MAAM,OACJ,WACyD;AACzD,iBAAO,gCAAkB,QAAQ,MAAM,QAAQ,MAAM;AAAA,IACvD;AAAA,EACF;AAAA,EAQA,MAAM,UAEJ,QAAkC;AAClC,WAAO,UAAM,+BAAiB,QAAQ,MAAM,QAAQ,qBAAqB;AAAA,EAC3E;AACF;;;AEriBA,IAAAC,eA8BO;;;AClCP;AAAA,EACE,SAAW;AAAA,EACX,MAAQ;AAAA,EACR,UAAY;AAAA,EACZ,UAAY;AAAA,EACZ,WAAa;AAAA,IACX,OAAS;AAAA,MACP;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,OAAS;AAAA,MACP;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,WAAa;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EACA,WAAa,CAAC;AAAA,EACd,WAAa;AAAA,IACX;AAAA,MACE,MAAQ;AAAA,MACR,YAAc,CAAC;AAAA,MACf,YAAc,CAAC;AAAA,MACf,gBAAkB,CAAC;AAAA,MACnB,aAAe;AAAA,QACb;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,YAAc,CAAC;AAAA,MACf,YAAc,CAAC;AAAA,MACf,gBAAkB,CAAC;AAAA,MACnB,aAAe;AAAA,QACb;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,YAAc,CAAC;AAAA,MACf,YAAc,CAAC;AAAA,MACf,gBAAkB,CAAC;AAAA,MACnB,aAAe;AAAA,QACb;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,YAAc,CAAC;AAAA,MACf,YAAc,CAAC;AAAA,MACf,gBAAkB,CAAC;AAAA,MACnB,aAAe;AAAA,QACb;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,MACF;AAAA,MACA,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,MACF;AAAA,MACA,gBAAkB;AAAA,QAChB;AAAA,QACA;AAAA,MACF;AAAA,MACA,aAAe,CAAC;AAAA,IAClB;AAAA,EACF;AAAA,EACA,WAAa,CAAC;AAAA,EACd,OAAS,CAAC;AAAA,EACV,gBAAkB;AACpB;;;ADgCA,IAAMC,WAAN,cAAsB,6BAGpB;AAAA,EACA,aAAa,QAA+B;AAC1C,eAAO;AAAA,UACL,+BAAiB,KAAK,UAAU,MAAM;AAAA,MACtC,KAAK,SAAS;AAAA,MACd,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EAEA,GAAG,SAAoC;AACrC,WAAO,IAAI,kBAAkB,OAAO;AAAA,EACtC;AAAA,EAEA,QAAQ;AAAA,IACN,WAAW,OACT,WAIsD;AACtD,iBAAO,yBAAW,MAAM,aAAa,QAAQ,qBAAqB;AAAA,IACpE;AAAA,IACA,SAAS,OACP,WAIsD;AACtD,iBAAO,yBAAW,MAAM,WAAW,QAAQ,qBAAqB;AAAA,IAClE;AAAA,IACA,aAAa,OACX,WAImD;AACnD,iBAAO,yBAAW,MAAM,eAAe,QAAQ,qBAAqB;AAAA,IACtE;AAAA,IACA,gBAAgB,OACd,WAImD;AACnD,iBAAO,yBAAW,MAAM,kBAAkB,QAAQ,qBAAqB;AAAA,IACzE;AAAA,IACA,UAAU,OACR,WAIiD;AACjD,iBAAO,yBAAW,MAAM,YAAY,QAAQ,qBAAqB;AAAA,IACnE;AAAA,EACF;AAAA,EAEA,aACE,YACA,OACA,SACA;AACA,WAAO,KAAK,cAAc,YAAY,OAAO,SAAS,MAAS;AAAA,EACjE;AACF;AAGO,IAAM,YAAY,IAAIA;AAAA,EAC3B,sBAAS;AAAA,IACP;AAAA,IACA;AAAA,IACA;AAAA,IACA,CAAC;AAAA,EACH;AACF;AACA,iBAAiB,SAAS;AAGnB,IAAM,oBAAN,cAAgC,8BAAiB;AAAA,EACtD,YAAY,SAAkB;AAC5B,UAAM,OAAO;AAAA,EACf;AAAA,EAEA,MAAM,aAA4C;AAChD,eAAO,iCAAmB,WAAW,IAAI;AAAA,EAC3C;AAAA,EAEA,OAAO;AAAA,IACL,WAAW,OACT,WAC0D;AAC1D,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA,WAAW,SAAY,CAAC,IAAI;AAAA,QAC5B;AAAA,MACF;AAAA,IACF;AAAA,IACA,SAAS,OACP,WACwD;AACxD,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA,WAAW,SAAY,CAAC,IAAI;AAAA,QAC5B;AAAA,MACF;AAAA,IACF;AAAA,IACA,aAAa,OACX,WAC4D;AAC5D,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA,WAAW,SAAY,CAAC,IAAI;AAAA,QAC5B;AAAA,MACF;AAAA,IACF;AAAA,IACA,gBAAgB,OACd,WAC+D;AAC/D,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA,WAAW,SAAY,CAAC,IAAI;AAAA,QAC5B;AAAA,MACF;AAAA,IACF;AAAA,IACA,UAAU,OACR,WACyD;AACzD,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,WAAW;AAAA,IACT,WAAW,OACT,WACiE;AACjE,iBAAO,gCAAkB,WAAW,MAAM,aAAa,MAAM;AAAA,IAC/D;AAAA,IACA,SAAS,OACP,WAC+D;AAC/D,iBAAO,gCAAkB,WAAW,MAAM,WAAW,MAAM;AAAA,IAC7D;AAAA,IACA,aAAa,OACX,WACmE;AACnE,iBAAO,gCAAkB,WAAW,MAAM,eAAe,MAAM;AAAA,IACjE;AAAA,IACA,gBAAgB,OACd,WACsE;AACtE,iBAAO,gCAAkB,WAAW,MAAM,kBAAkB,MAAM;AAAA,IACpE;AAAA,IACA,UAAU,OACR,WACgE;AAChE,iBAAO,gCAAkB,WAAW,MAAM,YAAY,MAAM;AAAA,IAC9D;AAAA,EACF;AAAA,EAQA,MAAM,UAIJ,QAAkC;AAClC,WAAO,UAAM;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACF;;;AEnTA,IAAAC,eA8BO;;;AClCP;AAAA,EACE,SAAW;AAAA,EACX,MAAQ;AAAA,EACR,UAAY;AAAA,EACZ,UAAY;AAAA,EACZ,WAAa;AAAA,IACX,OAAS;AAAA,MACP;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,OAAS;AAAA,MACP;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,WAAa;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EACA,WAAa;AAAA,IACX;AAAA,MACE,MAAQ;AAAA,MACR,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EACA,WAAa;AAAA,IACX;AAAA,MACE,MAAQ;AAAA,MACR,YAAc,CAAC;AAAA,MACf,YAAc,CAAC;AAAA,MACf,gBAAkB,CAAC;AAAA,MACnB,aAAe;AAAA,QACb;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,YAAc,CAAC;AAAA,MACf,YAAc,CAAC;AAAA,MACf,gBAAkB,CAAC;AAAA,MACnB,aAAe;AAAA,QACb;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,YAAc,CAAC;AAAA,MACf,YAAc,CAAC;AAAA,MACf,gBAAkB,CAAC;AAAA,MACnB,aAAe;AAAA,QACb;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,YAAc,CAAC;AAAA,MACf,YAAc,CAAC;AAAA,MACf,gBAAkB,CAAC;AAAA,MACnB,aAAe;AAAA,QACb;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,MACF;AAAA,MACA,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,MACF;AAAA,MACA,gBAAkB;AAAA,QAChB;AAAA,QACA;AAAA,MACF;AAAA,MACA,aAAe;AAAA,QACb;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,YAAc;AAAA,QACZ;AAAA,MACF;AAAA,MACA,YAAc;AAAA,QACZ;AAAA,MACF;AAAA,MACA,gBAAkB;AAAA,QAChB;AAAA,MACF;AAAA,MACA,aAAe;AAAA,QACb;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,YAAc;AAAA,QACZ;AAAA,MACF;AAAA,MACA,YAAc;AAAA,QACZ;AAAA,MACF;AAAA,MACA,gBAAkB;AAAA,QAChB;AAAA,MACF;AAAA,MACA,aAAe,CAAC;AAAA,IAClB;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,YAAc,CAAC;AAAA,MACf,YAAc,CAAC;AAAA,MACf,gBAAkB,CAAC;AAAA,MACnB,aAAe;AAAA,QACb;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,YAAc,CAAC;AAAA,MACf,YAAc,CAAC;AAAA,MACf,gBAAkB,CAAC;AAAA,MACnB,aAAe;AAAA,QACb;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,YAAc,CAAC;AAAA,MACf,YAAc,CAAC;AAAA,MACf,gBAAkB,CAAC;AAAA,MACnB,aAAe;AAAA,QACb;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,YAAc,CAAC;AAAA,MACf,YAAc,CAAC;AAAA,MACf,gBAAkB,CAAC;AAAA,MACnB,aAAe;AAAA,QACb;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,YAAc,CAAC;AAAA,MACf,YAAc,CAAC;AAAA,MACf,gBAAkB,CAAC;AAAA,MACnB,aAAe;AAAA,QACb;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,MACF;AAAA,MACA,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,MACF;AAAA,MACA,gBAAkB;AAAA,QAChB;AAAA,QACA;AAAA,MACF;AAAA,MACA,aAAe,CAAC;AAAA,IAClB;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,MACF;AAAA,MACA,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,MACF;AAAA,MACA,gBAAkB;AAAA,QAChB;AAAA,QACA;AAAA,MACF;AAAA,MACA,aAAe;AAAA,QACb;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,gBAAkB;AAAA,QAChB;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,aAAe;AAAA,QACb;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,MACF;AAAA,MACA,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,MACF;AAAA,MACA,gBAAkB;AAAA,QAChB;AAAA,QACA;AAAA,MACF;AAAA,MACA,aAAe;AAAA,QACb;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,gBAAkB;AAAA,QAChB;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,aAAe,CAAC;AAAA,IAClB;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,YAAc,CAAC;AAAA,MACf,YAAc,CAAC;AAAA,MACf,gBAAkB,CAAC;AAAA,MACnB,aAAe,CAAC;AAAA,IAClB;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,YAAc;AAAA,QACZ;AAAA,MACF;AAAA,MACA,YAAc;AAAA,QACZ;AAAA,MACF;AAAA,MACA,gBAAkB;AAAA,QAChB;AAAA,MACF;AAAA,MACA,aAAe,CAAC;AAAA,IAClB;AAAA,EACF;AAAA,EACA,WAAa;AAAA,IACX;AAAA,MACE,MAAQ;AAAA,MACR,OAAS;AAAA,QACP,MAAQ;AAAA,QACR,OAAS;AAAA,MACX;AAAA,IACF;AAAA,EACF;AAAA,EACA,OAAS;AAAA,IACP;AAAA,MACE,MAAQ;AAAA,MACR,QAAU;AAAA,QACR;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EACA,gBAAkB;AACpB;;;AD9NA,IAAMC,WAAN,cAAsB,6BAGpB;AAAA,EACA,aAAa,QAA+B;AAC1C,eAAO;AAAA,UACL,+BAAiB,KAAK,UAAU,MAAM;AAAA,MACtC,KAAK,SAAS;AAAA,MACd,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EAEA,aAAa,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE;AAAA,EACzC,SAAS;AAAA,IACP,mBAAmB,OAAO,MAAM;AAAA,IAChC,YAAY;AAAA,MACV,iBAAiB,OAAO,GAAG;AAAA,MAC3B,2BAA2B,OAAO,GAAG;AAAA,MACrC,6BAA6B,OAAO,GAAG;AAAA,MACvC,6BAA6B,OAAO,GAAG;AAAA,MACvC,kBAAkB,OAAO,GAAG;AAAA,MAC5B,uBAAuB,OAAO,GAAG;AAAA,MACjC,kBAAkB,OAAO,GAAG;AAAA,MAC5B,iBAAiB,OAAO,GAAG;AAAA,MAC3B,UAAU,OAAO,GAAG;AAAA,MACpB,0BAA0B,OAAO,GAAG;AAAA,MACpC,yBAAyB,OAAO,IAAI;AAAA,MACpC,mBAAmB,OAAO,IAAI;AAAA,MAC9B,SAAS,OAAO,IAAI;AAAA,MACpB,0BAA0B,OAAO,IAAI;AAAA,MACrC,0BAA0B,OAAO,IAAI;AAAA,MACrC,eAAe,OAAO,IAAI;AAAA,MAC1B,eAAe,OAAO,IAAI;AAAA,MAC1B,wBAAwB,OAAO,IAAI;AAAA,MACnC,gBAAgB,OAAO,IAAI;AAAA,IAC7B;AAAA,EACF;AAAA,EAEA,GAAG,SAAoC;AACrC,WAAO,IAAI,kBAAkB,OAAO;AAAA,EACtC;AAAA,EAEA,QAAQ;AAAA,IACN,WAAW,OACT,WAIsD;AACtD,iBAAO,yBAAW,MAAM,aAAa,QAAQ,qBAAqB;AAAA,IACpE;AAAA,IACA,SAAS,OACP,WAIsD;AACtD,iBAAO,yBAAW,MAAM,WAAW,QAAQ,qBAAqB;AAAA,IAClE;AAAA,IACA,aAAa,OACX,WAImD;AACnD,iBAAO,yBAAW,MAAM,eAAe,QAAQ,qBAAqB;AAAA,IACtE;AAAA,IACA,gBAAgB,OACd,WAImD;AACnD,iBAAO,yBAAW,MAAM,kBAAkB,QAAQ,qBAAqB;AAAA,IACzE;AAAA,IACA,OAAO,OACL,WAImD;AACnD,iBAAO,yBAAW,MAAM,SAAS,QAAQ,qBAAqB;AAAA,IAChE;AAAA,IACA,MAAM,OACJ,WAImD;AACnD,iBAAO,yBAAW,MAAM,QAAQ,QAAQ,qBAAqB;AAAA,IAC/D;AAAA,IACA,mBAAmB,OACjB,WAIiD;AACjD,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA,cAAc,OACZ,WAImE;AACnE,iBAAO,yBAAW,MAAM,gBAAgB,QAAQ,qBAAqB;AAAA,IACvE;AAAA,IACA,aAAa,OACX,WAI6D;AAC7D,iBAAO,yBAAW,MAAM,eAAe,QAAQ,qBAAqB;AAAA,IACtE;AAAA,IACA,uBAAuB,OACrB,WAImD;AACnD,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA,yBAAyB,OACvB,WAImD;AACnD,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA,yBAAyB,OACvB,WAImD;AACnD,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA,QAAQ,OACN,WAIiD;AACjD,iBAAO,yBAAW,MAAM,UAAU,QAAQ,qBAAqB;AAAA,IACjE;AAAA,IACA,SAAS,OACP,WAI8D;AAC9D,iBAAO,yBAAW,MAAM,WAAW,QAAQ,qBAAqB;AAAA,IAClE;AAAA,IACA,MAAM,OACJ,WAImD;AACnD,iBAAO,yBAAW,MAAM,QAAQ,QAAQ,qBAAqB;AAAA,IAC/D;AAAA,IACA,MAAM,OACJ,WAI6D;AAC7D,iBAAO,yBAAW,MAAM,QAAQ,QAAQ,qBAAqB;AAAA,IAC/D;AAAA,IACA,MAAM,OACJ,WAWiD;AACjD,iBAAO,yBAAW,MAAM,QAAQ,QAAQ,qBAAqB;AAAA,IAC/D;AAAA,IACA,oBAAoB,OAClB,WAIiD;AACjD,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA,0BAA0B,OACxB,WAIiD;AACjD,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,aACE,YACA,OACA,SACA;AACA,WAAO,KAAK,cAAc,YAAY,OAAO,SAAS,MAAS;AAAA,EACjE;AACF;AAGO,IAAM,YAAY,IAAIA;AAAA,EAC3B,sBAAS;AAAA,IACP;AAAA,IACA;AAAA,IACA;AAAA,IACA,CAAC;AAAA,EACH;AACF;AACA,iBAAiB,SAAS;AAGnB,IAAM,oBAAN,cAAgC,8BAAiB;AAAA,EACtD,YAAY,SAAkB;AAC5B,UAAM,OAAO;AAAA,EACf;AAAA,EAEA,MAAM,aAA4C;AAChD,eAAO,iCAAmB,WAAW,IAAI;AAAA,EAC3C;AAAA,EAEA,MAAM,gCAAiD;AACrD,eAAO,4CAA8B,KAAK,OAAO;AAAA,EACnD;AAAA,EAEA,mBACE,SACA,WACmB;AACnB,eAAO;AAAA,MACL,UAAU;AAAA,MACV;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,mBACE,SACA,WACmB;AACnB,eAAO;AAAA,MACL,UAAU;AAAA,MACV;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,mBACE,SACA,WACmB;AACnB,eAAO;AAAA,MACL,UAAU;AAAA,MACV;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,mBACE,SAKA,WACmB;AACnB,eAAO;AAAA,MACL,UAAU;AAAA,MACV;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,OAAO;AAAA,IACL,WAAW,OACT,WAC0D;AAC1D,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA,WAAW,SAAY,CAAC,IAAI;AAAA,QAC5B;AAAA,MACF;AAAA,IACF;AAAA,IACA,SAAS,OACP,WACwD;AACxD,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA,WAAW,SAAY,CAAC,IAAI;AAAA,QAC5B;AAAA,MACF;AAAA,IACF;AAAA,IACA,aAAa,OACX,WAC4D;AAC5D,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA,WAAW,SAAY,CAAC,IAAI;AAAA,QAC5B;AAAA,MACF;AAAA,IACF;AAAA,IACA,gBAAgB,OACd,WAC+D;AAC/D,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA,WAAW,SAAY,CAAC,IAAI;AAAA,QAC5B;AAAA,MACF;AAAA,IACF;AAAA,IACA,OAAO,OACL,WACsD;AACtD,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA,MAAM,OACJ,WACqD;AACrD,iBAAO,yBAAW,WAAW,MAAM,QAAQ,QAAQ,qBAAqB;AAAA,IAC1E;AAAA,IACA,mBAAmB,OACjB,WACkE;AAClE,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA,cAAc,OACZ,WAC6D;AAC7D,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA,WAAW,SAAY,CAAC,IAAI;AAAA,QAC5B;AAAA,MACF;AAAA,IACF;AAAA,IACA,aAAa,OACX,WAC4D;AAC5D,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA,WAAW,SAAY,CAAC,IAAI;AAAA,QAC5B;AAAA,MACF;AAAA,IACF;AAAA,IACA,uBAAuB,OACrB,WACsE;AACtE,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA,WAAW,SAAY,CAAC,IAAI;AAAA,QAC5B;AAAA,MACF;AAAA,IACF;AAAA,IACA,yBAAyB,OACvB,WACwE;AACxE,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA,WAAW,SAAY,CAAC,IAAI;AAAA,QAC5B;AAAA,MACF;AAAA,IACF;AAAA,IACA,yBAAyB,OACvB,WACwE;AACxE,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA,WAAW,SAAY,CAAC,IAAI;AAAA,QAC5B;AAAA,MACF;AAAA,IACF;AAAA,IACA,QAAQ,OACN,WACuD;AACvD,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA,SAAS,OACP,WACwD;AACxD,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA,MAAM,OACJ,WACqD;AACrD,iBAAO,yBAAW,WAAW,MAAM,QAAQ,QAAQ,qBAAqB;AAAA,IAC1E;AAAA,IACA,MAAM,OACJ,WACqD;AACrD,iBAAO,yBAAW,WAAW,MAAM,QAAQ,QAAQ,qBAAqB;AAAA,IAC1E;AAAA,IACA,MAAM,OACJ,WACqD;AACrD,iBAAO,yBAAW,WAAW,MAAM,QAAQ,QAAQ,qBAAqB;AAAA,IAC1E;AAAA,IACA,oBAAoB,OAClB,WACmE;AACnE,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA,WAAW,SAAY,CAAC,IAAI;AAAA,QAC5B;AAAA,MACF;AAAA,IACF;AAAA,IACA,0BAA0B,OACxB,WACyE;AACzE,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,WAAW;AAAA,IACT,WAAW,OACT,WACiE;AACjE,iBAAO,gCAAkB,WAAW,MAAM,aAAa,MAAM;AAAA,IAC/D;AAAA,IACA,SAAS,OACP,WAC+D;AAC/D,iBAAO,gCAAkB,WAAW,MAAM,WAAW,MAAM;AAAA,IAC7D;AAAA,IACA,aAAa,OACX,WACmE;AACnE,iBAAO,gCAAkB,WAAW,MAAM,eAAe,MAAM;AAAA,IACjE;AAAA,IACA,gBAAgB,OACd,WACsE;AACtE,iBAAO,gCAAkB,WAAW,MAAM,kBAAkB,MAAM;AAAA,IACpE;AAAA,IACA,OAAO,OACL,WAC6D;AAC7D,iBAAO,gCAAkB,WAAW,MAAM,SAAS,MAAM;AAAA,IAC3D;AAAA,IACA,MAAM,OACJ,WAC4D;AAC5D,iBAAO,gCAAkB,WAAW,MAAM,QAAQ,MAAM;AAAA,IAC1D;AAAA,IACA,mBAAmB,OACjB,WACyE;AACzE,iBAAO,gCAAkB,WAAW,MAAM,qBAAqB,MAAM;AAAA,IACvE;AAAA,IACA,cAAc,OACZ,WACoE;AACpE,iBAAO,gCAAkB,WAAW,MAAM,gBAAgB,MAAM;AAAA,IAClE;AAAA,IACA,aAAa,OACX,WACmE;AACnE,iBAAO,gCAAkB,WAAW,MAAM,eAAe,MAAM;AAAA,IACjE;AAAA,IACA,uBAAuB,OACrB,WAGG;AACH,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA,yBAAyB,OACvB,WAGG;AACH,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA,yBAAyB,OACvB,WAGG;AACH,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA,QAAQ,OACN,WAC8D;AAC9D,iBAAO,gCAAkB,WAAW,MAAM,UAAU,MAAM;AAAA,IAC5D;AAAA,IACA,SAAS,OACP,WAC+D;AAC/D,iBAAO,gCAAkB,WAAW,MAAM,WAAW,MAAM;AAAA,IAC7D;AAAA,IACA,MAAM,OACJ,WAC4D;AAC5D,iBAAO,gCAAkB,WAAW,MAAM,QAAQ,MAAM;AAAA,IAC1D;AAAA,IACA,MAAM,OACJ,WAC4D;AAC5D,iBAAO,gCAAkB,WAAW,MAAM,QAAQ,MAAM;AAAA,IAC1D;AAAA,IACA,MAAM,OACJ,WAC4D;AAC5D,iBAAO,gCAAkB,WAAW,MAAM,QAAQ,MAAM;AAAA,IAC1D;AAAA,IACA,oBAAoB,OAClB,WAGG;AACH,iBAAO,gCAAkB,WAAW,MAAM,sBAAsB,MAAM;AAAA,IACxE;AAAA,IACA,0BAA0B,OACxB,WAGG;AACH,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAQA,MAAM,UAIJ,QAAkC;AAClC,WAAO,UAAM;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACF;;;AE96BA,IAAAC,gBA8BO;;;AClCP;AAAA,EACE,SAAW;AAAA,EACX,MAAQ;AAAA,EACR,UAAY;AAAA,EACZ,UAAY;AAAA,EACZ,WAAa;AAAA,IACX,OAAS;AAAA,MACP;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,OAAS;AAAA,MACP;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,WAAa;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EACA,WAAa;AAAA,IACX;AAAA,MACE,MAAQ;AAAA,MACR,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EACA,WAAa;AAAA,IACX;AAAA,MACE,MAAQ;AAAA,MACR,YAAc;AAAA,QACZ;AAAA,MACF;AAAA,MACA,YAAc;AAAA,QACZ;AAAA,MACF;AAAA,MACA,gBAAkB;AAAA,QAChB;AAAA,MACF;AAAA,MACA,aAAe,CAAC;AAAA,IAClB;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,YAAc;AAAA,QACZ;AAAA,MACF;AAAA,MACA,YAAc;AAAA,QACZ;AAAA,MACF;AAAA,MACA,gBAAkB;AAAA,QAChB;AAAA,MACF;AAAA,MACA,aAAe,CAAC;AAAA,IAClB;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,YAAc,CAAC;AAAA,MACf,YAAc,CAAC;AAAA,MACf,gBAAkB,CAAC;AAAA,MACnB,aAAe;AAAA,QACb;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,MACF;AAAA,MACA,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,MACF;AAAA,MACA,gBAAkB;AAAA,QAChB;AAAA,QACA;AAAA,MACF;AAAA,MACA,aAAe,CAAC;AAAA,IAClB;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,MACF;AAAA,MACA,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,MACF;AAAA,MACA,gBAAkB;AAAA,QAChB;AAAA,QACA;AAAA,MACF;AAAA,MACA,aAAe,CAAC;AAAA,IAClB;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,MACF;AAAA,MACA,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,MACF;AAAA,MACA,gBAAkB;AAAA,QAChB;AAAA,QACA;AAAA,MACF;AAAA,MACA,aAAe;AAAA,QACb;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,gBAAkB;AAAA,QAChB;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,aAAe,CAAC;AAAA,IAClB;AAAA,EACF;AAAA,EACA,WAAa,CAAC;AAAA,EACd,OAAS;AAAA,IACP;AAAA,MACE,MAAQ;AAAA,MACR,QAAU;AAAA,QACR;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;;;ADvIA,IAAMC,YAAN,cAAsB,8BAGpB;AAAA,EACA,aAAa,QAAsC;AACjD,eAAO;AAAA,UACL,gCAAiB,KAAK,UAAU,MAAM;AAAA,MACtC,KAAK,SAAS;AAAA,MACd,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EAEA,aAAa,EAAE,aAAa,EAAE;AAAA,EAC9B,SAAS;AAAA,IACP,YAAY;AAAA,MACV,iBAAiB,OAAO,GAAG;AAAA,MAC3B,2BAA2B,OAAO,GAAG;AAAA,MACrC,6BAA6B,OAAO,GAAG;AAAA,MACvC,6BAA6B,OAAO,GAAG;AAAA,MACvC,kBAAkB,OAAO,GAAG;AAAA,MAC5B,uBAAuB,OAAO,GAAG;AAAA,MACjC,kBAAkB,OAAO,GAAG;AAAA,MAC5B,iBAAiB,OAAO,GAAG;AAAA,MAC3B,UAAU,OAAO,GAAG;AAAA,MACpB,0BAA0B,OAAO,GAAG;AAAA,MACpC,yBAAyB,OAAO,IAAI;AAAA,MACpC,mBAAmB,OAAO,IAAI;AAAA,MAC9B,SAAS,OAAO,IAAI;AAAA,MACpB,0BAA0B,OAAO,IAAI;AAAA,MACrC,0BAA0B,OAAO,IAAI;AAAA,MACrC,eAAe,OAAO,IAAI;AAAA,MAC1B,eAAe,OAAO,IAAI;AAAA,MAC1B,wBAAwB,OAAO,IAAI;AAAA,MACnC,gBAAgB,OAAO,IAAI;AAAA,IAC7B;AAAA,EACF;AAAA,EAEA,GAAG,SAA2C;AAC5C,WAAO,IAAI,yBAAyB,OAAO;AAAA,EAC7C;AAAA,EAEA,QAAQ;AAAA,IACN,wBAAwB,OACtB,WAIiD;AACjD,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA,iBAAiB,OACf,WAIiD;AACjD,iBAAO,0BAAW,MAAM,mBAAmB,QAAQ,qBAAqB;AAAA,IAC1E;AAAA,IACA,cAAc,OACZ,WAIoD;AACpD,iBAAO,0BAAW,MAAM,gBAAgB,QAAQ,qBAAqB;AAAA,IACvE;AAAA,IACA,oBAAoB,OAClB,WAIiD;AACjD,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA,oBAAoB,OAClB,WAIiD;AACjD,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA,YAAY,OACV,WAImE;AACnE,iBAAO,0BAAW,MAAM,cAAc,QAAQ,qBAAqB;AAAA,IACrE;AAAA,IACA,YAAY,OACV,WASiD;AACjD,iBAAO,0BAAW,MAAM,cAAc,QAAQ,qBAAqB;AAAA,IACrE;AAAA,EACF;AAAA,EAEA,aACE,YACA,OACA,SACA;AACA,WAAO,KAAK,cAAc,YAAY,OAAO,SAAS,MAAS;AAAA,EACjE;AACF;AAGO,IAAM,mBAAmB,IAAIA;AAAA,EAClC,uBAAS;AAAA,IACP;AAAA,IACA;AAAA,IACA;AAAA,IACA,CAAC;AAAA,EACH;AACF;AACA,iBAAiB,gBAAgB;AAG1B,IAAM,2BAAN,cAAuC,+BAAiB;AAAA,EAC7D,YAAY,SAAkB;AAC5B,UAAM,OAAO;AAAA,EACf;AAAA,EAEA,MAAM,aAAmD;AACvD,eAAO,kCAAmB,kBAAkB,IAAI;AAAA,EAClD;AAAA,EAEA,MAAM,gCAAiD;AACrD,eAAO,6CAA8B,KAAK,OAAO;AAAA,EACnD;AAAA,EAEA,0BACE,SACA,WACmB;AACnB,eAAO;AAAA,MACL,iBAAiB;AAAA,MACjB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,OAAO;AAAA,IACL,wBAAwB,OACtB,WAGG;AACH,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA,iBAAiB,OACf,WACuE;AACvE,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA,cAAc,OACZ,WACoE;AACpE,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA,WAAW,SAAY,CAAC,IAAI;AAAA,QAC5B;AAAA,MACF;AAAA,IACF;AAAA,IACA,oBAAoB,OAClB,WAGG;AACH,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA,oBAAoB,OAClB,WAGG;AACH,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA,YAAY,OACV,WACkE;AAClE,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA,YAAY,OACV,WACkE;AAClE,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,WAAW;AAAA,IACT,wBAAwB,OACtB,WAGG;AACH,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA,iBAAiB,OACf,WAGG;AACH,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA,cAAc,OACZ,WAGG;AACH,iBAAO,iCAAkB,kBAAkB,MAAM,gBAAgB,MAAM;AAAA,IACzE;AAAA,IACA,oBAAoB,OAClB,WAGG;AACH,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA,oBAAoB,OAClB,WAGG;AACH,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA,YAAY,OACV,WACyE;AACzE,iBAAO,iCAAkB,kBAAkB,MAAM,cAAc,MAAM;AAAA,IACvE;AAAA,IACA,YAAY,OACV,WACyE;AACzE,iBAAO,iCAAkB,kBAAkB,MAAM,cAAc,MAAM;AAAA,IACvE;AAAA,EACF;AAAA,EAQA,MAAM,UAIJ,QAAkC;AAClC,WAAO,UAAM;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACF;;;AEpfA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA,IAAAC,gBAQO;;;ACZP;AAAA,EACE,SAAW;AAAA,EACX,MAAQ;AAAA,EACR,kBAAoB;AAAA,EACpB,WAAa;AAAA,IACX,OAAS;AAAA,MACP;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,OAAS;AAAA,MACP;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,WAAa;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EACA,WAAa;AAAA,IACX;AAAA,MACE,MAAQ;AAAA,MACR,YAAc,CAAC;AAAA,MACf,YAAc,CAAC;AAAA,MACf,gBAAkB,CAAC;AAAA,MACnB,aAAe,CAAC;AAAA,IAClB;AAAA,EACF;AACF;;;AC7CA;AAAA,EACE,SAAW;AAAA,EACX,MAAQ;AAAA,EACR,kBAAoB;AAAA,EACpB,WAAa;AAAA,IACX,OAAS;AAAA,MACP;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,OAAS;AAAA,MACP;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,WAAa;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EACA,WAAa;AAAA,IACX;AAAA,MACE,MAAQ;AAAA,MACR,YAAc,CAAC;AAAA,MACf,YAAc,CAAC;AAAA,MACf,gBAAkB,CAAC;AAAA,MACnB,aAAe,CAAC;AAAA,IAClB;AAAA,EACF;AACF;;;AC9BA;AAAA,EACE,SAAW;AAAA,EACX,MAAQ;AAAA,EACR,kBAAoB;AAAA,EACpB,WAAa;AAAA,IACX,OAAS;AAAA,MACP;AAAA,IACF;AAAA,IACA,OAAS;AAAA,MACP;AAAA,IACF;AAAA,IACA,WAAa;AAAA,MACX;AAAA,IACF;AAAA,EACF;AAAA,EACA,WAAa;AAAA,IACX;AAAA,MACE,MAAQ;AAAA,MACR,YAAc,CAAC;AAAA,MACf,YAAc,CAAC;AAAA,MACf,gBAAkB,CAAC;AAAA,MACnB,aAAe,CAAC;AAAA,IAClB;AAAA,EACF;AACF;;;ACxBA;AAAA,EACE,SAAW;AAAA,EACX,MAAQ;AAAA,EACR,kBAAoB;AAAA,EACpB,WAAa;AAAA,IACX,OAAS;AAAA,MACP;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,OAAS;AAAA,MACP;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,WAAa;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EACA,WAAa;AAAA,IACX;AAAA,MACE,MAAQ;AAAA,MACR,YAAc,CAAC;AAAA,MACf,YAAc,CAAC;AAAA,MACf,gBAAkB,CAAC;AAAA,MACnB,aAAe,CAAC;AAAA,IAClB;AAAA,EACF;AACF;;;ACpCA;AAAA,EACE,SAAW;AAAA,EACX,MAAQ;AAAA,EACR,kBAAoB;AAAA,EACpB,WAAa;AAAA,IACX,OAAS;AAAA,MACP;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,OAAS;AAAA,MACP;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,WAAa;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EACA,WAAa;AAAA,IACX;AAAA,MACE,MAAQ;AAAA,MACR,YAAc,CAAC;AAAA,MACf,YAAc,CAAC;AAAA,MACf,gBAAkB,CAAC;AAAA,MACnB,aAAe,CAAC;AAAA,IAClB;AAAA,EACF;AACF;;;AC1CA;AAAA,EACE,SAAW;AAAA,EACX,MAAQ;AAAA,EACR,kBAAoB;AAAA,EACpB,WAAa;AAAA,IACX,OAAS;AAAA,MACP;AAAA,MACA;AAAA,IACF;AAAA,IACA,OAAS;AAAA,MACP;AAAA,MACA;AAAA,IACF;AAAA,IACA,WAAa;AAAA,MACX;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EACA,WAAa;AAAA,IACX;AAAA,MACE,MAAQ;AAAA,MACR,YAAc,CAAC;AAAA,MACf,YAAc,CAAC;AAAA,MACf,gBAAkB,CAAC;AAAA,MACnB,aAAe,CAAC;AAAA,IAClB;AAAA,EACF;AACF;;;AC3BA;AAAA,EACE,SAAW;AAAA,EACX,MAAQ;AAAA,EACR,kBAAoB;AAAA,EACpB,WAAa;AAAA,IACX,OAAS;AAAA,MACP;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,OAAS;AAAA,MACP;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,WAAa;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EACA,WAAa;AAAA,IACX;AAAA,MACE,MAAQ;AAAA,MACR,YAAc,CAAC;AAAA,MACf,YAAc,CAAC;AAAA,MACf,gBAAkB,CAAC;AAAA,MACnB,aAAe,CAAC;AAAA,IAClB;AAAA,EACF;AACF;;;AC9BA;AAAA,EACE,SAAW;AAAA,EACX,MAAQ;AAAA,EACR,kBAAoB;AAAA,EACpB,WAAa;AAAA,IACX,OAAS;AAAA,MACP;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,OAAS;AAAA,MACP;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,WAAa;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EACA,WAAa;AAAA,IACX;AAAA,MACE,MAAQ;AAAA,MACR,YAAc,CAAC;AAAA,MACf,YAAc,CAAC;AAAA,MACf,gBAAkB,CAAC;AAAA,MACnB,aAAe,CAAC;AAAA,IAClB;AAAA,EACF;AACF;;;ACjCA;AAAA,EACE,SAAW;AAAA,EACX,MAAQ;AAAA,EACR,kBAAoB;AAAA,EACpB,WAAa;AAAA,IACX,OAAS;AAAA,MACP;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,OAAS;AAAA,MACP;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,WAAa;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EACA,WAAa;AAAA,IACX;AAAA,MACE,MAAQ;AAAA,MACR,YAAc,CAAC;AAAA,MACf,YAAc,CAAC;AAAA,MACf,gBAAkB,CAAC;AAAA,MACnB,aAAe,CAAC;AAAA,IAClB;AAAA,EACF;AACF;;;AC1CA;AAAA,EACE,SAAW;AAAA,EACX,MAAQ;AAAA,EACR,kBAAoB;AAAA,EACpB,WAAa;AAAA,IACX,OAAS;AAAA,MACP;AAAA,MACA;AAAA,IACF;AAAA,IACA,OAAS;AAAA,MACP;AAAA,MACA;AAAA,IACF;AAAA,IACA,WAAa;AAAA,MACX;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EACA,WAAa;AAAA,IACX;AAAA,MACE,MAAQ;AAAA,MACR,YAAc,CAAC;AAAA,MACf,YAAc,CAAC;AAAA,MACf,gBAAkB,CAAC;AAAA,MACnB,aAAe,CAAC;AAAA,IAClB;AAAA,EACF;AACF;;;AC3BA;AAAA,EACE,SAAW;AAAA,EACX,MAAQ;AAAA,EACR,kBAAoB;AAAA,EACpB,WAAa;AAAA,IACX,OAAS;AAAA,MACP;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,OAAS;AAAA,MACP;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,WAAa;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EACA,WAAa;AAAA,IACX;AAAA,MACE,MAAQ;AAAA,MACR,YAAc,CAAC;AAAA,MACf,YAAc,CAAC;AAAA,MACf,gBAAkB,CAAC;AAAA,MACnB,aAAe,CAAC;AAAA,IAClB;AAAA,EACF;AACF;;;AC7CA;AAAA,EACE,SAAW;AAAA,EACX,MAAQ;AAAA,EACR,kBAAoB;AAAA,EACpB,WAAa;AAAA,IACX,OAAS;AAAA,MACP;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,OAAS;AAAA,MACP;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,WAAa;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EACA,WAAa;AAAA,IACX;AAAA,MACE,MAAQ;AAAA,MACR,YAAc,CAAC;AAAA,MACf,YAAc,CAAC;AAAA,MACf,gBAAkB,CAAC;AAAA,MACnB,aAAe,CAAC;AAAA,IAClB;AAAA,EACF;AACF;;;AC7CA;AAAA,EACE,SAAW;AAAA,EACX,MAAQ;AAAA,EACR,kBAAoB;AAAA,EACpB,WAAa;AAAA,IACX,OAAS;AAAA,MACP;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,OAAS;AAAA,MACP;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,WAAa;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EACA,WAAa;AAAA,IACX;AAAA,MACE,MAAQ;AAAA,MACR,YAAc,CAAC;AAAA,MACf,YAAc,CAAC;AAAA,MACf,gBAAkB,CAAC;AAAA,MACnB,aAAe,CAAC;AAAA,IAClB;AAAA,EACF;AACF;;;AbjBO,IAAM,eAAe,IAAI,+BAS7B,qBAAO,SAAS,0BAAwB,IAAI,CAAC,CAAC,GAAG,qBAAqB;AAElE,IAAM,OAAO,IAAI,+BAIrB,qBAAO,SAAS,kBAAgB,IAAI,CAAC,CAAC,GAAG,qBAAqB;AAE1D,IAAM,aAAa,IAAI;AAAA,EAC5B,qBAAO,SAAS,wBAAsB,IAAI,CAAC,CAAC;AAAA,EAC5C;AACF;AAEO,IAAM,aAAa,IAAI,+BAM3B,qBAAO,SAAS,wBAAsB,IAAI,CAAC,CAAC,GAAG,qBAAqB;AAEhE,IAAM,4BAA4B,IAAI;AAAA,EAS3C,qBAAO,SAAS,uCAAqC,IAAI,CAAC,CAAC;AAAA,EAC3D;AACF;AAEO,IAAM,qBAAqB,IAAI;AAAA,EAIpC,qBAAO,SAAS,gCAA8B,IAAI,CAAC,CAAC;AAAA,EACpD;AACF;AAEO,IAAM,WAAW,IAAI,+BAIzB,qBAAO,SAAS,sBAAoB,IAAI,CAAC,CAAC,GAAG,qBAAqB;AAE9D,IAAM,OAAO,IAAI,+BAKrB,qBAAO,SAAS,kBAAgB,IAAI,CAAC,CAAC,GAAG,qBAAqB;AAE1D,IAAM,kBAAkB,IAAI,+BAQhC,qBAAO,SAAS,6BAA2B,IAAI,CAAC,CAAC,GAAG,qBAAqB;AAErE,IAAM,yBAAyB,IAAI;AAAA,EAIxC,qBAAO,SAAS,oCAAkC,IAAI,CAAC,CAAC;AAAA,EACxD;AACF;AAEO,IAAM,OAAO,IAAI,+BASrB,qBAAO,SAAS,kBAAgB,IAAI,CAAC,CAAC,GAAG,qBAAqB;AAE1D,IAAM,YAAY,IAAI,+BAS1B,qBAAO,SAAS,uBAAqB,IAAI,CAAC,CAAC,GAAG,qBAAqB;AAE/D,IAAM,aAAa,IAAI,+BAS3B,qBAAO,SAAS,wBAAsB,IAAI,CAAC,CAAC,GAAG,qBAAqB;;;Ac7IvE;AAAA,EACE;AAAA,IACE,iBAAmB;AAAA,IACnB,WAAa;AAAA,MACX,WAAa;AAAA,QACX,MAAQ;AAAA,QACR,YAAc;AAAA,QACd,WAAa;AAAA,QACb,UAAY;AAAA,QACZ,WAAa;AAAA,QACb,WAAa;AAAA,QACb,UAAY;AAAA,QACZ,kBAAoB;AAAA,UAClB,SAAW;AAAA,UACX,YAAc;AAAA,UACd,YAAc;AAAA,QAChB;AAAA,MACF;AAAA,MACA,kBAAoB;AAAA,QAClB,MAAQ;AAAA,QACR,YAAc;AAAA,QACd,WAAa;AAAA,QACb,UAAY;AAAA,QACZ,WAAa;AAAA,QACb,WAAa;AAAA,QACb,UAAY;AAAA,QACZ,kBAAoB;AAAA,UAClB,SAAW;AAAA,UACX,YAAc;AAAA,UACd,YAAc;AAAA,QAChB;AAAA,MACF;AAAA,MACA,QAAU;AAAA,QACR,MAAQ;AAAA,QACR,YAAc;AAAA,QACd,WAAa;AAAA,QACb,UAAY;AAAA,QACZ,WAAa;AAAA,QACb,WAAa;AAAA,QACb,UAAY;AAAA,QACZ,kBAAoB;AAAA,UAClB,SAAW;AAAA,UACX,YAAc;AAAA,UACd,YAAc;AAAA,QAChB;AAAA,MACF;AAAA,MACA,8BAAgC;AAAA,QAC9B,MAAQ;AAAA,QACR,YAAc;AAAA,QACd,WAAa;AAAA,QACb,UAAY;AAAA,QACZ,WAAa;AAAA,QACb,WAAa;AAAA,QACb,UAAY;AAAA,QACZ,kBAAoB;AAAA,UAClB,SAAW;AAAA,UACX,YAAc;AAAA,UACd,YAAc;AAAA,QAChB;AAAA,MACF;AAAA,MACA,yBAA2B;AAAA,QACzB,MAAQ;AAAA,QACR,YAAc;AAAA,QACd,WAAa;AAAA,QACb,UAAY;AAAA,QACZ,WAAa;AAAA,QACb,WAAa;AAAA,QACb,UAAY;AAAA,QACZ,kBAAoB;AAAA,UAClB,SAAW;AAAA,UACX,YAAc;AAAA,UACd,YAAc;AAAA,QAChB;AAAA,MACF;AAAA,IACF;AAAA,IACA,SAAW,CAAC;AAAA,IACZ,YAAc,CAAC;AAAA,EACjB;AACF;;;AC9EA;AAAA,EACE,iBAAmB;AAAA,EACnB,WAAa;AAAA,IACX,WAAa;AAAA,MACX,MAAQ;AAAA,MACR,YAAc;AAAA,MACd,WAAa;AAAA,MACb,UAAY;AAAA,MACZ,WAAa;AAAA,MACb,WAAa;AAAA,MACb,UAAY;AAAA,MACZ,kBAAoB;AAAA,QAClB,SAAW;AAAA,QACX,YAAc;AAAA,QACd,YAAc;AAAA,MAChB;AAAA,IACF;AAAA,IACA,kBAAoB;AAAA,MAClB,MAAQ;AAAA,MACR,YAAc;AAAA,MACd,WAAa;AAAA,MACb,UAAY;AAAA,MACZ,WAAa;AAAA,MACb,WAAa;AAAA,MACb,UAAY;AAAA,MACZ,kBAAoB;AAAA,QAClB,SAAW;AAAA,QACX,YAAc;AAAA,QACd,YAAc;AAAA,MAChB;AAAA,IACF;AAAA,IACA,QAAU;AAAA,MACR,MAAQ;AAAA,MACR,YAAc;AAAA,MACd,WAAa;AAAA,MACb,UAAY;AAAA,MACZ,WAAa;AAAA,MACb,WAAa;AAAA,MACb,UAAY;AAAA,MACZ,kBAAoB;AAAA,QAClB,SAAW;AAAA,QACX,YAAc;AAAA,QACd,YAAc;AAAA,MAChB;AAAA,IACF;AAAA,IACA,8BAAgC;AAAA,MAC9B,MAAQ;AAAA,MACR,YAAc;AAAA,MACd,WAAa;AAAA,MACb,UAAY;AAAA,MACZ,WAAa;AAAA,MACb,WAAa;AAAA,MACb,UAAY;AAAA,MACZ,kBAAoB;AAAA,QAClB,SAAW;AAAA,QACX,YAAc;AAAA,QACd,YAAc;AAAA,MAChB;AAAA,IACF;AAAA,IACA,yBAA2B;AAAA,MACzB,MAAQ;AAAA,MACR,YAAc;AAAA,MACd,WAAa;AAAA,MACb,UAAY;AAAA,MACZ,WAAa;AAAA,MACb,WAAa;AAAA,MACb,UAAY;AAAA,MACZ,kBAAoB;AAAA,QAClB,SAAW;AAAA,QACX,YAAc;AAAA,QACd,YAAc;AAAA,MAChB;AAAA,IACF;AAAA,EACF;AAAA,EACA,SAAW,CAAC;AAAA,EACZ,YAAc,CAAC;AACjB;;;ACzCA,SAAS,cAAc,MAAwB;AAC7C,QAAMC,aAAY;AAAA,IAChB,WAAW;AAAA,MACT,GAAG,KAAK,UAAU,WAAW;AAAA,MAC7B,kBAAkB,UAAU;AAAA,QAC1B,KAAK,UAAU,WAAW,EAAE,iBAAiB;AAAA,MAC/C;AAAA,IACF;AAAA,IACA,kBAAkB;AAAA,MAChB,GAAG,KAAK,UAAU,kBAAkB;AAAA,MACpC,kBAAkB,iBAAiB;AAAA,QACjC,KAAK,UAAU,kBAAkB,EAAE,iBAAiB;AAAA,MACtD;AAAA,IACF;AAAA,IACA,QAAQ;AAAA,MACN,GAAG,KAAK,UAAU,QAAQ;AAAA,MAC1B,kBAAkB,OAAO;AAAA,QACvB,KAAK,UAAU,QAAQ,EAAE,iBAAiB;AAAA,MAC5C;AAAA,IACF;AAAA,IACA,8BAA8B;AAAA,MAC5B,GAAG,KAAK,UAAU,8BAA8B;AAAA,MAChD,kBAAkB,6BAA6B;AAAA,QAC7C,KAAK,UAAU,8BAA8B,EAAE,iBAAiB;AAAA,MAClE;AAAA,IACF;AAAA,IACA,yBAAyB;AAAA,MACvB,GAAG,KAAK,UAAU,yBAAyB;AAAA,MAC3C,kBAAkB,wBAAwB;AAAA,QACxC,KAAK,UAAU,yBAAyB,EAAE,iBAAiB;AAAA,MAC7D;AAAA,IACF;AAAA,EACF;AACA,SAAO;AAAA,IACL,GAAG;AAAA,IACH,WAAWA;AAAA,EACb;AACF;AAEO,SAAS,gBACd,WACA,iBACa;AACb,QAAM,cACJ,cAAc,YACV,8BACA,cAAc,WACd,6BACA;AACN,MAAI,gBAAgB,QAAW;AAC7B,UAAM,MAAM,+CAA+C,SAAS;AAAA,EACtE;AACA,QAAM,iBAAwB,MAAM,QAAQ,WAAW,IACnD,cACA,CAAC,WAAW;AAChB,MAAI,oBAAoB,QAAW;AACjC,QAAI,eAAe,SAAS,GAAG;AAC7B,YAAM;AAAA,QACJ,sDACE,YACA;AAAA,MACJ;AAAA,IACF,OAAO;AACL,aAAO,cAAc,eAAe,CAAC,CAAC;AAAA,IACxC;AAAA,EACF;AACA,QAAM,SAAS,eAAe;AAAA,IAC5B,CAAC,MAAM,EAAE,oBAAoB;AAAA,EAC/B;AACA,MAAI,WAAW,QAAW;AACxB,UAAM,MAAM,+CAA+C;AAAA,EAC7D;AACA,SAAO,cAAc,MAAM;AAC7B;;;AC5GO,SAAS,WAAW,UAAkB,UAAoC;AAC/E,SAAO,WAAW,WAAW,CAAC,UAAU,QAAQ,IAAI,CAAC,UAAU,QAAQ;AACzE;;;ACFO,IAAM,mBAAmB;AACzB,IAAM,oBAAoB;;;ACD1B,IAAM,eAAN,cAA2B,MAAM;AAAA,EACtC,YAAY,SAAiB,SAAwB;AACnD,UAAM,SAAS,OAAO;AACtB,SAAK,OAAO;AAAA,EACd;AACF;AAEO,IAAM,6BAAN,cAAyC,aAAa;AAAA,EAC3D,YAAY,UAAkB,0BAA0B;AACtD,UAAM,OAAO;AACb,SAAK,OAAO;AAAA,EACd;AACF;AAEO,IAAM,0BAAN,cAAsC,aAAa;AAAA,EACxD,YAAY,aAAqB,gBAAwB;AACvD,UAAM,0BAA0B,YAAY,QAAQ,CAAC,CAAC,OAAO,cAAc,GAAG;AAC9E,SAAK,OAAO;AAAA,EACd;AACF;AAEO,IAAM,oBAAN,cAAgC,aAAa;AAAA,EAClD,YAAY,QAAgB;AAC1B,UAAM,2BAA2B,MAAM,EAAE;AACzC,SAAK,OAAO;AAAA,EACd;AACF;AAEO,IAAM,2BAAN,cAAuC,aAAa;AAAA,EACzD,YAAY,OAAe,UAAkB,WAAmB;AAC9D,UAAM,cAAc,KAAK,uBAAuB,QAAQ,gBAAgB,SAAS,EAAE;AACnF,SAAK,OAAO;AAAA,EACd;AACF;AAEO,IAAM,sBAAN,cAAkC,aAAa;AAAA,EACpC;AAAA,EAEhB,YAAY,KAAa,SAAgD;AACvE,UAAM,aAAa,SAAS,WAAW,SAAY,YAAY,QAAQ,MAAM,MAAM;AACnF,UAAM,eAAe,SAAS,UAAU,SAAY,EAAE,OAAO,QAAQ,MAAM,IAAI;AAC/E,UAAM,mCAAmC,GAAG,GAAG,UAAU,IAAI,YAAY;AACzE,SAAK,OAAO;AACZ,SAAK,SAAS,SAAS;AAAA,EACzB;AACF;;;AC7CO,IAAK,WAAL,kBAAKC,cAAL;AACL,EAAAA,oBAAA;AACA,EAAAA,oBAAA;AACA,EAAAA,oBAAA;AACA,EAAAA,oBAAA;AAJU,SAAAA;AAAA,GAAA;AAOL,IAAM,SAAN,MAAa;AAAA,EACV;AAAA,EACA;AAAA,EAER,YAAY,QAA+C;AACzD,SAAK,WAAW,OAAO,aAAa,SAAY,OAAO,WAAW;AAClE,SAAK,OAAO,OAAO;AAAA,EACrB;AAAA,EAEA,IAAI,MAAM,UAAoB;AAC5B,SAAK,WAAW;AAAA,EAClB;AAAA,EAEA,IAAI,OAAe;AACjB,YAAO,oBAAI,KAAK,GAAE,YAAY;AAAA,EAChC;AAAA,EAEA,IAAI,aAAqB;AACvB,WAAO,KAAK;AAAA,EACd;AAAA,EAEQ,WAAW,OAA0B;AAC3C,WAAO,SAAS,KAAK;AAAA,EACvB;AAAA,EAEO,SAAS,OAA0B;AACxC,QAAI,CAAC,KAAK,WAAW,aAAc,EAAG,QAAO;AAC7C,YAAQ,MAAM,KAAK,MAAM,KAAK,MAAM,SAAS,GAAG,KAAK;AACrD,WAAO;AAAA,EACT;AAAA,EAEO,gBAAgB,OAA0B;AAC/C,UAAM,MAAM,MACT,IAAI,CAAC,QAAS,OAAO,QAAQ,WAAW,KAAK,UAAU,GAAG,IAAI,GAAI,EAClE,KAAK,IAAI;AACZ,UAAM,IAAI,MAAM,GAAG;AAAA,EACrB;AAAA,EAEO,WAAW,OAA0B;AAC1C,QAAI,CAAC,KAAK,WAAW,eAAgB,EAAG,QAAO;AAC/C,YAAQ,KAAK,KAAK,MAAM,KAAK,MAAM,WAAW,GAAG,KAAK;AACtD,WAAO;AAAA,EACT;AAAA,EAEO,QAAQ,OAA0B;AACvC,QAAI,CAAC,KAAK,WAAW,YAAa,EAAG,QAAO;AAC5C,YAAQ,KAAK,KAAK,MAAM,KAAK,MAAM,QAAQ,GAAG,KAAK;AACnD,WAAO;AAAA,EACT;AAAA,EAEO,SAAS,OAA0B;AACxC,QAAI,CAAC,KAAK,WAAW,aAAc,EAAG,QAAO;AAC7C,YAAQ,MAAM,KAAK,MAAM,KAAK,MAAM,SAAS,GAAG,KAAK;AACrD,WAAO;AAAA,EACT;AACF;AAEA,IAAM,gBAA2C,CAAC;AAClD,IAAM,eAA4C,CAAC;AAE5C,SAAS,aAAa,YAA4B;AACvD,MAAI,SAAS,cAAc,UAAU;AACrC,MAAI,CAAC,QAAQ;AACX,UAAM,WAAW,aAAa,UAAU;AACxC,aAAS,IAAI,OAAO,EAAE,MAAM,YAAY,SAAS,CAAC;AAClD,kBAAc,UAAU,IAAI;AAAA,EAC9B;AACA,SAAO;AACT;AAEO,SAAS,eAAe,YAAoB,OAAuB;AACxE,eAAa,UAAU,IAAI;AAC3B,QAAM,SAAS,cAAc,UAAU;AACvC,MAAI,OAAQ,QAAO,QAAQ;AAC7B;;;ACxEA,IAAM,UAAU,IAAI,SAClB,KACG,IAAI,CAAC,QAAQ;AACZ,MAAI,eAAe,OAAO;AACxB,UAAM,OAAO,IAAI,WAAW,IAAI;AAChC,WAAO,IAAI,QAAQ,GAAG,IAAI;AAAA,EAAK,IAAI,KAAK,KAAK;AAAA,EAC/C;AAEA,MAAI,OAAO,QAAQ,YAAY,QAAQ,MAAM;AAC3C,QAAI;AACF,aAAO,KAAK,UAAU,GAAG;AAAA,IAC3B,QAAQ;AACN,aAAO,OAAO,GAAG;AAAA,IACnB;AAAA,EACF;AAEA,SAAO,OAAO,GAAG;AACnB,CAAC,EACA,KAAK,IAAI;AAEd,IAAqB,aAArB,MAAgC;AAAA,EACvB;AAAA,EACC,WAAW;AAAA,EACT;AAAA,EAEV,YAAY,EAAE,OAAO,WAAW,GAAoB;AAClD,SAAK,QAAQ;AACb,SAAK,SAAS,aAAa,UAAU;AAAA,EACvC;AAAA,EAEO,YAAY,MAAuB;AACxC,SAAK,OAAO,MAAM,QAAQ,GAAG,IAAI,CAAC;AAAA,EACpC;AAAA,EAEO,WAAW,MAAuB;AACvC,SAAK,OAAO,KAAK,QAAQ,GAAG,IAAI,CAAC;AAAA,EACnC;AAAA,EAEO,cAAc,MAAuB;AAC1C,SAAK,OAAO,QAAQ,QAAQ,GAAG,IAAI,CAAC;AAAA,EACtC;AAAA,EAEO,YAAY,MAAuB;AACxC,SAAK,OAAO,MAAM,QAAQ,GAAG,IAAI,CAAC;AAAA,EACpC;AAAA,EAEO,oBAAoB,MAAwB;AACjD,UAAM,UAAU,QAAQ,GAAG,IAAI;AAC/B,UAAM,IAAI,MAAM,OAAO;AAAA,EACzB;AAAA,EAEO,gBAAsB;AAC3B,QAAI,KAAK,YAAY,CAAC,KAAK,MAAO,MAAK,iBAAiB,oBAAoB;AAAA,EAC9E;AACF;;;ACfA,IACE,YAAY;AADd,IAEE,WAAW,KAAK;AAFlB,IAGE,YAAY,KAAK;AAHnB,IAKE,iBAAiB;AALnB,IAME,gBAAgB,iBAAiB;AANnC,IAQE,OAAO;AART,IASE,WAAW;AATb,IAUE,mBAAmB;AAVrB,IAYE,WAAW,CAAC,GAAG,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,MAAM,MAAM,IAAI;AAZnF,IAaE,YAAY;AAbd,IAkBE,MAAM;AAMR,SAAS,MAAM,cAAc;AAC3B,MAAI,KAAK,aAAa,cACpB,IAAIC,WAAU,YAAY,EAAE,aAAaA,YAAW,UAAU,MAAM,SAAS,KAAK,GAClF,MAAM,IAAIA,WAAU,CAAC,GAUrB,iBAAiB,IAajB,gBAAgB,GAMhB,aAAa,IAIb,aAAa,IAMb,UAAU,MAKV,UAAU,KAGV,SAAS,OAkBT,cAAc,GAId,gBAAgB,GAGhB,SAAS;AAAA,IACP,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,oBAAoB;AAAA,IACpB,gBAAgB;AAAA,IAChB,kBAAkB;AAAA,IAClB,mBAAmB;AAAA,IACnB,wBAAwB;AAAA;AAAA,IACxB,QAAQ;AAAA,EACV,GAKA,WAAW,wCACX,iCAAiC;AAgBnC,WAASA,WAAU,GAAG,GAAG;AACvB,QAAI,UAAU,GAAG,aAAa,GAAG,GAAG,OAAO,KAAK,KAC9C,IAAI;AAGN,QAAI,EAAE,aAAaA,YAAY,QAAO,IAAIA,WAAU,GAAG,CAAC;AAExD,QAAI,KAAK,MAAM;AAEb,UAAI,KAAK,EAAE,iBAAiB,MAAM;AAChC,UAAE,IAAI,EAAE;AAER,YAAI,CAAC,EAAE,KAAK,EAAE,IAAI,SAAS;AACzB,YAAE,IAAI,EAAE,IAAI;AAAA,QACd,WAAW,EAAE,IAAI,SAAS;AACxB,YAAE,IAAI,CAAC,EAAE,IAAI,CAAC;AAAA,QAChB,OAAO;AACL,YAAE,IAAI,EAAE;AACR,YAAE,IAAI,EAAE,EAAE,MAAM;AAAA,QAClB;AAEA;AAAA,MACF;AAEA,WAAK,QAAQ,OAAO,KAAK,aAAa,IAAI,KAAK,GAAG;AAGhD,UAAE,IAAI,IAAI,IAAI,KAAK,IAAI,CAAC,GAAG,MAAM;AAGjC,YAAI,MAAM,CAAC,CAAC,GAAG;AACb,eAAK,IAAI,GAAG,IAAI,GAAG,KAAK,IAAI,KAAK,IAAI,IAAI;AAEzC,cAAI,IAAI,SAAS;AACf,cAAE,IAAI,EAAE,IAAI;AAAA,UACd,OAAO;AACL,cAAE,IAAI;AACN,cAAE,IAAI,CAAC,CAAC;AAAA,UACV;AAEA;AAAA,QACF;AAEA,cAAM,OAAO,CAAC;AAAA,MAChB,OAAO;AAEL,YAAI,CAAC,UAAU,KAAK,MAAM,OAAO,CAAC,CAAC,EAAG,QAAO,aAAa,GAAG,KAAK,KAAK;AAEvE,UAAE,IAAI,IAAI,WAAW,CAAC,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,GAAG,MAAM;AAAA,MAC7D;AAGA,WAAK,IAAI,IAAI,QAAQ,GAAG,KAAK,GAAI,OAAM,IAAI,QAAQ,KAAK,EAAE;AAG1D,WAAK,IAAI,IAAI,OAAO,IAAI,KAAK,GAAG;AAG9B,YAAI,IAAI,EAAG,KAAI;AACf,aAAK,CAAC,IAAI,MAAM,IAAI,CAAC;AACrB,cAAM,IAAI,UAAU,GAAG,CAAC;AAAA,MAC1B,WAAW,IAAI,GAAG;AAGhB,YAAI,IAAI;AAAA,MACV;AAAA,IAEF,OAAO;AAGL,eAAS,GAAG,GAAG,SAAS,QAAQ,MAAM;AAItC,UAAI,KAAK,MAAM,gCAAgC;AAC7C,YAAI,IAAIA,WAAU,CAAC;AACnB,eAAO,MAAM,GAAG,iBAAiB,EAAE,IAAI,GAAG,aAAa;AAAA,MACzD;AAEA,YAAM,OAAO,CAAC;AAEd,UAAI,QAAQ,OAAO,KAAK,UAAU;AAGhC,YAAI,IAAI,KAAK,EAAG,QAAO,aAAa,GAAG,KAAK,OAAO,CAAC;AAEpD,UAAE,IAAI,IAAI,IAAI,KAAK,MAAM,IAAI,MAAM,CAAC,GAAG,MAAM;AAG7C,YAAIA,WAAU,SAAS,IAAI,QAAQ,aAAa,EAAE,EAAE,SAAS,IAAI;AAC/D,gBAAM,MACJ,gBAAgB,CAAC;AAAA,QACrB;AAAA,MACF,OAAO;AACL,UAAE,IAAI,IAAI,WAAW,CAAC,MAAM,MAAM,MAAM,IAAI,MAAM,CAAC,GAAG,MAAM;AAAA,MAC9D;AAEA,iBAAW,SAAS,MAAM,GAAG,CAAC;AAC9B,UAAI,IAAI;AAIR,WAAK,MAAM,IAAI,QAAQ,IAAI,KAAK,KAAK;AACnC,YAAI,SAAS,QAAQ,IAAI,IAAI,OAAO,CAAC,CAAC,IAAI,GAAG;AAC3C,cAAI,KAAK,KAAK;AAGZ,gBAAI,IAAI,GAAG;AACT,kBAAI;AACJ;AAAA,YACF;AAAA,UACF,WAAW,CAAC,aAAa;AAGvB,gBAAI,OAAO,IAAI,YAAY,MAAM,MAAM,IAAI,YAAY,MACnD,OAAO,IAAI,YAAY,MAAM,MAAM,IAAI,YAAY,IAAI;AACzD,4BAAc;AACd,kBAAI;AACJ,kBAAI;AACJ;AAAA,YACF;AAAA,UACF;AAEA,iBAAO,aAAa,GAAG,OAAO,CAAC,GAAG,OAAO,CAAC;AAAA,QAC5C;AAAA,MACF;AAGA,cAAQ;AACR,YAAM,YAAY,KAAK,GAAG,IAAI,EAAE,CAAC;AAGjC,WAAK,IAAI,IAAI,QAAQ,GAAG,KAAK,GAAI,OAAM,IAAI,QAAQ,KAAK,EAAE;AAAA,UACrD,KAAI,IAAI;AAAA,IACf;AAGA,SAAK,IAAI,GAAG,IAAI,WAAW,CAAC,MAAM,IAAI,IAAI;AAG1C,SAAK,MAAM,IAAI,QAAQ,IAAI,WAAW,EAAE,GAAG,MAAM,KAAI;AAErD,QAAI,MAAM,IAAI,MAAM,GAAG,EAAE,GAAG,GAAG;AAC7B,aAAO;AAGP,UAAI,SAASA,WAAU,SACrB,MAAM,OAAO,IAAI,oBAAoB,MAAM,UAAU,CAAC,IAAI;AACxD,cAAM,MACJ,gBAAiB,EAAE,IAAI,CAAE;AAAA,MAC/B;AAGA,WAAK,IAAI,IAAI,IAAI,KAAK,SAAS;AAG7B,UAAE,IAAI,EAAE,IAAI;AAAA,MAGd,WAAW,IAAI,SAAS;AAGtB,UAAE,IAAI,CAAC,EAAE,IAAI,CAAC;AAAA,MAChB,OAAO;AACL,UAAE,IAAI;AACN,UAAE,IAAI,CAAC;AAMP,aAAK,IAAI,KAAK;AACd,YAAI,IAAI,EAAG,MAAK;AAEhB,YAAI,IAAI,KAAK;AACX,cAAI,EAAG,GAAE,EAAE,KAAK,CAAC,IAAI,MAAM,GAAG,CAAC,CAAC;AAEhC,eAAK,OAAO,UAAU,IAAI,OAAM;AAC9B,cAAE,EAAE,KAAK,CAAC,IAAI,MAAM,GAAG,KAAK,QAAQ,CAAC;AAAA,UACvC;AAEA,cAAI,YAAY,MAAM,IAAI,MAAM,CAAC,GAAG;AAAA,QACtC,OAAO;AACL,eAAK;AAAA,QACP;AAEA,eAAO,KAAK,OAAO,IAAI;AACvB,UAAE,EAAE,KAAK,CAAC,GAAG;AAAA,MACf;AAAA,IACF,OAAO;AAGL,QAAE,IAAI,CAAC,EAAE,IAAI,CAAC;AAAA,IAChB;AAAA,EACF;AAMA,EAAAA,WAAU,QAAQ;AAElB,EAAAA,WAAU,WAAW;AACrB,EAAAA,WAAU,aAAa;AACvB,EAAAA,WAAU,aAAa;AACvB,EAAAA,WAAU,cAAc;AACxB,EAAAA,WAAU,gBAAgB;AAC1B,EAAAA,WAAU,kBAAkB;AAC5B,EAAAA,WAAU,kBAAkB;AAC5B,EAAAA,WAAU,kBAAkB;AAC5B,EAAAA,WAAU,mBAAmB;AAC7B,EAAAA,WAAU,SAAS;AAqCnB,EAAAA,WAAU,SAASA,WAAU,MAAM,SAAU,KAAK;AAChD,QAAI,GAAG;AAEP,QAAI,OAAO,MAAM;AAEf,UAAI,OAAO,OAAO,UAAU;AAI1B,YAAI,IAAI,eAAe,IAAI,gBAAgB,GAAG;AAC5C,cAAI,IAAI,CAAC;AACT,mBAAS,GAAG,GAAG,KAAK,CAAC;AACrB,2BAAiB;AAAA,QACnB;AAIA,YAAI,IAAI,eAAe,IAAI,eAAe,GAAG;AAC3C,cAAI,IAAI,CAAC;AACT,mBAAS,GAAG,GAAG,GAAG,CAAC;AACnB,0BAAgB;AAAA,QAClB;AAMA,YAAI,IAAI,eAAe,IAAI,gBAAgB,GAAG;AAC5C,cAAI,IAAI,CAAC;AACT,cAAI,KAAK,EAAE,KAAK;AACd,qBAAS,EAAE,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC;AACzB,qBAAS,EAAE,CAAC,GAAG,GAAG,KAAK,CAAC;AACxB,yBAAa,EAAE,CAAC;AAChB,yBAAa,EAAE,CAAC;AAAA,UAClB,OAAO;AACL,qBAAS,GAAG,CAAC,KAAK,KAAK,CAAC;AACxB,yBAAa,EAAE,aAAa,IAAI,IAAI,CAAC,IAAI;AAAA,UAC3C;AAAA,QACF;AAKA,YAAI,IAAI,eAAe,IAAI,OAAO,GAAG;AACnC,cAAI,IAAI,CAAC;AACT,cAAI,KAAK,EAAE,KAAK;AACd,qBAAS,EAAE,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC;AAC1B,qBAAS,EAAE,CAAC,GAAG,GAAG,KAAK,CAAC;AACxB,sBAAU,EAAE,CAAC;AACb,sBAAU,EAAE,CAAC;AAAA,UACf,OAAO;AACL,qBAAS,GAAG,CAAC,KAAK,KAAK,CAAC;AACxB,gBAAI,GAAG;AACL,wBAAU,EAAE,UAAU,IAAI,IAAI,CAAC,IAAI;AAAA,YACrC,OAAO;AACL,oBAAM,MACJ,iBAAiB,IAAI,sBAAsB,CAAC;AAAA,YAChD;AAAA,UACF;AAAA,QACF;AAKA,YAAI,IAAI,eAAe,IAAI,QAAQ,GAAG;AACpC,cAAI,IAAI,CAAC;AACT,cAAI,MAAM,CAAC,CAAC,GAAG;AACb,gBAAI,GAAG;AACL,kBAAI,OAAO,UAAU,eAAe,WAClC,OAAO,mBAAmB,OAAO,cAAc;AAC/C,yBAAS;AAAA,cACX,OAAO;AACL,yBAAS,CAAC;AACV,sBAAM,MACJ,iBAAiB,oBAAoB;AAAA,cACzC;AAAA,YACF,OAAO;AACL,uBAAS;AAAA,YACX;AAAA,UACF,OAAO;AACL,kBAAM,MACJ,iBAAiB,IAAI,yBAAyB,CAAC;AAAA,UACnD;AAAA,QACF;AAIA,YAAI,IAAI,eAAe,IAAI,aAAa,GAAG;AACzC,cAAI,IAAI,CAAC;AACT,mBAAS,GAAG,GAAG,GAAG,CAAC;AACnB,wBAAc;AAAA,QAChB;AAIA,YAAI,IAAI,eAAe,IAAI,eAAe,GAAG;AAC3C,cAAI,IAAI,CAAC;AACT,mBAAS,GAAG,GAAG,KAAK,CAAC;AACrB,0BAAgB;AAAA,QAClB;AAIA,YAAI,IAAI,eAAe,IAAI,QAAQ,GAAG;AACpC,cAAI,IAAI,CAAC;AACT,cAAI,OAAO,KAAK,SAAU,UAAS;AAAA,cAC9B,OAAM,MACT,iBAAiB,IAAI,qBAAqB,CAAC;AAAA,QAC/C;AAIA,YAAI,IAAI,eAAe,IAAI,UAAU,GAAG;AACtC,cAAI,IAAI,CAAC;AAIT,cAAI,OAAO,KAAK,YAAY,CAAC,wBAAwB,KAAK,CAAC,GAAG;AAC5D,6CAAiC,EAAE,MAAM,GAAG,EAAE,KAAK;AACnD,uBAAW;AAAA,UACb,OAAO;AACL,kBAAM,MACJ,iBAAiB,IAAI,eAAe,CAAC;AAAA,UACzC;AAAA,QACF;AAAA,MAEF,OAAO;AAGL,cAAM,MACJ,iBAAiB,sBAAsB,GAAG;AAAA,MAC9C;AAAA,IACF;AAEA,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA,gBAAgB,CAAC,YAAY,UAAU;AAAA,MACvC,OAAO,CAAC,SAAS,OAAO;AAAA,MACxB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAYA,EAAAA,WAAU,cAAc,SAAU,GAAG;AACnC,QAAI,CAAC,KAAK,EAAE,iBAAiB,KAAM,QAAO;AAC1C,QAAI,CAACA,WAAU,MAAO,QAAO;AAE7B,QAAI,GAAG,GACL,IAAI,EAAE,GACN,IAAI,EAAE,GACN,IAAI,EAAE;AAER,QAAK,KAAI,CAAC,EAAE,SAAS,KAAK,CAAC,KAAK,kBAAkB;AAEhD,WAAK,MAAM,KAAK,MAAM,OAAO,KAAK,CAAC,OAAO,KAAK,OAAO,MAAM,UAAU,CAAC,GAAG;AAGxE,YAAI,EAAE,CAAC,MAAM,GAAG;AACd,cAAI,MAAM,KAAK,EAAE,WAAW,EAAG,QAAO;AACtC,gBAAM;AAAA,QACR;AAGA,aAAK,IAAI,KAAK;AACd,YAAI,IAAI,EAAG,MAAK;AAIhB,YAAI,OAAO,EAAE,CAAC,CAAC,EAAE,UAAU,GAAG;AAE5B,eAAK,IAAI,GAAG,IAAI,EAAE,QAAQ,KAAK;AAC7B,gBAAI,EAAE,CAAC;AACP,gBAAI,IAAI,KAAK,KAAK,QAAQ,MAAM,UAAU,CAAC,EAAG,OAAM;AAAA,UACtD;AAGA,cAAI,MAAM,EAAG,QAAO;AAAA,QACtB;AAAA,MACF;AAAA,IAGF,WAAW,MAAM,QAAQ,MAAM,SAAS,MAAM,QAAQ,MAAM,KAAK,MAAM,KAAK;AAC1E,aAAO;AAAA,IACT;AAEA,UAAM,MACH,iBAAiB,wBAAwB,CAAC;AAAA,EAC/C;AAQA,EAAAA,WAAU,UAAUA,WAAU,MAAM,WAAY;AAC9C,WAAO,SAAS,WAAW,EAAE;AAAA,EAC/B;AAQA,EAAAA,WAAU,UAAUA,WAAU,MAAM,WAAY;AAC9C,WAAO,SAAS,WAAW,CAAC;AAAA,EAC9B;AAaA,EAAAA,WAAU,UAAU,WAAY;AAC9B,QAAI,UAAU;AAMd,QAAI,iBAAkB,KAAK,OAAO,IAAI,UAAW,UAC9C,WAAY;AAAE,aAAO,UAAU,KAAK,OAAO,IAAI,OAAO;AAAA,IAAG,IACzD,WAAY;AAAE,cAAS,KAAK,OAAO,IAAI,aAAa,KAAK,WACxD,KAAK,OAAO,IAAI,UAAW;AAAA,IAAI;AAEnC,WAAO,SAAU,IAAI;AACnB,UAAI,GAAG,GAAG,GAAG,GAAG,GACd,IAAI,GACJ,IAAI,CAAC,GACL,OAAO,IAAIA,WAAU,GAAG;AAE1B,UAAI,MAAM,KAAM,MAAK;AAAA,UAChB,UAAS,IAAI,GAAG,GAAG;AAExB,UAAI,SAAS,KAAK,QAAQ;AAE1B,UAAI,QAAQ;AAGV,YAAI,OAAO,iBAAiB;AAE1B,cAAI,OAAO,gBAAgB,IAAI,YAAY,KAAK,CAAC,CAAC;AAElD,iBAAO,IAAI,KAAI;AAQb,gBAAI,EAAE,CAAC,IAAI,UAAW,EAAE,IAAI,CAAC,MAAM;AAMnC,gBAAI,KAAK,MAAM;AACb,kBAAI,OAAO,gBAAgB,IAAI,YAAY,CAAC,CAAC;AAC7C,gBAAE,CAAC,IAAI,EAAE,CAAC;AACV,gBAAE,IAAI,CAAC,IAAI,EAAE,CAAC;AAAA,YAChB,OAAO;AAIL,gBAAE,KAAK,IAAI,IAAI;AACf,mBAAK;AAAA,YACP;AAAA,UACF;AACA,cAAI,IAAI;AAAA,QAGV,WAAW,OAAO,aAAa;AAG7B,cAAI,OAAO,YAAY,KAAK,CAAC;AAE7B,iBAAO,IAAI,KAAI;AAMb,iBAAM,EAAE,CAAC,IAAI,MAAM,kBAAoB,EAAE,IAAI,CAAC,IAAI,gBAC9C,EAAE,IAAI,CAAC,IAAI,aAAgB,EAAE,IAAI,CAAC,IAAI,YACtC,EAAE,IAAI,CAAC,KAAK,OAAO,EAAE,IAAI,CAAC,KAAK,KAAK,EAAE,IAAI,CAAC;AAE/C,gBAAI,KAAK,MAAM;AACb,qBAAO,YAAY,CAAC,EAAE,KAAK,GAAG,CAAC;AAAA,YACjC,OAAO;AAGL,gBAAE,KAAK,IAAI,IAAI;AACf,mBAAK;AAAA,YACP;AAAA,UACF;AACA,cAAI,IAAI;AAAA,QACV,OAAO;AACL,mBAAS;AACT,gBAAM,MACJ,iBAAiB,oBAAoB;AAAA,QACzC;AAAA,MACF;AAGA,UAAI,CAAC,QAAQ;AAEX,eAAO,IAAI,KAAI;AACb,cAAI,eAAe;AACnB,cAAI,IAAI,KAAM,GAAE,GAAG,IAAI,IAAI;AAAA,QAC7B;AAAA,MACF;AAEA,UAAI,EAAE,EAAE,CAAC;AACT,YAAM;AAGN,UAAI,KAAK,IAAI;AACX,YAAI,SAAS,WAAW,EAAE;AAC1B,UAAE,CAAC,IAAI,UAAU,IAAI,CAAC,IAAI;AAAA,MAC5B;AAGA,aAAO,EAAE,CAAC,MAAM,GAAG,EAAE,IAAI,GAAG,IAAI;AAGhC,UAAI,IAAI,GAAG;AACT,YAAI,CAAC,IAAI,CAAC;AAAA,MACZ,OAAO;AAGL,aAAK,IAAI,IAAK,EAAE,CAAC,MAAM,GAAG,EAAE,OAAO,GAAG,CAAC,GAAG,KAAK,SAAS;AAGxD,aAAK,IAAI,GAAG,IAAI,EAAE,CAAC,GAAG,KAAK,IAAI,KAAK,IAAI,IAAI;AAG5C,YAAI,IAAI,SAAU,MAAK,WAAW;AAAA,MACpC;AAEA,WAAK,IAAI;AACT,WAAK,IAAI;AACT,aAAO;AAAA,IACT;AAAA,EACF,GAAG;AAQH,EAAAA,WAAU,MAAM,WAAY;AAC1B,QAAI,IAAI,GACN,OAAO,WACP,MAAM,IAAIA,WAAU,KAAK,CAAC,CAAC;AAC7B,WAAO,IAAI,KAAK,SAAS,OAAM,IAAI,KAAK,KAAK,GAAG,CAAC;AACjD,WAAO;AAAA,EACT;AAOA,gBAAe,4BAAY;AACzB,QAAI,UAAU;AAOd,aAAS,UAAU,KAAK,QAAQ,SAAS,UAAU;AACjD,UAAI,GACF,MAAM,CAAC,CAAC,GACR,MACA,IAAI,GACJ,MAAM,IAAI;AAEZ,aAAO,IAAI,OAAM;AACf,aAAK,OAAO,IAAI,QAAQ,QAAQ,IAAI,IAAI,KAAK,OAAO;AAEpD,YAAI,CAAC,KAAK,SAAS,QAAQ,IAAI,OAAO,GAAG,CAAC;AAE1C,aAAK,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK;AAE/B,cAAI,IAAI,CAAC,IAAI,UAAU,GAAG;AACxB,gBAAI,IAAI,IAAI,CAAC,KAAK,KAAM,KAAI,IAAI,CAAC,IAAI;AACrC,gBAAI,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,UAAU;AACjC,gBAAI,CAAC,KAAK;AAAA,UACZ;AAAA,QACF;AAAA,MACF;AAEA,aAAO,IAAI,QAAQ;AAAA,IACrB;AAKA,WAAO,SAAU,KAAK,QAAQ,SAAS,MAAM,kBAAkB;AAC7D,UAAI,UAAU,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAC/B,IAAI,IAAI,QAAQ,GAAG,GACnB,KAAK,gBACL,KAAK;AAGP,UAAI,KAAK,GAAG;AACV,YAAI;AAGJ,wBAAgB;AAChB,cAAM,IAAI,QAAQ,KAAK,EAAE;AACzB,YAAI,IAAIA,WAAU,MAAM;AACxB,YAAI,EAAE,IAAI,IAAI,SAAS,CAAC;AACxB,wBAAgB;AAKhB,UAAE,IAAI;AAAA,UAAU,aAAa,cAAc,EAAE,CAAC,GAAG,EAAE,GAAG,GAAG;AAAA,UACxD;AAAA,UAAI;AAAA,UAAS;AAAA,QAAO;AACrB,UAAE,IAAI,EAAE,EAAE;AAAA,MACZ;AAIA,WAAK,UAAU,KAAK,QAAQ,SAAS,oBACjC,WAAW,UAAU,YACrB,WAAW,SAAS,SAAS;AAGjC,UAAI,IAAI,GAAG;AAGX,aAAO,GAAG,EAAE,CAAC,KAAK,GAAG,GAAG,IAAI,EAAE;AAG9B,UAAI,CAAC,GAAG,CAAC,EAAG,QAAO,SAAS,OAAO,CAAC;AAGpC,UAAI,IAAI,GAAG;AACT,UAAE;AAAA,MACJ,OAAO;AACL,UAAE,IAAI;AACN,UAAE,IAAI;AAGN,UAAE,IAAI;AACN,YAAI,IAAI,GAAG,GAAG,IAAI,IAAI,OAAO;AAC7B,aAAK,EAAE;AACP,YAAI,EAAE;AACN,YAAI,EAAE;AAAA,MACR;AAKA,UAAI,IAAI,KAAK;AAGb,UAAI,GAAG,CAAC;AAIR,UAAI,UAAU;AACd,UAAI,KAAK,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK;AAE/B,UAAI,KAAK,KAAK,KAAK,QAAQ,OAAO,MAAM,KAAK,OAAO,EAAE,IAAI,IAAI,IAAI,MAC1D,IAAI,KAAK,KAAK,MAAK,MAAM,KAAK,KAAK,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,KAC3D,OAAO,EAAE,IAAI,IAAI,IAAI;AAK5B,UAAI,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG;AAGnB,cAAM,IAAI,aAAa,SAAS,OAAO,CAAC,GAAG,CAAC,IAAI,SAAS,OAAO,CAAC,CAAC,IAAI,SAAS,OAAO,CAAC;AAAA,MACzF,OAAO;AAGL,WAAG,SAAS;AAGZ,YAAI,GAAG;AAGL,eAAK,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,WAAU;AACpC,eAAG,CAAC,IAAI;AAER,gBAAI,CAAC,GAAG;AACN,gBAAE;AACF,mBAAK,CAAC,CAAC,EAAE,OAAO,EAAE;AAAA,YACpB;AAAA,UACF;AAAA,QACF;AAGA,aAAK,IAAI,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAG;AAG9B,aAAK,IAAI,GAAG,MAAM,IAAI,KAAK,GAAG,OAAO,SAAS,OAAO,GAAG,GAAG,CAAC,EAAE;AAG9D,cAAM,aAAa,KAAK,GAAG,SAAS,OAAO,CAAC,CAAC;AAAA,MAC/C;AAGA,aAAO;AAAA,IACT;AAAA,EACF,GAAG;AAIH,QAAO,4BAAY;AAGjB,aAAS,SAAS,GAAG,GAAG,MAAM;AAC5B,UAAI,GAAG,MAAM,KAAK,KAChB,QAAQ,GACR,IAAI,EAAE,QACN,MAAM,IAAI,WACV,MAAM,IAAI,YAAY;AAExB,WAAK,IAAI,EAAE,MAAM,GAAG,OAAM;AACxB,cAAM,EAAE,CAAC,IAAI;AACb,cAAM,EAAE,CAAC,IAAI,YAAY;AACzB,YAAI,MAAM,MAAM,MAAM;AACtB,eAAO,MAAM,MAAQ,IAAI,YAAa,YAAa;AACnD,iBAAS,OAAO,OAAO,MAAM,IAAI,YAAY,KAAK,MAAM;AACxD,UAAE,CAAC,IAAI,OAAO;AAAA,MAChB;AAEA,UAAI,MAAO,KAAI,CAAC,KAAK,EAAE,OAAO,CAAC;AAE/B,aAAO;AAAA,IACT;AAEA,aAASC,SAAQ,GAAG,GAAG,IAAI,IAAI;AAC7B,UAAI,GAAG;AAEP,UAAI,MAAM,IAAI;AACZ,cAAM,KAAK,KAAK,IAAI;AAAA,MACtB,OAAO;AAEL,aAAK,IAAI,MAAM,GAAG,IAAI,IAAI,KAAK;AAE7B,cAAI,EAAE,CAAC,KAAK,EAAE,CAAC,GAAG;AAChB,kBAAM,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,IAAI;AACxB;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAEA,aAAO;AAAA,IACT;AAEA,aAAS,SAAS,GAAG,GAAG,IAAI,MAAM;AAChC,UAAI,IAAI;AAGR,aAAO,QAAO;AACZ,UAAE,EAAE,KAAK;AACT,YAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI;AACxB,UAAE,EAAE,IAAI,IAAI,OAAO,EAAE,EAAE,IAAI,EAAE,EAAE;AAAA,MACjC;AAGA,aAAO,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,GAAG,EAAE,OAAO,GAAG,CAAC,EAAE;AAAA,IAC/C;AAGA,WAAO,SAAU,GAAG,GAAG,IAAI,IAAI,MAAM;AACnC,UAAI,KAAK,GAAG,GAAG,MAAM,GAAG,MAAM,OAAO,GAAG,IAAI,KAAK,MAAM,MAAM,IAAI,IAAI,KACnE,IAAI,IACJ,IAAI,EAAE,KAAK,EAAE,IAAI,IAAI,IACrB,KAAK,EAAE,GACP,KAAK,EAAE;AAGT,UAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG;AAElC,eAAO,IAAID;AAAA;AAAA,UAGV,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,MAAM,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,MAAM;AAAA;AAAA,YAGnD,MAAM,GAAG,CAAC,KAAK,KAAK,CAAC,KAAK,IAAI,IAAI,IAAI;AAAA;AAAA,QACzC;AAAA,MACD;AAEA,UAAI,IAAIA,WAAU,CAAC;AACnB,WAAK,EAAE,IAAI,CAAC;AACZ,UAAI,EAAE,IAAI,EAAE;AACZ,UAAI,KAAK,IAAI;AAEb,UAAI,CAAC,MAAM;AACT,eAAO;AACP,YAAI,SAAS,EAAE,IAAI,QAAQ,IAAI,SAAS,EAAE,IAAI,QAAQ;AACtD,YAAI,IAAI,WAAW;AAAA,MACrB;AAIA,WAAK,IAAI,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,KAAK,IAAI,IAAI;AAEvC,UAAI,GAAG,CAAC,KAAK,GAAG,CAAC,KAAK,GAAI;AAE1B,UAAI,IAAI,GAAG;AACT,WAAG,KAAK,CAAC;AACT,eAAO;AAAA,MACT,OAAO;AACL,aAAK,GAAG;AACR,aAAK,GAAG;AACR,YAAI;AACJ,aAAK;AAIL,YAAI,UAAU,QAAQ,GAAG,CAAC,IAAI,EAAE;AAIhC,YAAI,IAAI,GAAG;AACT,eAAK,SAAS,IAAI,GAAG,IAAI;AACzB,eAAK,SAAS,IAAI,GAAG,IAAI;AACzB,eAAK,GAAG;AACR,eAAK,GAAG;AAAA,QACV;AAEA,aAAK;AACL,cAAM,GAAG,MAAM,GAAG,EAAE;AACpB,eAAO,IAAI;AAGX,eAAO,OAAO,IAAI,IAAI,MAAM,IAAI,EAAE;AAClC,aAAK,GAAG,MAAM;AACd,aAAK,CAAC,CAAC,EAAE,OAAO,EAAE;AAClB,cAAM,GAAG,CAAC;AACV,YAAI,GAAG,CAAC,KAAK,OAAO,EAAG;AAIvB,WAAG;AACD,cAAI;AAGJ,gBAAMC,SAAQ,IAAI,KAAK,IAAI,IAAI;AAG/B,cAAI,MAAM,GAAG;AAIX,mBAAO,IAAI,CAAC;AACZ,gBAAI,MAAM,KAAM,QAAO,OAAO,QAAQ,IAAI,CAAC,KAAK;AAGhD,gBAAI,UAAU,OAAO,GAAG;AAaxB,gBAAI,IAAI,GAAG;AAGT,kBAAI,KAAK,KAAM,KAAI,OAAO;AAG1B,qBAAO,SAAS,IAAI,GAAG,IAAI;AAC3B,sBAAQ,KAAK;AACb,qBAAO,IAAI;AAMX,qBAAOA,SAAQ,MAAM,KAAK,OAAO,IAAI,KAAK,GAAG;AAC3C;AAGA,yBAAS,MAAM,KAAK,QAAQ,KAAK,IAAI,OAAO,IAAI;AAChD,wBAAQ,KAAK;AACb,sBAAM;AAAA,cACR;AAAA,YACF,OAAO;AAML,kBAAI,KAAK,GAAG;AAGV,sBAAM,IAAI;AAAA,cACZ;AAGA,qBAAO,GAAG,MAAM;AAChB,sBAAQ,KAAK;AAAA,YACf;AAEA,gBAAI,QAAQ,KAAM,QAAO,CAAC,CAAC,EAAE,OAAO,IAAI;AAGxC,qBAAS,KAAK,MAAM,MAAM,IAAI;AAC9B,mBAAO,IAAI;AAGX,gBAAI,OAAO,IAAI;AAMb,qBAAOA,SAAQ,IAAI,KAAK,IAAI,IAAI,IAAI,GAAG;AACrC;AAGA,yBAAS,KAAK,KAAK,OAAO,KAAK,IAAI,MAAM,IAAI;AAC7C,uBAAO,IAAI;AAAA,cACb;AAAA,YACF;AAAA,UACF,WAAW,QAAQ,GAAG;AACpB;AACA,kBAAM,CAAC,CAAC;AAAA,UACV;AAGA,aAAG,GAAG,IAAI;AAGV,cAAI,IAAI,CAAC,GAAG;AACV,gBAAI,MAAM,IAAI,GAAG,EAAE,KAAK;AAAA,UAC1B,OAAO;AACL,kBAAM,CAAC,GAAG,EAAE,CAAC;AACb,mBAAO;AAAA,UACT;AAAA,QACF,UAAU,OAAO,MAAM,IAAI,CAAC,KAAK,SAAS;AAE1C,eAAO,IAAI,CAAC,KAAK;AAGjB,YAAI,CAAC,GAAG,CAAC,EAAG,IAAG,OAAO,GAAG,CAAC;AAAA,MAC5B;AAEA,UAAI,QAAQ,MAAM;AAGhB,aAAK,IAAI,GAAG,IAAI,GAAG,CAAC,GAAG,KAAK,IAAI,KAAK,IAAI,IAAI;AAE7C,cAAM,GAAG,MAAM,EAAE,IAAI,IAAI,IAAI,WAAW,KAAK,GAAG,IAAI,IAAI;AAAA,MAG1D,OAAO;AACL,UAAE,IAAI;AACN,UAAE,IAAI,CAAC;AAAA,MACT;AAEA,aAAO;AAAA,IACT;AAAA,EACF,GAAG;AAYH,WAAS,OAAO,GAAG,GAAG,IAAI,IAAI;AAC5B,QAAI,IAAI,GAAG,IAAI,KAAK;AAEpB,QAAI,MAAM,KAAM,MAAK;AAAA,QAChB,UAAS,IAAI,GAAG,CAAC;AAEtB,QAAI,CAAC,EAAE,EAAG,QAAO,EAAE,SAAS;AAE5B,SAAK,EAAE,EAAE,CAAC;AACV,SAAK,EAAE;AAEP,QAAI,KAAK,MAAM;AACb,YAAM,cAAc,EAAE,CAAC;AACvB,YAAM,MAAM,KAAK,MAAM,MAAM,MAAM,cAAc,MAAM,cACpD,cAAc,KAAK,EAAE,IACrB,aAAa,KAAK,IAAI,GAAG;AAAA,IAC9B,OAAO;AACL,UAAI,MAAM,IAAID,WAAU,CAAC,GAAG,GAAG,EAAE;AAGjC,UAAI,EAAE;AAEN,YAAM,cAAc,EAAE,CAAC;AACvB,YAAM,IAAI;AAOV,UAAI,MAAM,KAAK,MAAM,MAAM,KAAK,KAAK,KAAK,aAAa;AAGrD,eAAO,MAAM,GAAG,OAAO,KAAK,MAAM;AAClC,cAAM,cAAc,KAAK,CAAC;AAAA,MAG5B,OAAO;AACL,aAAK,MAAM,OAAO,KAAK,IAAI;AAC3B,cAAM,aAAa,KAAK,GAAG,GAAG;AAG9B,YAAI,IAAI,IAAI,KAAK;AACf,cAAI,EAAE,IAAI,EAAG,MAAK,OAAO,KAAK,KAAK,OAAO,IAAI;AAAA,QAChD,OAAO;AACL,eAAK,IAAI;AACT,cAAI,IAAI,GAAG;AACT,gBAAI,IAAI,KAAK,IAAK,QAAO;AACzB,mBAAO,KAAK,OAAO,IAAI;AAAA,UACzB;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAEA,WAAO,EAAE,IAAI,KAAK,KAAK,MAAM,MAAM;AAAA,EACrC;AAKA,WAAS,SAAS,MAAM,GAAG;AACzB,QAAI,GAAG,GACL,IAAI,GACJ,IAAI,IAAIA,WAAU,KAAK,CAAC,CAAC;AAE3B,WAAO,IAAI,KAAK,QAAQ,KAAK;AAC3B,UAAI,IAAIA,WAAU,KAAK,CAAC,CAAC;AACzB,UAAI,CAAC,EAAE,MAAM,IAAI,QAAQ,GAAG,CAAC,OAAO,KAAK,MAAM,KAAK,EAAE,MAAM,GAAG;AAC7D,YAAI;AAAA,MACN;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAOA,WAAS,UAAU,GAAG,GAAG,GAAG;AAC1B,QAAI,IAAI,GACN,IAAI,EAAE;AAGR,WAAO,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE;AAGxB,SAAK,IAAI,EAAE,CAAC,GAAG,KAAK,IAAI,KAAK,IAAI,IAAI;AAGrC,SAAK,IAAI,IAAI,IAAI,WAAW,KAAK,SAAS;AAGxC,QAAE,IAAI,EAAE,IAAI;AAAA,IAGd,WAAW,IAAI,SAAS;AAGtB,QAAE,IAAI,CAAC,EAAE,IAAI,CAAC;AAAA,IAChB,OAAO;AACL,QAAE,IAAI;AACN,QAAE,IAAI;AAAA,IACR;AAEA,WAAO;AAAA,EACT;AAIA,iBAAgB,4BAAY;AAC1B,QAAI,aAAa,+BACf,WAAW,eACX,YAAY,eACZ,kBAAkB,sBAClB,mBAAmB;AAErB,WAAO,SAAU,GAAG,KAAK,OAAO,GAAG;AACjC,UAAI,MACF,IAAI,QAAQ,MAAM,IAAI,QAAQ,kBAAkB,EAAE;AAGpD,UAAI,gBAAgB,KAAK,CAAC,GAAG;AAC3B,UAAE,IAAI,MAAM,CAAC,IAAI,OAAO,IAAI,IAAI,KAAK;AAAA,MACvC,OAAO;AACL,YAAI,CAAC,OAAO;AAGV,cAAI,EAAE,QAAQ,YAAY,SAAU,GAAG,IAAI,IAAI;AAC7C,oBAAQ,KAAK,GAAG,YAAY,MAAM,MAAM,KAAK,MAAM,MAAM,IAAI;AAC7D,mBAAO,CAAC,KAAK,KAAK,OAAO,KAAK;AAAA,UAChC,CAAC;AAED,cAAI,GAAG;AACL,mBAAO;AAGP,gBAAI,EAAE,QAAQ,UAAU,IAAI,EAAE,QAAQ,WAAW,MAAM;AAAA,UACzD;AAEA,cAAI,OAAO,EAAG,QAAO,IAAIA,WAAU,GAAG,IAAI;AAAA,QAC5C;AAIA,YAAIA,WAAU,OAAO;AACnB,gBAAM,MACH,iBAAiB,WAAW,IAAI,WAAW,IAAI,MAAM,cAAc,GAAG;AAAA,QAC3E;AAGA,UAAE,IAAI;AAAA,MACR;AAEA,QAAE,IAAI,EAAE,IAAI;AAAA,IACd;AAAA,EACF,GAAG;AAOH,WAAS,MAAM,GAAG,IAAI,IAAI,GAAG;AAC3B,QAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IACrB,KAAK,EAAE,GACP,SAAS;AAGX,QAAI,IAAI;AAQN,WAAK;AAGH,aAAK,IAAI,GAAG,IAAI,GAAG,CAAC,GAAG,KAAK,IAAI,KAAK,IAAI,IAAI;AAC7C,YAAI,KAAK;AAGT,YAAI,IAAI,GAAG;AACT,eAAK;AACL,cAAI;AACJ,cAAI,GAAG,KAAK,CAAC;AAGb,eAAK,UAAU,IAAI,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE;AAAA,QAC3C,OAAO;AACL,eAAK,UAAU,IAAI,KAAK,QAAQ;AAEhC,cAAI,MAAM,GAAG,QAAQ;AAEnB,gBAAI,GAAG;AAGL,qBAAO,GAAG,UAAU,IAAI,GAAG,KAAK,CAAC,EAAE;AACnC,kBAAI,KAAK;AACT,kBAAI;AACJ,mBAAK;AACL,kBAAI,IAAI,WAAW;AAAA,YACrB,OAAO;AACL,oBAAM;AAAA,YACR;AAAA,UACF,OAAO;AACL,gBAAI,IAAI,GAAG,EAAE;AAGb,iBAAK,IAAI,GAAG,KAAK,IAAI,KAAK,IAAI,IAAI;AAGlC,iBAAK;AAIL,gBAAI,IAAI,WAAW;AAGnB,iBAAK,IAAI,IAAI,IAAI,UAAU,IAAI,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE;AAAA,UACvD;AAAA,QACF;AAEA,YAAI,KAAK,KAAK;AAAA;AAAA;AAAA,QAKb,GAAG,KAAK,CAAC,KAAK,SAAS,IAAI,IAAI,IAAI,IAAI,OAAO,IAAI,IAAI,CAAC;AAExD,YAAI,KAAK,KACL,MAAM,OAAO,MAAM,KAAK,OAAO,EAAE,IAAI,IAAI,IAAI,MAC9C,KAAK,KAAK,MAAM,MAAM,MAAM,KAAK,KAAK,MAAM;AAAA,SAG3C,IAAI,IAAI,IAAI,IAAI,IAAI,OAAO,IAAI,CAAC,IAAI,IAAI,GAAG,KAAK,CAAC,KAAK,KAAM,KAC7D,OAAO,EAAE,IAAI,IAAI,IAAI;AAExB,YAAI,KAAK,KAAK,CAAC,GAAG,CAAC,GAAG;AACpB,aAAG,SAAS;AAEZ,cAAI,GAAG;AAGL,kBAAM,EAAE,IAAI;AAGZ,eAAG,CAAC,IAAI,QAAQ,WAAW,KAAK,YAAY,QAAQ;AACpD,cAAE,IAAI,CAAC,MAAM;AAAA,UACf,OAAO;AAGL,eAAG,CAAC,IAAI,EAAE,IAAI;AAAA,UAChB;AAEA,iBAAO;AAAA,QACT;AAGA,YAAI,KAAK,GAAG;AACV,aAAG,SAAS;AACZ,cAAI;AACJ;AAAA,QACF,OAAO;AACL,aAAG,SAAS,KAAK;AACjB,cAAI,OAAO,WAAW,CAAC;AAIvB,aAAG,EAAE,IAAI,IAAI,IAAI,UAAU,IAAI,OAAO,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC,IAAI,IAAI;AAAA,QAClE;AAGA,YAAI,GAAG;AAEL,qBAAU;AAGR,gBAAI,MAAM,GAAG;AAGX,mBAAK,IAAI,GAAG,IAAI,GAAG,CAAC,GAAG,KAAK,IAAI,KAAK,IAAI,IAAI;AAC7C,kBAAI,GAAG,CAAC,KAAK;AACb,mBAAK,IAAI,GAAG,KAAK,IAAI,KAAK,IAAI,IAAI;AAGlC,kBAAI,KAAK,GAAG;AACV,kBAAE;AACF,oBAAI,GAAG,CAAC,KAAK,KAAM,IAAG,CAAC,IAAI;AAAA,cAC7B;AAEA;AAAA,YACF,OAAO;AACL,iBAAG,EAAE,KAAK;AACV,kBAAI,GAAG,EAAE,KAAK,KAAM;AACpB,iBAAG,IAAI,IAAI;AACX,kBAAI;AAAA,YACN;AAAA,UACF;AAAA,QACF;AAGA,aAAK,IAAI,GAAG,QAAQ,GAAG,EAAE,CAAC,MAAM,GAAG,GAAG,IAAI,EAAE;AAAA,MAC9C;AAGA,UAAI,EAAE,IAAI,SAAS;AACjB,UAAE,IAAI,EAAE,IAAI;AAAA,MAGd,WAAW,EAAE,IAAI,SAAS;AACxB,UAAE,IAAI,CAAC,EAAE,IAAI,CAAC;AAAA,MAChB;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAGA,WAAS,QAAQ,GAAG;AAClB,QAAI,KACF,IAAI,EAAE;AAER,QAAI,MAAM,KAAM,QAAO,EAAE,SAAS;AAElC,UAAM,cAAc,EAAE,CAAC;AAEvB,UAAM,KAAK,cAAc,KAAK,aAC1B,cAAc,KAAK,CAAC,IACpB,aAAa,KAAK,GAAG,GAAG;AAE5B,WAAO,EAAE,IAAI,IAAI,MAAM,MAAM;AAAA,EAC/B;AASA,IAAE,gBAAgB,EAAE,MAAM,WAAY;AACpC,QAAI,IAAI,IAAIA,WAAU,IAAI;AAC1B,QAAI,EAAE,IAAI,EAAG,GAAE,IAAI;AACnB,WAAO;AAAA,EACT;AAUA,IAAE,aAAa,SAAU,GAAG,GAAG;AAC7B,WAAO,QAAQ,MAAM,IAAIA,WAAU,GAAG,CAAC,CAAC;AAAA,EAC1C;AAgBA,IAAE,gBAAgB,EAAE,KAAK,SAAU,IAAI,IAAI;AACzC,QAAI,GAAG,GAAG,GACR,IAAI;AAEN,QAAI,MAAM,MAAM;AACd,eAAS,IAAI,GAAG,GAAG;AACnB,UAAI,MAAM,KAAM,MAAK;AAAA,UAChB,UAAS,IAAI,GAAG,CAAC;AAEtB,aAAO,MAAM,IAAIA,WAAU,CAAC,GAAG,KAAK,EAAE,IAAI,GAAG,EAAE;AAAA,IACjD;AAEA,QAAI,EAAE,IAAI,EAAE,GAAI,QAAO;AACvB,UAAM,IAAI,EAAE,SAAS,KAAK,SAAS,KAAK,IAAI,QAAQ,KAAK;AAGzD,QAAI,IAAI,EAAE,CAAC,EAAG,QAAO,IAAI,MAAM,GAAG,KAAK,IAAI,IAAI;AAC/C,QAAI,IAAI,EAAG,KAAI;AAEf,WAAO;AAAA,EACT;AAuBA,IAAE,YAAY,EAAE,MAAM,SAAU,GAAG,GAAG;AACpC,WAAO,IAAI,MAAM,IAAIA,WAAU,GAAG,CAAC,GAAG,gBAAgB,aAAa;AAAA,EACrE;AAOA,IAAE,qBAAqB,EAAE,OAAO,SAAU,GAAG,GAAG;AAC9C,WAAO,IAAI,MAAM,IAAIA,WAAU,GAAG,CAAC,GAAG,GAAG,CAAC;AAAA,EAC5C;AAkBA,IAAE,kBAAkB,EAAE,MAAM,SAAU,GAAG,GAAG;AAC1C,QAAI,MAAM,UAAU,GAAG,GAAG,MAAM,QAAQ,QAAQ,QAAQ,GACtD,IAAI;AAEN,QAAI,IAAIA,WAAU,CAAC;AAGnB,QAAI,EAAE,KAAK,CAAC,EAAE,UAAU,GAAG;AACzB,YAAM,MACH,iBAAiB,8BAA8B,QAAQ,CAAC,CAAC;AAAA,IAC9D;AAEA,QAAI,KAAK,KAAM,KAAI,IAAIA,WAAU,CAAC;AAGlC,aAAS,EAAE,IAAI;AAGf,QAAI,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE,UAAU,KAAK,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG;AAIhF,UAAI,IAAIA,WAAU,KAAK,IAAI,CAAC,QAAQ,CAAC,GAAG,SAAS,EAAE,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;AACpF,aAAO,IAAI,EAAE,IAAI,CAAC,IAAI;AAAA,IACxB;AAEA,aAAS,EAAE,IAAI;AAEf,QAAI,GAAG;AAGL,UAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,EAAG,QAAO,IAAIA,WAAU,GAAG;AAElD,iBAAW,CAAC,UAAU,EAAE,UAAU,KAAK,EAAE,UAAU;AAEnD,UAAI,SAAU,KAAI,EAAE,IAAI,CAAC;AAAA,IAI3B,WAAW,EAAE,IAAI,MAAM,EAAE,IAAI,KAAK,EAAE,IAAI,OAAO,EAAE,KAAK,IAElD,EAAE,EAAE,CAAC,IAAI,KAAK,UAAU,EAAE,EAAE,CAAC,KAAK,OAElC,EAAE,EAAE,CAAC,IAAI,QAAQ,UAAU,EAAE,EAAE,CAAC,KAAK,aAAa;AAGpD,UAAI,EAAE,IAAI,KAAK,MAAM,CAAC,IAAI,KAAK;AAG/B,UAAI,EAAE,IAAI,GAAI,KAAI,IAAI;AAGtB,aAAO,IAAIA,WAAU,SAAS,IAAI,IAAI,CAAC;AAAA,IAEzC,WAAW,eAAe;AAKxB,UAAI,SAAS,gBAAgB,WAAW,CAAC;AAAA,IAC3C;AAEA,QAAI,QAAQ;AACV,aAAO,IAAIA,WAAU,GAAG;AACxB,UAAI,OAAQ,GAAE,IAAI;AAClB,eAAS,MAAM,CAAC;AAAA,IAClB,OAAO;AACL,UAAI,KAAK,IAAI,CAAC,QAAQ,CAAC,CAAC;AACxB,eAAS,IAAI;AAAA,IACf;AAEA,QAAI,IAAIA,WAAU,GAAG;AAGrB,eAAU;AAER,UAAI,QAAQ;AACV,YAAI,EAAE,MAAM,CAAC;AACb,YAAI,CAAC,EAAE,EAAG;AAEV,YAAI,GAAG;AACL,cAAI,EAAE,EAAE,SAAS,EAAG,GAAE,EAAE,SAAS;AAAA,QACnC,WAAW,UAAU;AACnB,cAAI,EAAE,IAAI,CAAC;AAAA,QACb;AAAA,MACF;AAEA,UAAI,GAAG;AACL,YAAI,UAAU,IAAI,CAAC;AACnB,YAAI,MAAM,EAAG;AACb,iBAAS,IAAI;AAAA,MACf,OAAO;AACL,YAAI,EAAE,MAAM,IAAI;AAChB,cAAM,GAAG,EAAE,IAAI,GAAG,CAAC;AAEnB,YAAI,EAAE,IAAI,IAAI;AACZ,mBAAS,MAAM,CAAC;AAAA,QAClB,OAAO;AACL,cAAI,CAAC,QAAQ,CAAC;AACd,cAAI,MAAM,EAAG;AACb,mBAAS,IAAI;AAAA,QACf;AAAA,MACF;AAEA,UAAI,EAAE,MAAM,CAAC;AAEb,UAAI,GAAG;AACL,YAAI,EAAE,KAAK,EAAE,EAAE,SAAS,EAAG,GAAE,EAAE,SAAS;AAAA,MAC1C,WAAW,UAAU;AACnB,YAAI,EAAE,IAAI,CAAC;AAAA,MACb;AAAA,IACF;AAEA,QAAI,SAAU,QAAO;AACrB,QAAI,OAAQ,KAAI,IAAI,IAAI,CAAC;AAEzB,WAAO,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,MAAM,GAAG,eAAe,eAAe,IAAI,IAAI;AAAA,EAC3E;AAWA,IAAE,eAAe,SAAU,IAAI;AAC7B,QAAI,IAAI,IAAIA,WAAU,IAAI;AAC1B,QAAI,MAAM,KAAM,MAAK;AAAA,QAChB,UAAS,IAAI,GAAG,CAAC;AACtB,WAAO,MAAM,GAAG,EAAE,IAAI,GAAG,EAAE;AAAA,EAC7B;AAOA,IAAE,YAAY,EAAE,KAAK,SAAU,GAAG,GAAG;AACnC,WAAO,QAAQ,MAAM,IAAIA,WAAU,GAAG,CAAC,CAAC,MAAM;AAAA,EAChD;AAMA,IAAE,WAAW,WAAY;AACvB,WAAO,CAAC,CAAC,KAAK;AAAA,EAChB;AAOA,IAAE,gBAAgB,EAAE,KAAK,SAAU,GAAG,GAAG;AACvC,WAAO,QAAQ,MAAM,IAAIA,WAAU,GAAG,CAAC,CAAC,IAAI;AAAA,EAC9C;AAOA,IAAE,yBAAyB,EAAE,MAAM,SAAU,GAAG,GAAG;AACjD,YAAQ,IAAI,QAAQ,MAAM,IAAIA,WAAU,GAAG,CAAC,CAAC,OAAO,KAAK,MAAM;AAAA,EAEjE;AAMA,IAAE,YAAY,WAAY;AACxB,WAAO,CAAC,CAAC,KAAK,KAAK,SAAS,KAAK,IAAI,QAAQ,IAAI,KAAK,EAAE,SAAS;AAAA,EACnE;AAOA,IAAE,aAAa,EAAE,KAAK,SAAU,GAAG,GAAG;AACpC,WAAO,QAAQ,MAAM,IAAIA,WAAU,GAAG,CAAC,CAAC,IAAI;AAAA,EAC9C;AAOA,IAAE,sBAAsB,EAAE,MAAM,SAAU,GAAG,GAAG;AAC9C,YAAQ,IAAI,QAAQ,MAAM,IAAIA,WAAU,GAAG,CAAC,CAAC,OAAO,MAAM,MAAM;AAAA,EAClE;AAMA,IAAE,QAAQ,WAAY;AACpB,WAAO,CAAC,KAAK;AAAA,EACf;AAMA,IAAE,aAAa,WAAY;AACzB,WAAO,KAAK,IAAI;AAAA,EAClB;AAMA,IAAE,aAAa,WAAY;AACzB,WAAO,KAAK,IAAI;AAAA,EAClB;AAMA,IAAE,SAAS,WAAY;AACrB,WAAO,CAAC,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC,KAAK;AAAA,EAClC;AAuBA,IAAE,QAAQ,SAAU,GAAG,GAAG;AACxB,QAAI,GAAG,GAAG,GAAG,MACX,IAAI,MACJ,IAAI,EAAE;AAER,QAAI,IAAIA,WAAU,GAAG,CAAC;AACtB,QAAI,EAAE;AAGN,QAAI,CAAC,KAAK,CAAC,EAAG,QAAO,IAAIA,WAAU,GAAG;AAGtC,QAAI,KAAK,GAAG;AACV,QAAE,IAAI,CAAC;AACP,aAAO,EAAE,KAAK,CAAC;AAAA,IACjB;AAEA,QAAI,KAAK,EAAE,IAAI,UACb,KAAK,EAAE,IAAI,UACX,KAAK,EAAE,GACP,KAAK,EAAE;AAET,QAAI,CAAC,MAAM,CAAC,IAAI;AAGd,UAAI,CAAC,MAAM,CAAC,GAAI,QAAO,MAAM,EAAE,IAAI,CAAC,GAAG,KAAK,IAAIA,WAAU,KAAK,IAAI,GAAG;AAGtE,UAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG;AAGpB,eAAO,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,KAAK,IAAIA,WAAU,GAAG,CAAC,IAAI;AAAA;AAAA,UAGpD,iBAAiB,IAAI,KAAK;AAAA,SAAC;AAAA,MAC9B;AAAA,IACF;AAEA,SAAK,SAAS,EAAE;AAChB,SAAK,SAAS,EAAE;AAChB,SAAK,GAAG,MAAM;AAGd,QAAI,IAAI,KAAK,IAAI;AAEf,UAAI,OAAO,IAAI,GAAG;AAChB,YAAI,CAAC;AACL,YAAI;AAAA,MACN,OAAO;AACL,aAAK;AACL,YAAI;AAAA,MACN;AAEA,QAAE,QAAQ;AAGV,WAAK,IAAI,GAAG,KAAK,EAAE,KAAK,CAAC,EAAE;AAC3B,QAAE,QAAQ;AAAA,IACZ,OAAO;AAGL,WAAK,QAAQ,IAAI,GAAG,WAAW,IAAI,GAAG,WAAW,IAAI;AAErD,WAAK,IAAI,IAAI,GAAG,IAAI,GAAG,KAAK;AAE1B,YAAI,GAAG,CAAC,KAAK,GAAG,CAAC,GAAG;AAClB,iBAAO,GAAG,CAAC,IAAI,GAAG,CAAC;AACnB;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAGA,QAAI,MAAM;AACR,UAAI;AACJ,WAAK;AACL,WAAK;AACL,QAAE,IAAI,CAAC,EAAE;AAAA,IACX;AAEA,SAAK,IAAI,GAAG,WAAW,IAAI,GAAG;AAI9B,QAAI,IAAI,EAAG,QAAO,KAAK,GAAG,GAAG,IAAI,EAAE;AACnC,QAAI,OAAO;AAGX,WAAO,IAAI,KAAI;AAEb,UAAI,GAAG,EAAE,CAAC,IAAI,GAAG,CAAC,GAAG;AACnB,aAAK,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE;AACrC,UAAE,GAAG,CAAC;AACN,WAAG,CAAC,KAAK;AAAA,MACX;AAEA,SAAG,CAAC,KAAK,GAAG,CAAC;AAAA,IACf;AAGA,WAAO,GAAG,CAAC,KAAK,GAAG,GAAG,OAAO,GAAG,CAAC,GAAG,EAAE,GAAG;AAGzC,QAAI,CAAC,GAAG,CAAC,GAAG;AAIV,QAAE,IAAI,iBAAiB,IAAI,KAAK;AAChC,QAAE,IAAI,CAAC,EAAE,IAAI,CAAC;AACd,aAAO;AAAA,IACT;AAIA,WAAO,UAAU,GAAG,IAAI,EAAE;AAAA,EAC5B;AAwBA,IAAE,SAAS,EAAE,MAAM,SAAU,GAAG,GAAG;AACjC,QAAI,GAAG,GACL,IAAI;AAEN,QAAI,IAAIA,WAAU,GAAG,CAAC;AAGtB,QAAI,CAAC,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG;AAClC,aAAO,IAAIA,WAAU,GAAG;AAAA,IAG1B,WAAW,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG;AACjC,aAAO,IAAIA,WAAU,CAAC;AAAA,IACxB;AAEA,QAAI,eAAe,GAAG;AAIpB,UAAI,EAAE;AACN,QAAE,IAAI;AACN,UAAI,IAAI,GAAG,GAAG,GAAG,CAAC;AAClB,QAAE,IAAI;AACN,QAAE,KAAK;AAAA,IACT,OAAO;AACL,UAAI,IAAI,GAAG,GAAG,GAAG,WAAW;AAAA,IAC9B;AAEA,QAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAGtB,QAAI,CAAC,EAAE,EAAE,CAAC,KAAK,eAAe,EAAG,GAAE,IAAI,EAAE;AAEzC,WAAO;AAAA,EACT;AAuBA,IAAE,eAAe,EAAE,QAAQ,SAAU,GAAG,GAAG;AACzC,QAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAClD,MAAM,UACN,IAAI,MACJ,KAAK,EAAE,GACP,MAAM,IAAI,IAAIA,WAAU,GAAG,CAAC,GAAG;AAGjC,QAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG;AAGlC,UAAI,CAAC,EAAE,KAAK,CAAC,EAAE,KAAK,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI;AAC9D,UAAE,IAAI,EAAE,IAAI,EAAE,IAAI;AAAA,MACpB,OAAO;AACL,UAAE,KAAK,EAAE;AAGT,YAAI,CAAC,MAAM,CAAC,IAAI;AACd,YAAE,IAAI,EAAE,IAAI;AAAA,QAGd,OAAO;AACL,YAAE,IAAI,CAAC,CAAC;AACR,YAAE,IAAI;AAAA,QACR;AAAA,MACF;AAEA,aAAO;AAAA,IACT;AAEA,QAAI,SAAS,EAAE,IAAI,QAAQ,IAAI,SAAS,EAAE,IAAI,QAAQ;AACtD,MAAE,KAAK,EAAE;AACT,UAAM,GAAG;AACT,UAAM,GAAG;AAGT,QAAI,MAAM,KAAK;AACb,WAAK;AACL,WAAK;AACL,WAAK;AACL,UAAI;AACJ,YAAM;AACN,YAAM;AAAA,IACR;AAGA,SAAK,IAAI,MAAM,KAAK,KAAK,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC,EAAE;AAE7C,WAAO;AACP,eAAW;AAEX,SAAK,IAAI,KAAK,EAAE,KAAK,KAAI;AACvB,UAAI;AACJ,YAAM,GAAG,CAAC,IAAI;AACd,YAAM,GAAG,CAAC,IAAI,WAAW;AAEzB,WAAK,IAAI,KAAK,IAAI,IAAI,GAAG,IAAI,KAAI;AAC/B,cAAM,GAAG,EAAE,CAAC,IAAI;AAChB,cAAM,GAAG,CAAC,IAAI,WAAW;AACzB,YAAI,MAAM,MAAM,MAAM;AACtB,cAAM,MAAM,MAAQ,IAAI,WAAY,WAAY,GAAG,CAAC,IAAI;AACxD,aAAK,MAAM,OAAO,MAAM,IAAI,WAAW,KAAK,MAAM;AAClD,WAAG,GAAG,IAAI,MAAM;AAAA,MAClB;AAEA,SAAG,CAAC,IAAI;AAAA,IACV;AAEA,QAAI,GAAG;AACL,QAAE;AAAA,IACJ,OAAO;AACL,SAAG,OAAO,GAAG,CAAC;AAAA,IAChB;AAEA,WAAO,UAAU,GAAG,IAAI,CAAC;AAAA,EAC3B;AAOA,IAAE,UAAU,WAAY;AACtB,QAAI,IAAI,IAAIA,WAAU,IAAI;AAC1B,MAAE,IAAI,CAAC,EAAE,KAAK;AACd,WAAO;AAAA,EACT;AAuBA,IAAE,OAAO,SAAU,GAAG,GAAG;AACvB,QAAI,GACF,IAAI,MACJ,IAAI,EAAE;AAER,QAAI,IAAIA,WAAU,GAAG,CAAC;AACtB,QAAI,EAAE;AAGN,QAAI,CAAC,KAAK,CAAC,EAAG,QAAO,IAAIA,WAAU,GAAG;AAGrC,QAAI,KAAK,GAAG;AACX,QAAE,IAAI,CAAC;AACP,aAAO,EAAE,MAAM,CAAC;AAAA,IAClB;AAEA,QAAI,KAAK,EAAE,IAAI,UACb,KAAK,EAAE,IAAI,UACX,KAAK,EAAE,GACP,KAAK,EAAE;AAET,QAAI,CAAC,MAAM,CAAC,IAAI;AAGd,UAAI,CAAC,MAAM,CAAC,GAAI,QAAO,IAAIA,WAAU,IAAI,CAAC;AAI1C,UAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAG,QAAO,GAAG,CAAC,IAAI,IAAI,IAAIA,WAAU,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC;AAAA,IAC1E;AAEA,SAAK,SAAS,EAAE;AAChB,SAAK,SAAS,EAAE;AAChB,SAAK,GAAG,MAAM;AAGd,QAAI,IAAI,KAAK,IAAI;AACf,UAAI,IAAI,GAAG;AACT,aAAK;AACL,YAAI;AAAA,MACN,OAAO;AACL,YAAI,CAAC;AACL,YAAI;AAAA,MACN;AAEA,QAAE,QAAQ;AACV,aAAO,KAAK,EAAE,KAAK,CAAC,EAAE;AACtB,QAAE,QAAQ;AAAA,IACZ;AAEA,QAAI,GAAG;AACP,QAAI,GAAG;AAGP,QAAI,IAAI,IAAI,GAAG;AACb,UAAI;AACJ,WAAK;AACL,WAAK;AACL,UAAI;AAAA,IACN;AAGA,SAAK,IAAI,GAAG,KAAI;AACd,WAAK,GAAG,EAAE,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO;AAC3C,SAAG,CAAC,IAAI,SAAS,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI;AAAA,IACvC;AAEA,QAAI,GAAG;AACL,WAAK,CAAC,CAAC,EAAE,OAAO,EAAE;AAClB,QAAE;AAAA,IACJ;AAIA,WAAO,UAAU,GAAG,IAAI,EAAE;AAAA,EAC5B;AAkBA,IAAE,YAAY,EAAE,KAAK,SAAU,IAAI,IAAI;AACrC,QAAI,GAAG,GAAG,GACR,IAAI;AAEN,QAAI,MAAM,QAAQ,OAAO,CAAC,CAAC,IAAI;AAC7B,eAAS,IAAI,GAAG,GAAG;AACnB,UAAI,MAAM,KAAM,MAAK;AAAA,UAChB,UAAS,IAAI,GAAG,CAAC;AAEtB,aAAO,MAAM,IAAIA,WAAU,CAAC,GAAG,IAAI,EAAE;AAAA,IACvC;AAEA,QAAI,EAAE,IAAI,EAAE,GAAI,QAAO;AACvB,QAAI,EAAE,SAAS;AACf,QAAI,IAAI,WAAW;AAEnB,QAAI,IAAI,EAAE,CAAC,GAAG;AAGZ,aAAO,IAAI,MAAM,GAAG,KAAK,IAAI,IAAI;AAGjC,WAAK,IAAI,EAAE,CAAC,GAAG,KAAK,IAAI,KAAK,IAAI,IAAI;AAAA,IACvC;AAEA,QAAI,MAAM,EAAE,IAAI,IAAI,EAAG,KAAI,EAAE,IAAI;AAEjC,WAAO;AAAA,EACT;AAWA,IAAE,YAAY,SAAU,GAAG;AACzB,aAAS,GAAG,CAAC,kBAAkB,gBAAgB;AAC/C,WAAO,KAAK,MAAM,OAAO,CAAC;AAAA,EAC5B;AAcA,IAAE,aAAa,EAAE,OAAO,WAAY;AAClC,QAAI,GAAG,GAAG,GAAG,KAAK,GAChB,IAAI,MACJ,IAAI,EAAE,GACN,IAAI,EAAE,GACN,IAAI,EAAE,GACN,KAAK,iBAAiB,GACtB,OAAO,IAAIA,WAAU,KAAK;AAG5B,QAAI,MAAM,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG;AAC1B,aAAO,IAAIA,WAAU,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC;AAAA,IACxE;AAGA,QAAI,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC;AAIzB,QAAI,KAAK,KAAK,KAAK,IAAI,GAAG;AACxB,UAAI,cAAc,CAAC;AACnB,WAAK,EAAE,SAAS,KAAK,KAAK,EAAG,MAAK;AAClC,UAAI,KAAK,KAAK,CAAC,CAAC;AAChB,UAAI,UAAU,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,IAAI;AAE1C,UAAI,KAAK,IAAI,GAAG;AACd,YAAI,OAAO;AAAA,MACb,OAAO;AACL,YAAI,EAAE,cAAc;AACpB,YAAI,EAAE,MAAM,GAAG,EAAE,QAAQ,GAAG,IAAI,CAAC,IAAI;AAAA,MACvC;AAEA,UAAI,IAAIA,WAAU,CAAC;AAAA,IACrB,OAAO;AACL,UAAI,IAAIA,WAAU,IAAI,EAAE;AAAA,IAC1B;AAMA,QAAI,EAAE,EAAE,CAAC,GAAG;AACV,UAAI,EAAE;AACN,UAAI,IAAI;AACR,UAAI,IAAI,EAAG,KAAI;AAGf,iBAAU;AACR,YAAI;AACJ,YAAI,KAAK,MAAM,EAAE,KAAK,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC;AAEvC,YAAI,cAAc,EAAE,CAAC,EAAE,MAAM,GAAG,CAAC,OAAO,IAAI,cAAc,EAAE,CAAC,GAAG,MAAM,GAAG,CAAC,GAAG;AAK3E,cAAI,EAAE,IAAI,EAAG,GAAE;AACf,cAAI,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC;AAKxB,cAAI,KAAK,UAAU,CAAC,OAAO,KAAK,QAAQ;AAItC,gBAAI,CAAC,KAAK;AACR,oBAAM,GAAG,EAAE,IAAI,iBAAiB,GAAG,CAAC;AAEpC,kBAAI,EAAE,MAAM,CAAC,EAAE,GAAG,CAAC,GAAG;AACpB,oBAAI;AACJ;AAAA,cACF;AAAA,YACF;AAEA,kBAAM;AACN,iBAAK;AACL,kBAAM;AAAA,UACR,OAAO;AAIL,gBAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,KAAK;AAG7C,oBAAM,GAAG,EAAE,IAAI,iBAAiB,GAAG,CAAC;AACpC,kBAAI,CAAC,EAAE,MAAM,CAAC,EAAE,GAAG,CAAC;AAAA,YACtB;AAEA;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAEA,WAAO,MAAM,GAAG,EAAE,IAAI,iBAAiB,GAAG,eAAe,CAAC;AAAA,EAC5D;AAYA,IAAE,gBAAgB,SAAU,IAAI,IAAI;AAClC,QAAI,MAAM,MAAM;AACd,eAAS,IAAI,GAAG,GAAG;AACnB;AAAA,IACF;AACA,WAAO,OAAO,MAAM,IAAI,IAAI,CAAC;AAAA,EAC/B;AAeA,IAAE,UAAU,SAAU,IAAI,IAAI;AAC5B,QAAI,MAAM,MAAM;AACd,eAAS,IAAI,GAAG,GAAG;AACnB,WAAK,KAAK,KAAK,IAAI;AAAA,IACrB;AACA,WAAO,OAAO,MAAM,IAAI,EAAE;AAAA,EAC5B;AA4BA,IAAE,WAAW,SAAU,IAAI,IAAIE,SAAQ;AACrC,QAAI,KACF,IAAI;AAEN,QAAIA,WAAU,MAAM;AAClB,UAAI,MAAM,QAAQ,MAAM,OAAO,MAAM,UAAU;AAC7C,QAAAA,UAAS;AACT,aAAK;AAAA,MACP,WAAW,MAAM,OAAO,MAAM,UAAU;AACtC,QAAAA,UAAS;AACT,aAAK,KAAK;AAAA,MACZ,OAAO;AACL,QAAAA,UAAS;AAAA,MACX;AAAA,IACF,WAAW,OAAOA,WAAU,UAAU;AACpC,YAAM,MACH,iBAAiB,6BAA6BA,OAAM;AAAA,IACzD;AAEA,UAAM,EAAE,QAAQ,IAAI,EAAE;AAEtB,QAAI,EAAE,GAAG;AACP,UAAI,GACF,MAAM,IAAI,MAAM,GAAG,GACnB,KAAK,CAACA,QAAO,WACb,KAAK,CAACA,QAAO,oBACb,iBAAiBA,QAAO,kBAAkB,IAC1C,UAAU,IAAI,CAAC,GACf,eAAe,IAAI,CAAC,GACpB,QAAQ,EAAE,IAAI,GACd,YAAY,QAAQ,QAAQ,MAAM,CAAC,IAAI,SACvC,MAAM,UAAU;AAElB,UAAI,IAAI;AACN,YAAI;AACJ,aAAK;AACL,aAAK;AACL,eAAO;AAAA,MACT;AAEA,UAAI,KAAK,KAAK,MAAM,GAAG;AACrB,YAAI,MAAM,MAAM;AAChB,kBAAU,UAAU,OAAO,GAAG,CAAC;AAC/B,eAAO,IAAI,KAAK,KAAK,GAAI,YAAW,iBAAiB,UAAU,OAAO,GAAG,EAAE;AAC3E,YAAI,KAAK,EAAG,YAAW,iBAAiB,UAAU,MAAM,CAAC;AACzD,YAAI,MAAO,WAAU,MAAM;AAAA,MAC7B;AAEA,YAAM,eACH,WAAWA,QAAO,oBAAoB,QAAQ,KAAK,CAACA,QAAO,qBAC1D,aAAa;AAAA,QAAQ,IAAI,OAAO,SAAS,KAAK,QAAQ,GAAG;AAAA,QAC1D,QAAQA,QAAO,0BAA0B;AAAA,MAAG,IAC3C,gBACD;AAAA,IACL;AAEA,YAAQA,QAAO,UAAU,MAAM,OAAOA,QAAO,UAAU;AAAA,EACzD;AAcA,IAAE,aAAa,SAAU,IAAI;AAC3B,QAAI,GAAG,IAAI,IAAI,IAAI,GAAG,KAAK,GAAG,IAAI,IAAI,GAAG,GAAG,GAC1C,IAAI,MACJ,KAAK,EAAE;AAET,QAAI,MAAM,MAAM;AACd,UAAI,IAAIF,WAAU,EAAE;AAGpB,UAAI,CAAC,EAAE,UAAU,MAAM,EAAE,KAAK,EAAE,MAAM,MAAM,EAAE,GAAG,GAAG,GAAG;AACrD,cAAM,MACH,iBAAiB,eACf,EAAE,UAAU,IAAI,mBAAmB,sBAAsB,QAAQ,CAAC,CAAC;AAAA,MAC1E;AAAA,IACF;AAEA,QAAI,CAAC,GAAI,QAAO,IAAIA,WAAU,CAAC;AAE/B,QAAI,IAAIA,WAAU,GAAG;AACrB,SAAK,KAAK,IAAIA,WAAU,GAAG;AAC3B,SAAK,KAAK,IAAIA,WAAU,GAAG;AAC3B,QAAI,cAAc,EAAE;AAIpB,QAAI,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI;AAC3B,MAAE,EAAE,CAAC,IAAI,UAAU,MAAM,IAAI,YAAY,IAAI,WAAW,MAAM,GAAG;AACjE,SAAK,CAAC,MAAM,EAAE,WAAW,CAAC,IAAI,IAAK,IAAI,IAAI,IAAI,KAAM;AAErD,UAAM;AACN,cAAU,IAAI;AACd,QAAI,IAAIA,WAAU,CAAC;AAGnB,OAAG,EAAE,CAAC,IAAI;AAEV,eAAW;AACT,UAAI,IAAI,GAAG,GAAG,GAAG,CAAC;AAClB,WAAK,GAAG,KAAK,EAAE,MAAM,EAAE,CAAC;AACxB,UAAI,GAAG,WAAW,EAAE,KAAK,EAAG;AAC5B,WAAK;AACL,WAAK;AACL,WAAK,GAAG,KAAK,EAAE,MAAM,KAAK,EAAE,CAAC;AAC7B,WAAK;AACL,UAAI,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC,CAAC;AAC3B,UAAI;AAAA,IACN;AAEA,SAAK,IAAI,GAAG,MAAM,EAAE,GAAG,IAAI,GAAG,CAAC;AAC/B,SAAK,GAAG,KAAK,GAAG,MAAM,EAAE,CAAC;AACzB,SAAK,GAAG,KAAK,GAAG,MAAM,EAAE,CAAC;AACzB,OAAG,IAAI,GAAG,IAAI,EAAE;AAChB,QAAI,IAAI;AAGR,QAAI,IAAI,IAAI,IAAI,GAAG,aAAa,EAAE,MAAM,CAAC,EAAE,IAAI,EAAE;AAAA,MAC7C,IAAI,IAAI,IAAI,GAAG,aAAa,EAAE,MAAM,CAAC,EAAE,IAAI;AAAA,IAAC,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;AAE1E,cAAU;AAEV,WAAO;AAAA,EACT;AAMA,IAAE,WAAW,WAAY;AACvB,WAAO,CAAC,QAAQ,IAAI;AAAA,EACtB;AAcA,IAAE,cAAc,SAAU,IAAI,IAAI;AAChC,QAAI,MAAM,KAAM,UAAS,IAAI,GAAG,GAAG;AACnC,WAAO,OAAO,MAAM,IAAI,IAAI,CAAC;AAAA,EAC/B;AAcA,IAAE,WAAW,SAAU,GAAG;AACxB,QAAI,KACF,IAAI,MACJ,IAAI,EAAE,GACN,IAAI,EAAE;AAGR,QAAI,MAAM,MAAM;AACd,UAAI,GAAG;AACL,cAAM;AACN,YAAI,IAAI,EAAG,OAAM,MAAM;AAAA,MACzB,OAAO;AACL,cAAM;AAAA,MACR;AAAA,IACF,OAAO;AACL,UAAI,KAAK,MAAM;AACb,cAAM,KAAK,cAAc,KAAK,aAC3B,cAAc,cAAc,EAAE,CAAC,GAAG,CAAC,IACnC,aAAa,cAAc,EAAE,CAAC,GAAG,GAAG,GAAG;AAAA,MAC5C,WAAW,MAAM,MAAM,gCAAgC;AACrD,YAAI,MAAM,IAAIA,WAAU,CAAC,GAAG,iBAAiB,IAAI,GAAG,aAAa;AACjE,cAAM,aAAa,cAAc,EAAE,CAAC,GAAG,EAAE,GAAG,GAAG;AAAA,MACjD,OAAO;AACL,iBAAS,GAAG,GAAG,SAAS,QAAQ,MAAM;AACtC,cAAM,YAAY,aAAa,cAAc,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI;AAAA,MAC5E;AAEA,UAAI,IAAI,KAAK,EAAE,EAAE,CAAC,EAAG,OAAM,MAAM;AAAA,IACnC;AAEA,WAAO;AAAA,EACT;AAOA,IAAE,UAAU,EAAE,SAAS,WAAY;AACjC,WAAO,QAAQ,IAAI;AAAA,EACrB;AAGA,IAAE,eAAe;AAEjB,IAAE,OAAO,WAAW,IAAI;AAGxB,IAAE,uBAAO,IAAI,4BAA4B,CAAC,IAAI,EAAE;AAEhD,MAAI,gBAAgB,KAAM,CAAAA,WAAU,IAAI,YAAY;AAEpD,SAAOA;AACT;AASA,SAAS,SAAS,GAAG;AACnB,MAAI,IAAI,IAAI;AACZ,SAAO,IAAI,KAAK,MAAM,IAAI,IAAI,IAAI;AACpC;AAIA,SAAS,cAAc,GAAG;AACxB,MAAI,GAAG,GACL,IAAI,GACJ,IAAI,EAAE,QACN,IAAI,EAAE,CAAC,IAAI;AAEb,SAAO,IAAI,KAAI;AACb,QAAI,EAAE,GAAG,IAAI;AACb,QAAI,WAAW,EAAE;AACjB,WAAO,KAAK,IAAI,MAAM,EAAE;AACxB,SAAK;AAAA,EACP;AAGA,OAAK,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,MAAM,KAAI;AAE7C,SAAO,EAAE,MAAM,GAAG,IAAI,KAAK,CAAC;AAC9B;AAIA,SAAS,QAAQ,GAAG,GAAG;AACrB,MAAI,GAAG,GACL,KAAK,EAAE,GACP,KAAK,EAAE,GACP,IAAI,EAAE,GACN,IAAI,EAAE,GACN,IAAI,EAAE,GACN,IAAI,EAAE;AAGR,MAAI,CAAC,KAAK,CAAC,EAAG,QAAO;AAErB,MAAI,MAAM,CAAC,GAAG,CAAC;AACf,MAAI,MAAM,CAAC,GAAG,CAAC;AAGf,MAAI,KAAK,EAAG,QAAO,IAAI,IAAI,IAAI,CAAC,IAAI;AAGpC,MAAI,KAAK,EAAG,QAAO;AAEnB,MAAI,IAAI;AACR,MAAI,KAAK;AAGT,MAAI,CAAC,MAAM,CAAC,GAAI,QAAO,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI;AAG7C,MAAI,CAAC,EAAG,QAAO,IAAI,IAAI,IAAI,IAAI;AAE/B,OAAK,IAAI,GAAG,WAAW,IAAI,GAAG,UAAU,IAAI;AAG5C,OAAK,IAAI,GAAG,IAAI,GAAG,IAAK,KAAI,GAAG,CAAC,KAAK,GAAG,CAAC,EAAG,QAAO,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,IAAI,IAAI;AAG3E,SAAO,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI;AACtC;AAMA,SAAS,SAAS,GAAG,KAAK,KAAK,MAAM;AACnC,MAAI,IAAI,OAAO,IAAI,OAAO,MAAM,UAAU,CAAC,GAAG;AAC5C,UAAM,MACJ,kBAAkB,QAAQ,eAAe,OAAO,KAAK,WAClD,IAAI,OAAO,IAAI,MAAM,oBAAoB,sBACzC,+BAA+B,OAAO,CAAC,CAAC;AAAA,EAC/C;AACF;AAIA,SAAS,MAAM,GAAG;AAChB,MAAI,IAAI,EAAE,EAAE,SAAS;AACrB,SAAO,SAAS,EAAE,IAAI,QAAQ,KAAK,KAAK,EAAE,EAAE,CAAC,IAAI,KAAK;AACxD;AAGA,SAAS,cAAc,KAAK,GAAG;AAC7B,UAAQ,IAAI,SAAS,IAAI,IAAI,OAAO,CAAC,IAAI,MAAM,IAAI,MAAM,CAAC,IAAI,QAC5D,IAAI,IAAI,MAAM,QAAQ;AAC1B;AAGA,SAAS,aAAa,KAAK,GAAG,GAAG;AAC/B,MAAI,KAAK;AAGT,MAAI,IAAI,GAAG;AAGT,SAAK,KAAK,IAAI,KAAK,EAAE,GAAG,MAAM,EAAE;AAChC,UAAM,KAAK;AAAA,EAGb,OAAO;AACL,UAAM,IAAI;AAGV,QAAI,EAAE,IAAI,KAAK;AACb,WAAK,KAAK,GAAG,KAAK,KAAK,EAAE,GAAG,MAAM,EAAE;AACpC,aAAO;AAAA,IACT,WAAW,IAAI,KAAK;AAClB,YAAM,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,IAAI,MAAM,CAAC;AAAA,IAC3C;AAAA,EACF;AAEA,SAAO;AACT;AAMO,IAAI,YAAY,MAAM;AAE7B,IAAO,oBAAQ;;;ACx1FR,IAAM,WAAN,MAAe;AAAA;AAAA,EAEpB,OAAO,OAAO,SAAU,OAAuB;AAC7C,QAAI,QAAQ,IAAI;AACd,aAAO;AAAA,IACT;AAEA,QAAI,QAAQ,KAAK;AACf,aAAO,OAAO,KAAK,KAAK,OAAO,KAAK,CAAC,IAAI,CAAC;AAAA,IAC5C;AAEA,QAAI,IAAI;AACR,QAAI,QAAQ,mBAAmB;AAE7B,WAAK,OAAO,KAAK,KAAK,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI;AAAA,IAC9C,OAAO;AACL,YAAM,OAAO,MAAM,SAAS,EAAE;AAC9B,UAAI,EAAE,OAAO,IAAI;AACf,aAAK,OAAO,OAAO,OAAO,CAAC;AAAA,MAC7B,OAAO;AACL,aAAK,KAAK,OAAO,OAAQ,OAAO,IAAK,CAAC;AAAA,MACxC;AAAA,IACF;AAEA,OAAG;AACD,WAAK;AACL,WAAM,QAAQ,KAAK,MAAO;AAAA,IAC5B,SAAS,OAAO,MAAM,OAAO,KAAK;AAElC,WAAO;AAAA,EACT;AAAA,EAEA,OAAO,QAAQ,GAAW,GAAmB;AAC3C,UAAM,SAAS,IAAI;AACnB,QAAI,IAAI,IAAI,GAAI,QAAO,SAAS,OAAO,IAAI,KAAK,EAAE;AAClD,WAAO;AAAA,EACT;AAAA,EAEA,OAAO,SAAS,GAAW,GAAmB;AAC5C,UAAM,SAAS,IAAI;AACnB,UAAM,MAAM,IAAI;AAChB,WAAO,SAAS,OAAO,OAAO,EAAE,IAAI,OAAO,MAAM,KAAK,CAAC,KAAK,EAAE;AAAA,EAChE;AAAA,EAEA,OAAO,SAAS,GAAW,GAAmB;AAC5C,WAAO,KAAK,gBAAgB,GAAG,GAAG,OAAO;AAAA,EAC3C;AAAA,EAEA,OAAO,QAAQ,GAAW,GAAmB;AAC3C,WAAO,KAAK,gBAAgB,GAAG,GAAG,MAAM;AAAA,EAC1C;AAAA,EAEA,OAAO,YAAY,GAAW,GAAW,GAAmB;AAC1D,QAAI,MAAM,IAAI;AACZ,YAAM,IAAI,MAAM,oCAAoC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;AAAA,IACvE;AACA,UAAM,UAAU,IAAI;AACpB,WAAO,KAAK,SAAS,SAAS,CAAC;AAAA,EACjC;AAAA,EAEA,OAAO,WAAW,GAAW,GAAW,GAAmB;AACzD,QAAI,MAAM,IAAI;AACZ,YAAM,IAAI,MAAM,mCAAmC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;AAAA,IACtE;AACA,UAAM,UAAU,IAAI;AACpB,WAAO,KAAK,QAAQ,SAAS,CAAC;AAAA,EAChC;AAAA,EAEA,OAAe,kBAAkB,CAAC,GAAW,GAAW,SAA2B;AACjF,QAAI,MAAM,IAAI;AACZ,YAAM,IAAI,MAAM,qBAAqB,CAAC,MAAM,CAAC,EAAE;AAAA,IACjD;AAEA,UAAM,WAAW,IAAI;AACrB,UAAM,YAAY,IAAI;AACtB,QAAI,cAAc,IAAI;AACpB,aAAO;AAAA,IACT;AAEA,UAAM,aAAa,KAAK,OAAO,KAAK;AACpC,QAAI,SAAS,SAAS;AACpB,aAAO,aAAa,WAAW,WAAW;AAAA,IAC5C;AACA,WAAO,aAAa,WAAW,KAAK;AAAA,EACtC;AACF;;;ACvFO,IAAM,MAAM;;;A/CgDZ,IAAM,aAAN,MAAM,oBAAmB,WAAW;AAAA,EACjC;AAAA,EAER,YAAY,OAAa;AACvB,UAAM,EAAE,OAAO,YAAY,aAAa,CAAC;AAEzC,SAAK,SAAS,KAAK,cAAc;AACjC,SAAK,QAAQ;AAAA,EACf;AAAA,EAEA,UAAU,QAAgB,QAAwB;AAChD,UAAM,CAAC,UAAU,QAAQ,IAAI,WAAW,QAAQ,MAAM;AACtD,UAAM,OAAO,WAAW;AACxB,eAAO,6BAAc,KAAK,OAAO,WAAW,MAAM,KAAK,OAAO,UAAU;AAAA,EAC1E;AAAA,EAEA,eAAe,QAAgB,QAAwB;AACrD,eAAO,qCAAsB,KAAK,UAAU,QAAQ,MAAM,CAAC;AAAA,EAC7D;AAAA,EAEA,MAAM,aAAa,QAAgB,QAAgD;AACjF,UAAM,CAAC,UAAU,QAAQ,IAAI,WAAW,QAAQ,MAAM;AACtD,UAAM,aAAa,MAAM,KAAK,MAAM,MAAM,aAAa,QAAQ;AAC/D,UAAM,aAAa,MAAM,KAAK,MAAM,MAAM,aAAa,QAAQ;AAE/D,UAAM,SAAS,KAAK,UAAU,QAAQ,MAAM;AAC5C,UAAM,sBAAkB,qCAAsB,MAAM;AACpD,UAAM,OAAO,UAAkB,GAAG,eAAe;AAEjD,QAAI;AACF,YAAM,QAAQ,MAAM,KAAK,WAAW;AACpC,aAAO;AAAA,QACL;AAAA,QACA,UAAU,MAAM,OAAO;AAAA,QACvB,UAAU,MAAM,OAAO;AAAA,QACvB;AAAA,QACA;AAAA,QACA,aAAa,MAAM,OAAO;AAAA,QAC1B,YAAY,MAAM,OAAO;AAAA,MAC3B;AAAA,IACF,SAAS,OAAO;AACd,UAAI,iBAAiB,SAAS,MAAM,QAAQ,SAAS,WAAW,GAAG;AACjE,cAAM,IAAI,kBAAkB,MAAM;AAAA,MACpC;AACA,WAAK,iBAAiB,iCAAiC,MAAM,IAAI,KAAK;AAAA,IACxE;AAAA,EACF;AAAA,EAEA,MAAM,WAAW,QAAgB,QAAkC;AACjE,UAAM,UAAU,KAAK,eAAe,QAAQ,MAAM;AAElD,WAAO,KAAK,MAAM,aAAa,UAC5B,yBAAyB,OAAO,EAChC,KAAK,CAAC,MAAM,IAAI,EAChB,MAAM,CAAC,MAAW;AACjB,UAAI,aAAa,SAAS,EAAE,QAAQ,QAAQ,iBAAiB,MAAM,IAAI;AACrE,eAAO;AAAA,MACT;AACA,YAAM;AAAA,IACR,CAAC;AAAA,EACL;AAAA,EAEA,MAAM,KAAK,QAAoB,UAA8D;AAC3F,QAAI,CAAC,KAAK,MAAM,QAAQ;AACtB,YAAM,IAAI,MAAM,uCAAuC;AAAA,IACzD;AAEA,UAAM,YAAY,MAAM,KAAK,aAAa,OAAO,QAAQ,IAAI,OAAO,SAAS,EAAE;AAC/E,UAAM,cAAc,YAAW,kBAAkB;AAAA,MAC/C,OAAO;AAAA,MACP,SAAS,OAAO;AAAA,MAChB,UAAU,OAAO;AAAA,MACjB,UAAU,OAAO;AAAA,MACjB,WAAW,OAAO;AAAA,MAClB,UAAU,OAAO;AAAA,IACnB,CAAC;AAED,QAAI,YAAY,eAAe,kBAAkB;AAC/C,YAAM,IAAI,wBAAwB,YAAY,aAAa,gBAAgB;AAAA,IAC7E;AAEA,QAAI,UAAU;AACZ,YAAM,YAAY,SAAS,IAAI,YAAY,YAAY,EAAE,KAAK;AAC9D,UAAI,YAAY,YAAY,eAAe;AACzC,cAAM,IAAI;AAAA,UACR,YAAY,YAAY;AAAA,cACxB,mCAAoB,YAAY,eAAe,YAAY,YAAY,QAAQ,KAC7E,GAAG,YAAY,aAAa;AAAA,cAC9B,mCAAoB,WAAW,YAAY,YAAY,QAAQ,KAAK,GAAG,SAAS;AAAA,QAClF;AAAA,MACF;AAAA,IACF;AAEA,UAAM,MAAM,OAAO,OAAO;AAE1B,QAAI,YAAY,aAAa,WAAW;AACtC,UAAI,iBAAiB,KAAK;AAAA,QACxB,YAAY,MAAM,WAAW;AAAA,QAC7B,YAAY,MAAM,WAAW;AAAA,MAC/B;AACA,YAAM,SAAgD,CAAC;AAEvD,UAAI,YAAY,YAAY,OAAO,6BAAe;AAChD,0BAAkB,YAAY;AAAA,MAChC,OAAO;AACL,eAAO,KAAK,EAAE,IAAI,YAAY,YAAY,IAAI,QAAQ,YAAY,cAAc,CAAC;AAAA,MACnF;AAEA,YAAM,SAAS,MAAM,WAAW,QAAQ;AAAA,QACtC,QAAQ,KAAK,MAAM;AAAA,QACnB,eAAe;AAAA,UACb,YAAY,UAAU;AAAA,UACtB,QAAQ,OAAO;AAAA,UACf,QAAQ,KAAK,OAAO;AAAA,UACpB,MAAM,YAAY,MAAM;AAAA,UACxB,WAAW,YAAY,YAAY;AAAA,UACnC,UAAU,YAAY;AAAA,UACtB,cAAc,YAAY;AAAA,UAC1B,UAAU,SAAS,GAAG;AAAA,QACxB;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC;AACD,aAAO;AAAA,IACT,OAAO;AACL,UAAI,iBAAiB,KAAK;AAAA,QACxB,YAAY,MAAM,WAAW;AAAA,QAC7B,YAAY,MAAM,WAAW;AAAA,MAC/B;AACA,YAAM,SAAgD,CAAC;AAEvD,UAAI,YAAY,YAAY,OAAO,6BAAe;AAChD,0BAAkB,YAAY;AAAA,MAChC,OAAO;AACL,eAAO,KAAK,EAAE,IAAI,YAAY,YAAY,IAAI,QAAQ,YAAY,qBAAsB,CAAC;AAAA,MAC3F;AACA,YAAM,SAAS,MAAM,UAAU,QAAQ;AAAA,QACrC,QAAQ,KAAK,MAAM;AAAA,QACnB,eAAe;AAAA,UACb,YAAY,UAAU;AAAA,UACtB,QAAQ,OAAO;AAAA,UACf,QAAQ,KAAK,OAAO;AAAA,UACpB,MAAM,YAAY,MAAM;AAAA,UACxB,WAAW,YAAY,YAAY;AAAA,UACnC,aAAa,YAAY;AAAA,UACzB,WAAW,YAAY;AAAA,UACvB,UAAU,SAAS,GAAG;AAAA,QACxB;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC;AACD,aAAO;AAAA,IACT;AAAA,EACF;AAAA,EAEA,MAAM,aACJ,QACA,UAC8B;AAC9B,QAAI,CAAC,KAAK,MAAM,QAAQ;AACtB,YAAM,IAAI,MAAM,+CAA+C;AAAA,IACjE;AAEA,UAAM,EAAE,eAAe,QAAQ,QAAQ,SAAS,SAAS,UAAU,QAAQ,MAAM,GAAG,IAAI;AAExF,QAAI,YAAY,MAAM,YAAY,IAAI;AACpC,YAAM,IAAI,MAAM,yCAAyC;AAAA,IAC3D;AAEA,QAAI,UAAU;AACZ,YAAM,kBAAkB,SAAS,IAAI,OAAO,EAAE,KAAK;AACnD,UAAI,kBAAkB,SAAS;AAC7B,cAAM,IAAI;AAAA,UACR,OAAO;AAAA,cACP,mCAAoB,SAAS,OAAO,QAAQ,KAAK,GAAG,OAAO;AAAA,cAC3D,mCAAoB,iBAAiB,OAAO,QAAQ,KAAK,GAAG,eAAe;AAAA,QAC7E;AAAA,MACF;AAEA,YAAM,kBAAkB,SAAS,IAAI,OAAO,EAAE,KAAK;AACnD,UAAI,kBAAkB,SAAS;AAC7B,cAAM,IAAI;AAAA,UACR,OAAO;AAAA,cACP,mCAAoB,SAAS,OAAO,QAAQ,KAAK,GAAG,OAAO;AAAA,cAC3D,mCAAoB,iBAAiB,OAAO,QAAQ,KAAK,GAAG,eAAe;AAAA,QAC7E;AAAA,MACF;AAAA,IACF;AAEA,UAAM,YAAY,cAAc,aAAa,MAAM,cAAc,aAAa;AAC9E,UAAM,aAAa,YAAY,UAAU,YAAW,cAAc,SAAS,QAAQ;AACnF,UAAM,aAAa,YAAY,UAAU,YAAW,cAAc,SAAS,QAAQ;AAEnF,UAAM,CAAC,gBAAgB,gBAAgB,YAAY,UAAU,IAC3D,OAAO,OAAO,cAAc,WAAW,KACnC,CAAC,SAAS,SAAS,YAAY,UAAU,IACzC,CAAC,SAAS,SAAS,YAAY,UAAU;AAG/C,UAAM,YAAY,KAAK,mBAAmB,OAAO,IAAI,OAAO,EAAE;AAC9D,QAAI,iBAAiB,YAAY;AACjC,UAAM,SAAgD,CAAC;AAGvD,QAAI,OAAO,OAAO,6BAAe;AAC/B,wBAAkB;AAClB,aAAO,KAAK,EAAE,IAAI,OAAO,IAAI,QAAQ,QAAQ,CAAC;AAAA,IAChD,WAAW,OAAO,OAAO,6BAAe;AACtC,wBAAkB;AAClB,aAAO,KAAK,EAAE,IAAI,OAAO,IAAI,QAAQ,QAAQ,CAAC;AAAA,IAChD,OAAO;AACL,aAAO,KAAK,EAAE,IAAI,OAAO,IAAI,QAAQ,QAAQ,GAAG,EAAE,IAAI,OAAO,IAAI,QAAQ,QAAQ,CAAC;AAAA,IACpF;AAEA,UAAM,SAAS,MAAM,aAAa,QAAQ;AAAA,MACxC,QAAQ,KAAK,MAAM;AAAA,MACnB,eAAe;AAAA,QACb;AAAA,QACA,QAAQ,KAAK,OAAO;AAAA,QACpB,MAAM,cAAc;AAAA,QACpB;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,UAAU,SAAS,GAAG;AAAA,MACxB;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AACD,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,gBAAgB,QAA6D;AACjF,QAAI,CAAC,KAAK,MAAM,QAAQ;AACtB,YAAM,IAAI,MAAM,kDAAkD;AAAA,IACpE;AAEA,UAAM,EAAE,OAAO,WAAW,sBAAsB,UAAU,QAAQ,MAAM,GAAG,IAAI;AAC/E,UAAM,iBAAiB,wBAAwB,MAAM;AACrD,UAAM,UAAU,YAAW,8BAA8B,OAAO,gBAAgB,SAAS;AAEzF,UAAM,aAAa,YAAW,cAAc,QAAQ,SAAS,QAAQ;AACrE,UAAM,aAAa,YAAW,cAAc,QAAQ,SAAS,QAAQ;AAErE,UAAM,SAAS,MAAM,gBAAgB,QAAQ;AAAA,MAC3C,QAAQ,KAAK,MAAM;AAAA,MACnB,eAAe;AAAA,QACb;AAAA,QACA,QAAQ,KAAK,OAAO;AAAA,QACpB,QAAQ,MAAM;AAAA,QACd;AAAA,QACA;AAAA,QACA;AAAA,QACA,UAAU,SAAS,GAAG;AAAA,MACxB;AAAA,MACA,gBACE,KAAK,mBAAmB,MAAM,WAAW,IAAI,MAAM,WAAW,EAAE,IAAI;AAAA,MACtE,QAAQ,CAAC,EAAE,IAAI,MAAM,QAAQ,QAAQ,UAAU,CAAC;AAAA,IAClD,CAAC;AACD,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,wBACJ,UACA,UACA,kBAC2B;AAC3B,UAAM,QAAQ,MAAM,KAAK,aAAa,UAAU,QAAQ;AACxD,UAAM,UAAU,YAAW,wBAAwB,OAAO,gBAAgB;AAC1E,WAAO;AAAA,MACL,QAAQ,QAAQ;AAAA,MAChB,SAAS,QAAQ;AAAA,MACjB,QAAQ,QAAQ;AAAA,MAChB,SAAS,QAAQ;AAAA,IACnB;AAAA,EACF;AAAA,EAEA,MAAM,WAAW,QAA6E;AAC5F,QAAI,CAAC,KAAK,MAAM,QAAQ;AACtB,YAAM,IAAI,MAAM,6CAA6C;AAAA,IAC/D;AAEA,UAAM,EAAE,QAAQ,QAAQ,QAAQ,cAAc,aAAa,IAAI;AAC/D,UAAM,SAAS,KAAK,UAAU,OAAO,IAAI,OAAO,EAAE;AAElD,QAAI,iBAAiB,UAAa,iBAAiB,QAAW;AAC5D,YAAM,CAAC,UAAU,QAAQ,IAAI,WAAW,OAAO,IAAI,OAAO,EAAE;AAC5D,YAAM,CAAC,SAAS,OAAO,IACrB,aAAa,OAAO,KAAK,CAAC,cAAc,YAAY,IAAI,CAAC,cAAc,YAAY;AACrF,YAAMG,UAAS,MAAM,0BAA0B,QAAQ;AAAA,QACrD,QAAQ,KAAK,MAAM;AAAA,QACnB,eAAe;AAAA,UACb,OAAO;AAAA,UACP,SAAS,KAAK,OAAO;AAAA,UACrB,YAAY;AAAA,UACZ;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,QACA,gBAAgB,yBAAW,KAAK,mBAAmB,OAAO,IAAI,OAAO,EAAE;AAAA,QACvE,QAAQ;AAAA,UACN,EAAE,IAAI,UAAU,QAAQ,QAAQ;AAAA,UAChC,EAAE,IAAI,UAAU,QAAQ,QAAQ;AAAA,QAClC;AAAA,MACF,CAAC;AACD,aAAO,EAAE,GAAGA,SAAQ,OAAO;AAAA,IAC7B;AAEA,UAAM,SAAS,MAAM,WAAW,QAAQ;AAAA,MACtC,QAAQ,KAAK,MAAM;AAAA,MACnB,eAAe;AAAA,QACb,OAAO;AAAA,QACP,SAAS,KAAK,OAAO;AAAA,QACrB,YAAY;AAAA,QACZ,UAAU,OAAO;AAAA,QACjB,UAAU,OAAO;AAAA,MACnB;AAAA,MACA,gBAAgB,yBAAW,KAAK,mBAAmB,OAAO,IAAI,OAAO,EAAE;AAAA,MACvE,QAAQ;AAAA,QACN,EAAE,IAAI,OAAO,IAAI,QAAQ,GAAG;AAAA,QAC5B,EAAE,IAAI,OAAO,IAAI,QAAQ,GAAG;AAAA,MAC9B;AAAA,IACF,CAAC;AACD,WAAO,EAAE,GAAG,QAAQ,OAAO;AAAA,EAC7B;AAAA,EAEA,gBAA4B;AAC1B,UAAM,YAAY,KAAK,MAAM,QAAQ;AACrC,QAAI;AACF,YAAM,cAAc,gBAAgB,SAAS;AAC7C,aAAO;AAAA,QACL,YAAY,YAAY,UAAU,OAAO,iBAAiB;AAAA,QAC1D,WAAW,YAAY,UAAU,iBAAiB,iBAAiB;AAAA,QACnE,UAAU,YAAY,UAAU,OAAO,iBAAiB;AAAA,MAC1D;AAAA,IACF,SAAS,OAAO;AACd,WAAK,iBAAiB,iCAAiC,SAAS,IAAI,KAAK;AAAA,IAC3E;AAAA,EACF;AAAA,EAEA,OAAO,kBAAkB,QAAwC;AAC/D,UAAM,EAAE,OAAO,SAAS,UAAU,UAAU,WAAW,SAAS,IAAI;AAEpE,QAAI;AACJ,QAAI;AACJ,QAAI;AAEJ,QAAI,aAAa,QAAW;AAC1B,iBAAW;AACX,sBAAgB;AAChB,uBAAiB,YAAW,aAAa,OAAO,QAAQ,IAAI,QAAQ;AAAA,IACtE,WAAW,cAAc,QAAW;AAClC,iBAAW;AACX,sBAAgB,YAAW,YAAY,OAAO,SAAS,IAAI,SAAS;AACpE,uBAAiB;AAAA,IACnB,OAAO;AACL,YAAM,IAAI,MAAM,gDAAgD;AAAA,IAClE;AAEA,UAAM,cAAc,KAAK;AAAA,MACvB,MAAM;AAAA,MACN,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,MAAM,WAAW;AAAA,MACjB;AAAA,MACA;AAAA,IACF;AAEA,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA,aAAa;AAAA,MACb,cAAc;AAAA,MACd;AAAA,MACA;AAAA,MACA;AAAA,MACA,uBACE,aAAa,YAAY,KAAK,cAAc,gBAAgB,QAAQ,IAAI;AAAA,MAC1E,sBACE,aAAa,aAAa,KAAK,cAAc,eAAe,QAAQ,IAAI;AAAA,IAC5E;AAAA,EACF;AAAA,EAEA,OAAO,wBAAwB,QAAqD;AAClF,UAAM,EAAE,OAAO,QAAQ,QAAQ,SAAS,SAAS,YAAY,SAAS,IAAI;AAE1E,QAAI,CAAC,OAAO;AAEV,UAAI,CAAC,WAAW,CAAC,SAAS;AACxB,cAAM,IAAI,MAAM,6DAA6D;AAAA,MAC/E;AACA,aAAO,KAAK,wBAAwB,OAAO,IAAI,OAAO,IAAI,SAAS,OAAO;AAAA,IAC5E;AAGA,UAAM,eAAe,cAAc,WAAW,OAAO,KAAK,OAAO;AACjE,UAAM,cAAc,cAAc,WAAW,UAAU;AAEvD,QAAI,CAAC,aAAa;AAChB,YAAM,IAAI,MAAM,cAAc,SAAS,cAAc;AAAA,IACvD;AAEA,WAAO,KAAK,oBAAoB,OAAO,cAAc,aAAa,SAAS;AAAA,EAC7E;AAAA,EAEA,OAAO,8BACL,OACA,gBACA,mBACwB;AACxB,QAAI,oBAAoB,gBAAgB;AACtC,YAAM,IAAI,MAAM,0CAA0C;AAAA,IAC5D;AAEA,UAAM,UAAW,oBAAoB,MAAM,WAAY,MAAM;AAC7D,UAAM,UAAW,oBAAoB,MAAM,WAAY,MAAM;AAC7D,UAAM,oBAAoB,iBAAiB;AAC3C,UAAM,sBAAsB,MAAM,cAAc;AAChD,UAAM,wBAAwB,mBAAW,OAAO,mBAAmB,SAAS,CAAC,EAC1E,IAAI,kBAAU,oBAAoB,SAAS,CAAC,CAAC,EAC7C,QAAQ,CAAC;AAEZ,WAAO;AAAA,MACL;AAAA,MACA,QAAQ,MAAM;AAAA,MACd;AAAA,MACA,QAAQ,MAAM;AAAA,MACd;AAAA,MACA;AAAA,MACA,uBAAuB,WAAW,qBAAqB;AAAA,IACzD;AAAA,EACF;AAAA,EAEA,OAAO,wBACL,OACA,kBACwB;AACxB,WAAO,KAAK,8BAA8B,OAAO,kBAAkB,gBAAgB;AAAA,EACrF;AAAA,EAEA,OAAO,cAAc,QAAgB,UAA0B;AAC7D,SAAK,sBAAsB,QAAQ;AACnC,WAAQ,SAAS,OAAQ,MAAM;AAAA,EACjC;AAAA,EAEA,OAAO,cAAc,QAAgB,UAA0B;AAC7D,SAAK,sBAAsB,QAAQ;AACnC,YAAQ,UAAU,MAAM,aAAa,MAAM,OAAO;AAAA,EACpD;AAAA,EAEA,OAAe,sBAAsB,UAAwB;AAC3D,QAAI,WAAW,MAAM,YAAY,KAAK;AACpC,YAAM,IAAI,MAAM,yCAAyC,GAAG,cAAc,QAAQ,EAAE;AAAA,IACtF;AAAA,EACF;AAAA,EAEA,OAAO,gBACL,UACA,UACA,WACA,UACA,UACA,WACQ;AACR,UAAM,CAAC,WAAW,UAAU,IAC1B,aAAa,YAAY,CAAC,UAAU,QAAQ,IAAI,CAAC,UAAU,QAAQ;AACrE,UAAM,aACH,cAAc,YAAY,aAAa,aAAa,aAAa,aAAa;AACjF,UAAM,cAAc,aAAa,aAAa;AAC9C,UAAM,SAAS,IAAI,kBAAU,UAAU,SAAS,CAAC,EAC9C,IAAI,IAAI,kBAAU,YAAY,SAAS,CAAC,CAAC,EACzC,QAAQ;AACX,WAAO,WAAW,MAAM;AAAA,EAC1B;AAAA,EAEA,OAAO,oBACL,OACA,cACA,aACA,WASA;AACA,UAAM,gBAAgB,iBAAiB,MAAM,WAAW;AACxD,UAAM,CAAC,UAAU,QAAQ,IAAI,gBACzB,CAAC,MAAM,UAAU,MAAM,QAAQ,IAC/B,CAAC,MAAM,UAAU,MAAM,QAAQ;AAEnC,UAAM,eAAgB,cAAc,WAAY;AAChD,UAAM,aAAc,cAAc,MAAM,cAAe;AACvD,UAAM,aAAc,eAAe,MAAM,cAAe;AACxD,UAAM,YAAY,aAAa,aAAa,aAAa;AACzD,UAAM,cAAc,MAAM,cAAc;AACxC,UAAM,aAAa,mBAAW,OAAO,WAAW,SAAS,CAAC,EACvD,IAAI,kBAAU,YAAY,SAAS,CAAC,CAAC,EACrC,QAAQ,CAAC;AACZ,UAAM,kBAAkB,WAAW,UAAU;AAC7C,UAAM,gBAAgB,gBAAgB,MAAM,WAAW,KAAK,MAAM,WAAW;AAE7E,UAAM,CAAC,UAAU,QAAQ,IACvB,cAAc,WAAW,CAAC,cAAc,aAAa,IAAI,CAAC,eAAe,YAAY;AACvF,UAAM,CAAC,SAAS,OAAO,IACrB,cAAc,WAAW,CAAC,aAAa,YAAY,IAAI,CAAC,cAAc,WAAW;AACnF,WAAO,EAAE,OAAO,UAAU,UAAU,SAAS,SAAS,aAAa,WAAW,gBAAgB;AAAA,EAChG;AAAA,EAEA,OAAO,YAAY,OAA8B,YAAoB,WAA2B;AAC9F,UAAM,CAAC,cAAc,WAAW,UAAU,IACxC,eAAe,MAAM,WAAW,KAC5B,CAAC,MAAM,YAAY,MAAM,UAAU,MAAM,QAAQ,IACjD,CAAC,MAAM,YAAY,MAAM,UAAU,MAAM,QAAQ;AAEvD,QAAI,aAAa,YAAY;AAC3B,YAAM,IAAI;AAAA,QACR,iDAA6C,mCAAoB,WAAW,aAAa,QAAQ,CAAC,kBAAc,mCAAoB,YAAY,aAAa,QAAQ,CAAC;AAAA,MACxK;AAAA,IACF;AACA,UAAM,YAAY,YAAY,YAAY;AAC1C,UAAM,eAAe,aAAa,aAAa;AAC/C,WAAO,YAAY,cAAc;AAAA,EACnC;AAAA,EAEA,OAAO,aAAa,OAA8B,WAAmB,UAA0B;AAC7F,QAAI,cAAc,MAAM,WAAW,IAAI;AACrC,aAAO,KAAK,cAAc,UAAU,MAAM,UAAU,MAAM,QAAQ;AAAA,IACpE,OAAO;AACL,aAAO,KAAK,cAAc,UAAU,MAAM,UAAU,MAAM,QAAQ;AAAA,IACpE;AAAA,EACF;AAAA,EAEA,OAAO,wBACL,UACA,UACA,SACA,SAQA;AACA,UAAM,YAAY,SAAS,KAAK,UAAU,OAAO;AACjD,QAAI,aAAa,mBAAmB;AAClC,YAAM,IAAI,2BAA2B,gCAAgC;AAAA,IACvE;AACA,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,aAAa,YAAY;AAAA,MACzB,iBAAiB;AAAA,IACnB;AAAA,EACF;AAAA,EAEA,OAAe,cAAc,UAAkB,WAAmB,YAA4B;AAC5F,UAAM,qBAAqB,OAAO;AAClC,UAAM,YAAY,qBAAqB;AACvC,UAAM,cAAc,qBAAqB,QAAQ;AACjD,WAAO,YAAY;AAAA,EACrB;AAAA;AAAA,EAGQ,mBAAmB,UAAkB,UAA0B;AACrE,QAAI,aAAa,+BAAiB,aAAa,6BAAe;AAC5D,aAAO,4BAAc;AAAA,IACvB;AACA,WAAO,4BAAc;AAAA,EACvB;AACF;AAEA,SAAS,SAAS,cAA8B;AAC9C,SAAO,OAAO,KAAK,IAAI,IAAI,eAAe,KAAK,GAAI;AACrD;;;AgD1mBO,IAAM,SAAS;AAAA,EACpB,IAAI;AAAA,EACJ,SAAS;AAAA,EACT,gBAAgB;AAAA,EAChB,aAAa;AAAA,EACb,cAAc;AAAA;AAAA,EACd,MAAM;AACR;AAEO,IAAM,kBAA6B;AAAA,EACxC;AAAA,IACE,IAAI;AAAA,IACJ,SAAS;AAAA,IACT,gBAAgB;AAAA,IAChB,aAAa;AAAA,IACb,cACE;AAAA,IACF,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,IAAI;AAAA,IACJ,SAAS;AAAA,IACT,gBAAgB;AAAA,IAChB,aAAa;AAAA,IACb,cACE;AAAA,IACF,MAAM;AAAA,EACR;AAAA,EACA;AACF;;;ACxCA,IAAAC,gBAWO;;;ACZP,IAAAC,cAAA;AAAA,SAAAA,aAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAAC;AAAA,EAAA,0BAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAAC;AAAA,EAAA,yBAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA,yBAAAC;AAAA,EAAA,6BAAAC;AAAA,EAAA,wBAAAC;AAAA;;;ACIA,IAAAC,gBA8BO;;;AClCP;AAAA,EACE,SAAW;AAAA,EACX,MAAQ;AAAA,EACR,UAAY;AAAA,EACZ,UAAY;AAAA,EACZ,WAAa;AAAA,IACX,OAAS;AAAA,MACP;AAAA,MACA;AAAA,IACF;AAAA,IACA,OAAS;AAAA,MACP;AAAA,MACA;AAAA,IACF;AAAA,IACA,WAAa;AAAA,MACX;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EACA,WAAa,CAAC;AAAA,EACd,WAAa;AAAA,IACX;AAAA,MACE,MAAQ;AAAA,MACR,YAAc;AAAA,QACZ;AAAA,MACF;AAAA,MACA,YAAc;AAAA,QACZ;AAAA,MACF;AAAA,MACA,gBAAkB;AAAA,QAChB;AAAA,MACF;AAAA,MACA,aAAe;AAAA,QACb;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,YAAc;AAAA,QACZ;AAAA,MACF;AAAA,MACA,YAAc;AAAA,QACZ;AAAA,MACF;AAAA,MACA,gBAAkB;AAAA,QAChB;AAAA,MACF;AAAA,MACA,aAAe;AAAA,QACb;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,YAAc;AAAA,QACZ;AAAA,MACF;AAAA,MACA,YAAc;AAAA,QACZ;AAAA,MACF;AAAA,MACA,gBAAkB;AAAA,QAChB;AAAA,MACF;AAAA,MACA,aAAe,CAAC;AAAA,IAClB;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,gBAAkB;AAAA,QAChB;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,aAAe;AAAA,QACb;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,YAAc;AAAA,QACZ;AAAA,MACF;AAAA,MACA,YAAc;AAAA,QACZ;AAAA,MACF;AAAA,MACA,gBAAkB;AAAA,QAChB;AAAA,MACF;AAAA,MACA,aAAe;AAAA,QACb;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EACA,WAAa,CAAC;AAAA,EACd,OAAS;AAAA,IACP;AAAA,MACE,MAAQ;AAAA,MACR,QAAU;AAAA,QACR;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;;;ACtHA,IAAIC,aAAgD;AAE7C,SAASC,mBAA0C;AACxD,SAAOD,cAAa,CAAC;AACvB;AAEO,SAASE,kBAAiB,SAA+B;AAC9D,MAAIF,eAAc,QAAW;AAC3B,IAAAA,aAAY,CAAC,OAAO;AAAA,EACtB,OAAO;AACL,IAAAA,WAAU,KAAK,OAAO;AAAA,EACxB;AACF;AACO,SAASG,uBAAsB,UAA4B;AAChE,QAAM,IAAIH,YAAW,KAAK,CAACI,OAAMA,GAAE,SAAS,YAAY,QAAQ,CAAC;AACjE,MAAI,MAAM,QAAW;AACnB,UAAM,IAAI,MAAM,kCAAkC,QAAQ;AAAA,EAC5D;AACA,SAAO,EAAE;AACX;;;ACrBA,IAAAC,gBAAgD;;;ACJhD;AAAA,EACE;AAAA,IACE,MAAQ;AAAA,IACR,YAAc;AAAA,MACZ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,YAAc;AAAA,MACZ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,WAAa;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EACA;AAAA,IACE,MAAQ;AAAA,IACR,YAAc;AAAA,MACZ;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,YAAc;AAAA,MACZ;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,WAAa;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EACA;AAAA,IACE,MAAQ;AAAA,IACR,YAAc;AAAA,MACZ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,YAAc;AAAA,MACZ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,WAAa;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EACA;AAAA,IACE,MAAQ;AAAA,IACR,YAAc;AAAA,MACZ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,YAAc;AAAA,MACZ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,WAAa;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EACA;AAAA,IACE,MAAQ;AAAA,IACR,YAAc;AAAA,MACZ;AAAA,MACA;AAAA,IACF;AAAA,IACA,YAAc;AAAA,MACZ;AAAA,MACA;AAAA,IACF;AAAA,IACA,WAAa;AAAA,MACX;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EACA;AAAA,IACE,MAAQ;AAAA,IACR,YAAc;AAAA,MACZ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,YAAc;AAAA,MACZ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,WAAa;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EACA;AAAA,IACE,MAAQ;AAAA,IACR,YAAc;AAAA,MACZ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,YAAc;AAAA,MACZ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,WAAa;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EACA;AAAA,IACE,MAAQ;AAAA,IACR,YAAc;AAAA,MACZ;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,YAAc;AAAA,MACZ;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,WAAa;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EACA;AAAA,IACE,MAAQ;AAAA,IACR,YAAc;AAAA,MACZ;AAAA,MACA;AAAA,IACF;AAAA,IACA,YAAc;AAAA,MACZ;AAAA,MACA;AAAA,IACF;AAAA,IACA,WAAa;AAAA,MACX;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EACA;AAAA,IACE,MAAQ;AAAA,IACR,YAAc;AAAA,MACZ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,YAAc;AAAA,MACZ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,WAAa;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EACA;AAAA,IACE,MAAQ;AAAA,IACR,YAAc;AAAA,MACZ;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,YAAc;AAAA,MACZ;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,WAAa;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EACA;AAAA,IACE,MAAQ;AAAA,IACR,YAAc;AAAA,MACZ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,YAAc;AAAA,MACZ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,WAAa;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EACA;AAAA,IACE,MAAQ;AAAA,IACR,YAAc;AAAA,MACZ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,YAAc;AAAA,MACZ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,WAAa;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACF;;;ADxUO,IAAM,aAAa,oBAAe,IAAI,CAAC,SAAS,qBAAO,SAAS,IAAI,CAAC;;;AHoH5E,IAAMC,YAAN,cAAsB,8BAGpB;AAAA,EACA,aAAa,QAAgC;AAC3C,eAAO;AAAA,UACL,gCAAiB,KAAK,UAAU,MAAM;AAAA,MACtC,KAAK,SAAS;AAAA,MACR;AAAA,IACR;AAAA,EACF;AAAA,EAEA,SAAS;AAAA,IACP,cAAc;AAAA,MACZ,sBAAsB,OAAO,KAAK;AAAA,MAClC,uBAAuB,OAAO,KAAK;AAAA,IACrC;AAAA,EACF;AAAA,EAEA,GAAG,SAAqC;AACtC,WAAO,IAAI,mBAAmB,OAAO;AAAA,EACvC;AAAA,EAEA,QAAQ;AAAA,IACN,oBAAoB,OAClB,WAImD;AACnD,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACAC;AAAA,MACF;AAAA,IACF;AAAA,IACA,qBAAqB,OACnB,WAImD;AACnD,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACAA;AAAA,MACF;AAAA,IACF;AAAA,IACA,MAAM,OACJ,WAIiD;AACjD,iBAAO,0BAAW,MAAM,QAAQ,QAAQA,sBAAqB;AAAA,IAC/D;AAAA,IACA,SAAS,OACP,WAI8D;AAC9D,iBAAO,0BAAW,MAAM,WAAW,QAAQA,sBAAqB;AAAA,IAClE;AAAA,IACA,WAAW,OACT,WAImD;AACnD,iBAAO,0BAAW,MAAM,aAAa,QAAQA,sBAAqB;AAAA,IACpE;AAAA,EACF;AAAA,EAEA,aACE,YACA,OACA,SACA;AACA,WAAO,KAAK,cAAc,YAAY,OAAO,SAAS,MAAS;AAAA,EACjE;AACF;AAGO,IAAM,aAAa,IAAID;AAAA,EAC5B,uBAAS;AAAA,IACP;AAAA,IACA;AAAA,IACA;AAAA,IACM;AAAA,EACR;AACF;AACAE,kBAAiB,UAAU;AAGpB,IAAM,qBAAN,cAAiC,+BAAiB;AAAA,EACvD,YAAY,SAAkB;AAC5B,UAAM,OAAO;AAAA,EACf;AAAA,EAEA,MAAM,aAA6C;AACjD,eAAO,kCAAmB,YAAY,IAAI;AAAA,EAC5C;AAAA,EAEA,OAAO;AAAA,IACL,oBAAoB,OAClB,WACoE;AACpE,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACAD;AAAA,MACF;AAAA,IACF;AAAA,IACA,qBAAqB,OACnB,WACqE;AACrE,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACAA;AAAA,MACF;AAAA,IACF;AAAA,IACA,MAAM,OACJ,WACsD;AACtD,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACAA;AAAA,MACF;AAAA,IACF;AAAA,IACA,SAAS,OACP,WACyD;AACzD,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACAA;AAAA,MACF;AAAA,IACF;AAAA,IACA,WAAW,OACT,WAC2D;AAC3D,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACAA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,WAAW;AAAA,IACT,oBAAoB,OAClB,WAGG;AACH,iBAAO,iCAAkB,YAAY,MAAM,sBAAsB,MAAM;AAAA,IACzE;AAAA,IACA,qBAAqB,OACnB,WAGG;AACH,iBAAO,iCAAkB,YAAY,MAAM,uBAAuB,MAAM;AAAA,IAC1E;AAAA,IACA,MAAM,OACJ,WAC6D;AAC7D,iBAAO,iCAAkB,YAAY,MAAM,QAAQ,MAAM;AAAA,IAC3D;AAAA,IACA,SAAS,OACP,WACgE;AAChE,iBAAO,iCAAkB,YAAY,MAAM,WAAW,MAAM;AAAA,IAC9D;AAAA,IACA,WAAW,OACT,WACkE;AAClE,iBAAO,iCAAkB,YAAY,MAAM,aAAa,MAAM;AAAA,IAChE;AAAA,EACF;AAAA,EAQA,MAAM,UAIJ,QAAkC;AAClC,WAAO,UAAM;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,MACAA;AAAA,IACF;AAAA,EACF;AACF;;;AK5UA,IAAAE,gBA8BO;;;AClCP;AAAA,EACE,SAAW;AAAA,EACX,MAAQ;AAAA,EACR,UAAY;AAAA,EACZ,UAAY;AAAA,EACZ,WAAa;AAAA,IACX,OAAS,CAAC;AAAA,IACV,OAAS,CAAC;AAAA,IACV,WAAa,CAAC;AAAA,EAChB;AAAA,EACA,WAAa,CAAC;AAAA,EACd,WAAa;AAAA,IACX;AAAA,MACE,MAAQ;AAAA,MACR,YAAc;AAAA,QACZ;AAAA,MACF;AAAA,MACA,YAAc;AAAA,QACZ;AAAA,MACF;AAAA,MACA,gBAAkB;AAAA,QAChB;AAAA,MACF;AAAA,MACA,aAAe;AAAA,QACb;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EACA,WAAa,CAAC;AAAA,EACd,OAAS,CAAC;AACZ;;;AD+CA,IAAMC,YAAN,cAAsB,8BAAgD;AAAA,EACpE,eAAe;AACb,eAAO,oCAAqB,CAAC,GAAG,KAAK,SAAS,WAAiB,UAAU;AAAA,EAC3E;AAAA,EAEA,GAAG,SAA6C;AAC9C,WAAO,IAAI,2BAA2B,OAAO;AAAA,EAC/C;AAAA,EAEA,QAAQ;AAAA,IACN,QAAQ,OACN,WAIsD;AACtD,iBAAO,0BAAW,MAAM,UAAU,QAAQC,sBAAqB;AAAA,IACjE;AAAA,EACF;AAAA,EAEA,aAAa,YAAgB,OAAe,SAAkB;AAC5D,WAAO,KAAK,cAAc,YAAY,OAAO,SAAS,MAAS;AAAA,EACjE;AACF;AAGO,IAAM,qBAAqB,IAAID;AAAA,EACpC,uBAAS;AAAA,IACP;AAAA,IACA;AAAA,IACA;AAAA,IACM;AAAA,EACR;AACF;AACAE,kBAAiB,kBAAkB;AAG5B,IAAM,6BAAN,cAAyC,+BAAiB;AAAA,EAC/D,YAAY,SAAkB;AAC5B,UAAM,OAAO;AAAA,EACf;AAAA,EAEA,MAAM,aAAqD;AACzD,eAAO,kCAAmB,oBAAoB,IAAI;AAAA,EACpD;AAAA,EAEA,OAAO;AAAA,IACL,QAAQ,OACN,WACgE;AAChE,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACAD;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,WAAW;AAAA,IACT,QAAQ,OACN,WACuE;AACvE,iBAAO,iCAAkB,oBAAoB,MAAM,UAAU,MAAM;AAAA,IACrE;AAAA,EACF;AAAA,EAQA,MAAM,UAIJ,QAAkC;AAClC,WAAO,UAAM;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,MACAA;AAAA,IACF;AAAA,EACF;AACF;;;AE/JA,IAAAE,gBA8BO;;;AClCP,IAAAC,0BAAA;AAAA,EACE,SAAW;AAAA,EACX,MAAQ;AAAA,EACR,UAAY;AAAA,EACZ,UAAY;AAAA,EACZ,WAAa;AAAA,IACX,OAAS;AAAA,MACP;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,OAAS;AAAA,MACP;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,WAAa;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EACA,WAAa,CAAC;AAAA,EACd,WAAa;AAAA,IACX;AAAA,MACE,MAAQ;AAAA,MACR,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,gBAAkB;AAAA,QAChB;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,aAAe,CAAC;AAAA,IAClB;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,YAAc;AAAA,QACZ;AAAA,MACF;AAAA,MACA,YAAc;AAAA,QACZ;AAAA,MACF;AAAA,MACA,gBAAkB;AAAA,QAChB;AAAA,MACF;AAAA,MACA,aAAe,CAAC;AAAA,IAClB;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,YAAc;AAAA,QACZ;AAAA,MACF;AAAA,MACA,YAAc;AAAA,QACZ;AAAA,MACF;AAAA,MACA,gBAAkB;AAAA,QAChB;AAAA,MACF;AAAA,MACA,aAAe;AAAA,QACb;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,YAAc;AAAA,QACZ;AAAA,MACF;AAAA,MACA,YAAc;AAAA,QACZ;AAAA,MACF;AAAA,MACA,gBAAkB;AAAA,QAChB;AAAA,MACF;AAAA,MACA,aAAe,CAAC;AAAA,IAClB;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,YAAc;AAAA,QACZ;AAAA,MACF;AAAA,MACA,YAAc;AAAA,QACZ;AAAA,MACF;AAAA,MACA,gBAAkB;AAAA,QAChB;AAAA,MACF;AAAA,MACA,aAAe,CAAC;AAAA,IAClB;AAAA,EACF;AAAA,EACA,WAAa,CAAC;AAAA,EACd,OAAS,CAAC;AACZ;;;ADqBA,IAAMC,YAAN,cAAsB,8BAGpB;AAAA,EACA,aAAa,QAAgC;AAC3C,eAAO;AAAA,UACL,gCAAiB,KAAK,UAAU,MAAM;AAAA,MACtC,KAAK,SAAS;AAAA,MACR;AAAA,IACR;AAAA,EACF;AAAA,EAEA,GAAG,SAAqC;AACtC,WAAO,IAAIC,oBAAmB,OAAO;AAAA,EACvC;AAAA,EAEA,QAAQ;AAAA,IACN,SAAS,OACP,WAUiD;AACjD,iBAAO,0BAAW,MAAM,WAAW,QAAQC,sBAAqB;AAAA,IAClE;AAAA,IACA,eAAe,OACb,WAIiD;AACjD,iBAAO,0BAAW,MAAM,iBAAiB,QAAQA,sBAAqB;AAAA,IACxE;AAAA,IACA,OAAO,OACL,WAIoD;AACpD,iBAAO,0BAAW,MAAM,SAAS,QAAQA,sBAAqB;AAAA,IAChE;AAAA,IACA,eAAe,OACb,WAIiD;AACjD,iBAAO,0BAAW,MAAM,iBAAiB,QAAQA,sBAAqB;AAAA,IACxE;AAAA,IACA,YAAY,OACV,WAIiD;AACjD,iBAAO,0BAAW,MAAM,cAAc,QAAQA,sBAAqB;AAAA,IACrE;AAAA,EACF;AAAA,EAEA,aACE,YACA,OACA,SACA;AACA,WAAO,KAAK,cAAc,YAAY,OAAO,SAAS,MAAS;AAAA,EACjE;AACF;AAGO,IAAMC,cAAa,IAAIH;AAAA,EAC5B,uBAAS;AAAA,IACPI;AAAA,IACA;AAAA,IACA;AAAA,IACM;AAAA,EACR;AACF;AACAC,kBAAiBF,WAAU;AAGpB,IAAMF,sBAAN,cAAiC,+BAAiB;AAAA,EACvD,YAAY,SAAkB;AAC5B,UAAM,OAAO;AAAA,EACf;AAAA,EAEA,MAAM,aAA6C;AACjD,eAAO,kCAAmBE,aAAY,IAAI;AAAA,EAC5C;AAAA,EAEA,OAAO;AAAA,IACL,SAAS,OACP,WACyD;AACzD,iBAAO;AAAA,QACLA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACAD;AAAA,MACF;AAAA,IACF;AAAA,IACA,eAAe,OACb,WAC+D;AAC/D,iBAAO;AAAA,QACLC;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACAD;AAAA,MACF;AAAA,IACF;AAAA,IACA,OAAO,OACL,WACuD;AACvD,iBAAO;AAAA,QACLC;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACAD;AAAA,MACF;AAAA,IACF;AAAA,IACA,eAAe,OACb,WAC+D;AAC/D,iBAAO;AAAA,QACLC;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACAD;AAAA,MACF;AAAA,IACF;AAAA,IACA,YAAY,OACV,WAC4D;AAC5D,iBAAO;AAAA,QACLC;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACAD;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,WAAW;AAAA,IACT,SAAS,OACP,WACgE;AAChE,iBAAO,iCAAkBC,aAAY,MAAM,WAAW,MAAM;AAAA,IAC9D;AAAA,IACA,eAAe,OACb,WACsE;AACtE,iBAAO,iCAAkBA,aAAY,MAAM,iBAAiB,MAAM;AAAA,IACpE;AAAA,IACA,OAAO,OACL,WAC8D;AAC9D,iBAAO,iCAAkBA,aAAY,MAAM,SAAS,MAAM;AAAA,IAC5D;AAAA,IACA,eAAe,OACb,WACsE;AACtE,iBAAO,iCAAkBA,aAAY,MAAM,iBAAiB,MAAM;AAAA,IACpE;AAAA,IACA,YAAY,OACV,WACmE;AACnE,iBAAO,iCAAkBA,aAAY,MAAM,cAAc,MAAM;AAAA,IACjE;AAAA,EACF;AAAA,EAQA,MAAM,UAIJ,QAAkC;AAClC,WAAO,UAAM;AAAA,MACXA;AAAA,MACA;AAAA,MACA;AAAA,MACAD;AAAA,IACF;AAAA,EACF;AACF;;;AErUA,IAAAI,gBA8BO;;;AClCP;AAAA,EACE,SAAW;AAAA,EACX,MAAQ;AAAA,EACR,UAAY;AAAA,EACZ,UAAY;AAAA,EACZ,WAAa;AAAA,IACX,OAAS,CAAC;AAAA,IACV,OAAS,CAAC;AAAA,IACV,WAAa,CAAC;AAAA,EAChB;AAAA,EACA,WAAa,CAAC;AAAA,EACd,WAAa;AAAA,IACX;AAAA,MACE,MAAQ;AAAA,MACR,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,gBAAkB;AAAA,QAChB;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,aAAe;AAAA,QACb;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,gBAAkB;AAAA,QAChB;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,aAAe;AAAA,QACb;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,gBAAkB;AAAA,QAChB;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,aAAe;AAAA,QACb;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,gBAAkB;AAAA,QAChB;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,aAAe;AAAA,QACb;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,gBAAkB;AAAA,QAChB;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,aAAe;AAAA,QACb;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,gBAAkB;AAAA,QAChB;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,aAAe;AAAA,QACb;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EACA,WAAa,CAAC;AAAA,EACd,OAAS;AAAA,IACP;AAAA,MACE,MAAQ;AAAA,MACR,QAAU;AAAA,QACR;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;;;ADCA,IAAMC,YAAN,cAAsB,8BAAkD;AAAA,EACtE,eAAe;AACb,eAAO,oCAAqB,CAAC,GAAG,KAAK,SAAS,WAAiB,UAAU;AAAA,EAC3E;AAAA,EAEA,SAAS,EAAE,eAAe,EAAE,gBAAgB,OAAO,KAAK,EAAE,EAAE;AAAA,EAE5D,GAAG,SAA+C;AAChD,WAAO,IAAI,6BAA6B,OAAO;AAAA,EACjD;AAAA,EAEA,QAAQ;AAAA,IACN,wBAAwB,OACtB,WAOmD;AACnD,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACAC;AAAA,MACF;AAAA,IACF;AAAA,IACA,wBAAwB,OACtB,WAOmD;AACnD,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACAA;AAAA,MACF;AAAA,IACF;AAAA,IACA,wBAAwB,OACtB,WAamD;AACnD,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACAA;AAAA,MACF;AAAA,IACF;AAAA,IACA,wBAAwB,OACtB,WAOmD;AACnD,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACAA;AAAA,MACF;AAAA,IACF;AAAA,IACA,QAAQ,OACN,WAOmD;AACnD,iBAAO,0BAAW,MAAM,UAAU,QAAQA,sBAAqB;AAAA,IACjE;AAAA,IACA,kBAAkB,OAChB,WAOmD;AACnD,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACAA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,aAAa,YAAgB,OAAe,SAAkB;AAC5D,WAAO,KAAK,cAAc,YAAY,OAAO,SAAS,MAAS;AAAA,EACjE;AACF;AAGO,IAAM,uBAAuB,IAAID;AAAA,EACtC,uBAAS;AAAA,IACP;AAAA,IACA;AAAA,IACA;AAAA,IACM;AAAA,EACR;AACF;AACAE,kBAAiB,oBAAoB;AAG9B,IAAM,+BAAN,cAA2C,+BAAiB;AAAA,EACjE,YAAY,SAAkB;AAC5B,UAAM,OAAO;AAAA,EACf;AAAA,EAEA,MAAM,aAAuD;AAC3D,eAAO,kCAAmB,sBAAsB,IAAI;AAAA,EACtD;AAAA,EAEA,OAAO;AAAA,IACL,wBAAwB,OACtB,WAGG;AACH,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACAD;AAAA,MACF;AAAA,IACF;AAAA,IACA,wBAAwB,OACtB,WAGG;AACH,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACAA;AAAA,MACF;AAAA,IACF;AAAA,IACA,wBAAwB,OACtB,WAGG;AACH,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACAA;AAAA,MACF;AAAA,IACF;AAAA,IACA,wBAAwB,OACtB,WAGG;AACH,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACAA;AAAA,MACF;AAAA,IACF;AAAA,IACA,QAAQ,OACN,WACkE;AAClE,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACAA;AAAA,MACF;AAAA,IACF;AAAA,IACA,kBAAkB,OAChB,WAGG;AACH,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACAA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,WAAW;AAAA,IACT,wBAAwB,OACtB,WAGG;AACH,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA,wBAAwB,OACtB,WAGG;AACH,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA,wBAAwB,OACtB,WAGG;AACH,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA,wBAAwB,OACtB,WAGG;AACH,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA,QAAQ,OACN,WACyE;AACzE,iBAAO,iCAAkB,sBAAsB,MAAM,UAAU,MAAM;AAAA,IACvE;AAAA,IACA,kBAAkB,OAChB,WAGG;AACH,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAQA,MAAM,UAIJ,QAAkC;AAClC,WAAO,UAAM;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,MACAA;AAAA,IACF;AAAA,EACF;AACF;;;AE3cA,IAAAE,gBA8BO;;;AClCP;AAAA,EACE,SAAW;AAAA,EACX,MAAQ;AAAA,EACR,UAAY;AAAA,EACZ,UAAY;AAAA,EACZ,WAAa;AAAA,IACX,OAAS;AAAA,MACP;AAAA,IACF;AAAA,IACA,OAAS;AAAA,MACP;AAAA,IACF;AAAA,IACA,WAAa;AAAA,MACX;AAAA,IACF;AAAA,EACF;AAAA,EACA,WAAa,CAAC;AAAA,EACd,WAAa;AAAA,IACX;AAAA,MACE,MAAQ;AAAA,MACR,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,MACF;AAAA,MACA,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,MACF;AAAA,MACA,gBAAkB;AAAA,QAChB;AAAA,QACA;AAAA,MACF;AAAA,MACA,aAAe;AAAA,QACb;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,gBAAkB;AAAA,QAChB;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,aAAe;AAAA,QACb;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,gBAAkB;AAAA,QAChB;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,aAAe;AAAA,QACb;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,gBAAkB;AAAA,QAChB;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,aAAe;AAAA,QACb;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,gBAAkB;AAAA,QAChB;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,aAAe;AAAA,QACb;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,gBAAkB;AAAA,QAChB;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,aAAe;AAAA,QACb;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,gBAAkB;AAAA,QAChB;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,aAAe;AAAA,QACb;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,YAAc;AAAA,QACZ;AAAA,MACF;AAAA,MACA,YAAc;AAAA,QACZ;AAAA,MACF;AAAA,MACA,gBAAkB;AAAA,QAChB;AAAA,MACF;AAAA,MACA,aAAe;AAAA,QACb;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,gBAAkB;AAAA,QAChB;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,aAAe;AAAA,QACb;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,gBAAkB;AAAA,QAChB;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,aAAe;AAAA,QACb;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,gBAAkB;AAAA,QAChB;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,aAAe;AAAA,QACb;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,YAAc;AAAA,QACZ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,gBAAkB;AAAA,QAChB;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,aAAe;AAAA,QACb;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,YAAc;AAAA,QACZ;AAAA,MACF;AAAA,MACA,YAAc;AAAA,QACZ;AAAA,MACF;AAAA,MACA,gBAAkB;AAAA,QAChB;AAAA,MACF;AAAA,MACA,aAAe;AAAA,QACb;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,YAAc;AAAA,QACZ;AAAA,MACF;AAAA,MACA,YAAc;AAAA,QACZ;AAAA,MACF;AAAA,MACA,gBAAkB;AAAA,QAChB;AAAA,MACF;AAAA,MACA,aAAe;AAAA,QACb;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EACA,WAAa,CAAC;AAAA,EACd,OAAS;AAAA,IACP;AAAA,MACE,MAAQ;AAAA,MACR,QAAU;AAAA,QACR;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,QAAU;AAAA,QACR;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,QAAU;AAAA,QACR;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,QAAU;AAAA,QACR;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,OAAS;AAAA,YACP,MAAQ;AAAA,YACR,OAAS;AAAA,UACX;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;;;ADlHA,IAAMC,YAAN,cAAsB,8BAGpB;AAAA,EACA,aAAa,QAA4C;AACvD,eAAO;AAAA,UACL,gCAAiB,KAAK,UAAU,MAAM;AAAA,MACtC,KAAK,SAAS;AAAA,MACR;AAAA,IACR;AAAA,EACF;AAAA,EAEA,SAAS;AAAA,IACP,yBAAyB;AAAA,MACvB,cAAc,OAAO,KAAK;AAAA,MAC1B,cAAc,OAAO,KAAK;AAAA,IAC5B;AAAA,IACA,eAAe,EAAE,gBAAgB,OAAO,KAAK,EAAE;AAAA,IAC/C,cAAc;AAAA,MACZ,MAAM,OAAO,GAAG;AAAA,MAChB,UAAU,OAAO,GAAG;AAAA,MACpB,MAAM,OAAO,GAAG;AAAA,IAClB;AAAA,IACA,eAAe;AAAA,MACb,yBAAyB,OAAO,KAAK;AAAA,MACrC,iBAAiB,OAAO,KAAK;AAAA,IAC/B;AAAA,EACF;AAAA,EAEA,GAAG,SAAiD;AAClD,WAAO,IAAI,+BAA+B,OAAO;AAAA,EACnD;AAAA,EAEA,QAAQ;AAAA,IACN,cAAc,OACZ,WAMG;AACH,iBAAO,0BAAW,MAAM,gBAAgB,QAAQC,sBAAqB;AAAA,IACvE;AAAA,IACA,wBAAwB,OACtB,WAImD;AACnD,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACAA;AAAA,MACF;AAAA,IACF;AAAA,IACA,wBAAwB,OACtB,WAImD;AACnD,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACAA;AAAA,MACF;AAAA,IACF;AAAA,IACA,wBAAwB,OACtB,WAUmD;AACnD,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACAA;AAAA,MACF;AAAA,IACF;AAAA,IACA,wBAAwB,OACtB,WAImD;AACnD,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACAA;AAAA,MACF;AAAA,IACF;AAAA,IACA,QAAQ,OACN,WAImD;AACnD,iBAAO,0BAAW,MAAM,UAAU,QAAQA,sBAAqB;AAAA,IACjE;AAAA,IACA,kBAAkB,OAChB,WAImD;AACnD,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACAA;AAAA,MACF;AAAA,IACF;AAAA,IACA,YAAY,OACV,WAIsD;AACtD,iBAAO,0BAAW,MAAM,cAAc,QAAQA,sBAAqB;AAAA,IACrE;AAAA,IACA,UAAU,OACR,WAIsD;AACtD,iBAAO,0BAAW,MAAM,YAAY,QAAQA,sBAAqB;AAAA,IACnE;AAAA,IACA,gBAAgB,OACd,WAIsD;AACtD,iBAAO,0BAAW,MAAM,kBAAkB,QAAQA,sBAAqB;AAAA,IACzE;AAAA,IACA,cAAc,OACZ,WAIsD;AACtD,iBAAO,0BAAW,MAAM,gBAAgB,QAAQA,sBAAqB;AAAA,IACvE;AAAA,IACA,oBAAoB,OAClB,WAIsD;AACtD,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACAA;AAAA,MACF;AAAA,IACF;AAAA,IACA,oBAAoB,OAClB,WAImD;AACnD,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACAA;AAAA,MACF;AAAA,IACF;AAAA,IACA,oBAAoB,OAClB,WAImD;AACnD,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACAA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,aACE,YACA,OACA,SACA;AACA,WAAO,KAAK,cAAc,YAAY,OAAO,SAAS,MAAS;AAAA,EACjE;AACF;AAGO,IAAM,yBAAyB,IAAID;AAAA,EACxC,uBAAS;AAAA,IACP;AAAA,IACA;AAAA,IACA;AAAA,IACM;AAAA,EACR;AACF;AACAE,kBAAiB,sBAAsB;AAGhC,IAAM,iCAAN,cAA6C,+BAAiB;AAAA,EACnE,YAAY,SAAkB;AAC5B,UAAM,OAAO;AAAA,EACf;AAAA,EAEA,MAAM,aAAyD;AAC7D,eAAO,kCAAmB,wBAAwB,IAAI;AAAA,EACxD;AAAA,EAEA,OAAO;AAAA,IACL,cAAc,OACZ,WAGG;AACH,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACAD;AAAA,MACF;AAAA,IACF;AAAA,IACA,wBAAwB,OACtB,WAGG;AACH,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACAA;AAAA,MACF;AAAA,IACF;AAAA,IACA,wBAAwB,OACtB,WAGG;AACH,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACAA;AAAA,MACF;AAAA,IACF;AAAA,IACA,wBAAwB,OACtB,WAGG;AACH,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACAA;AAAA,MACF;AAAA,IACF;AAAA,IACA,wBAAwB,OACtB,WAGG;AACH,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACAA;AAAA,MACF;AAAA,IACF;AAAA,IACA,QAAQ,OACN,WACoE;AACpE,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACAA;AAAA,MACF;AAAA,IACF;AAAA,IACA,kBAAkB,OAChB,WAGG;AACH,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACAA;AAAA,MACF;AAAA,IACF;AAAA,IACA,YAAY,OACV,WACwE;AACxE,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACAA;AAAA,MACF;AAAA,IACF;AAAA,IACA,UAAU,OACR,WACsE;AACtE,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACAA;AAAA,MACF;AAAA,IACF;AAAA,IACA,gBAAgB,OACd,WAGG;AACH,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACAA;AAAA,MACF;AAAA,IACF;AAAA,IACA,cAAc,OACZ,WAGG;AACH,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACAA;AAAA,MACF;AAAA,IACF;AAAA,IACA,oBAAoB,OAClB,WAGG;AACH,iBAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACAA;AAAA,MACF;AAAA,IACF;AAAA,IACA,oBAAoB,OAC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","names":["ts_exports","scripts_exports","loadDeployments","import_web3","import_web3","c","import_web3","Factory","import_web3","Factory","import_web3","Factory","import_web3","Factory","import_web3","Factory","import_web3","Factory","import_web3","Factory","import_web3","Factory","import_web3","Factory","import_web3","contracts","LogLevel","BigNumber","compare","format","result","import_web3","ts_exports","DexAccount","DexAccountInstance","TestToken","TestTokenInstance","getAllContracts","getContractByCodeHash","registerContract","import_web3","contracts","getAllContracts","registerContract","getContractByCodeHash","c","import_web3","Factory","getContractByCodeHash","registerContract","import_web3","Factory","getContractByCodeHash","registerContract","import_web3","DexAccount_ral_default","Factory","DexAccountInstance","getContractByCodeHash","DexAccount","DexAccount_ral_default","registerContract","import_web3","Factory","getContractByCodeHash","registerContract","import_web3","Factory","getContractByCodeHash","registerContract","import_web3","Factory","getContractByCodeHash","registerContract","import_web3","Factory","getContractByCodeHash","registerContract","import_web3","Factory","getContractByCodeHash","registerContract","import_web3","Factory","getContractByCodeHash","registerContract","import_web3","Factory","getContractByCodeHash","registerContract","import_web3","Factory","getContractByCodeHash","registerContract","import_web3","TestToken_ral_default","Factory","TestTokenInstance","getContractByCodeHash","TestToken","TestToken_ral_default","registerContract","import_web3","Factory","getContractByCodeHash","registerContract","import_web3","Factory","getContractByCodeHash","registerContract","scripts_exports","import_web3","getContractByCodeHash","deployments_testnet_default","deployments_devnet_default","toDeployments","contracts","DexAccount","loadDeployments","deployments_testnet_default","deployments_devnet_default","import_web3","Decimal","import_decimal","Decimal","normalizeAddress","index","loadDeployments","import_web3","ts_exports","FullMathTest","FullMathTestInstance","getAllContracts","getContractByCodeHash","registerContract","import_web3","contracts","getAllContracts","registerContract","getContractByCodeHash","c","import_web3","structs_ral_default","AllStructs","structs_ral_default","Factory","AllStructs","getContractByCodeHash","registerContract","import_web3","FullMathTest_ral_default","Factory","AllStructs","FullMathTestInstance","getContractByCodeHash","FullMathTest","FullMathTest_ral_default","registerContract","import_web3","import_web3","Factory","AllStructs","getContractByCodeHash","registerContract","import_web3","import_web3","Factory","AllStructs","getContractByCodeHash","registerContract","import_web3","Factory","AllStructs","getContractByCodeHash","registerContract","import_web3","Factory","AllStructs","getContractByCodeHash","registerContract","import_web3","Factory","AllStructs","getContractByCodeHash","registerContract","import_web3","import_web3","Factory","AllStructs","getContractByCodeHash","registerContract","import_web3","import_web3","Factory","AllStructs","getContractByCodeHash","registerContract","import_web3","AllStructs","getContractByCodeHash","deployments_testnet_default","deployments_devnet_default","toDeployments","contracts","loadDeployments","deployments_testnet_default","deployments_devnet_default","loadDeployments"]}