@myx-trade/sdk 1.0.8-beta.9 → 1.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunk-AOF7T7AK.js +2 -0
- package/dist/chunk-KHOL4KXA.mjs +2 -0
- package/dist/index-C4yQUiAJ.d.mts +749 -0
- package/dist/index-C4yQUiAJ.d.ts +749 -0
- package/dist/index.d.mts +126 -866
- package/dist/index.d.ts +126 -866
- package/dist/index.js +2 -2
- package/dist/index.mjs +2 -2
- package/dist/lp.d.mts +2 -0
- package/dist/lp.d.ts +2 -0
- package/dist/lp.js +1 -0
- package/dist/lp.mjs +1 -0
- package/package.json +7 -2
- package/dist/index.js.map +0 -1
- package/dist/index.mjs.map +0 -1
package/dist/index.mjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/lp/base/index.ts","../src/web3/providers.ts","../src/abi/LiquidityRouter.json","../src/web3/viemClients.ts","../src/config/chain.ts","../src/config/fee.ts","../src/config/chains/LINEA_SEPOLIA.ts","../src/config/chains/ARB_SEPOLIA.ts","../src/config/chains/BSC_TESTNET.ts","../src/config/chains/LINEA_MAINNET.ts","../src/config/chains/ARB_MAINNET.ts","../src/config/chains/BSC_MAINNET.ts","../src/config/chains/index.ts","../src/abi/PoolManager.json","../src/abi/IERC20Metadata.json","../src/abi/QuotePool.json","../src/abi/BasePool.json","../src/abi/Broker.json","../src/abi/PoolToken.json","../src/abi/MarketManager.json","../src/abi/DataProvider.json","../src/abi/Forwarder.json","../src/abi/Reimbursement.json","../src/abi/DisputeCourt.json","../src/abi/Account.json","../src/config/address/ARB_TEST_SEPOLIA.ts","../src/config/address/ARB_BETA_SEPOLIA.ts","../src/config/address/LINEA_SEPOLIA.ts","../src/config/address/LINEA_BETA_SEPOLIA.ts","../src/config/address/BSC_TEST_NET.ts","../src/config/address/BSC_BETA_NET.ts","../src/api/request.ts","../src/api/type.ts","../src/api/account/index.ts","../src/api/seamless/index.ts","../src/api/pool/index.ts","../src/api/index.ts","../src/web3/index.ts","../src/config/address/BSC_MAINET_NET.ts","../src/config/address/index.ts","../src/logger/sink.ts","../src/logger/index.ts","../src/config/error.ts","../src/common/balanceOf.ts","../src/common/checkParams.ts","../src/common/allowance.ts","../src/common/tradingGas.ts","../src/config/decimals.ts","../src/common/approve.ts","../src/common/price.ts","../src/lp/base/claim.ts","../src/lp/base/deposit.ts","../src/lp/base/preview.ts","../src/lp/getPoolInfo.ts","../src/common/getTpSlParams.ts","../src/utils/number.ts","../src/lp/base/withdraw.ts","../src/common/withdrawData.ts","../src/lp/pool/get.ts","../src/lp/pool/create.ts","../src/lp/pool/getUserGenesisShare.ts","../src/lp/pool/addTpSl.ts","../src/lp/pool/cancel.ts","../src/common/tokenInfo.ts","../src/common/index.ts","../src/lp/pool/reprime.ts","../src/lp/pool/orders.ts","../src/lp/quote/preview.ts","../src/lp/base/rewards.ts","../src/lp/base/price.ts","../src/lp/quote/index.ts","../src/lp/quote/deposit.ts","../src/lp/quote/withdraw.ts","../src/lp/quote/transfer.ts","../src/lp/quote/rewards.ts","../src/lp/quote/claim.ts","../src/lp/quote/price.ts","../src/lp/market/index.ts","../src/lp/market/getMarket.ts","../src/lp/market/getOracleFee.ts","../src/lp/index.ts","../src/manager/subscription/websocket/socket.ts","../src/crypto/md5.ts","../src/manager/subscription/websocket/utils.ts","../src/manager/error/const.ts","../src/manager/const/chain.ts","../src/manager/const/socket.ts","../src/manager/subscription/SubScription.ts","../src/signer/adapters.ts","../src/signer/viemWalletFromSigner.ts","../src/manager/config/index.ts","../src/manager/markets/index.ts","../src/manager/position/index.ts","../src/config/con.ts","../src/types/trading.ts","../src/manager/order/index.ts","../src/manager/utils/index.ts","../src/abi/Emiter.json","../src/config/customErrorMap.ts","../src/manager/account/index.ts","../src/api/utils.ts","../src/manager/api/request.ts","../src/manager/api/index.ts","../src/manager/seamless/index.ts","../src/utils/index.ts","../src/manager/appeal/index.ts","../src/manager/base/BaseMyxClient.ts","../src/manager/referrals/index.ts","../src/manager/api/appeal-type.ts","../src/manager/index.ts","../src/index.ts"],"sourcesContent":["export { claimBasePoolRebate, claimBasePoolRebates } from \"./claim.js\";\nexport { deposit } from \"./deposit.js\";\nexport {withdraw, withdrawableLpAmount} from \"./withdraw.js\";\nexport {getRewards} from \"./rewards.js\";\nexport {previewUserWithdrawData} from './preview.js'\nexport {getLpPrice} from \"./price.js\";\n","import { getContract as getViemContract, type Abi } from \"viem\";\nimport LiquidityRouter_ABI from \"@/abi/LiquidityRouter.json\";\nimport { ChainId } from \"@/config/chain.js\";\nimport { getPublicClient, getWalletClient } from \"@/web3/viemClients.js\";\nimport type { WalletClient } from \"viem\";\nimport type { Address } from \"@/api\"\n\n/** Cast viem getContract result so .read/.write and legacy contract.methodName() accept any ABI function name. */\nexport type ContractLike = {\n address: Address;\n abi: Abi;\n read: Record<string, (...args: any[]) => Promise<any>>;\n write?: Record<string, (...args: any[]) => Promise<any>>;\n estimateGas?: Record<string, (...args: any[]) => Promise<any>>;\n simulate?: Record<string, (...args: any[]) => Promise<any>>;\n /** Allow legacy ethers-style contract.methodName() (e.g. in lp/) until migrated to .read/.write */\n [key: string]: any;\n};\nfunction asContract<T>(c: T): ContractLike {\n return c as unknown as ContractLike;\n}\nimport PoolConfigurator_ABI from \"@/abi/PoolConfigurator.json\";\nimport PoolManager_ABI from \"@/abi/PoolManager.json\";\nimport IERC20Metadata_ABI from \"@/abi/IERC20Metadata.json\";\nimport QuotePool_ABI from \"@/abi/QuotePool.json\";\nimport BasePool_ABI from \"@/abi/BasePool.json\";\nimport Broker_ABI from \"@/abi/Broker.json\";\nimport OrderManager_ABI from \"@/abi/OrderManager.json\";\nimport Pyth_ABI from \"@/abi/IPyth.json\";\nimport PoolToken_ABI from \"@/abi/PoolToken.json\";\nimport MarketManager_ABI from \"@/abi/MarketManager.json\";\nimport DataProvider_ABI from \"@/abi/DataProvider.json\";\nimport Forwarder_ABI from \"@/abi/Forwarder.json\";\nimport Reimbursement_ABI from \"@/abi/Reimbursement.json\";\nimport DisputeCourt_ABI from \"@/abi/DisputeCourt.json\";\nimport Account_ABI from \"@/abi/Account.json\";\nimport { getContractAddressByChainId } from \"@/config/address\";\n\nexport enum ProviderType {\n JSON,\n Signer,\n}\n\nexport const getTokenContract = (chainId: ChainId, tokenAddress: string) => {\n const client = getPublicClient(chainId);\n return asContract(getViemContract({\n address: tokenAddress as Address,\n abi: IERC20Metadata_ABI as Abi,\n client,\n }));\n};\n\nexport const getERC20Contract = async (chainId: ChainId, tokenAddress: string) => {\n const client = await getWalletClient(chainId);\n return asContract(getViemContract({\n address: tokenAddress as Address,\n abi: IERC20Metadata_ABI as Abi,\n client,\n }));\n};\n\nexport const getAccount = async (chainId: ChainId) => {\n const client = await getWalletClient(chainId);\n const [account] = await client.getAddresses();\n return account ?? undefined;\n};\n\nexport const getLiquidityRouterContract = async (chainId: ChainId) => {\n const addresses = getContractAddressByChainId(chainId);\n const client = await getWalletClient(chainId);\n return asContract(getViemContract({\n address: addresses.LIQUIDITY_ROUTER as Address,\n abi: LiquidityRouter_ABI as Abi,\n client,\n }));\n};\n\nexport const getPoolManagerContract = (chainId: ChainId, type = ProviderType.Signer) => {\n const addresses = getContractAddressByChainId(chainId);\n const client = type === ProviderType.JSON ? getPublicClient(chainId) : null;\n if (client) {\n return Promise.resolve(asContract(getViemContract({ address: addresses.POOL_MANAGER as Address, abi: PoolManager_ABI as Abi, client })));\n }\n return getWalletClient(chainId).then((walletClient) =>\n asContract(getViemContract({ address: addresses.POOL_MANAGER as Address, abi: PoolManager_ABI as Abi, client: walletClient }))\n );\n};\n\nexport const getPoolConfiguratorContract = async (chainId: ChainId) => {\n const addresses = getContractAddressByChainId(chainId);\n const client = await getWalletClient(chainId);\n return asContract(getViemContract({\n address: addresses.POOL_MANAGER as Address,\n abi: PoolConfigurator_ABI as Abi,\n client,\n }));\n};\n\nexport const getQuotePoolContract = (chainId: ChainId, type: ProviderType = ProviderType.JSON) => {\n const addresses = getContractAddressByChainId(chainId);\n const client = type === ProviderType.JSON ? getPublicClient(chainId) : null;\n if (client) {\n return Promise.resolve(asContract(getViemContract({ address: addresses.QUOTE_POOL as Address, abi: QuotePool_ABI as Abi, client })));\n }\n return getWalletClient(chainId).then((walletClient) =>\n asContract(getViemContract({ address: addresses.QUOTE_POOL as Address, abi: QuotePool_ABI as Abi, client: walletClient }))\n );\n};\n\nexport const getBasePoolContract = (chainId: ChainId, type: ProviderType = ProviderType.JSON) => {\n const addresses = getContractAddressByChainId(chainId);\n const client = type === ProviderType.JSON ? getPublicClient(chainId) : null;\n if (client) {\n return Promise.resolve(asContract(getViemContract({ address: addresses.BASE_POOL as Address, abi: BasePool_ABI as Abi, client })));\n }\n return getWalletClient(chainId).then((walletClient) =>\n asContract(getViemContract({ address: addresses.BASE_POOL as Address, abi: BasePool_ABI as Abi, client: walletClient }))\n );\n};\n\nexport const getBrokerSingerContract = async (chainId: ChainId, brokerAddress: string) => {\n const client = await getWalletClient(chainId);\n return asContract(getViemContract({\n address: brokerAddress as Address,\n abi: Broker_ABI as Abi,\n client,\n }));\n};\n\nexport const getSeamlessBrokerContract = (brokerAddress: string, walletClient: WalletClient) => {\n return asContract(getViemContract({\n address: brokerAddress as Address,\n abi: Broker_ABI as Abi,\n client: walletClient,\n }));\n};\n\nexport const getBrokerContract = (chainId: ChainId, brokerAddress: string) => {\n const client = getPublicClient(chainId);\n return asContract(getViemContract({\n address: brokerAddress as Address,\n abi: Broker_ABI as Abi,\n client,\n }));\n};\n\nexport const getOrderManagerSingerContract = async (chainId: ChainId) => {\n const addresses = getContractAddressByChainId(chainId);\n const client = await getWalletClient(chainId);\n return asContract(getViemContract({\n address: addresses.ORDER_MANAGER as Address,\n abi: OrderManager_ABI as Abi,\n client,\n }));\n};\n\nexport const getPythContract = (chainId: ChainId, type: ProviderType = ProviderType.JSON) => {\n const addresses = getContractAddressByChainId(chainId);\n const client = type === ProviderType.JSON ? getPublicClient(chainId) : null;\n if (client) {\n return Promise.resolve(asContract(getViemContract({ address: addresses.PYTH as Address, abi: Pyth_ABI as Abi, client })));\n }\n return getWalletClient(chainId).then((walletClient) =>\n asContract(getViemContract({ address: addresses.PYTH as Address, abi: Pyth_ABI as Abi, client: walletClient }))\n );\n};\n\nexport const getPoolTokenContract = (chainId: ChainId, lpTokenAddress: string, type: ProviderType = ProviderType.JSON) => {\n const client = type === ProviderType.JSON ? getPublicClient(chainId) : null;\n if (client) {\n return Promise.resolve(asContract(getViemContract({ address: lpTokenAddress as Address, abi: PoolToken_ABI as Abi, client })));\n }\n return getWalletClient(chainId).then((walletClient) =>\n asContract(getViemContract({ address: lpTokenAddress as Address, abi: PoolToken_ABI as Abi, client: walletClient }))\n );\n};\n\nexport const getMarketManageContract = (chainId: ChainId, type: ProviderType = ProviderType.JSON) => {\n const addresses = getContractAddressByChainId(chainId);\n const client = type === ProviderType.JSON ? getPublicClient(chainId) : null;\n if (client) {\n return Promise.resolve(asContract(getViemContract({ address: addresses.MARKET_MANAGER as Address, abi: MarketManager_ABI as Abi, client })));\n }\n return getWalletClient(chainId).then((walletClient) =>\n asContract(getViemContract({ address: addresses.MARKET_MANAGER as Address, abi: MarketManager_ABI as Abi, client: walletClient }))\n );\n};\n\nexport const getDataProviderContract = (chainId: ChainId, type: ProviderType = ProviderType.JSON) => {\n const addresses = getContractAddressByChainId(chainId);\n const client = type === ProviderType.JSON ? getPublicClient(chainId) : null;\n if (client) {\n return Promise.resolve(asContract(getViemContract({ address: addresses.DATA_PROVIDER as Address, abi: DataProvider_ABI as Abi, client })));\n }\n return getWalletClient(chainId).then((walletClient) =>\n asContract(getViemContract({ address: addresses.DATA_PROVIDER as Address, abi: DataProvider_ABI as Abi, client: walletClient }))\n );\n};\n\nexport const getAccountContract = async (chainId: ChainId) => {\n const addresses = getContractAddressByChainId(chainId);\n const client = await getWalletClient(chainId);\n return asContract(getViemContract({ address: addresses.Account as Address, abi: Account_ABI as Abi, client }));\n};\n\nexport const getForwarderContract = (chainId: ChainId, type: ProviderType = ProviderType.JSON) => {\n const addresses = getContractAddressByChainId(chainId);\n const client = type === ProviderType.JSON ? getPublicClient(chainId) : null;\n if (client) {\n return Promise.resolve(asContract(getViemContract({ address: addresses.FORWARDER as Address, abi: Forwarder_ABI as Abi, client })));\n }\n return getWalletClient(chainId).then((walletClient) =>\n asContract(getViemContract({ address: addresses.FORWARDER as Address, abi: Forwarder_ABI as Abi, client: walletClient }))\n );\n};\n\nexport const getReimbursementContract = (chainId: ChainId, type: ProviderType = ProviderType.JSON) => {\n const addresses = getContractAddressByChainId(chainId);\n const client = type === ProviderType.JSON ? getPublicClient(chainId) : null;\n if (client) {\n return Promise.resolve(asContract(getViemContract({ address: addresses.REIMBURSEMENT as Address, abi: Reimbursement_ABI as Abi, client })));\n }\n return getWalletClient(chainId).then((walletClient) =>\n asContract(getViemContract({ address: addresses.REIMBURSEMENT as Address, abi: Reimbursement_ABI as Abi, client: walletClient }))\n );\n};\n\nexport const getDisputeCourtContract = (chainId: ChainId, type: ProviderType = ProviderType.JSON) => {\n const addresses = getContractAddressByChainId(chainId);\n const client = type === ProviderType.JSON ? getPublicClient(chainId) : null;\n if (client) {\n return Promise.resolve(asContract(getViemContract({ address: addresses.DISPUTE_COURT as Address, abi: DisputeCourt_ABI as Abi, client })));\n }\n return getWalletClient(chainId).then((walletClient) =>\n asContract(getViemContract({ address: addresses.DISPUTE_COURT as Address, abi: DisputeCourt_ABI as Abi, client: walletClient }))\n );\n};\n","[\n {\n \"type\": \"error\",\n \"name\": \"AddressEmptyCode\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"target\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"DifferentMarket\",\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"fromPoolId\"\n },\n {\n \"type\": \"bytes32\",\n \"name\": \"toPoolId\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ERC1967InvalidImplementation\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"implementation\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ERC1967NonPayable\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"FailedCall\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InsufficientQuoteIn\",\n \"inputs\": [\n {\n \"type\": \"uint256\",\n \"name\": \"orderId\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"quoteIn\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"exchangeDelta\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidAmount\",\n \"inputs\": [\n {\n \"type\": \"uint256\",\n \"name\": \"amount\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidInitialization\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidLiquidityAmount\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidTpsl\",\n \"inputs\": [\n {\n \"type\": \"uint256\",\n \"name\": \"orderId\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"NotAddressManager\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotDependencyManager\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotInitializing\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotProxyAdmin\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotReachedPrice\",\n \"inputs\": [\n {\n \"type\": \"uint256\",\n \"name\": \"orderId\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"price\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"triggerPrice\"\n },\n {\n \"type\": \"uint8\",\n \"name\": \"triggerType\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ReentrancyGuardReentrantCall\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"SafeERC20FailedOperation\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"token\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"SamePoolMigration\",\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"SlippageExceeded\",\n \"inputs\": [\n {\n \"type\": \"uint256\",\n \"name\": \"expected\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"actual\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"UUPSUnauthorizedCallContext\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"UUPSUnsupportedProxiableUUID\",\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"slot\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"Initialized\",\n \"inputs\": [\n {\n \"type\": \"uint64\",\n \"name\": \"version\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"Upgraded\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"implementation\",\n \"indexed\": true\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"UPGRADE_INTERFACE_VERSION\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"string\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"__ERC2771ContextUpgradeable_init\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"trustedForwarder_\"\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"addTpsl\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"tuple\",\n \"name\": \"params\",\n \"components\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"uint8\",\n \"name\": \"poolType\"\n },\n {\n \"type\": \"tuple[]\",\n \"name\": \"tpslParams\",\n \"components\": [\n {\n \"type\": \"uint256\",\n \"name\": \"amount\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"triggerPrice\"\n },\n {\n \"type\": \"uint8\",\n \"name\": \"triggerType\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"minQuoteOut\"\n }\n ]\n }\n ]\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"cancelTpsl\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"uint256\",\n \"name\": \"orderId\"\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"claimBasePoolRebate\",\n \"constant\": false,\n \"stateMutability\": \"payable\",\n \"payable\": true,\n \"inputs\": [\n {\n \"type\": \"tuple[]\",\n \"name\": \"prices\",\n \"components\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"uint8\",\n \"name\": \"oracleType\"\n },\n {\n \"type\": \"uint64\",\n \"name\": \"publishTime\"\n },\n {\n \"type\": \"bytes\",\n \"name\": \"oracleUpdateData\"\n }\n ]\n },\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"address\",\n \"name\": \"recipient\"\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"claimBasePoolRebate\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"address\",\n \"name\": \"recipient\"\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"claimBasePoolRebates\",\n \"constant\": false,\n \"stateMutability\": \"payable\",\n \"payable\": true,\n \"inputs\": [\n {\n \"type\": \"tuple[]\",\n \"name\": \"prices\",\n \"components\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"uint8\",\n \"name\": \"oracleType\"\n },\n {\n \"type\": \"uint64\",\n \"name\": \"publishTime\"\n },\n {\n \"type\": \"bytes\",\n \"name\": \"oracleUpdateData\"\n }\n ]\n },\n {\n \"type\": \"bytes32[]\",\n \"name\": \"poolIds\"\n },\n {\n \"type\": \"address\",\n \"name\": \"recipient\"\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"claimBasePoolRebates\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"bytes32[]\",\n \"name\": \"poolIds\"\n },\n {\n \"type\": \"address\",\n \"name\": \"recipient\"\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"claimQuotePoolRebate\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"address\",\n \"name\": \"recipient\"\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"claimQuotePoolRebate\",\n \"constant\": false,\n \"stateMutability\": \"payable\",\n \"payable\": true,\n \"inputs\": [\n {\n \"type\": \"tuple[]\",\n \"name\": \"prices\",\n \"components\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"uint8\",\n \"name\": \"oracleType\"\n },\n {\n \"type\": \"uint64\",\n \"name\": \"publishTime\"\n },\n {\n \"type\": \"bytes\",\n \"name\": \"oracleUpdateData\"\n }\n ]\n },\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"address\",\n \"name\": \"recipient\"\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"claimQuotePoolRebates\",\n \"constant\": false,\n \"stateMutability\": \"payable\",\n \"payable\": true,\n \"inputs\": [\n {\n \"type\": \"tuple[]\",\n \"name\": \"prices\",\n \"components\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"uint8\",\n \"name\": \"oracleType\"\n },\n {\n \"type\": \"uint64\",\n \"name\": \"publishTime\"\n },\n {\n \"type\": \"bytes\",\n \"name\": \"oracleUpdateData\"\n }\n ]\n },\n {\n \"type\": \"bytes32[]\",\n \"name\": \"poolIds\"\n },\n {\n \"type\": \"address\",\n \"name\": \"recipient\"\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"claimQuotePoolRebates\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"bytes32[]\",\n \"name\": \"poolIds\"\n },\n {\n \"type\": \"address\",\n \"name\": \"recipient\"\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"currentOrderId\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"depositBase\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"tuple\",\n \"name\": \"params\",\n \"components\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"amountIn\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"minAmountOut\"\n },\n {\n \"type\": \"address\",\n \"name\": \"recipient\"\n },\n {\n \"type\": \"tuple[]\",\n \"name\": \"tpslParams\",\n \"components\": [\n {\n \"type\": \"uint256\",\n \"name\": \"amount\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"triggerPrice\"\n },\n {\n \"type\": \"uint8\",\n \"name\": \"triggerType\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"minQuoteOut\"\n }\n ]\n }\n ]\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"depositBase\",\n \"constant\": false,\n \"stateMutability\": \"payable\",\n \"payable\": true,\n \"inputs\": [\n {\n \"type\": \"tuple[]\",\n \"name\": \"prices\",\n \"components\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"uint8\",\n \"name\": \"oracleType\"\n },\n {\n \"type\": \"uint64\",\n \"name\": \"publishTime\"\n },\n {\n \"type\": \"bytes\",\n \"name\": \"oracleUpdateData\"\n }\n ]\n },\n {\n \"type\": \"tuple\",\n \"name\": \"params\",\n \"components\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"amountIn\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"minAmountOut\"\n },\n {\n \"type\": \"address\",\n \"name\": \"recipient\"\n },\n {\n \"type\": \"tuple[]\",\n \"name\": \"tpslParams\",\n \"components\": [\n {\n \"type\": \"uint256\",\n \"name\": \"amount\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"triggerPrice\"\n },\n {\n \"type\": \"uint8\",\n \"name\": \"triggerType\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"minQuoteOut\"\n }\n ]\n }\n ]\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"depositQuote\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"tuple\",\n \"name\": \"params\",\n \"components\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"amountIn\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"minAmountOut\"\n },\n {\n \"type\": \"address\",\n \"name\": \"recipient\"\n },\n {\n \"type\": \"tuple[]\",\n \"name\": \"tpslParams\",\n \"components\": [\n {\n \"type\": \"uint256\",\n \"name\": \"amount\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"triggerPrice\"\n },\n {\n \"type\": \"uint8\",\n \"name\": \"triggerType\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"minQuoteOut\"\n }\n ]\n }\n ]\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"depositQuote\",\n \"constant\": false,\n \"stateMutability\": \"payable\",\n \"payable\": true,\n \"inputs\": [\n {\n \"type\": \"tuple[]\",\n \"name\": \"prices\",\n \"components\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"uint8\",\n \"name\": \"oracleType\"\n },\n {\n \"type\": \"uint64\",\n \"name\": \"publishTime\"\n },\n {\n \"type\": \"bytes\",\n \"name\": \"oracleUpdateData\"\n }\n ]\n },\n {\n \"type\": \"tuple\",\n \"name\": \"params\",\n \"components\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"amountIn\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"minAmountOut\"\n },\n {\n \"type\": \"address\",\n \"name\": \"recipient\"\n },\n {\n \"type\": \"tuple[]\",\n \"name\": \"tpslParams\",\n \"components\": [\n {\n \"type\": \"uint256\",\n \"name\": \"amount\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"triggerPrice\"\n },\n {\n \"type\": \"uint8\",\n \"name\": \"triggerType\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"minQuoteOut\"\n }\n ]\n }\n ]\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"executeTpsl\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"uint256\",\n \"name\": \"orderId\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"quoteInIfNecessary\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"minOut\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"uint256\",\n \"name\": \"baseOut\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"quoteOut\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"executeTpsl\",\n \"constant\": false,\n \"stateMutability\": \"payable\",\n \"payable\": true,\n \"inputs\": [\n {\n \"type\": \"tuple[]\",\n \"name\": \"prices\",\n \"components\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"uint8\",\n \"name\": \"oracleType\"\n },\n {\n \"type\": \"uint64\",\n \"name\": \"publishTime\"\n },\n {\n \"type\": \"bytes\",\n \"name\": \"oracleUpdateData\"\n }\n ]\n },\n {\n \"type\": \"uint256\",\n \"name\": \"orderId\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"quoteInIfNecessary\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"minOut\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"uint256\",\n \"name\": \"baseOut\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"quoteOut\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"getAddressManager\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"address\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"getDependencyAddress\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"identifier\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"address\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"getImplementation\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"address\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"getTpslData\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"uint256\",\n \"name\": \"orderId\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"tuple\",\n \"components\": [\n {\n \"type\": \"address\",\n \"name\": \"user\"\n },\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"uint8\",\n \"name\": \"poolType\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"amount\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"triggerPrice\"\n },\n {\n \"type\": \"uint8\",\n \"name\": \"triggerType\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"minQuoteOut\"\n }\n ]\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"getUserTpslOrderIds\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"user\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"uint256[]\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"initialize\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"addressManager\"\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"isTrustedForwarder\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"forwarder\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"bool\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"migrateLiquidity\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"tuple\",\n \"name\": \"params\",\n \"components\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"fromPoolId\"\n },\n {\n \"type\": \"bytes32\",\n \"name\": \"toPoolId\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"amount\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"minLpOut\"\n }\n ]\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"proxiableUUID\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"trustedForwarder\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"address\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"upgradeTo\",\n \"constant\": false,\n \"stateMutability\": \"payable\",\n \"payable\": true,\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"newImplementation\"\n },\n {\n \"type\": \"bytes\",\n \"name\": \"data\"\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"upgradeToAndCall\",\n \"constant\": false,\n \"stateMutability\": \"payable\",\n \"payable\": true,\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"newImplementation\"\n },\n {\n \"type\": \"bytes\",\n \"name\": \"data\"\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"withdrawBase\",\n \"constant\": false,\n \"stateMutability\": \"payable\",\n \"payable\": true,\n \"inputs\": [\n {\n \"type\": \"tuple[]\",\n \"name\": \"prices\",\n \"components\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"uint8\",\n \"name\": \"oracleType\"\n },\n {\n \"type\": \"uint64\",\n \"name\": \"publishTime\"\n },\n {\n \"type\": \"bytes\",\n \"name\": \"oracleUpdateData\"\n }\n ]\n },\n {\n \"type\": \"tuple\",\n \"name\": \"params\",\n \"components\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"amountIn\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"minAmountOut\"\n },\n {\n \"type\": \"address\",\n \"name\": \"recipient\"\n }\n ]\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"withdrawBase\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"tuple\",\n \"name\": \"params\",\n \"components\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"amountIn\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"minAmountOut\"\n },\n {\n \"type\": \"address\",\n \"name\": \"recipient\"\n }\n ]\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"withdrawQuote\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"tuple\",\n \"name\": \"params\",\n \"components\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"amountIn\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"minAmountOut\"\n },\n {\n \"type\": \"address\",\n \"name\": \"recipient\"\n }\n ]\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"withdrawQuote\",\n \"constant\": false,\n \"stateMutability\": \"payable\",\n \"payable\": true,\n \"inputs\": [\n {\n \"type\": \"tuple[]\",\n \"name\": \"prices\",\n \"components\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"uint8\",\n \"name\": \"oracleType\"\n },\n {\n \"type\": \"uint64\",\n \"name\": \"publishTime\"\n },\n {\n \"type\": \"bytes\",\n \"name\": \"oracleUpdateData\"\n }\n ]\n },\n {\n \"type\": \"tuple\",\n \"name\": \"params\",\n \"components\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"amountIn\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"minAmountOut\"\n },\n {\n \"type\": \"address\",\n \"name\": \"recipient\"\n }\n ]\n }\n ],\n \"outputs\": []\n }\n]\n","/**\n * Viem-based public and wallet clients. Replaces ethers JsonRpcProvider / Signer for chain reads and writes.\n */\nimport { createPublicClient, fallback, http, type Chain, type PublicClient, type Transport, type WalletClient } from \"viem\";\nimport { getChainInfo } from \"@/config/chains/index.js\";\nimport { ChainId } from \"@/config/chain.js\";\nconst chainIdToChain: Record<number, Chain> = {} as Record<number, Chain>;\n\nexport function getChain(chainId: number): Chain {\n if (!chainIdToChain[chainId]) {\n const info = getChainInfo(chainId as ChainId);\n const urls = [\n ...(info.privateJsonRPCUrl ? [info.privateJsonRPCUrl] : []),\n ...(Array.isArray(info.publicJsonRPCUrl) ? [...info.publicJsonRPCUrl] : []),\n ].filter(Boolean) as string[];\n if (urls.length === 0) throw new Error(`${chainId} has no jsonRPCUrl configured`);\n chainIdToChain[chainId] = {\n id: chainId,\n name: info.label || `Chain ${chainId}`,\n nativeCurrency: info.nativeCurrency as { name: string; symbol: string; decimals: number },\n rpcUrls: { default: { http: urls } },\n } as Chain;\n }\n return chainIdToChain[chainId];\n}\n\nconst publicClients: Record<number, PublicClient> = {};\n\nexport function getPublicClient(chainId: number): PublicClient {\n if (!publicClients[chainId]) {\n const info = getChainInfo(chainId as ChainId);\n const urls = [\n ...(info.privateJsonRPCUrl ? [info.privateJsonRPCUrl] : []),\n ...(Array.isArray(info.publicJsonRPCUrl) ? [...info.publicJsonRPCUrl] : []),\n ].filter(Boolean) as string[];\n if (urls.length === 0) throw new Error(`${chainId} has no jsonRPCUrl configured`);\n const transport: Transport = urls.length === 1 ? http(urls[0]) : fallback(urls.map((u) => http(u)) as [Transport, ...Transport[]]);\n publicClients[chainId] = createPublicClient({\n chain: getChain(chainId),\n transport,\n });\n }\n return publicClients[chainId];\n}\n\ninterface ConfigManagerRef {\n hasSigner(): boolean;\n getViemWalletClient(chainId: number): Promise<WalletClient>;\n}\n\nlet configManagerRef: ConfigManagerRef | null = null;\n\nexport function setConfigManagerForViem(cm: ConfigManagerRef | null) {\n configManagerRef = cm;\n}\n\n/** Returns WalletClient for the chain (from config walletClient or wrapped ISigner). Use for writeContract / sendTransaction. */\nexport async function getWalletClient(chainId: number): Promise<WalletClient> {\n const cm = configManagerRef;\n if (!cm?.hasSigner()) throw new Error(\"No signer: call auth({ signer }) or auth({ walletClient })\");\n return cm.getViemWalletClient(chainId);\n}\n\n","import { zeroAddress } from \"viem\";\nexport type Address = `0x${string}` | typeof zeroAddress\n\nexport enum ChainId {\n LINEA_SEPOLIA = 59141,\n LINEA_MAINNET = 59144,\n ARB_TESTNET = 421614,\n ARB_MAINNET = 42161,\n BSC_TESTNET = 97,\n BSC_MAINNET = 56,\n}\n\nexport const MAINNET_CHAIN_IDS = [\n ChainId.BSC_MAINNET,\n ChainId.LINEA_MAINNET,\n ChainId.ARB_MAINNET,\n] as const\n\nexport const PROD_ENV_CHAIN_IDS = [\n ChainId.BSC_MAINNET,\n ChainId.LINEA_MAINNET,\n ChainId.ARB_MAINNET,\n] as const\nexport type SupportedProdEnvChainId = [typeof PROD_ENV_CHAIN_IDS][number]\n\nexport const BETA_ENV_CHAIN_IDS = [ ChainId.BSC_TESTNET] as const\nexport type SupportedBetaEnvChainId = [typeof BETA_ENV_CHAIN_IDS][number]\n\nexport const TEST_ENV_CHAIN_IDS = [\n ChainId.LINEA_SEPOLIA,\n ChainId.ARB_TESTNET,\n // ChainId.OPBNB_TESTNET,\n ChainId.BSC_TESTNET,\n] as const\nexport type SupportedTestEnvChainId = [typeof TEST_ENV_CHAIN_IDS][number]\n\nexport const OKX_BRIDGE_CHAIN_IDS = [ChainId.LINEA_MAINNET, ChainId.ARB_MAINNET] as const\n\n\nexport const DEV_ENV_CHAIN_IDS = [\n ChainId.LINEA_SEPOLIA,\n ChainId.ARB_TESTNET,\n ChainId.BSC_TESTNET,\n] as const\nexport type SupportedDevEnvChainId = [typeof DEV_ENV_CHAIN_IDS][number]\n\nexport const SupportedChainIds = [ChainId.ARB_TESTNET, ChainId.LINEA_SEPOLIA, ChainId.BSC_TESTNET, ChainId.ARB_MAINNET,ChainId.LINEA_MAINNET, ChainId.BSC_MAINNET] as const\n// export function getSupportedChainIdsByEnv(): readonly [ChainId, ...ChainId[]] {\n// if (isTestMode()) {\n// return TEST_ENV_CHAIN_IDS\n// } else if (isProdMode()) {\n// return PROD_ENV_CHAIN_IDS\n// } else if (isBetaMode()) {\n// return BETA_ENV_CHAIN_IDS\n// } else {\n// return TEST_ENV_CHAIN_IDS\n// // throw new Error('Unsupported environment, unable to obtain `SupportedChainIds`')\n// }\n// }\n\n// export function getAsSupportedChainIdFn(chainId?: number | null | ChainId) {\n// const supportedChainIds = getSupportedChainIdsByEnv()\n// const { VITE_GLOB_CHAIN_ID } = getAppEnvConfig()\n\n// return isSupportedChainFn(chainId)\n// ? chainId\n// : isSupportedChainFn(VITE_GLOB_CHAIN_ID)\n// ? VITE_GLOB_CHAIN_ID\n// : supportedChainIds[0]\n// }\n\nexport function isSupportedChainFn(chainId?: number | null | ChainId): chainId is ChainId {\n return !!chainId && SupportedChainIds.includes(chainId)\n}\n\nexport function isSupportedSeamlessAccountChain(chainId?: number | null | ChainId) {\n return (\n !!chainId &&\n [\n ChainId.LINEA_SEPOLIA,\n ChainId.ARB_TESTNET,\n ChainId.ARB_MAINNET,\n ChainId.LINEA_MAINNET,\n ChainId.BSC_TESTNET,\n ChainId.BSC_MAINNET,\n ].includes(chainId)\n )\n}\n\nexport interface BaseChainInfo {\n readonly explorer: string\n readonly explorerOfTX: string\n readonly label: string\n readonly logoUrl?: string\n readonly faucetUrl?: string\n readonly chainSymbol?: string\n readonly gasPriceApiUrl?: string\n readonly gasPriceRatio: number\n readonly gasLimitRatio: number\n readonly gasAmountRatio: number\n /** (forward fee + network fee) * GAS_FEE_RESERVED_RATIO */\n readonly gasFeeReservedForCollateral: number\n /** private rpc will be used for rpc queries inside the client. normally has private api key and better rate */\n privateJsonRPCUrl?: string\n /** public rpc used if not private found */\n publicJsonRPCUrl: readonly string[]\n readonly nativeCurrency: {\n name: string // e.g. 'Goerli ETH',\n symbol: string // e.g. 'gorETH',\n decimals: number // e.g. 18,\n }\n}\n\nexport interface RpcRetryOption {\n n: number\n minWait: number\n maxWait: number\n}\n\nexport interface ContractAddress {\n readonly USDC: Address,\n readonly Account: Address,\n readonly POOL_MANAGER: Address,\n readonly POSITION_MANAGER: Address,\n readonly ORDER_MANAGER: Address,\n readonly PYTH: Address,\n readonly ERC20: Address,\n readonly LIQUIDITY_ROUTER: Address,\n readonly BASE_POOL: Address,\n readonly QUOTE_POOL: Address,\n readonly ORACLE: Address,\n readonly EIP7702Delegation: Address,\n readonly MARKET_MANAGER: Address,\n readonly DATA_PROVIDER: Address,\n readonly ORACLE_RESERVE: Address,\n readonly FORWARDER: Address,\n readonly REIMBURSEMENT: Address,\n readonly DISPUTE_COURT: Address,\n readonly TRADING_ROUTER: Address\n}\n\nexport interface ChainInfo {\n chainId: ChainId,\n chainInfo: BaseChainInfo,\n}\n\n","import { ChainId } from \"./chain.js\"\n\n// Reserved gas fee ratio (10x gas)\nexport const GAS_FEE_RESERVED_RATIO = 10\n\n// Forwarder contract pledge fee ratio (2x)\nexport const FORWARD_PLEDGE_FEE_RADIO = 2\n\n\nexport const SEAMLESS_ACCOUNT_GAS_LIMIT = 5000000\n\nexport const TRADE_GAS_LIMIT_RATIO: Record<ChainId, bigint> = {\n [ChainId.ARB_MAINNET]: 130n,\n [ChainId.ARB_TESTNET]: 130n,\n [ChainId.LINEA_MAINNET]: 130n,\n [ChainId.LINEA_SEPOLIA]: 130n,\n [ChainId.BSC_MAINNET]: 150n,\n [ChainId.BSC_TESTNET]: 150n,\n}","import { ChainId, ChainInfo } from \"@/config/chain.js\";\n// import LineaLogo from '@/assets/icons/chain/logo/linea.png'\nimport { GAS_FEE_RESERVED_RATIO } from './../fee.js'\n\nexport default {\n chainId: ChainId.LINEA_SEPOLIA,\n chainInfo: {\n explorer: 'https://sepolia.lineascan.build/',\n explorerOfTX: 'https://sepolia.lineascan.build/tx/',\n publicJsonRPCUrl: [\n 'https://rpc.sepolia.linea.build',\n 'https://linea-sepolia.infura.io/v3/9aa3d95b3bc440fa88ea12eaa4456161',\n ],\n label: 'Linea Sepolia',\n logoUrl: '',\n faucetUrl: '',\n chainSymbol: 'Linea',\n gasPriceRatio: 1.3,\n gasLimitRatio: 1.2,\n gasAmountRatio: 2,\n gasFeeReservedForCollateral: (0.525 + 1) * GAS_FEE_RESERVED_RATIO,\n nativeCurrency: {\n name: 'Ether',\n symbol: 'ETH',\n decimals: 18,\n },\n },\n} as ChainInfo\n","import { ChainId, ChainInfo } from \"@/config/chain.js\";\n// import ArbitrumLogo from '@/assets/icons/chain/logo/arbitrum.png'\nimport { GAS_FEE_RESERVED_RATIO } from './../fee.js'\n\nexport default {\n chainId: ChainId.ARB_TESTNET,\n chainInfo: {\n privateJsonRPCUrl: '',\n publicJsonRPCUrl: [\n 'https://sepolia-rollup.arbitrum.io/rpc',\n // 'https://arbitrum-sepolia.blockpi.network/v1/rpc/public',\n ],\n label: ' Arbitrum Sepolia',\n chainSymbol: 'Arb Sepolia',\n explorer: 'https://sepolia.arbiscan.io/',\n explorerOfTX: 'https://sepolia.arbiscan.io/tx/',\n faucetUrl: 'https://bwarelabs.com/faucets/arbitrum-sepolia',\n logoUrl: '',\n gasPriceRatio: 1.5,\n gasLimitRatio: 1.3,\n gasAmountRatio: 2,\n gasFeeReservedForCollateral: (0.055 + 1) * GAS_FEE_RESERVED_RATIO,\n nativeCurrency: {\n name: 'Ether',\n symbol: 'ETH',\n decimals: 18,\n },\n },\n} as ChainInfo\n","import { ChainId, ChainInfo } from \"@/config/chain.js\";\nimport { GAS_FEE_RESERVED_RATIO } from './../fee.js'\n\nexport default {\n chainId: ChainId.BSC_TESTNET,\n chainInfo: {\n privateJsonRPCUrl: '',\n publicJsonRPCUrl: ['https://bsc-testnet-dataseed.bnbchain.org'],\n label: 'BNB Chain Testnet',\n chainSymbol: 'BNB Chain Testnet',\n explorer: 'https://testnet.bscscan.com/',\n explorerOfTX: 'https://testnet.bscscan.com/tx/',\n faucetUrl: 'https://docs.bnbchain.org/bnb-smart-chain/developers/faucet/',\n logoUrl: '',\n gasPriceRatio: 1.5,\n gasLimitRatio: 1.3,\n gasAmountRatio: 2,\n gasFeeReservedForCollateral: (0.0005 + 1) * GAS_FEE_RESERVED_RATIO,\n nativeCurrency: {\n name: 'BNB',\n symbol: 'BNB',\n decimals: 18,\n },\n },\n \n} as ChainInfo\n","import { ChainId, ChainInfo } from \"@/config/chain.js\";\n// import LineaLogo from '@/assets/icons/chain/logo/linea.png'\nimport { GAS_FEE_RESERVED_RATIO } from './../fee.js'\n\nexport default {\n chainId: ChainId.LINEA_MAINNET,\n chainInfo: {\n label: 'Linea Mainnet',\n explorer: 'https://lineascan.build/',\n logoUrl: '',\n explorerOfTX: 'https://lineascan.build/tx/',\n publicJsonRPCUrl: [\n 'https://rpc.linea.build/',\n 'https://linea.blockpi.network/v1/rpc/public',\n 'https://1rpc.io/linea',\n 'https://rpc.linea.build',\n ],\n chainSymbol: 'Linea',\n gasPriceRatio: 1.3,\n gasLimitRatio: 1.2,\n gasAmountRatio: 2,\n gasFeeReservedForCollateral: (0.525 + 0.35) * GAS_FEE_RESERVED_RATIO,\n nativeCurrency: {\n name: 'Ether',\n symbol: 'ETH',\n decimals: 18,\n },\n }\n} as ChainInfo\n","import { ChainId, ChainInfo } from \"@/config/chain.js\";\n// import ArbitrumLogo from '@/assets/icons/chain/logo/arbitrum.png'\nimport { GAS_FEE_RESERVED_RATIO } from './../fee.js'\n\nexport default {\n chainId: ChainId.ARB_MAINNET,\n chainInfo: {\n privateJsonRPCUrl: '',\n publicJsonRPCUrl: ['https://arb1.arbitrum.io/rpc'],\n label: ' Arbitrum One',\n chainSymbol: 'Arbitrum One',\n explorer: 'https://arbiscan.io/',\n explorerOfTX: 'https://arbiscan.io/tx/',\n logoUrl: '',\n gasPriceRatio: 1.5,\n gasLimitRatio: 1.3,\n gasAmountRatio: 2,\n gasFeeReservedForCollateral: (0.055 + 0.175) * GAS_FEE_RESERVED_RATIO,\n nativeCurrency: {\n name: 'Ether',\n symbol: 'ETH',\n decimals: 18,\n },\n },\n} as ChainInfo\n\n","import { ChainId, ChainInfo } from \"@/config/chain.js\";\nimport { GAS_FEE_RESERVED_RATIO } from './../fee.js'\n\nexport default {\n chainId: ChainId.BSC_MAINNET,\n chainInfo: {\n privateJsonRPCUrl: '',\n publicJsonRPCUrl: ['https://bsc-dataseed.bnbchain.org'],\n label: 'BNB Chain',\n chainSymbol: 'BNB Chain',\n explorer: 'https://bscscan.com/',\n explorerOfTX: 'https://bscscan.com/tx/',\n faucetUrl: 'https://docs.bnbchain.org/bnb-smart-chain/developers/faucet/',\n logoUrl: '',\n gasPriceRatio: 1.5,\n gasLimitRatio: 1.3,\n gasAmountRatio: 2,\n gasFeeReservedForCollateral: (0.0005 + 1) * GAS_FEE_RESERVED_RATIO,\n nativeCurrency: {\n name: 'BNB',\n symbol: 'BNB',\n decimals: 18,\n },\n },\n} as ChainInfo\n","import LINEA_SEPOLIA from \"@/config/chains/LINEA_SEPOLIA.js\";\nimport ARB_SEPOLIA from \"@/config/chains/ARB_SEPOLIA.js\";\nimport BSC_TESTNET from \"@/config/chains/BSC_TESTNET.js\";\nimport LINEA_MAINNET from \"@/config/chains/LINEA_MAINNET.js\";\nimport ARB_MAINNET from \"@/config/chains/ARB_MAINNET.js\";\nimport BSC_MAINNET from \"@/config/chains/BSC_MAINNET.js\";\nimport { BaseChainInfo, ChainId } from \"@/config/chain.js\";\n\n\nexport type ChainInfoMap = { readonly [chainId: number]: BaseChainInfo }\nexport const CHAIN_INFO: ChainInfoMap = {\n [ChainId.LINEA_SEPOLIA]: LINEA_SEPOLIA.chainInfo,\n [ChainId.ARB_TESTNET]:ARB_SEPOLIA.chainInfo,\n [ChainId.BSC_TESTNET]:BSC_TESTNET.chainInfo,\n [ChainId.LINEA_MAINNET]: LINEA_MAINNET.chainInfo,\n [ChainId.ARB_MAINNET]: ARB_MAINNET.chainInfo,\n [ChainId.BSC_MAINNET]: BSC_MAINNET.chainInfo,\n}\n\nexport function getChainInfo(chainId: ChainId) {\n const chainInfo = CHAIN_INFO[chainId]\n \n if (!chainInfo) {\n throw new Error(`Could not find information with chain id ${chainId}`)\n }\n \n return chainInfo\n}\n","[\n {\n \"type\": \"error\",\n \"name\": \"AddressEmptyCode\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"target\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"BaseFeeNotSoldOut\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ERC1967InvalidImplementation\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"implementation\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ERC1967NonPayable\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"FailedCall\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidBaseToken\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidInitialization\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"LPNotFullyMinted\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MarketNotExist\",\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"marketId\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"NotAddressManager\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotDependencyManager\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotInitializing\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotProxyAdmin\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"PermissionDenied\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"caller\"\n },\n {\n \"type\": \"address\",\n \"name\": \"target\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"PoolDebtNotCleared\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"PoolExists\",\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"PoolNotExist\",\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"PositionNotEmpty\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ReentrancyGuardReentrantCall\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"UUPSUnauthorizedCallContext\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"UUPSUnsupportedProxiableUUID\",\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"slot\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"UnexpectedPoolState\",\n \"inputs\": []\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"Initialized\",\n \"inputs\": [\n {\n \"type\": \"uint64\",\n \"name\": \"version\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"Upgraded\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"implementation\",\n \"indexed\": true\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"UPGRADE_INTERFACE_VERSION\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"string\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"benchPool\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"tuple\",\n \"name\": \"params\",\n \"components\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"string\",\n \"name\": \"remark\"\n }\n ]\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"checkPoolExists\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"bool\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"deployPool\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"tuple\",\n \"name\": \"params\",\n \"components\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"marketId\"\n },\n {\n \"type\": \"address\",\n \"name\": \"baseToken\"\n }\n ]\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"getAddressManager\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"address\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"getDependencyAddress\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"identifier\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"address\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"getImplementation\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"address\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"getMarketPool\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"marketId\"\n },\n {\n \"type\": \"address\",\n \"name\": \"asset\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"tuple\",\n \"components\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"marketId\"\n },\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"address\",\n \"name\": \"baseToken\"\n },\n {\n \"type\": \"address\",\n \"name\": \"quoteToken\"\n },\n {\n \"type\": \"uint8\",\n \"name\": \"riskTier\"\n },\n {\n \"type\": \"uint8\",\n \"name\": \"state\"\n },\n {\n \"type\": \"bool\",\n \"name\": \"compoundEnabled\"\n },\n {\n \"type\": \"address\",\n \"name\": \"basePoolToken\"\n },\n {\n \"type\": \"address\",\n \"name\": \"quotePoolToken\"\n },\n {\n \"type\": \"address\",\n \"name\": \"poolVault\"\n },\n {\n \"type\": \"address\",\n \"name\": \"tradingVault\"\n }\n ]\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"getPairToken\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"address\",\n \"name\": \"baseToken\"\n },\n {\n \"type\": \"address\",\n \"name\": \"quoteToken\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"getPool\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"tuple\",\n \"components\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"marketId\"\n },\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"address\",\n \"name\": \"baseToken\"\n },\n {\n \"type\": \"address\",\n \"name\": \"quoteToken\"\n },\n {\n \"type\": \"uint8\",\n \"name\": \"riskTier\"\n },\n {\n \"type\": \"uint8\",\n \"name\": \"state\"\n },\n {\n \"type\": \"bool\",\n \"name\": \"compoundEnabled\"\n },\n {\n \"type\": \"address\",\n \"name\": \"basePoolToken\"\n },\n {\n \"type\": \"address\",\n \"name\": \"quotePoolToken\"\n },\n {\n \"type\": \"address\",\n \"name\": \"poolVault\"\n },\n {\n \"type\": \"address\",\n \"name\": \"tradingVault\"\n }\n ]\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"getPoolMarket\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"marketId\"\n },\n {\n \"type\": \"tuple\",\n \"components\": [\n {\n \"type\": \"address\",\n \"name\": \"quoteToken\"\n },\n {\n \"type\": \"uint32\",\n \"name\": \"baseReserveRatio\"\n },\n {\n \"type\": \"uint32\",\n \"name\": \"quoteReserveRatio\"\n },\n {\n \"type\": \"uint64\",\n \"name\": \"oracleFeeUsd\"\n },\n {\n \"type\": \"uint128\",\n \"name\": \"poolPrimeThreshold\"\n },\n {\n \"type\": \"uint128\",\n \"name\": \"executionFee\"\n },\n {\n \"type\": \"uint128\",\n \"name\": \"maxExecutionFee\"\n },\n {\n \"type\": \"uint128\",\n \"name\": \"forwardFee\"\n },\n {\n \"type\": \"uint128\",\n \"name\": \"maxForwardFee\"\n }\n ]\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"getPoolMarketExecutionFee\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"uint256\",\n \"name\": \"executionFee\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"getPoolMarketForwardFee\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"uint256\",\n \"name\": \"forwardFee\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"getPoolMarketId\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"marketId\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"getPoolRiskTier\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"uint8\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"getPoolVault\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"address\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"getPools\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"bytes32[]\",\n \"name\": \"pools\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"getTradingVault\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"address\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"initialize\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"addressManager\"\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"isPoolAddress\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"address\",\n \"name\": \"addr\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"bool\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"perBenchPool\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"tuple\",\n \"name\": \"params\",\n \"components\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"string\",\n \"name\": \"remark\"\n }\n ]\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"primePool\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"tuple\",\n \"name\": \"params\",\n \"components\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"referencePrice\"\n }\n ]\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"proxiableUUID\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"reprimePool\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"tuple\",\n \"name\": \"params\",\n \"components\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n }\n ]\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"trenchPool\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"tuple\",\n \"name\": \"params\",\n \"components\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"bytes32\",\n \"name\": \"oracleFeedId\"\n },\n {\n \"type\": \"uint32\",\n \"name\": \"oracleDecimals\"\n },\n {\n \"type\": \"uint8\",\n \"name\": \"oracleType\"\n },\n {\n \"type\": \"uint8\",\n \"name\": \"riskTier\"\n }\n ]\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"updatePoolCompoundEnabled\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"tuple[]\",\n \"name\": \"params\",\n \"components\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"bool\",\n \"name\": \"enabled\"\n }\n ]\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"updatePoolRiskTiers\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"tuple[]\",\n \"name\": \"params\",\n \"components\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"uint8\",\n \"name\": \"riskTier\"\n }\n ]\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"upgradeTo\",\n \"constant\": false,\n \"stateMutability\": \"payable\",\n \"payable\": true,\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"newImplementation\"\n },\n {\n \"type\": \"bytes\",\n \"name\": \"data\"\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"upgradeToAndCall\",\n \"constant\": false,\n \"stateMutability\": \"payable\",\n \"payable\": true,\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"newImplementation\"\n },\n {\n \"type\": \"bytes\",\n \"name\": \"data\"\n }\n ],\n \"outputs\": []\n }\n]\n","[\n {\n \"inputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"name_\",\n \"type\": \"string\"\n },\n {\n \"internalType\": \"string\",\n \"name\": \"symbol_\",\n \"type\": \"string\"\n },\n {\n \"internalType\": \"uint8\",\n \"name\": \"decimals_\",\n \"type\": \"uint8\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"constructor\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidShortString\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"str\",\n \"type\": \"string\"\n }\n ],\n \"name\": \"StringTooLong\",\n \"type\": \"error\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"value\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"Approval\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [],\n \"name\": \"EIP712DomainChanged\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"previousOwner\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"newOwner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"OwnershipTransferred\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"from\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"value\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"Transfer\",\n \"type\": \"event\"\n },\n {\n \"inputs\": [],\n \"name\": \"DOMAIN_SEPARATOR\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"allowance\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"approve\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"balanceOf\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"burn\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"decimals\",\n \"outputs\": [\n {\n \"internalType\": \"uint8\",\n \"name\": \"\",\n \"type\": \"uint8\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"subtractedValue\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"decreaseAllowance\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"eip712Domain\",\n \"outputs\": [\n {\n \"internalType\": \"bytes1\",\n \"name\": \"fields\",\n \"type\": \"bytes1\"\n },\n {\n \"internalType\": \"string\",\n \"name\": \"name\",\n \"type\": \"string\"\n },\n {\n \"internalType\": \"string\",\n \"name\": \"version\",\n \"type\": \"string\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"chainId\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"verifyingContract\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"salt\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint256[]\",\n \"name\": \"extensions\",\n \"type\": \"uint256[]\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"addedValue\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"increaseAllowance\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"mint\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"name\",\n \"outputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"nonces\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"owner\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"value\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"deadline\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint8\",\n \"name\": \"v\",\n \"type\": \"uint8\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"r\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"s\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"permit\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"renounceOwnership\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"symbol\",\n \"outputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"totalSupply\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"transfer\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"from\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"transferFrom\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"newOwner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"transferOwnership\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n }\n]\n","[\n {\n \"type\": \"error\",\n \"name\": \"AddressEmptyCode\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"target\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ERC1967InvalidImplementation\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"implementation\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ERC1967NonPayable\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"FailedCall\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InsufficientOutputAmount\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidInitialization\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotAddressManager\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotDependencyManager\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotInitializing\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotProxyAdmin\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"PermissionDenied\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"caller\"\n },\n {\n \"type\": \"address\",\n \"name\": \"target\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"PoolNotActive\",\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"PoolNotExist\",\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ReentrancyGuardReentrantCall\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"SafeCastOverflowedUintToInt\",\n \"inputs\": [\n {\n \"type\": \"uint256\",\n \"name\": \"value\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"SafeERC20FailedOperation\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"token\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"UUPSUnauthorizedCallContext\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"UUPSUnsupportedProxiableUUID\",\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"slot\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"Initialized\",\n \"inputs\": [\n {\n \"type\": \"uint64\",\n \"name\": \"version\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"QuotePoolProfitDistributed\",\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"amount\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"genesisAmount\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"price\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"exchangeRate\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"Upgraded\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"implementation\",\n \"indexed\": true\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"EXCHANGE_RATE_PRECISION\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"POOL_TOKEN_DECIMALS\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"uint8\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"REBATE_INDEX_PRECISION\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"UPGRADE_INTERFACE_VERSION\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"string\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"claimUserRebate\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"address\",\n \"name\": \"user\"\n },\n {\n \"type\": \"address\",\n \"name\": \"recipient\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"uint256\",\n \"name\": \"rebateOut\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"claimUserRebates\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"bytes32[]\",\n \"name\": \"poolIds\"\n },\n {\n \"type\": \"address\",\n \"name\": \"user\"\n },\n {\n \"type\": \"address\",\n \"name\": \"recipient\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"uint256[]\",\n \"name\": \"rebateOut\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"deposit\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"amountIn\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"minAmountOut\"\n },\n {\n \"type\": \"address\",\n \"name\": \"user\"\n },\n {\n \"type\": \"address\",\n \"name\": \"recipient\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"uint256\",\n \"name\": \"amountOut\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"distribute\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"amount\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"genesisAmount\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"price\"\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"getAddressManager\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"address\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"getDependencyAddress\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"identifier\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"address\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"getExchangeRate\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"getExchangeRate\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"price\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"getImplementation\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"address\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"getPoolData\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"tuple\",\n \"components\": [\n {\n \"type\": \"uint256\",\n \"name\": \"genesisRebateIndex\"\n }\n ]\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"getPoolTokenPrice\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"price\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"getUserData\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"address\",\n \"name\": \"user\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"tuple\",\n \"components\": [\n {\n \"type\": \"uint256\",\n \"name\": \"index\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"accrued\"\n }\n ]\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"initialize\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"addressManager\"\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"pendingUserRebates\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"address\",\n \"name\": \"user\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"price\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"previewLpAmountOut\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"quoteAmountIn\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"price\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"previewPoolTokenPrice\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"previewQuoteAmountOut\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"lpAmountIn\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"price\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"previewUserWithdrawData\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"lpAmountIn\"\n },\n {\n \"type\": \"address\",\n \"name\": \"user\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"price\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"uint256\",\n \"name\": \"quoteAmountOut\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"proxiableUUID\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"updatePool\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"oraclePrice\"\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"upgradeTo\",\n \"constant\": false,\n \"stateMutability\": \"payable\",\n \"payable\": true,\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"newImplementation\"\n },\n {\n \"type\": \"bytes\",\n \"name\": \"data\"\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"upgradeToAndCall\",\n \"constant\": false,\n \"stateMutability\": \"payable\",\n \"payable\": true,\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"newImplementation\"\n },\n {\n \"type\": \"bytes\",\n \"name\": \"data\"\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"withdraw\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"amountIn\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"minAmountOut\"\n },\n {\n \"type\": \"address\",\n \"name\": \"user\"\n },\n {\n \"type\": \"address\",\n \"name\": \"recipient\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"uint256\",\n \"name\": \"amountOut\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"rebateOut\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"withdrawableLpAmount\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"price\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"uint256\"\n }\n ]\n }\n]\n","[\n {\n \"type\": \"error\",\n \"name\": \"AddressEmptyCode\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"target\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ERC1967InvalidImplementation\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"implementation\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ERC1967NonPayable\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ExceedMaxProfit\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ExceedMinOutputAmount\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"FailedCall\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InsufficientOutputAmount\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InsufficientReturnAmount\",\n \"inputs\": [\n {\n \"type\": \"uint256\",\n \"name\": \"expected\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"received\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidInitialization\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotAddressManager\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotDependencyManager\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotInitializing\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotProxyAdmin\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"PermissionDenied\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"caller\"\n },\n {\n \"type\": \"address\",\n \"name\": \"target\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"PoolNotActive\",\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"PoolNotCompoundable\",\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"PoolNotExist\",\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ReentrancyGuardReentrantCall\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"SafeCastOverflowedUintToInt\",\n \"inputs\": [\n {\n \"type\": \"uint256\",\n \"name\": \"value\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"SafeERC20FailedOperation\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"token\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"UUPSUnauthorizedCallContext\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"UUPSUnsupportedProxiableUUID\",\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"slot\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"BasePoolProfitDistributed\",\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\",\n \"indexed\": true\n },\n {\n \"type\": \"uint256\",\n \"name\": \"baseAmount\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"quoteAmount\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"price\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"exchangeRate\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"rebateIndex\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"genesisRebateIndex\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"Initialized\",\n \"inputs\": [\n {\n \"type\": \"uint64\",\n \"name\": \"version\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"PoolProfitExchanged\",\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\",\n \"indexed\": true\n },\n {\n \"type\": \"uint256\",\n \"name\": \"baseIn\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"quoteOut\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"price\",\n \"indexed\": false\n },\n {\n \"type\": \"address\",\n \"name\": \"recipient\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"PoolRebateIndexUpdated\",\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\",\n \"indexed\": true\n },\n {\n \"type\": \"uint256\",\n \"name\": \"unexchangedProfits\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"oldIndex\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"newIndex\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"Upgraded\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"implementation\",\n \"indexed\": true\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"EXCHANGE_RATE_PRECISION\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"POOL_TOKEN_DECIMALS\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"uint8\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"REBATE_INDEX_PRECISION\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"UPGRADE_INTERFACE_VERSION\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"string\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"claimUserRebate\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"address\",\n \"name\": \"user\"\n },\n {\n \"type\": \"address\",\n \"name\": \"recipient\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"uint256\",\n \"name\": \"rebateOut\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"claimUserRebates\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"bytes32[]\",\n \"name\": \"poolIds\"\n },\n {\n \"type\": \"address\",\n \"name\": \"user\"\n },\n {\n \"type\": \"address\",\n \"name\": \"recipient\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"uint256[]\",\n \"name\": \"rebateOut\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"deposit\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"amountIn\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"minAmountOut\"\n },\n {\n \"type\": \"address\",\n \"name\": \"user\"\n },\n {\n \"type\": \"address\",\n \"name\": \"recipient\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"uint256\",\n \"name\": \"amountOut\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"distribute\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"baseAmount\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"quoteAmount\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"genesisAmount\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"price\"\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"exchangeProfit\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"baseIn\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"minQuoteOut\"\n },\n {\n \"type\": \"address\",\n \"name\": \"recipient\"\n },\n {\n \"type\": \"bytes\",\n \"name\": \"data\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"uint256\",\n \"name\": \"quoteOut\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"getAddressManager\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"address\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"getDependencyAddress\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"identifier\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"address\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"getExchangeRate\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"getExchangeRate\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"price\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"getExchangeableProfit\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"price\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"uint256\",\n \"name\": \"baseIn\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"quoteOut\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"getImplementation\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"address\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"getPoolData\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"tuple\",\n \"components\": [\n {\n \"type\": \"uint256\",\n \"name\": \"rebateIndex\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"genesisRebateIndex\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"exchangeableProfits\"\n }\n ]\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"getPoolTokenPrice\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"price\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"getUserData\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"address\",\n \"name\": \"user\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"tuple\",\n \"components\": [\n {\n \"type\": \"uint256\",\n \"name\": \"index\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"genesisIndex\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"accrued\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"genesisAccrued\"\n }\n ]\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"initialize\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"addressManager\"\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"pendingUserRebates\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"address\",\n \"name\": \"user\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"price\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"uint256\",\n \"name\": \"rebates\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"genesisRebates\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"previewBaseAmountOut\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"lpAmountIn\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"price\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"previewExchangeableProfit\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"uint256\",\n \"name\": \"baseIn\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"quoteOut\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"previewLpAmountOut\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"baseAmountIn\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"price\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"previewPoolTokenPrice\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"previewUserWithdrawData\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"lpAmountIn\"\n },\n {\n \"type\": \"address\",\n \"name\": \"user\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"price\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"uint256\",\n \"name\": \"baseAmountOut\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"rebateAmount\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"proxiableUUID\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"updatePool\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"oraclePrice\"\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"upgradeTo\",\n \"constant\": false,\n \"stateMutability\": \"payable\",\n \"payable\": true,\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"newImplementation\"\n },\n {\n \"type\": \"bytes\",\n \"name\": \"data\"\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"upgradeToAndCall\",\n \"constant\": false,\n \"stateMutability\": \"payable\",\n \"payable\": true,\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"newImplementation\"\n },\n {\n \"type\": \"bytes\",\n \"name\": \"data\"\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"withdraw\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"amountIn\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"minAmountOut\"\n },\n {\n \"type\": \"address\",\n \"name\": \"user\"\n },\n {\n \"type\": \"address\",\n \"name\": \"recipient\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"uint256\",\n \"name\": \"amountOut\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"rebateOut\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"withdrawableLpAmount\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"price\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"uint256\"\n }\n ]\n }\n]\n","[\n {\n \"type\": \"constructor\",\n \"payable\": false,\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"AddressEmptyCode\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"target\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ECDSAInvalidSignature\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ECDSAInvalidSignatureLength\",\n \"inputs\": [\n {\n \"type\": \"uint256\",\n \"name\": \"length\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ECDSAInvalidSignatureS\",\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"s\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ERC1967InvalidImplementation\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"implementation\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ERC1967NonPayable\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ExpiredFeeData\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"FailedCall\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidFeeRate\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidFeeTier\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidInitialization\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidParameter\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NoRebateToClaim\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotActiveBroker\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"broker\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"NotBrokerSigner\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"signer\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"NotInitializing\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotOrderOwner\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotPositionOwner\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotProxyAdmin\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OwnableInvalidOwner\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"owner\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"OwnableUnauthorizedAccount\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"account\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"PermissionDenied\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"caller\"\n },\n {\n \"type\": \"address\",\n \"name\": \"target\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ReentrancyGuardReentrantCall\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"SafeERC20FailedOperation\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"token\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"UUPSUnauthorizedCallContext\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"UUPSUnsupportedProxiableUUID\",\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"slot\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"UnsupportedAssetClass\",\n \"inputs\": [\n {\n \"type\": \"uint8\",\n \"name\": \"assetClass\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"UnsupportedFeeTier\",\n \"inputs\": [\n {\n \"type\": \"uint8\",\n \"name\": \"tier\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"BrokerStatusUpdated\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"broker\",\n \"indexed\": false\n },\n {\n \"type\": \"bool\",\n \"name\": \"isActive\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"EIP712DomainChanged\",\n \"inputs\": []\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"Initialized\",\n \"inputs\": [\n {\n \"type\": \"uint64\",\n \"name\": \"version\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"OwnershipTransferStarted\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"previousOwner\",\n \"indexed\": true\n },\n {\n \"type\": \"address\",\n \"name\": \"newOwner\",\n \"indexed\": true\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"OwnershipTransferred\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"previousOwner\",\n \"indexed\": true\n },\n {\n \"type\": \"address\",\n \"name\": \"newOwner\",\n \"indexed\": true\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"RebateClaimed\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"user\",\n \"indexed\": false\n },\n {\n \"type\": \"address\",\n \"name\": \"token\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"amount\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"SignerUpdated\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"signer\",\n \"indexed\": false\n },\n {\n \"type\": \"bool\",\n \"name\": \"isSigner\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"Upgraded\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"implementation\",\n \"indexed\": true\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"UserFeeDataReset\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"broker\",\n \"indexed\": false\n },\n {\n \"type\": \"address\",\n \"name\": \"signer\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"epoch\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"UserFeeDataUpdated\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"broker\",\n \"indexed\": true\n },\n {\n \"type\": \"address\",\n \"name\": \"signer\",\n \"indexed\": false\n },\n {\n \"type\": \"address\",\n \"name\": \"user\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"epoch\",\n \"indexed\": false\n },\n {\n \"type\": \"uint8\",\n \"name\": \"tier\",\n \"indexed\": false\n },\n {\n \"type\": \"address\",\n \"name\": \"referrer\",\n \"indexed\": false\n },\n {\n \"type\": \"uint32\",\n \"name\": \"totalReferralRebatePct\",\n \"indexed\": false\n },\n {\n \"type\": \"uint32\",\n \"name\": \"referrerRebatePct\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"FEE_TYPEHASH\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"UPGRADE_INTERFACE_VERSION\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"string\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"__ERC2771ContextUpgradeable_init\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"trustedForwarder_\"\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"acceptOwnership\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"activeFeeTiers\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"uint8\",\n \"name\": \"assetClass\"\n },\n {\n \"type\": \"uint8\",\n \"name\": \"riskTier\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"uint256[]\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"activeSpecialFeeTierList\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"uint8\",\n \"name\": \"assetClass\"\n },\n {\n \"type\": \"uint8\",\n \"name\": \"riskTier\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"uint256[]\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"addressManager\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"address\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"batchSetSpecialFeeTiers\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"tuple[]\",\n \"name\": \"params\",\n \"components\": [\n {\n \"type\": \"uint8\",\n \"name\": \"assetClass\"\n },\n {\n \"type\": \"uint8\",\n \"name\": \"riskTier\"\n },\n {\n \"type\": \"uint8\",\n \"name\": \"feeTier\"\n },\n {\n \"type\": \"int32\",\n \"name\": \"makerFeeRate\"\n },\n {\n \"type\": \"uint32\",\n \"name\": \"takerFeeRate\"\n }\n ]\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"batchUpdateFeeTiers\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"tuple[]\",\n \"name\": \"params\",\n \"components\": [\n {\n \"type\": \"uint8\",\n \"name\": \"assetClass\"\n },\n {\n \"type\": \"uint8\",\n \"name\": \"riskTier\"\n },\n {\n \"type\": \"uint8\",\n \"name\": \"feeTier\"\n },\n {\n \"type\": \"tuple\",\n \"name\": \"addOnFeeRate\",\n \"components\": [\n {\n \"type\": \"uint32\",\n \"name\": \"takerFeeRate\"\n },\n {\n \"type\": \"uint32\",\n \"name\": \"makerFeeRate\"\n }\n ]\n }\n ]\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"cancelOrder\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"uint256\",\n \"name\": \"orderId\"\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"cancelOrders\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"uint256[]\",\n \"name\": \"orderIds\"\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"claimRebate\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"token\"\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"claimRebates\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"address[]\",\n \"name\": \"tokens\"\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"currentFeeDataEpoch\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"domainSeparatorV4\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"eip712Domain\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"bytes1\",\n \"name\": \"fields\"\n },\n {\n \"type\": \"string\",\n \"name\": \"name\"\n },\n {\n \"type\": \"string\",\n \"name\": \"version\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"chainId\"\n },\n {\n \"type\": \"address\",\n \"name\": \"verifyingContract\"\n },\n {\n \"type\": \"bytes32\",\n \"name\": \"salt\"\n },\n {\n \"type\": \"uint256[]\",\n \"name\": \"extensions\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"getAddOnFeeTier\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"uint8\",\n \"name\": \"assetClass\"\n },\n {\n \"type\": \"uint8\",\n \"name\": \"riskTier\"\n },\n {\n \"type\": \"uint8\",\n \"name\": \"feeTier\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"uint32\",\n \"name\": \"takerFeeRate\"\n },\n {\n \"type\": \"uint32\",\n \"name\": \"makerFeeRate\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"getBaseFeeRate\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"uint8\",\n \"name\": \"assetClass\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"tuple\",\n \"name\": \"baseFeeRate\",\n \"components\": [\n {\n \"type\": \"uint32\",\n \"name\": \"takerFeeRate\"\n },\n {\n \"type\": \"uint32\",\n \"name\": \"makerFeeRate\"\n }\n ]\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"getImplementation\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"address\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"getSpecialFeeTier\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"uint8\",\n \"name\": \"assetClass\"\n },\n {\n \"type\": \"uint8\",\n \"name\": \"riskTier\"\n },\n {\n \"type\": \"uint8\",\n \"name\": \"feeTier\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"int32\",\n \"name\": \"makerFeeRate\"\n },\n {\n \"type\": \"uint32\",\n \"name\": \"takerFeeRate\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"getUserFeeDataDigest\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"user\"\n },\n {\n \"type\": \"uint64\",\n \"name\": \"nonce\"\n },\n {\n \"type\": \"uint64\",\n \"name\": \"deadline\"\n },\n {\n \"type\": \"tuple\",\n \"name\": \"feeData\",\n \"components\": [\n {\n \"type\": \"uint8\",\n \"name\": \"tier\"\n },\n {\n \"type\": \"address\",\n \"name\": \"referrer\"\n },\n {\n \"type\": \"uint32\",\n \"name\": \"totalReferralRebatePct\"\n },\n {\n \"type\": \"uint32\",\n \"name\": \"referrerRebatePct\"\n }\n ]\n }\n ],\n \"outputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"digest\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"getUserFeeRate\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"user\"\n },\n {\n \"type\": \"uint8\",\n \"name\": \"assetClass\"\n },\n {\n \"type\": \"uint8\",\n \"name\": \"riskTier\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"uint32\",\n \"name\": \"takerFeeRate\"\n },\n {\n \"type\": \"int32\",\n \"name\": \"makerFeeRate\"\n },\n {\n \"type\": \"uint32\",\n \"name\": \"baseTakerFeeRate\"\n },\n {\n \"type\": \"uint32\",\n \"name\": \"baseMakerFeeRate\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"initialize\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"_addressManager\"\n },\n {\n \"type\": \"address\",\n \"name\": \"owner\"\n },\n {\n \"type\": \"string\",\n \"name\": \"_brokerName\"\n },\n {\n \"type\": \"address[]\",\n \"name\": \"brokerSigners\"\n },\n {\n \"type\": \"uint8[]\",\n \"name\": \"assetClasses\"\n },\n {\n \"type\": \"tuple[]\",\n \"name\": \"baseFeeRates\",\n \"components\": [\n {\n \"type\": \"uint32\",\n \"name\": \"takerFeeRate\"\n },\n {\n \"type\": \"uint32\",\n \"name\": \"makerFeeRate\"\n }\n ]\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"isActive\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"bool\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"isTrustedForwarder\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"forwarder\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"bool\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"name\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"string\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"onBrokerFee\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"address\",\n \"name\": \"user\"\n },\n {\n \"type\": \"address\",\n \"name\": \"token\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"feeAmount\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"uint256\",\n \"name\": \"totalReferralRebate\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"referrerRebate\"\n },\n {\n \"type\": \"address\",\n \"name\": \"referrer\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"owner\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"address\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"pendingOwner\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"address\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"placeOrderWithPosition\",\n \"constant\": false,\n \"stateMutability\": \"payable\",\n \"payable\": true,\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"positionId\"\n },\n {\n \"type\": \"tuple\",\n \"name\": \"depositParams\",\n \"components\": [\n {\n \"type\": \"address\",\n \"name\": \"token\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"amount\"\n }\n ]\n },\n {\n \"type\": \"tuple\",\n \"name\": \"orderParams\",\n \"components\": [\n {\n \"type\": \"address\",\n \"name\": \"user\"\n },\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"uint8\",\n \"name\": \"orderType\"\n },\n {\n \"type\": \"uint8\",\n \"name\": \"triggerType\"\n },\n {\n \"type\": \"uint8\",\n \"name\": \"operation\"\n },\n {\n \"type\": \"uint8\",\n \"name\": \"direction\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"collateralAmount\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"size\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"price\"\n },\n {\n \"type\": \"uint8\",\n \"name\": \"timeInForce\"\n },\n {\n \"type\": \"bool\",\n \"name\": \"postOnly\"\n },\n {\n \"type\": \"uint16\",\n \"name\": \"slippagePct\"\n },\n {\n \"type\": \"uint16\",\n \"name\": \"leverage\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"tpSize\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"tpPrice\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"slSize\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"slPrice\"\n }\n ]\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"placeOrderWithSalt\",\n \"constant\": false,\n \"stateMutability\": \"payable\",\n \"payable\": true,\n \"inputs\": [\n {\n \"type\": \"uint64\",\n \"name\": \"userPositionSalt\"\n },\n {\n \"type\": \"tuple\",\n \"name\": \"depositParams\",\n \"components\": [\n {\n \"type\": \"address\",\n \"name\": \"token\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"amount\"\n }\n ]\n },\n {\n \"type\": \"tuple\",\n \"name\": \"orderParams\",\n \"components\": [\n {\n \"type\": \"address\",\n \"name\": \"user\"\n },\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"uint8\",\n \"name\": \"orderType\"\n },\n {\n \"type\": \"uint8\",\n \"name\": \"triggerType\"\n },\n {\n \"type\": \"uint8\",\n \"name\": \"operation\"\n },\n {\n \"type\": \"uint8\",\n \"name\": \"direction\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"collateralAmount\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"size\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"price\"\n },\n {\n \"type\": \"uint8\",\n \"name\": \"timeInForce\"\n },\n {\n \"type\": \"bool\",\n \"name\": \"postOnly\"\n },\n {\n \"type\": \"uint16\",\n \"name\": \"slippagePct\"\n },\n {\n \"type\": \"uint16\",\n \"name\": \"leverage\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"tpSize\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"tpPrice\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"slSize\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"slPrice\"\n }\n ]\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"placeOrdersWithPosition\",\n \"constant\": false,\n \"stateMutability\": \"payable\",\n \"payable\": true,\n \"inputs\": [\n {\n \"type\": \"tuple\",\n \"name\": \"depositParams\",\n \"components\": [\n {\n \"type\": \"address\",\n \"name\": \"token\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"amount\"\n }\n ]\n },\n {\n \"type\": \"bytes32[]\",\n \"name\": \"positionIds\"\n },\n {\n \"type\": \"tuple[]\",\n \"name\": \"orderParams\",\n \"components\": [\n {\n \"type\": \"address\",\n \"name\": \"user\"\n },\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"uint8\",\n \"name\": \"orderType\"\n },\n {\n \"type\": \"uint8\",\n \"name\": \"triggerType\"\n },\n {\n \"type\": \"uint8\",\n \"name\": \"operation\"\n },\n {\n \"type\": \"uint8\",\n \"name\": \"direction\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"collateralAmount\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"size\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"price\"\n },\n {\n \"type\": \"uint8\",\n \"name\": \"timeInForce\"\n },\n {\n \"type\": \"bool\",\n \"name\": \"postOnly\"\n },\n {\n \"type\": \"uint16\",\n \"name\": \"slippagePct\"\n },\n {\n \"type\": \"uint16\",\n \"name\": \"leverage\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"tpSize\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"tpPrice\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"slSize\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"slPrice\"\n }\n ]\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"placeOrdersWithSalt\",\n \"constant\": false,\n \"stateMutability\": \"payable\",\n \"payable\": true,\n \"inputs\": [\n {\n \"type\": \"tuple\",\n \"name\": \"depositParams\",\n \"components\": [\n {\n \"type\": \"address\",\n \"name\": \"token\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"amount\"\n }\n ]\n },\n {\n \"type\": \"uint64[]\",\n \"name\": \"userPositionSalts\"\n },\n {\n \"type\": \"tuple[]\",\n \"name\": \"orderParams\",\n \"components\": [\n {\n \"type\": \"address\",\n \"name\": \"user\"\n },\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"uint8\",\n \"name\": \"orderType\"\n },\n {\n \"type\": \"uint8\",\n \"name\": \"triggerType\"\n },\n {\n \"type\": \"uint8\",\n \"name\": \"operation\"\n },\n {\n \"type\": \"uint8\",\n \"name\": \"direction\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"collateralAmount\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"size\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"price\"\n },\n {\n \"type\": \"uint8\",\n \"name\": \"timeInForce\"\n },\n {\n \"type\": \"bool\",\n \"name\": \"postOnly\"\n },\n {\n \"type\": \"uint16\",\n \"name\": \"slippagePct\"\n },\n {\n \"type\": \"uint16\",\n \"name\": \"leverage\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"tpSize\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"tpPrice\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"slSize\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"slPrice\"\n }\n ]\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"proxiableUUID\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"renounceOwnership\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"resetAllUserFeeData\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"setSigner\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"signer\"\n },\n {\n \"type\": \"bool\",\n \"name\": \"isSigner\"\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"setSpecialFeeTier\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"tuple\",\n \"name\": \"params\",\n \"components\": [\n {\n \"type\": \"uint8\",\n \"name\": \"assetClass\"\n },\n {\n \"type\": \"uint8\",\n \"name\": \"riskTier\"\n },\n {\n \"type\": \"uint8\",\n \"name\": \"feeTier\"\n },\n {\n \"type\": \"int32\",\n \"name\": \"makerFeeRate\"\n },\n {\n \"type\": \"uint32\",\n \"name\": \"takerFeeRate\"\n }\n ]\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"setUserFeeData\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"tuple\",\n \"name\": \"params\",\n \"components\": [\n {\n \"type\": \"address\",\n \"name\": \"user\"\n },\n {\n \"type\": \"uint64\",\n \"name\": \"nonce\"\n },\n {\n \"type\": \"uint64\",\n \"name\": \"deadline\"\n },\n {\n \"type\": \"tuple\",\n \"name\": \"feeData\",\n \"components\": [\n {\n \"type\": \"uint8\",\n \"name\": \"tier\"\n },\n {\n \"type\": \"address\",\n \"name\": \"referrer\"\n },\n {\n \"type\": \"uint32\",\n \"name\": \"totalReferralRebatePct\"\n },\n {\n \"type\": \"uint32\",\n \"name\": \"referrerRebatePct\"\n }\n ]\n },\n {\n \"type\": \"bytes\",\n \"name\": \"signature\"\n }\n ]\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"setUserSpecialFeeTier\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"user\"\n },\n {\n \"type\": \"uint8\",\n \"name\": \"feeTier\"\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"supportedAssetClasses\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"uint256[]\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"transferOwnership\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"newOwner\"\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"trustedForwarder\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"address\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"updateBaseFeeRates\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"tuple[]\",\n \"name\": \"params\",\n \"components\": [\n {\n \"type\": \"uint8\",\n \"name\": \"assetClass\"\n },\n {\n \"type\": \"bool\",\n \"name\": \"isEnable\"\n },\n {\n \"type\": \"tuple\",\n \"name\": \"baseFeeRate\",\n \"components\": [\n {\n \"type\": \"uint32\",\n \"name\": \"takerFeeRate\"\n },\n {\n \"type\": \"uint32\",\n \"name\": \"makerFeeRate\"\n }\n ]\n }\n ]\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"updateBrokerStatus\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"bool\",\n \"name\": \"active\"\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"updateFeeTier\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"uint8\",\n \"name\": \"assetClass\"\n },\n {\n \"type\": \"uint8\",\n \"name\": \"riskTier\"\n },\n {\n \"type\": \"uint8\",\n \"name\": \"feeTier\"\n },\n {\n \"type\": \"tuple\",\n \"name\": \"feeRate\",\n \"components\": [\n {\n \"type\": \"uint32\",\n \"name\": \"takerFeeRate\"\n },\n {\n \"type\": \"uint32\",\n \"name\": \"makerFeeRate\"\n }\n ]\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"updateOrder\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"tuple\",\n \"name\": \"depositParams\",\n \"components\": [\n {\n \"type\": \"address\",\n \"name\": \"token\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"amount\"\n }\n ]\n },\n {\n \"type\": \"tuple\",\n \"name\": \"params\",\n \"components\": [\n {\n \"type\": \"uint256\",\n \"name\": \"orderId\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"size\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"price\"\n },\n {\n \"type\": \"tuple\",\n \"name\": \"tpsl\",\n \"components\": [\n {\n \"type\": \"uint256\",\n \"name\": \"tpSize\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"tpPrice\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"slSize\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"slPrice\"\n }\n ]\n }\n ]\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"updatePriceAndAdjustCollateral\",\n \"constant\": false,\n \"stateMutability\": \"payable\",\n \"payable\": true,\n \"inputs\": [\n {\n \"type\": \"tuple[]\",\n \"name\": \"prices\",\n \"components\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"uint8\",\n \"name\": \"oracleType\"\n },\n {\n \"type\": \"uint64\",\n \"name\": \"publishTime\"\n },\n {\n \"type\": \"bytes\",\n \"name\": \"oracleUpdateData\"\n }\n ]\n },\n {\n \"type\": \"tuple\",\n \"name\": \"depositParams\",\n \"components\": [\n {\n \"type\": \"address\",\n \"name\": \"token\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"amount\"\n }\n ]\n },\n {\n \"type\": \"bytes32\",\n \"name\": \"positionId\"\n },\n {\n \"type\": \"int256\",\n \"name\": \"adjustAmount\"\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"updateUserFeeData\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"user\"\n },\n {\n \"type\": \"tuple\",\n \"name\": \"feeData\",\n \"components\": [\n {\n \"type\": \"uint8\",\n \"name\": \"tier\"\n },\n {\n \"type\": \"address\",\n \"name\": \"referrer\"\n },\n {\n \"type\": \"uint32\",\n \"name\": \"totalReferralRebatePct\"\n },\n {\n \"type\": \"uint32\",\n \"name\": \"referrerRebatePct\"\n }\n ]\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"upgradeTo\",\n \"constant\": false,\n \"stateMutability\": \"payable\",\n \"payable\": true,\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"newImplementation\"\n },\n {\n \"type\": \"bytes\",\n \"name\": \"data\"\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"upgradeToAndCall\",\n \"constant\": false,\n \"stateMutability\": \"payable\",\n \"payable\": true,\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"newImplementation\"\n },\n {\n \"type\": \"bytes\",\n \"name\": \"data\"\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"userFeeData\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"uint256\",\n \"name\": \"userFeeDataEpoch\"\n },\n {\n \"type\": \"address\",\n \"name\": \"user\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"uint8\",\n \"name\": \"tier\"\n },\n {\n \"type\": \"address\",\n \"name\": \"referrer\"\n },\n {\n \"type\": \"uint32\",\n \"name\": \"totalReferralRebatePct\"\n },\n {\n \"type\": \"uint32\",\n \"name\": \"referrerRebatePct\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"userNonces\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"user\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"uint64\",\n \"name\": \"nonce\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"userRebates\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"user\"\n },\n {\n \"type\": \"address\",\n \"name\": \"token\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"uint256\",\n \"name\": \"rebateAmount\"\n }\n ]\n }\n]\n","[\n {\n \"type\": \"constructor\",\n \"payable\": false,\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ERC20InsufficientAllowance\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"spender\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"allowance\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"needed\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ERC20InsufficientBalance\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"sender\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"balance\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"needed\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ERC20InvalidApprover\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"approver\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ERC20InvalidReceiver\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"receiver\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ERC20InvalidSender\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"sender\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ERC20InvalidSpender\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"spender\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"InsufficientBalance\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"account\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"balance\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"needed\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidInitialization\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotInitializing\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"PermissionDenied\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"caller\"\n },\n {\n \"type\": \"address\",\n \"name\": \"target\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"Approval\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"owner\",\n \"indexed\": true\n },\n {\n \"type\": \"address\",\n \"name\": \"spender\",\n \"indexed\": true\n },\n {\n \"type\": \"uint256\",\n \"name\": \"value\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"GenesisShareBurned\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"account\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"amount\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"GenesisShareMinted\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"account\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"amount\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"Initialized\",\n \"inputs\": [\n {\n \"type\": \"uint64\",\n \"name\": \"version\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"Transfer\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"from\",\n \"indexed\": true\n },\n {\n \"type\": \"address\",\n \"name\": \"to\",\n \"indexed\": true\n },\n {\n \"type\": \"uint256\",\n \"name\": \"value\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"addressManager\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"address\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"allowance\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"owner\"\n },\n {\n \"type\": \"address\",\n \"name\": \"spender\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"approve\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"spender\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"value\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"bool\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"balanceOf\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"account\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"burnFrom\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"from\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"amount\"\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"decimals\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"uint8\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"initialize\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"_addressManager\"\n },\n {\n \"type\": \"bytes32\",\n \"name\": \"_poolId\"\n },\n {\n \"type\": \"address\",\n \"name\": \"_underlyingToken\"\n },\n {\n \"type\": \"string\",\n \"name\": \"name\"\n },\n {\n \"type\": \"string\",\n \"name\": \"symbol\"\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"mint\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"to\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"amount\"\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"name\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"string\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"poolId\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"symbol\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"string\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"totalGenesisShare\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"totalSupply\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"transfer\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"to\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"value\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"bool\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"transferFrom\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"from\"\n },\n {\n \"type\": \"address\",\n \"name\": \"to\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"value\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"bool\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"underlyingToken\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"address\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"userGenesisShare\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"account\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"uint256\"\n }\n ]\n }\n]\n","[\n {\n \"type\": \"constructor\",\n \"payable\": false,\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"AddressEmptyCode\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"target\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ERC1967InvalidImplementation\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"implementation\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ERC1967NonPayable\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"FailedCall\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidInitialization\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidParameter\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidQuoteTokenAddress\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidRatioParams\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MarketAlreadyExisted\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MarketNotExisted\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotAddressManager\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotDependencyManager\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotInitializing\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotProxyAdmin\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"PermissionDenied\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"caller\"\n },\n {\n \"type\": \"address\",\n \"name\": \"target\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"UUPSUnauthorizedCallContext\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"UUPSUnsupportedProxiableUUID\",\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"slot\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"ExecutionFeeUpdated\",\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"marketId\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"oldExecutionFee\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"newExecutionFee\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"ForwardFeeUpdated\",\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"marketId\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"oldForwardFee\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"newForwardFee\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"Initialized\",\n \"inputs\": [\n {\n \"type\": \"uint64\",\n \"name\": \"version\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"MaxExecutionFeeUpdated\",\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"marketId\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"oldMaxExecutionFee\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"newMaxExecutionFee\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"MaxForwardFeeUpdated\",\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"marketId\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"oldMaxForwardFee\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"newMaxForwardFee\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"OracleFeeUpdated\",\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"marketId\",\n \"indexed\": false\n },\n {\n \"type\": \"uint64\",\n \"name\": \"newOracleFeeUsd\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"PoolPrimeThresholdUpdated\",\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"marketId\",\n \"indexed\": false\n },\n {\n \"type\": \"uint128\",\n \"name\": \"newPoolPrimeThreshold\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"ReserveRatioUpdated\",\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"marketId\",\n \"indexed\": false\n },\n {\n \"type\": \"uint32\",\n \"name\": \"newBaseReserveRatio\",\n \"indexed\": false\n },\n {\n \"type\": \"uint32\",\n \"name\": \"newQuoteReserveRatio\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"Upgraded\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"implementation\",\n \"indexed\": true\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"UPGRADE_INTERFACE_VERSION\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"string\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"createMarket\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"tuple\",\n \"name\": \"params\",\n \"components\": [\n {\n \"type\": \"uint64\",\n \"name\": \"chainId\"\n },\n {\n \"type\": \"address\",\n \"name\": \"quoteToken\"\n },\n {\n \"type\": \"uint32\",\n \"name\": \"baseReserveRatio\"\n },\n {\n \"type\": \"uint32\",\n \"name\": \"quoteReserveRatio\"\n },\n {\n \"type\": \"uint64\",\n \"name\": \"oracleFeeUsd\"\n },\n {\n \"type\": \"uint128\",\n \"name\": \"poolPrimeThreshold\"\n },\n {\n \"type\": \"uint128\",\n \"name\": \"executionFee\"\n },\n {\n \"type\": \"uint128\",\n \"name\": \"maxExecutionFee\"\n },\n {\n \"type\": \"uint128\",\n \"name\": \"forwardFee\"\n },\n {\n \"type\": \"uint128\",\n \"name\": \"maxForwardFee\"\n }\n ]\n },\n {\n \"type\": \"tuple\",\n \"name\": \"quoteParams\",\n \"components\": [\n {\n \"type\": \"address\",\n \"name\": \"priceContract\"\n },\n {\n \"type\": \"bool\",\n \"name\": \"applyExchangeRate\"\n },\n {\n \"type\": \"uint16\",\n \"name\": \"minDeviationRatio\"\n }\n ]\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"getAddressManager\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"address\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"getDependencyAddress\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"identifier\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"address\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"getExecutionFee\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"marketId\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"getExecutionFeeByToken\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"quoteToken\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"getForwardFee\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"marketId\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"getForwardFeeByToken\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"quoteToken\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"getImplementation\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"address\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"getMarket\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"marketId\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"tuple\",\n \"components\": [\n {\n \"type\": \"address\",\n \"name\": \"quoteToken\"\n },\n {\n \"type\": \"uint32\",\n \"name\": \"baseReserveRatio\"\n },\n {\n \"type\": \"uint32\",\n \"name\": \"quoteReserveRatio\"\n },\n {\n \"type\": \"uint64\",\n \"name\": \"oracleFeeUsd\"\n },\n {\n \"type\": \"uint128\",\n \"name\": \"poolPrimeThreshold\"\n },\n {\n \"type\": \"uint128\",\n \"name\": \"executionFee\"\n },\n {\n \"type\": \"uint128\",\n \"name\": \"maxExecutionFee\"\n },\n {\n \"type\": \"uint128\",\n \"name\": \"forwardFee\"\n },\n {\n \"type\": \"uint128\",\n \"name\": \"maxForwardFee\"\n }\n ]\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"getMarketIds\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"bytes32[]\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"getOracleFee\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"marketId\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"initialize\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"addressManager\"\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"marketExists\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"marketId\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"bool\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"proxiableUUID\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"updateExecutionFee\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"marketId\"\n },\n {\n \"type\": \"uint128\",\n \"name\": \"_executionFee\"\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"updateForwardFee\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"marketId\"\n },\n {\n \"type\": \"uint128\",\n \"name\": \"_forwardFee\"\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"updateMarketQuoteConfiguration\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"marketId\"\n },\n {\n \"type\": \"tuple\",\n \"name\": \"quoteParams\",\n \"components\": [\n {\n \"type\": \"address\",\n \"name\": \"priceContract\"\n },\n {\n \"type\": \"bool\",\n \"name\": \"applyExchangeRate\"\n },\n {\n \"type\": \"uint16\",\n \"name\": \"minDeviationRatio\"\n }\n ]\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"updateMaxExecutionFee\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"marketId\"\n },\n {\n \"type\": \"uint128\",\n \"name\": \"_maxExecutionFee\"\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"updateMaxForwardFee\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"marketId\"\n },\n {\n \"type\": \"uint128\",\n \"name\": \"_maxForwardFee\"\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"updateOracleFee\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"marketId\"\n },\n {\n \"type\": \"uint64\",\n \"name\": \"_oracleFeeUsd\"\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"updatePoolPrimeThreshold\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"marketId\"\n },\n {\n \"type\": \"uint128\",\n \"name\": \"_poolPrimeThreshold\"\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"updateReserveRatio\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"marketId\"\n },\n {\n \"type\": \"uint32\",\n \"name\": \"_baseReserveRatio\"\n },\n {\n \"type\": \"uint32\",\n \"name\": \"_quoteReserveRatio\"\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"upgradeTo\",\n \"constant\": false,\n \"stateMutability\": \"payable\",\n \"payable\": true,\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"newImplementation\"\n },\n {\n \"type\": \"bytes\",\n \"name\": \"data\"\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"upgradeToAndCall\",\n \"constant\": false,\n \"stateMutability\": \"payable\",\n \"payable\": true,\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"newImplementation\"\n },\n {\n \"type\": \"bytes\",\n \"name\": \"data\"\n }\n ],\n \"outputs\": []\n }\n]\n","[\n {\n \"type\": \"constructor\",\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"addressManager\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"PositionNotHealthy\",\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"positionId\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"marginRatio\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"SafeCastOverflowedUintToInt\",\n \"inputs\": [\n {\n \"type\": \"uint256\",\n \"name\": \"value\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"ADDRESS_MANAGER\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"address\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"getAccountInfo\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"address\",\n \"name\": \"user\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"tuple\",\n \"name\": \"accountInfo\",\n \"components\": [\n {\n \"type\": \"uint256\",\n \"name\": \"freeMargin\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"walletBalance\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"freeBaseAmount\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"baseProfit\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"quoteProfit\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"reservedAmount\"\n },\n {\n \"type\": \"uint64\",\n \"name\": \"releaseTime\"\n }\n ]\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"getAvailableLiquiditySize\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"uint8\",\n \"name\": \"operation\"\n },\n {\n \"type\": \"uint8\",\n \"name\": \"direction\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"executePrice\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"getBrokerFeeTiers\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"brokerAddress\"\n },\n {\n \"type\": \"uint8[]\",\n \"name\": \"assetClasses\"\n },\n {\n \"type\": \"uint8[]\",\n \"name\": \"riskTiers\"\n },\n {\n \"type\": \"bool\",\n \"name\": \"isMYXBroker\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"tuple[]\",\n \"name\": \"brokerFees\",\n \"components\": [\n {\n \"type\": \"uint8\",\n \"name\": \"asset\"\n },\n {\n \"type\": \"tuple[]\",\n \"name\": \"riskTieredBrokerFees\",\n \"components\": [\n {\n \"type\": \"uint8\",\n \"name\": \"riskTier\"\n },\n {\n \"type\": \"tuple[]\",\n \"name\": \"addOnFeeTiers\",\n \"components\": [\n {\n \"type\": \"uint8\",\n \"name\": \"tier\"\n },\n {\n \"type\": \"uint32\",\n \"name\": \"takerFeeRate\"\n },\n {\n \"type\": \"int32\",\n \"name\": \"makerFeeRate\"\n }\n ]\n },\n {\n \"type\": \"tuple[]\",\n \"name\": \"baseFeeRate\",\n \"components\": [\n {\n \"type\": \"uint8\",\n \"name\": \"assetClass\"\n },\n {\n \"type\": \"uint32\",\n \"name\": \"makerFeeRate\"\n },\n {\n \"type\": \"uint32\",\n \"name\": \"takerFeeRate\"\n }\n ]\n },\n {\n \"type\": \"tuple[]\",\n \"name\": \"specialFeeTiers\",\n \"components\": [\n {\n \"type\": \"uint8\",\n \"name\": \"tier\"\n },\n {\n \"type\": \"uint32\",\n \"name\": \"takerFeeRate\"\n },\n {\n \"type\": \"int32\",\n \"name\": \"makerFeeRate\"\n }\n ]\n }\n ]\n }\n ]\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"getExchangeables\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"bytes32[]\",\n \"name\": \"poolIds\"\n },\n {\n \"type\": \"uint256[]\",\n \"name\": \"marketPrices\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"tuple[]\",\n \"name\": \"exchangeables\",\n \"components\": [\n {\n \"type\": \"uint256\",\n \"name\": \"maxBaseIn\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"maxQuoteIn\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"maxBaseOut\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"maxQuoteOut\"\n }\n ]\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"getLiquidationPrice\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"positionId\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"marketPrice\"\n },\n {\n \"type\": \"address\",\n \"name\": \"broker\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"getPoolInfo\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"marketPrice\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"tuple\",\n \"components\": [\n {\n \"type\": \"tuple\",\n \"name\": \"basePool\",\n \"components\": [\n {\n \"type\": \"address\",\n \"name\": \"poolToken\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"exchangeRate\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"poolTokenPrice\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"poolTokenSupply\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"totalDebt\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"baseCollateral\"\n }\n ]\n },\n {\n \"type\": \"tuple\",\n \"name\": \"quotePool\",\n \"components\": [\n {\n \"type\": \"address\",\n \"name\": \"poolToken\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"exchangeRate\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"poolTokenPrice\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"poolTokenSupply\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"totalDebt\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"baseCollateral\"\n }\n ]\n },\n {\n \"type\": \"tuple\",\n \"name\": \"reserveInfo\",\n \"components\": [\n {\n \"type\": \"uint256\",\n \"name\": \"baseTotalAmount\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"baseReservedAmount\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"quoteTotalAmount\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"quoteReservedAmount\"\n }\n ]\n },\n {\n \"type\": \"tuple\",\n \"name\": \"fundingInfo\",\n \"components\": [\n {\n \"type\": \"int256\",\n \"name\": \"nextFundingRate\"\n },\n {\n \"type\": \"int256\",\n \"name\": \"lastFundingFeeTracker\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"nextEpochTime\"\n }\n ]\n },\n {\n \"type\": \"tuple\",\n \"name\": \"oi\",\n \"components\": [\n {\n \"type\": \"int256\",\n \"name\": \"tracker\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"longSize\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"shortSize\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"poolEntryPrice\"\n }\n ]\n },\n {\n \"type\": \"tuple\",\n \"name\": \"liquidityInfo\",\n \"components\": [\n {\n \"type\": \"uint256\",\n \"name\": \"windowCaps\"\n },\n {\n \"type\": \"int256\",\n \"name\": \"openInterest\"\n }\n ]\n }\n ]\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"getPoolInfos\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"bytes32[]\",\n \"name\": \"poolIds\"\n },\n {\n \"type\": \"uint256[]\",\n \"name\": \"marketPrices\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"tuple[]\",\n \"components\": [\n {\n \"type\": \"tuple\",\n \"name\": \"basePool\",\n \"components\": [\n {\n \"type\": \"address\",\n \"name\": \"poolToken\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"exchangeRate\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"poolTokenPrice\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"poolTokenSupply\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"totalDebt\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"baseCollateral\"\n }\n ]\n },\n {\n \"type\": \"tuple\",\n \"name\": \"quotePool\",\n \"components\": [\n {\n \"type\": \"address\",\n \"name\": \"poolToken\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"exchangeRate\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"poolTokenPrice\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"poolTokenSupply\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"totalDebt\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"baseCollateral\"\n }\n ]\n },\n {\n \"type\": \"tuple\",\n \"name\": \"reserveInfo\",\n \"components\": [\n {\n \"type\": \"uint256\",\n \"name\": \"baseTotalAmount\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"baseReservedAmount\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"quoteTotalAmount\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"quoteReservedAmount\"\n }\n ]\n },\n {\n \"type\": \"tuple\",\n \"name\": \"fundingInfo\",\n \"components\": [\n {\n \"type\": \"int256\",\n \"name\": \"nextFundingRate\"\n },\n {\n \"type\": \"int256\",\n \"name\": \"lastFundingFeeTracker\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"nextEpochTime\"\n }\n ]\n },\n {\n \"type\": \"tuple\",\n \"name\": \"oi\",\n \"components\": [\n {\n \"type\": \"int256\",\n \"name\": \"tracker\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"longSize\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"shortSize\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"poolEntryPrice\"\n }\n ]\n },\n {\n \"type\": \"tuple\",\n \"name\": \"liquidityInfo\",\n \"components\": [\n {\n \"type\": \"uint256\",\n \"name\": \"windowCaps\"\n },\n {\n \"type\": \"int256\",\n \"name\": \"openInterest\"\n }\n ]\n }\n ]\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"getPoolTokenPrices\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"bytes32[]\",\n \"name\": \"poolIds\"\n },\n {\n \"type\": \"uint256[]\",\n \"name\": \"marketPrices\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"tuple[]\",\n \"components\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"basePoolTokenPrice\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"quotePoolTokenPrice\"\n }\n ]\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"getPositionFees\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"positionId\"\n },\n {\n \"type\": \"address\",\n \"name\": \"broker\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"price\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"int256\",\n \"name\": \"netCollateral\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"collateralAmount\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"tradingFee\"\n },\n {\n \"type\": \"int256\",\n \"name\": \"fundingFee\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"getSumProfitLock\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"address[]\",\n \"name\": \"respondents\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"uint256\",\n \"name\": \"baseAmount\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"quoteAmount\"\n },\n {\n \"type\": \"tuple[]\",\n \"name\": \"infos\",\n \"components\": [\n {\n \"type\": \"address\",\n \"name\": \"account\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"baseAmount\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"quoteAmount\"\n }\n ]\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"getUserPositionInfos\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"user\"\n },\n {\n \"type\": \"bytes32[]\",\n \"name\": \"poolIds\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"tuple[]\",\n \"name\": \"positions\",\n \"components\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"positionId\"\n },\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"size\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"entryPrice\"\n },\n {\n \"type\": \"int256\",\n \"name\": \"fundingRateIndex\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"earlyClosePrice\"\n },\n {\n \"type\": \"uint8\",\n \"name\": \"direction\"\n },\n {\n \"type\": \"uint8\",\n \"name\": \"riskTier\"\n },\n {\n \"type\": \"uint64\",\n \"name\": \"lastUpdateTime\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"collateralAmount\"\n }\n ]\n }\n ]\n }\n]\n","[\n {\n \"type\": \"error\",\n \"name\": \"AddressEmptyCode\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"target\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ERC1967InvalidImplementation\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"implementation\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ERC1967NonPayable\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ERC2771ForwarderExpiredRequest\",\n \"inputs\": [\n {\n \"type\": \"uint48\",\n \"name\": \"deadline\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ERC2771ForwarderInvalidSigner\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"signer\"\n },\n {\n \"type\": \"address\",\n \"name\": \"from\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ERC2771ForwarderMismatchedValue\",\n \"inputs\": [\n {\n \"type\": \"uint256\",\n \"name\": \"requestedValue\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"msgValue\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ERC2771UntrustfulTarget\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"target\"\n },\n {\n \"type\": \"address\",\n \"name\": \"forwarder\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ExceedsMaximumRelayFee\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"FailedCall\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InconsistentParamsLength\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InsufficientBalance\",\n \"inputs\": [\n {\n \"type\": \"uint256\",\n \"name\": \"balance\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"needed\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"InsufficientFeeAllowance\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"user\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"allowance\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"required\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"InsufficientFeeBalance\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"user\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"balance\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"required\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidAccountNonce\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"account\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"currentNonce\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidInitialization\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MismatchExecuteFee\",\n \"inputs\": [\n {\n \"type\": \"uint256\",\n \"name\": \"balanceBefore\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"balanceAfter\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"expected\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"MismatchedSender\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"sender\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"NotAddressManager\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotAllowedTarget\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"target\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"NotDependencyManager\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotInitializing\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotProxyAdmin\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OnlyRelayer\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"PermissionDenied\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"caller\"\n },\n {\n \"type\": \"address\",\n \"name\": \"target\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ReentrancyGuardReentrantCall\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"RelayerRegistered\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"relayer\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"RemoveRelayerFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"UUPSUnauthorizedCallContext\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"UUPSUnsupportedProxiableUUID\",\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"slot\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"AddAllowedTarget\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"target\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"ChargeForwardFee\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"account\",\n \"indexed\": false\n },\n {\n \"type\": \"address\",\n \"name\": \"feeToken\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"relayFee\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"EIP712DomainChanged\",\n \"inputs\": []\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"ERC20PermitFailed\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"token\",\n \"indexed\": false\n },\n {\n \"type\": \"string\",\n \"name\": \"reason\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"ERC20PermitLowLevelFailed\",\n \"inputs\": [\n {\n \"type\": \"bytes\",\n \"name\": \"data\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"ExecutedForwardRequest\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"signer\",\n \"indexed\": true\n },\n {\n \"type\": \"uint256\",\n \"name\": \"nonce\",\n \"indexed\": false\n },\n {\n \"type\": \"bool\",\n \"name\": \"success\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"Initialized\",\n \"inputs\": [\n {\n \"type\": \"uint64\",\n \"name\": \"version\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"RemoveAllowedTarget\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"target\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"SetUserRelayer\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"account\",\n \"indexed\": false\n },\n {\n \"type\": \"address\",\n \"name\": \"relayer\",\n \"indexed\": false\n },\n {\n \"type\": \"bool\",\n \"name\": \"enable\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"UpdateAcquiescentFeeToken\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"sender\",\n \"indexed\": false\n },\n {\n \"type\": \"address\",\n \"name\": \"oldRelayGas\",\n \"indexed\": false\n },\n {\n \"type\": \"address\",\n \"name\": \"newRelayGas\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"UpdateEquilibriumGas\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"sender\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"oldRelayGas\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"newRelayGas\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"UpdateMaxRelayFee\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"sender\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"oldMaxRelayFee\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"newMaxRelayFee\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"Upgraded\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"implementation\",\n \"indexed\": true\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"UPGRADE_INTERFACE_VERSION\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"string\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"__ERC2771ContextUpgradeable_init\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"trustedForwarder_\"\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"addAllowedTarget\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"target\"\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"batchExecuteForwarder\",\n \"constant\": false,\n \"stateMutability\": \"payable\",\n \"payable\": true,\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"forwardFeeToken\"\n },\n {\n \"type\": \"tuple[]\",\n \"name\": \"bundleParams\",\n \"components\": [\n {\n \"type\": \"address\",\n \"name\": \"from\"\n },\n {\n \"type\": \"address\",\n \"name\": \"to\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"value\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"gas\"\n },\n {\n \"type\": \"uint48\",\n \"name\": \"deadline\"\n },\n {\n \"type\": \"bytes\",\n \"name\": \"data\"\n },\n {\n \"type\": \"bytes\",\n \"name\": \"signature\"\n }\n ]\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"eip712Domain\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"bytes1\",\n \"name\": \"fields\"\n },\n {\n \"type\": \"string\",\n \"name\": \"name\"\n },\n {\n \"type\": \"string\",\n \"name\": \"version\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"chainId\"\n },\n {\n \"type\": \"address\",\n \"name\": \"verifyingContract\"\n },\n {\n \"type\": \"bytes32\",\n \"name\": \"salt\"\n },\n {\n \"type\": \"uint256[]\",\n \"name\": \"extensions\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"equilibriumGas\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"execute\",\n \"constant\": false,\n \"stateMutability\": \"payable\",\n \"payable\": true,\n \"inputs\": [\n {\n \"type\": \"tuple\",\n \"components\": [\n {\n \"type\": \"address\",\n \"name\": \"from\"\n },\n {\n \"type\": \"address\",\n \"name\": \"to\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"value\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"gas\"\n },\n {\n \"type\": \"uint48\",\n \"name\": \"deadline\"\n },\n {\n \"type\": \"bytes\",\n \"name\": \"data\"\n },\n {\n \"type\": \"bytes\",\n \"name\": \"signature\"\n }\n ]\n },\n {\n \"type\": \"address\"\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"executeBatch\",\n \"constant\": false,\n \"stateMutability\": \"payable\",\n \"payable\": true,\n \"inputs\": [\n {\n \"type\": \"tuple[]\",\n \"components\": [\n {\n \"type\": \"address\",\n \"name\": \"from\"\n },\n {\n \"type\": \"address\",\n \"name\": \"to\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"value\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"gas\"\n },\n {\n \"type\": \"uint48\",\n \"name\": \"deadline\"\n },\n {\n \"type\": \"bytes\",\n \"name\": \"data\"\n },\n {\n \"type\": \"bytes\",\n \"name\": \"signature\"\n }\n ]\n },\n {\n \"type\": \"address\"\n },\n {\n \"type\": \"address\"\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"executeForwarder\",\n \"constant\": false,\n \"stateMutability\": \"payable\",\n \"payable\": true,\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"forwardFeeToken\"\n },\n {\n \"type\": \"tuple\",\n \"name\": \"params\",\n \"components\": [\n {\n \"type\": \"address\",\n \"name\": \"from\"\n },\n {\n \"type\": \"address\",\n \"name\": \"to\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"value\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"gas\"\n },\n {\n \"type\": \"uint48\",\n \"name\": \"deadline\"\n },\n {\n \"type\": \"bytes\",\n \"name\": \"data\"\n },\n {\n \"type\": \"bytes\",\n \"name\": \"signature\"\n }\n ]\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"exitForwardMode\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"getAddressManager\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"address\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"getAllowedTargets\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"address[]\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"getDependencyAddress\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"identifier\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"address\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"getDesignatedToken\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"address\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"getEquilibriumGas\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"getImplementation\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"address\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"getUserRelayers\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"account\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"address[]\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"inForwardMode\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"bool\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"initialize\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"addressManager\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"_equilibriumGas\"\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"isAllowedTargets\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"contractAddr\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"bool\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"isTrustedForwarder\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"forwarder\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"bool\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"isUserRelayerEnabled\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"account\"\n },\n {\n \"type\": \"address\",\n \"name\": \"relayer\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"bool\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"nonces\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"owner\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"originAccount\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"relayer\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"address\",\n \"name\": \"account\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"permitAndApproveForwarder\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"relayer\"\n },\n {\n \"type\": \"bool\",\n \"name\": \"enable\"\n },\n {\n \"type\": \"tuple[]\",\n \"name\": \"permitParams\",\n \"components\": [\n {\n \"type\": \"address\",\n \"name\": \"token\"\n },\n {\n \"type\": \"address\",\n \"name\": \"owner\"\n },\n {\n \"type\": \"address\",\n \"name\": \"spender\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"value\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"deadline\"\n },\n {\n \"type\": \"uint8\",\n \"name\": \"v\"\n },\n {\n \"type\": \"bytes32\",\n \"name\": \"r\"\n },\n {\n \"type\": \"bytes32\",\n \"name\": \"s\"\n }\n ]\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"proxiableUUID\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"removeAllowedTarget\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"target\"\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"trustedForwarder\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"address\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"updateEquilibriumGas\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"uint256\",\n \"name\": \"_equilibriumGas\"\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"upgradeTo\",\n \"constant\": false,\n \"stateMutability\": \"payable\",\n \"payable\": true,\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"newImplementation\"\n },\n {\n \"type\": \"bytes\",\n \"name\": \"data\"\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"upgradeToAndCall\",\n \"constant\": false,\n \"stateMutability\": \"payable\",\n \"payable\": true,\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"newImplementation\"\n },\n {\n \"type\": \"bytes\",\n \"name\": \"data\"\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"verify\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"tuple\",\n \"name\": \"request\",\n \"components\": [\n {\n \"type\": \"address\",\n \"name\": \"from\"\n },\n {\n \"type\": \"address\",\n \"name\": \"to\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"value\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"gas\"\n },\n {\n \"type\": \"uint48\",\n \"name\": \"deadline\"\n },\n {\n \"type\": \"bytes\",\n \"name\": \"data\"\n },\n {\n \"type\": \"bytes\",\n \"name\": \"signature\"\n }\n ]\n }\n ],\n \"outputs\": [\n {\n \"type\": \"bool\"\n }\n ]\n }\n]\n","[\n {\n \"type\": \"error\",\n \"name\": \"AddressEmptyCode\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"target\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"AlreadyClaimed\",\n \"inputs\": [\n {\n \"type\": \"uint256\",\n \"name\": \"caseId\"\n },\n {\n \"type\": \"address\",\n \"name\": \"user\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ERC1967InvalidImplementation\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"implementation\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ERC1967NonPayable\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"FailedCall\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidAmount\",\n \"inputs\": [\n {\n \"type\": \"uint256\",\n \"name\": \"caseId\"\n },\n {\n \"type\": \"address\",\n \"name\": \"user\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidInitialization\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidParameter\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MerkleTreeVerificationFailed\",\n \"inputs\": [\n {\n \"type\": \"uint256\",\n \"name\": \"caseId\"\n },\n {\n \"type\": \"address\",\n \"name\": \"user\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"NotAddressManager\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotDependencyManager\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotInitializing\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotProxyAdmin\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"PermissionDenied\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"caller\"\n },\n {\n \"type\": \"address\",\n \"name\": \"target\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ReimbursementValidity\",\n \"inputs\": [\n {\n \"type\": \"uint256\",\n \"name\": \"caseId\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"SafeERC20FailedOperation\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"token\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"TreeAlreadySet\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"UUPSUnauthorizedCallContext\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"UUPSUnsupportedProxiableUUID\",\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"slot\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"Initialized\",\n \"inputs\": [\n {\n \"type\": \"uint64\",\n \"name\": \"version\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"ReimbursementClaimExpired\",\n \"inputs\": [\n {\n \"type\": \"uint256\",\n \"name\": \"caseId\",\n \"indexed\": false\n },\n {\n \"type\": \"address\",\n \"name\": \"user\",\n \"indexed\": false\n },\n {\n \"type\": \"address\",\n \"name\": \"baseToken\",\n \"indexed\": false\n },\n {\n \"type\": \"address\",\n \"name\": \"quoteToken\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"baseAmount\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"quoteAmount\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"ReimbursementClaimed\",\n \"inputs\": [\n {\n \"type\": \"uint256\",\n \"name\": \"caseId\",\n \"indexed\": false\n },\n {\n \"type\": \"address\",\n \"name\": \"user\",\n \"indexed\": false\n },\n {\n \"type\": \"address\",\n \"name\": \"baseToken\",\n \"indexed\": false\n },\n {\n \"type\": \"address\",\n \"name\": \"quoteToken\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"baseAmount\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"quoteAmount\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"ReimbursementInfoSet\",\n \"inputs\": [\n {\n \"type\": \"uint256\",\n \"name\": \"caseId\",\n \"indexed\": false\n },\n {\n \"type\": \"bytes32\",\n \"name\": \"merkleRoot\",\n \"indexed\": false\n },\n {\n \"type\": \"address\",\n \"name\": \"baseToken\",\n \"indexed\": false\n },\n {\n \"type\": \"address\",\n \"name\": \"quoteToken\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"totalBaseAmount\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"totalQuoteAmount\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"claimedBaseAmount\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"claimedQuoteAmount\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"expireTime\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"Upgraded\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"implementation\",\n \"indexed\": true\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"UPGRADE_INTERFACE_VERSION\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"string\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"claimExpiredCases\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"uint256[]\",\n \"name\": \"caseIds\"\n },\n {\n \"type\": \"address\",\n \"name\": \"receiver\"\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"claimReimbursement\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"uint256\",\n \"name\": \"caseId\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"baseAmount\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"quoteAmount\"\n },\n {\n \"type\": \"bytes32[]\",\n \"name\": \"merkleProof\"\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"getAddressManager\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"address\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"getDependencyAddress\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"identifier\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"address\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"getImplementation\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"address\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"getReimbursementInfo\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"uint256\",\n \"name\": \"caseId\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"tuple\",\n \"components\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"merkleRoot\"\n },\n {\n \"type\": \"address\",\n \"name\": \"baseToken\"\n },\n {\n \"type\": \"address\",\n \"name\": \"quoteToken\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"totalBaseAmount\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"totalQuoteAmount\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"claimedBaseAmount\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"claimedQuoteAmount\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"expireTime\"\n }\n ]\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"initialize\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"addressManager\"\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"proxiableUUID\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"setReimbursementInfo\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"uint256\",\n \"name\": \"caseId\"\n },\n {\n \"type\": \"tuple\",\n \"name\": \"reimbursementInfo\",\n \"components\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"merkleRoot\"\n },\n {\n \"type\": \"address\",\n \"name\": \"baseToken\"\n },\n {\n \"type\": \"address\",\n \"name\": \"quoteToken\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"totalBaseAmount\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"totalQuoteAmount\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"claimedBaseAmount\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"claimedQuoteAmount\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"expireTime\"\n }\n ]\n },\n {\n \"type\": \"bytes32[]\",\n \"name\": \"zeroMerkleProof\"\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"upgradeTo\",\n \"constant\": false,\n \"stateMutability\": \"payable\",\n \"payable\": true,\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"newImplementation\"\n },\n {\n \"type\": \"bytes\",\n \"name\": \"data\"\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"upgradeToAndCall\",\n \"constant\": false,\n \"stateMutability\": \"payable\",\n \"payable\": true,\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"newImplementation\"\n },\n {\n \"type\": \"bytes\",\n \"name\": \"data\"\n }\n ],\n \"outputs\": []\n }\n]\n","[\n {\n \"type\": \"constructor\",\n \"payable\": false,\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"AddressEmptyCode\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"target\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"AlreadyVoted\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"BondNotReleased\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"CaseAppealNotFinished\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"CaseDeadlineNotReached\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"CaseDeadlineReached\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"CaseNotAccepted\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"CaseNotExist\",\n \"inputs\": [\n {\n \"type\": \"uint256\",\n \"name\": \"caseId\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"CaseRespondentAppealed\",\n \"inputs\": [\n {\n \"type\": \"uint256\",\n \"name\": \"caseId\"\n },\n {\n \"type\": \"address\",\n \"name\": \"respondent\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ChainIdMismatch\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"DisputeNotAllowed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ERC1967InvalidImplementation\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"implementation\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ERC1967NonPayable\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"FailedCall\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidAccountNonce\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"account\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"currentNonce\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidContractAddress\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidFunctionSignature\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidInitialization\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidParameter\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidPayloadLength\",\n \"inputs\": [\n {\n \"type\": \"uint256\",\n \"name\": \"received\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"expected\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidPoolToken\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidProfitAmount\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidResponseVersion\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidSourceChain\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NoChainResponse\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotAddressManager\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotCaseRespondent\",\n \"inputs\": [\n {\n \"type\": \"uint256\",\n \"name\": \"caseId\"\n },\n {\n \"type\": \"address\",\n \"name\": \"respondent\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"NotDependencyManager\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotInitializing\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotProxyAdmin\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NumberOfResponsesMismatch\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OnlyRelayer\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"PermissionDenied\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"caller\"\n },\n {\n \"type\": \"address\",\n \"name\": \"target\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"RequestTypeMismatch\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"RiskCloseNotCompleted\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"SafeERC20FailedOperation\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"token\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"SignatureExpired\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"UUPSUnauthorizedCallContext\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"UUPSUnsupportedProxiableUUID\",\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"slot\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"UnexpectedCaseState\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"UnexpectedCaseType\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"UnexpectedNumberOfResults\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"UnsupportedQueryType\",\n \"inputs\": [\n {\n \"type\": \"uint8\",\n \"name\": \"received\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"UntrustfulVoting\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VerificationFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VersionMismatch\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"WrongQueryType\",\n \"inputs\": [\n {\n \"type\": \"uint8\",\n \"name\": \"received\"\n },\n {\n \"type\": \"uint8\",\n \"name\": \"expected\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ZeroQueries\",\n \"inputs\": []\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"AppealCanceled\",\n \"inputs\": [\n {\n \"type\": \"uint256\",\n \"name\": \"caseId\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"appealCaseId\",\n \"indexed\": false\n },\n {\n \"type\": \"address\",\n \"name\": \"complainant\",\n \"indexed\": false\n },\n {\n \"type\": \"bool\",\n \"name\": \"isMalicious\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"AppealFiled\",\n \"inputs\": [\n {\n \"type\": \"uint256\",\n \"name\": \"caseId\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"appealCaseId\",\n \"indexed\": false\n },\n {\n \"type\": \"address\",\n \"name\": \"respondent\",\n \"indexed\": false\n },\n {\n \"type\": \"address\",\n \"name\": \"appealToken\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"appealBond\",\n \"indexed\": false\n },\n {\n \"type\": \"uint64\",\n \"name\": \"appealDeadline\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"AppealResolved\",\n \"inputs\": [\n {\n \"type\": \"uint256\",\n \"name\": \"caseId\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"appealCaseId\",\n \"indexed\": false\n },\n {\n \"type\": \"uint8\",\n \"name\": \"resolution\",\n \"indexed\": false\n },\n {\n \"type\": \"address\",\n \"name\": \"complainant\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"BondClaimed\",\n \"inputs\": [\n {\n \"type\": \"uint256\",\n \"name\": \"caseId\",\n \"indexed\": false\n },\n {\n \"type\": \"address\",\n \"name\": \"user\",\n \"indexed\": false\n },\n {\n \"type\": \"address\",\n \"name\": \"token\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"amount\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"CaseAppealsResolved\",\n \"inputs\": [\n {\n \"type\": \"uint256\",\n \"name\": \"caseId\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"CaseRiskClosed\",\n \"inputs\": [\n {\n \"type\": \"uint256\",\n \"name\": \"caseId\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"DisputeCanceled\",\n \"inputs\": [\n {\n \"type\": \"uint256\",\n \"name\": \"caseId\",\n \"indexed\": false\n },\n {\n \"type\": \"address\",\n \"name\": \"complainant\",\n \"indexed\": false\n },\n {\n \"type\": \"bool\",\n \"name\": \"isMalicious\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"DisputeConfigurationUpdated\",\n \"inputs\": [\n {\n \"type\": \"tuple\",\n \"name\": \"newDisputeConfigration\",\n \"indexed\": false,\n \"components\": [\n {\n \"type\": \"address\",\n \"name\": \"appealToken\"\n },\n {\n \"type\": \"uint64\",\n \"name\": \"disputeBondUsd\"\n },\n {\n \"type\": \"uint64\",\n \"name\": \"appealBondUsd\"\n },\n {\n \"type\": \"uint64\",\n \"name\": \"disputeThresholdUsd\"\n },\n {\n \"type\": \"uint64\",\n \"name\": \"caseDuration\"\n },\n {\n \"type\": \"uint64\",\n \"name\": \"voteDuration\"\n },\n {\n \"type\": \"uint64\",\n \"name\": \"resolveDuration\"\n },\n {\n \"type\": \"uint32\",\n \"name\": \"voteCountRate\"\n },\n {\n \"type\": \"uint32\",\n \"name\": \"effectiveVoteRate\"\n }\n ]\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"DisputeFiled\",\n \"inputs\": [\n {\n \"type\": \"uint256\",\n \"name\": \"caseId\",\n \"indexed\": false\n },\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\",\n \"indexed\": false\n },\n {\n \"type\": \"address\",\n \"name\": \"complainant\",\n \"indexed\": false\n },\n {\n \"type\": \"address\",\n \"name\": \"poolToken\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"disputeBond\",\n \"indexed\": false\n },\n {\n \"type\": \"uint64\",\n \"name\": \"caseDeadline\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"DisputeResolved\",\n \"inputs\": [\n {\n \"type\": \"uint256\",\n \"name\": \"caseId\",\n \"indexed\": false\n },\n {\n \"type\": \"uint8\",\n \"name\": \"resolution\",\n \"indexed\": false\n },\n {\n \"type\": \"uint64\",\n \"name\": \"appealDeadline\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"ForfeitBondsClaimed\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"receiver\",\n \"indexed\": false\n },\n {\n \"type\": \"address\",\n \"name\": \"token\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"amount\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"Initialized\",\n \"inputs\": [\n {\n \"type\": \"uint64\",\n \"name\": \"version\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"ReimbursementProcessed\",\n \"inputs\": [\n {\n \"type\": \"uint256\",\n \"name\": \"caseId\",\n \"indexed\": false\n },\n {\n \"type\": \"tuple\",\n \"name\": \"reimbursementInfo\",\n \"indexed\": false,\n \"components\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"merkleRoot\"\n },\n {\n \"type\": \"address\",\n \"name\": \"baseToken\"\n },\n {\n \"type\": \"address\",\n \"name\": \"quoteToken\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"totalBaseAmount\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"totalQuoteAmount\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"claimedBaseAmount\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"claimedQuoteAmount\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"expireTime\"\n }\n ]\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"Upgraded\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"implementation\",\n \"indexed\": true\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"Voted\",\n \"inputs\": [\n {\n \"type\": \"uint256\",\n \"name\": \"caseId\",\n \"indexed\": false\n },\n {\n \"type\": \"address\",\n \"name\": \"voter\",\n \"indexed\": false\n },\n {\n \"type\": \"uint8\",\n \"name\": \"voteOption\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"VotingOpened\",\n \"inputs\": [\n {\n \"type\": \"uint256\",\n \"name\": \"caseId\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"evidenceId\",\n \"indexed\": false\n },\n {\n \"type\": \"uint64\",\n \"name\": \"voteDeadline\",\n \"indexed\": false\n },\n {\n \"type\": \"address[]\",\n \"name\": \"respondents\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"WormholeConfigurationUpdated\",\n \"inputs\": [\n {\n \"type\": \"tuple\",\n \"name\": \"newWormholeConfiguration\",\n \"indexed\": false,\n \"components\": [\n {\n \"type\": \"address\",\n \"name\": \"wormhole\"\n },\n {\n \"type\": \"address\",\n \"name\": \"staker\"\n },\n {\n \"type\": \"bytes4\",\n \"name\": \"selector\"\n }\n ]\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"UPGRADE_INTERFACE_VERSION\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"string\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"appeal\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"uint256\",\n \"name\": \"caseId\"\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"canRiskControlClose\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"uint256\",\n \"name\": \"caseId\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"bool\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"cancelAppeal\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"uint256\",\n \"name\": \"caseId\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"appealCaseId\"\n },\n {\n \"type\": \"bool\",\n \"name\": \"isMalicious\"\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"cancelDispute\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"uint256\",\n \"name\": \"caseId\"\n },\n {\n \"type\": \"bool\",\n \"name\": \"isMalicious\"\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"caseIdSequencer\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"checkRiskControlCloseCompleted\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"uint256\",\n \"name\": \"caseId\"\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"claimBond\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"uint256\",\n \"name\": \"caseId\"\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"claimForfeitBonds\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"receiver\"\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"fileDispute\",\n \"constant\": false,\n \"stateMutability\": \"payable\",\n \"payable\": true,\n \"inputs\": [\n {\n \"type\": \"tuple[]\",\n \"name\": \"prices\",\n \"components\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"uint8\",\n \"name\": \"oracleType\"\n },\n {\n \"type\": \"uint64\",\n \"name\": \"publishTime\"\n },\n {\n \"type\": \"bytes\",\n \"name\": \"oracleUpdateData\"\n }\n ]\n },\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"address\",\n \"name\": \"poolToken\"\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"fileDisputeFromStaker\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"bytes\",\n \"name\": \"response\"\n },\n {\n \"type\": \"tuple[]\",\n \"name\": \"guardianSignatures\",\n \"components\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"r\"\n },\n {\n \"type\": \"bytes32\",\n \"name\": \"s\"\n },\n {\n \"type\": \"uint8\",\n \"name\": \"v\"\n },\n {\n \"type\": \"uint8\",\n \"name\": \"guardianIndex\"\n }\n ]\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"getAddressManager\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"address\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"getDependencyAddress\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"identifier\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"address\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"getDisputeConfiguration\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"tuple\",\n \"components\": [\n {\n \"type\": \"address\",\n \"name\": \"appealToken\"\n },\n {\n \"type\": \"uint64\",\n \"name\": \"disputeBondUsd\"\n },\n {\n \"type\": \"uint64\",\n \"name\": \"appealBondUsd\"\n },\n {\n \"type\": \"uint64\",\n \"name\": \"disputeThresholdUsd\"\n },\n {\n \"type\": \"uint64\",\n \"name\": \"caseDuration\"\n },\n {\n \"type\": \"uint64\",\n \"name\": \"voteDuration\"\n },\n {\n \"type\": \"uint64\",\n \"name\": \"resolveDuration\"\n },\n {\n \"type\": \"uint32\",\n \"name\": \"voteCountRate\"\n },\n {\n \"type\": \"uint32\",\n \"name\": \"effectiveVoteRate\"\n }\n ]\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"getImplementation\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"address\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"initialize\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"addressManager\"\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"isCaseRespondents\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"uint256\",\n \"name\": \"caseId\"\n },\n {\n \"type\": \"address\",\n \"name\": \"account\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"bool\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"nonces\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"owner\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"openVoting\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"uint256\",\n \"name\": \"caseId\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"evidenceId\"\n },\n {\n \"type\": \"address[]\",\n \"name\": \"respondents\"\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"processReimbursement\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"uint256\",\n \"name\": \"caseId\"\n },\n {\n \"type\": \"tuple\",\n \"name\": \"reimbursementInfo\",\n \"components\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"merkleRoot\"\n },\n {\n \"type\": \"address\",\n \"name\": \"baseToken\"\n },\n {\n \"type\": \"address\",\n \"name\": \"quoteToken\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"totalBaseAmount\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"totalQuoteAmount\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"claimedBaseAmount\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"claimedQuoteAmount\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"expireTime\"\n }\n ]\n },\n {\n \"type\": \"bytes32[]\",\n \"name\": \"zeroMerkleProof\"\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"proxiableUUID\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"resolveCaseAppeals\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"uint256\",\n \"name\": \"caseId\"\n },\n {\n \"type\": \"bytes\",\n \"name\": \"response\"\n },\n {\n \"type\": \"tuple[]\",\n \"name\": \"guardianSignatures\",\n \"components\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"r\"\n },\n {\n \"type\": \"bytes32\",\n \"name\": \"s\"\n },\n {\n \"type\": \"uint8\",\n \"name\": \"v\"\n },\n {\n \"type\": \"uint8\",\n \"name\": \"guardianIndex\"\n }\n ]\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"resolveDispute\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"uint256\",\n \"name\": \"caseId\"\n },\n {\n \"type\": \"bytes\",\n \"name\": \"response\"\n },\n {\n \"type\": \"tuple[]\",\n \"name\": \"guardianSignatures\",\n \"components\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"r\"\n },\n {\n \"type\": \"bytes32\",\n \"name\": \"s\"\n },\n {\n \"type\": \"uint8\",\n \"name\": \"v\"\n },\n {\n \"type\": \"uint8\",\n \"name\": \"guardianIndex\"\n }\n ]\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"updateDisputeConfiguration\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"tuple\",\n \"name\": \"disputeConfiguration\",\n \"components\": [\n {\n \"type\": \"address\",\n \"name\": \"appealToken\"\n },\n {\n \"type\": \"uint64\",\n \"name\": \"disputeBondUsd\"\n },\n {\n \"type\": \"uint64\",\n \"name\": \"appealBondUsd\"\n },\n {\n \"type\": \"uint64\",\n \"name\": \"disputeThresholdUsd\"\n },\n {\n \"type\": \"uint64\",\n \"name\": \"caseDuration\"\n },\n {\n \"type\": \"uint64\",\n \"name\": \"voteDuration\"\n },\n {\n \"type\": \"uint64\",\n \"name\": \"resolveDuration\"\n },\n {\n \"type\": \"uint32\",\n \"name\": \"voteCountRate\"\n },\n {\n \"type\": \"uint32\",\n \"name\": \"effectiveVoteRate\"\n }\n ]\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"updateWormholeConfiguration\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"tuple\",\n \"name\": \"wormholeConfiguration\",\n \"components\": [\n {\n \"type\": \"address\",\n \"name\": \"wormhole\"\n },\n {\n \"type\": \"address\",\n \"name\": \"staker\"\n },\n {\n \"type\": \"bytes4\",\n \"name\": \"selector\"\n }\n ]\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"upgradeTo\",\n \"constant\": false,\n \"stateMutability\": \"payable\",\n \"payable\": true,\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"newImplementation\"\n },\n {\n \"type\": \"bytes\",\n \"name\": \"data\"\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"upgradeToAndCall\",\n \"constant\": false,\n \"stateMutability\": \"payable\",\n \"payable\": true,\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"newImplementation\"\n },\n {\n \"type\": \"bytes\",\n \"name\": \"data\"\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"vote\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"uint256\",\n \"name\": \"caseId\"\n },\n {\n \"type\": \"address\",\n \"name\": \"validator\"\n },\n {\n \"type\": \"uint8\",\n \"name\": \"voteOption\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"deadline\"\n },\n {\n \"type\": \"uint8\",\n \"name\": \"v\"\n },\n {\n \"type\": \"bytes32\",\n \"name\": \"r\"\n },\n {\n \"type\": \"bytes32\",\n \"name\": \"s\"\n }\n ],\n \"outputs\": []\n }\n]\n","[\n {\n \"type\": \"error\",\n \"name\": \"AccountInsufficientFreeAmount\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"AccountInsufficientReservedAmount\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"AccountInsufficientTradableAmount\",\n \"inputs\": [\n {\n \"type\": \"uint256\",\n \"name\": \"accountTradableAmount\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"requiredTradableAmount\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"AddressEmptyCode\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"target\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ERC1967InvalidImplementation\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"implementation\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ERC1967NonPayable\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"FailedCall\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidInitialization\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotAddressManager\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotDependencyManager\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotInitializing\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotProxyAdmin\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"PermissionDenied\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"caller\"\n },\n {\n \"type\": \"address\",\n \"name\": \"target\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"SafeERC20FailedOperation\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"token\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"UUPSUnauthorizedCallContext\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"UUPSUnsupportedProxiableUUID\",\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"slot\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"DepositToAccount\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"account\",\n \"indexed\": false\n },\n {\n \"type\": \"address\",\n \"name\": \"token\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"amount\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"ExecuteCompensation\",\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"baseAmount\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"quoteAmount\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"Initialized\",\n \"inputs\": [\n {\n \"type\": \"uint64\",\n \"name\": \"version\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"PayWithPrincipal\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"account\",\n \"indexed\": false\n },\n {\n \"type\": \"address\",\n \"name\": \"receiver\",\n \"indexed\": false\n },\n {\n \"type\": \"address\",\n \"name\": \"token\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"amount\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"PayWithProfitFirst\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"account\",\n \"indexed\": false\n },\n {\n \"type\": \"address\",\n \"name\": \"receiver\",\n \"indexed\": false\n },\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\",\n \"indexed\": false\n },\n {\n \"type\": \"address\",\n \"name\": \"token\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"usedFreeAmount\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"usedRestrictedAmount\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"ReleaseForOrder\",\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"orderId\",\n \"indexed\": false\n },\n {\n \"type\": \"address\",\n \"name\": \"account\",\n \"indexed\": false\n },\n {\n \"type\": \"address\",\n \"name\": \"token\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"amount\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"ReleaseProfit\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"account\",\n \"indexed\": false\n },\n {\n \"type\": \"address\",\n \"name\": \"token\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"amount\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"ReserveForOrder\",\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"orderId\",\n \"indexed\": false\n },\n {\n \"type\": \"address\",\n \"name\": \"account\",\n \"indexed\": false\n },\n {\n \"type\": \"address\",\n \"name\": \"token\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"amount\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"SettleToAccount\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"account\",\n \"indexed\": false\n },\n {\n \"type\": \"bytes32\",\n \"name\": \"positionId\",\n \"indexed\": false\n },\n {\n \"type\": \"address\",\n \"name\": \"baseToken\",\n \"indexed\": false\n },\n {\n \"type\": \"address\",\n \"name\": \"quoteToken\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"freeBase\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"profitBase\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"freeAmount\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"profitAmount\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"Upgraded\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"implementation\",\n \"indexed\": true\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"WithdrawFromAccount\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"account\",\n \"indexed\": false\n },\n {\n \"type\": \"address\",\n \"name\": \"token\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"amount\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"UPGRADE_INTERFACE_VERSION\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"string\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"__ERC2771ContextUpgradeable_init\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"trustedForwarder_\"\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"deposit\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"account\"\n },\n {\n \"type\": \"address\",\n \"name\": \"token\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"amount\"\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"executeCompensation\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"address\",\n \"name\": \"reimbursement\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"baseAmount\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"quoteAmount\"\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"getAddressManager\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"address\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"getDependencyAddress\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"identifier\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"address\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"getImplementation\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"address\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"getPoolWithdrawableBaseToken\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"account\"\n },\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"uint256\",\n \"name\": \"baseAmount\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"getTradableAmount\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"account\"\n },\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"bool\"\n },\n {\n \"type\": \"uint256\"\n },\n {\n \"type\": \"uint256\"\n },\n {\n \"type\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"getUserAsset\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"account\"\n },\n {\n \"type\": \"address\",\n \"name\": \"token\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"uint256\",\n \"name\": \"amount\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"getUserAssets\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"account\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"tuple[]\",\n \"components\": [\n {\n \"type\": \"address\",\n \"name\": \"asset\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"amount\"\n }\n ]\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"initialize\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"addressManager\"\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"isTrustedForwarder\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"forwarder\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"bool\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"payWithPrincipal\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"address\",\n \"name\": \"account\"\n },\n {\n \"type\": \"address\",\n \"name\": \"token\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"amount\"\n },\n {\n \"type\": \"address\",\n \"name\": \"receiver\"\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"payWithProfitFirst\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"orderId\"\n },\n {\n \"type\": \"address\",\n \"name\": \"account\"\n },\n {\n \"type\": \"address\",\n \"name\": \"token\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"amount\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"uint256\",\n \"name\": \"usedFreeAmount\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"usedRestrictedAmount\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"proxiableUUID\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"releaseForCancelOrder\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"orderId\"\n },\n {\n \"type\": \"address\",\n \"name\": \"account\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"amount\"\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"releaseFromProfitUnlock\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"account\"\n },\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"baseAmount\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"quoteAmount\"\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"reserveForOrder\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"orderId\"\n },\n {\n \"type\": \"address\",\n \"name\": \"account\"\n },\n {\n \"type\": \"address\",\n \"name\": \"token\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"amount\"\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"settlementDeposit\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"positionId\"\n },\n {\n \"type\": \"address\",\n \"name\": \"account\"\n },\n {\n \"type\": \"tuple\",\n \"name\": \"pool\",\n \"components\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"marketId\"\n },\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"address\",\n \"name\": \"baseToken\"\n },\n {\n \"type\": \"address\",\n \"name\": \"quoteToken\"\n },\n {\n \"type\": \"uint8\",\n \"name\": \"riskTier\"\n },\n {\n \"type\": \"uint8\",\n \"name\": \"state\"\n },\n {\n \"type\": \"address\",\n \"name\": \"basePoolToken\"\n },\n {\n \"type\": \"address\",\n \"name\": \"quotePoolToken\"\n },\n {\n \"type\": \"uint16\",\n \"name\": \"maxPriceDeviation\"\n },\n {\n \"type\": \"bool\",\n \"name\": \"compoundEnabled\"\n },\n {\n \"type\": \"uint64\",\n \"name\": \"windowCapUsd\"\n },\n {\n \"type\": \"address\",\n \"name\": \"poolVault\"\n },\n {\n \"type\": \"address\",\n \"name\": \"tradingVault\"\n }\n ]\n },\n {\n \"type\": \"uint256\",\n \"name\": \"freeBaseAmount\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"freeQuoteAmount\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"receivedBaseAmount\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"receivedQuoteAmount\"\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"trustedForwarder\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"address\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"updateAndWithdraw\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"receiver\"\n },\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"bool\",\n \"name\": \"isQuoteToken\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"amount\"\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"upgradeTo\",\n \"constant\": false,\n \"stateMutability\": \"payable\",\n \"payable\": true,\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"newImplementation\"\n },\n {\n \"type\": \"bytes\",\n \"name\": \"data\"\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"upgradeToAndCall\",\n \"constant\": false,\n \"stateMutability\": \"payable\",\n \"payable\": true,\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"newImplementation\"\n },\n {\n \"type\": \"bytes\",\n \"name\": \"data\"\n }\n ],\n \"outputs\": []\n }\n]\n","import { ContractAddress } from \"@/config/chain.js\";\n\nexport const ARB_TEST_SEPOLIA: ContractAddress = {\n USDC: '0x7E248Ec1721639413A280d9E82e2862Cae2E6E28',\n POOL_MANAGER: '0xB131655F326E82753b0e76c1ce853E257524f3a4',\n Account: '0x0dF5950d0D89d808acC8B712Ed5d5A96fe6A3830',\n POSITION_MANAGER: '0xE6A51b8FC1b0e2a7f6ab8a0a85Ec4ab5210dF4fB',\n ORDER_MANAGER: '0xBD72c9F021F1eEA52Ac5dA378C9ffA3612Bfb687',\n PYTH: '0x4374e5a8b9C22271E9EB878A2AA31DE97DF15DAF', // Not a Pyth Adapter\n ERC20: '0x7E248Ec1721639413A280d9E82e2862Cae2E6E28',\n LIQUIDITY_ROUTER: '0x0fb875c10fe2fF981e467765E3daaE4355b180D0',\n BASE_POOL: '0xeC0b3C76cC1C47f9B29313c706c1F6FD8D1C023f',\n QUOTE_POOL: '0x608Bfd6B8Df0807aA6d1500B76a3eAb3C9DFd728',\n ORACLE: '0xDa5f18BFeC36A397ad9c4AFc82ddfAb1429C66Be', // MYXOracle\n EIP7702Delegation: '0x56Db3d459c8b9386f5B9ddFd91C0ef149200Cfc4',\n MARKET_MANAGER: \"0xa7C6eD2b34a281463bEeE30b3784f9bc4696e7f1\",\n DATA_PROVIDER: \"0xdf535EF442a99B1b2C9fBd0a52D7d612234d123c\",\n ORACLE_RESERVE: \"0xf8fC5a3E721f83a75A319313C1A5eAa1bbC838FE\",\n FORWARDER: '0x64A5099C3382f7fdA44F9D329faa86C27dA3D375',\n TRADING_ROUTER: \"0x1168c934cFBDADF425280e890B5f2d47ddE778BE\",\n REIMBURSEMENT: \"0x6bAac84Ec2B9586A0Da460CC04dFB69efBe85724\",\n DISPUTE_COURT: \"0x51fF606E074637A8C7DDD276B3794a8205739b42\",\n}\n\n\n\n","import { ContractAddress } from \"@/config/chain.js\";\n\nexport const ARB_BETA_SEPOLIA: ContractAddress = {\n USDC: '0x7E248Ec1721639413A280d9E82e2862Cae2E6E28',\n POOL_MANAGER: '0x05314a21Fc97B74f168730153b2B63A870D25dE5',\n Account: '0xAC0ca67fd6C7Ff9c80DE58420B840115b6d51c6e',\n POSITION_MANAGER: '0x1a8cC8391Ee19c3817de64a52904D0557f519bA5',\n ORDER_MANAGER: '0x3138f425f11f14fE33a180e9Bbf0661C8dc6d8AD',\n PYTH: '0x4374e5a8b9C22271E9EB878A2AA31DE97DF15DAF', // Not a Pyth Adapter\n ERC20: '0x7E248Ec1721639413A280d9E82e2862Cae2E6E28',\n LIQUIDITY_ROUTER:'0xfb790ECE13Cd9e296b4a06ABF38D10431360c236',\n BASE_POOL: '0x1F767BEa83EDe5E0C18904f439C579f52c2c0F1b',\n QUOTE_POOL:'0x50ad7da312c58c6689bEF028954a366cb5b8ee13',\n ORACLE: '0x3e437094C5687Ed6eDb1883b0bd445Efa9103a55', // MYXOracle\n EIP7702Delegation: '0xc68fdf81ca68B26fdB296645F42a734c12E63751',\n MARKET_MANAGER: \"0x71b57CcB7539aB761fd5C5767362A207a295e337\",\n DATA_PROVIDER: \"0xd4FdE3cc72D29b71507823cA43Dd6fD520644E92\",\n ORACLE_RESERVE: \"0x4fC26Cf34e5d486BFF211315bf17D77d34130971\",\n FORWARDER: '0x58fb1a663b08871A755734231C387E1d10ac2B10',\n TRADING_ROUTER: \"0x89ba8EDBD63f577cAA1095F25Df0A44A226f28bc\",\n REIMBURSEMENT: \"0xDbCe02B080C68671EF6EcEc1a01A789441A3a564\",\n DISPUTE_COURT: \"0x47648D171925a69b3A334898AaaE6e7cc41B1735\",\n}\n","import { ContractAddress } from \"@/config/chain.js\";\n\nexport const LINEA_SEPOLIA: ContractAddress = {\n USDC: '0xD984fd34f91F92DA0586e1bE82E262fF27DC431b',\n POOL_MANAGER: '0x85e869d98216221807A06636541Ec93C9c0a4B0c',\n Account: '0xA2c5f49a8722408CDa79460CcEd5B97aDcA4cD56',\n POSITION_MANAGER: '0x68fE700557Fc766DF9b9959E11fd9DacA3f2ccdA',\n ORDER_MANAGER: '0xC2C479bfb9b6317D37d77C9A1867Af15a457B39D',\n PYTH: '0xA2aa501b19aff244D90cc15a4Cf739D2725B5729', // Not a Pyth Adapter\n ERC20: '0xD984fd34f91F92DA0586e1bE82E262fF27DC431b',\n LIQUIDITY_ROUTER:'0xc5331ab0159379E6CfCC1f09b63360D0B9715D74',\n BASE_POOL: '0x8440a78E65F07D8013dd5B0640E0E713c8fd9893',\n QUOTE_POOL:'0x50F1F7A772672FE0637cF89AD3aFc093584eD040',\n ORACLE: '0x9F8e2296fa10d77897E7B252460d27b855eeD251', // MYXOracle\n EIP7702Delegation: '0x9558a64E54de8294E7bcCBA62Ee7323c43473abb',\n MARKET_MANAGER: \"0x3BEaaBc8ba2e117E5B66354F8F5D6dc97F71d434\",\n DATA_PROVIDER: \"0x7C672f90CCB8b3500F4285Bf22eBb3A98b4eFEB5\",\n ORACLE_RESERVE: \"0x27fd8356cE30Aae5440ce2B765beA5d2527efbAD\",\n FORWARDER: '0xb7Bc467202C8C023ba064E368d979381BCfeD62E',\n TRADING_ROUTER: '0x2894Ea4ca2D177E6070Ad7b53Bf6C20C6BE83cd6',\n REIMBURSEMENT: \"0x0C076Af7AC1861cf85a76eC8bdE4f67dbf23f2b2\",\n DISPUTE_COURT: \"0xbf9C0bbfd60e28906C5b1EB05875411A0Ba01435\",\n}\n\n\n\n","import { ContractAddress } from \"@/config/chain.js\";\n\nexport const LINEA_BETA_SEPOLIA: ContractAddress = {\n POOL_MANAGER: '0xcf51a6895864c6D8E507fC31EF16b9011287c5f4',\n Account: '0x35054EfE58Bbdae792aeCaD7bC2e4939c169560f',\n POSITION_MANAGER: '0x689A0C7E46785584FF7636700ceF5d5e7c141F8D',\n ORDER_MANAGER: '0xa0B5E5AE9D3E214096C90DDeC04D39B27ED9B272',\n PYTH: '0xA2aa501b19aff244D90cc15a4Cf739D2725B5729', // Not a Pyth Adapter\n ERC20: '0xD984fd34f91F92DA0586e1bE82E262fF27DC431b',\n LIQUIDITY_ROUTER: '0x0AE31989318565620c03d35889a0B2536b8fba5C',\n BASE_POOL: '0xc9e3826c42183207B418116A16827C1605132c51',\n QUOTE_POOL: '0x9A9934D3b22103dE822d94A22A3177d728FE0e5a',\n ORACLE: '0x0dD8293765358cF7f2646D0B91bA59804E197FC6', // MYXOracle\n EIP7702Delegation: '0x4686F8a0d44b056037b2A51c4342EE7FA8e0A48F',\n MARKET_MANAGER: \"0xe99dAB65c5546D7C87850Bbc40C6a7BEd7328Efa\",\n DATA_PROVIDER: \"0x5b6Be9839552a49302d552aB3C223b60Adb8BF1D\",\n ORACLE_RESERVE: \"0xB3D5a67223905FE73a0749e7A03525838063C54C\",\n USDC: '0xD984fd34f91F92DA0586e1bE82E262fF27DC431b',\n FORWARDER: '0x6C40462A4d45BA4119af59Fb9e41b8eaC9293962',\n TRADING_ROUTER: '0x0000000000000000000000000000000000000000',\n REIMBURSEMENT: \"0x0000000000000000000000000000000000000000\",\n DISPUTE_COURT: \"0x0000000000000000000000000000000000000000\",\n}\n\n\n\n","import { ContractAddress } from \"@/config/chain.js\";\n\nexport const BSC_TEST_NET: ContractAddress = {\n USDC: '0xe944d7c0f7005a76E898Ee3B9Ec10479EbA9Cc02',\n POOL_MANAGER: '0x4F917ef137b573D9790b87e3cF6dfb698cF00c9c',\n Account: '0xE58CC82F96c86f8F809A98BE14D9DC929d503e25',\n POSITION_MANAGER: '0x7A5000A1DDE26520BfC893c676a288F98F8a029c',\n ORDER_MANAGER: '0x343d7563eFb904375Fea81BcC4A3eCdDc0CDa8C9',\n PYTH: '0x5744Cbf430D99456a0A8771208b674F27f8EF0Fb', // Not a Pyth Adapter\n ERC20: '0xe944d7c0f7005a76E898Ee3B9Ec10479EbA9Cc02',\n LIQUIDITY_ROUTER:'0xe9F2E58562aD1D50AfB1eD92EAa6D367A6D0e552',\n BASE_POOL: '0x39506f97D1c1A91EAfD59368697E20dC1fE5eEDB',\n QUOTE_POOL:'0x80DAa474e7e2C9c86708e434B80636b92fb4e9EE',\n ORACLE: '0xB980765F0D5D3B482601F1a62Ec898619DA9c0C5', // MYXOracle\n EIP7702Delegation: '0x9d43e7847f74E141E1A2B4C413D5F89520995551',\n MARKET_MANAGER: \"0x624d1D5258b34d5C3F4f9CdCB7582F677643cdDC\",\n DATA_PROVIDER: \"0xb3c6b1448F04B3Eb9A5D83D6c32B0a10F3E7281B\",\n ORACLE_RESERVE: \"0x949e8a0284eA5509B47619e7667C3aA43B7c0336\",\n FORWARDER: '0x73F9F9205E2F7E0Fb886afC3D2a53399C85383a5',\n TRADING_ROUTER: '0x0000000000000000000000000000000000000000',\n REIMBURSEMENT: \"0x0000000000000000000000000000000000000000\",\n DISPUTE_COURT: \"0x0000000000000000000000000000000000000000\",\n}\n\n\n\n","import { ContractAddress } from \"@/config/chain.js\";\n\nexport const BSC_BETA_NET: ContractAddress = {\n USDC: '0xe944d7c0f7005a76E898Ee3B9Ec10479EbA9Cc02',\n POOL_MANAGER: '0x9E84a999e15CCdb2F64a5AF10939c25769dF6b07',\n Account: '0x42A1BC012CeC51Ebf3bbf79142bf2a912396FB0e',\n POSITION_MANAGER: '0x011a25Fe39b2f9033E49d1587CF24780242e40dA',\n ORDER_MANAGER: '0xfc30D3C858B72a9EDfE6679Fc3355039D276f811',\n PYTH: '0x5744Cbf430D99456a0A8771208b674F27f8EF0Fb', // Not a Pyth Adapter\n ERC20: '0xe944d7c0f7005a76E898Ee3B9Ec10479EbA9Cc02',\n LIQUIDITY_ROUTER:'0x0F4C6f18Fb136DD1eBd6Da3C5d86a86597CF79a3',\n BASE_POOL: '0x51B62554a76197d5DF2D5dC4D57FF54d40775938',\n QUOTE_POOL:'0x783Ed065a12e1C1D33c2a8d6408385C1843D3084',\n ORACLE: '0xaF26d69BC0A6f1DEf8AeB00B6DAD28398ba67a53', // MYXOracle\n EIP7702Delegation: '0xc8558cD3905F273ff45B1dd6D10894445bFa622f',\n MARKET_MANAGER: \"0x3b809daB550f9DD0DbE82567f6EA6137C174532c\",\n DATA_PROVIDER: \"0x4B5888025570934cC9D31807feBAAEDaC823Cb8e\",\n ORACLE_RESERVE: \"0x3011dA5822c1ECA7fcda64716779769D0089945D\",\n FORWARDER: '0x2943a063ae2A772f4314FaA28E00De827A491Dd3',\n TRADING_ROUTER: '0xaA16801F36e49cDD4f87938032487C7E6cfbb389',\n REIMBURSEMENT: \"0xBF72B69bA547D0bB7D1255B43Ff5D7f2615326dF\",\n DISPUTE_COURT: \"0xeD8B129a5919c45c7391AA73632eA691A471C672\",\n}\n\n\n\n","import wretch, { WretchOptions } from \"wretch\";\n\nconst client = wretch();\n\n/**\n * Build query options\n */\nconst buildQueryOptions = (url: string, params?: Record<string, any>) => {\n if (params) {\n params = JSON.parse(JSON.stringify(params));\n if (url.includes(\"?\")) {\n return url + \"&\" + new URLSearchParams(params).toString();\n }\n return url + \"?\" + new URLSearchParams(params).toString();\n }\n return url;\n};\n\n/**\n * Http request\n */\nexport const http = {\n /**\n * Get request\n */\n get: <T = Record<string, any>>(\n url: string,\n params?: Record<string, any>,\n options: WretchOptions = {}\n ) => {\n const requestUrl = buildQueryOptions(url, params);\n return client.url(requestUrl).options(options).get().json<T>();\n },\n\n /**\n * Post request\n */\n post: <T = Record<string, any>>(\n url: string,\n data?: Record<string, any>,\n options: WretchOptions = {}\n ) => {\n return client.url(url).options(options).post(data).json<T>();\n },\n\n /**\n * Put request\n */\n put: <T = Record<string, any>>(\n url: string,\n data?: Record<string, any>,\n options: WretchOptions = {}\n ) => {\n return client.url(url).options(options).put(data).json<T>();\n },\n\n /**\n * Delete request\n */\n delete: <T = Record<string, any>>(\n url: string,\n options: WretchOptions = {}\n ) => {\n return client.url(url).options(options).delete().json<T>();\n },\n};\n\n","import { Direction, OperationType, OrderType, TimeInForce } from \"@/types/trading.js\";\nimport { PoolType, TriggerType } from \"@/lp/pool/index.js\";\nimport { ChainId } from \"@/config/chain.js\";\nexport interface ObjectType<T> {\n [key: string]: T;\n}\nexport type Address = `0x${string}`;\nexport type NetWorkFee = {\n paymentType: number;\n volScale: number;\n};\nexport enum ErrorCode {\n SUCCESS = 9200,\n SUCCESS_ORIGIN = 0,\n IDENTITY_VERIFICATION_FAILED = 9401,\n PERMISSION_DENIED = 9403,\n NOT_EXIST = 9404,\n REQUEST_LIMIT = 9429,\n SERVICE_ERROR = 9500,\n MISS_REQUESTED_PARAMETER = 9900,\n INVALID_PARAMETER = 9901,\n NETWORK_ERROR = \"ERR_NETWORK\",\n}\nexport interface BaseResponse<T = any> {\n code: ErrorCode;\n msg: string | null;\n data?: T;\n}\n\nexport type DashboardType = {\n lpAsset: string;\n cumTradeAmount: string;\n cumEarnings: string;\n accountCount: number;\n positionAmount: string;\n positionAmountRate: string | number;\n accountCountRate: string | number;\n tradeAmountRate: number | string;\n lpAssetRate: string | number;\n earningsRate: string | number;\n};\n\nexport interface StatDashBoardResponse extends BaseResponse {\n data: DashboardType;\n}\n\nexport type AccessTokenType = {\n accessToken: string;\n expireAt: number;\n allowAccount: string;\n appId: string;\n};\n\nexport interface AccessTokenResponse extends BaseResponse {\n data: AccessTokenType;\n}\n\nexport enum MarketPoolState {\n Cook = 0, // Market created\n Primed = 1, // Fee charged, waiting for oracle initialization\n Trench = 2, // Trading enabled\n PreBench = 3, // Pending delisting\n Bench = 4, // Delisted\n}\n\nexport type MarketPool = {\n chainId: number;\n marketId: string;\n poolId: string;\n oracleId?: number | null;\n globalId: number;\n state: MarketPoolState;\n baseSymbol: string;\n quoteSymbol: string;\n baseDecimals: number;\n quoteDecimals: number;\n baseToken: string;\n quoteToken: string;\n basePoolToken: string;\n quotePoolToken: string;\n oracleType?: number | null;\n feedId?: number | null;\n activeTime: number;\n poolPreTime: number;\n};\nexport interface MarketPoolResponse extends BaseResponse {\n data: MarketPool[];\n}\nexport interface PoolResponse extends BaseResponse {\n data: MarketPool;\n}\n\nexport enum OracleType {\n Chainlink = 1,\n Pyth,\n}\nexport type PriceType = {\n oracleId: number;\n price: string;\n vaa: string;\n publishTime: number;\n oracleType?: OracleType;\n nativeFee?: number | string;\n poolId: string;\n};\n\nexport interface PriceResponse extends BaseResponse {\n data: PriceType[];\n}\n\nexport interface ApiResponse<T = Record<string, any>> extends BaseResponse {\n data: T;\n}\n\nexport interface PositionType {\n chainId: number;\n poolId: string;\n positionId: string;\n direction: Direction;\n entryPrice: string;\n size: string;\n collateralAmount: string;\n fundingRateIndex: string;\n riskTier: number;\n txTime: number;\n broker: string;\n userLeverage: number;\n baseSymbol: string;\n quoteSymbol: string;\n earlyClosePrice: string;\n tradingFee: string;\n tokenId: string | null;\n freeAmount: string;\n lockedAmount: string;\n}\n\nexport interface PositionResponse extends BaseResponse {\n data: PositionType[];\n}\n\nexport interface OrderItem {\n baseSymbol: string;\n chainId: number;\n collateralAmount: string;\n direction: Direction;\n executionFeeAmount: string;\n executionFeeToken: string | null;\n filledAmount: string;\n filledSize: string;\n operation: OperationType;\n orderId: number;\n orderType: OrderType;\n poolId: string;\n positionId: string;\n postOnly: 0 | 1;\n price: string;\n quoteSymbol: string;\n size: string;\n slPrice: string | null;\n slSize: string | null;\n slippagePct: number;\n tif: TimeInForce;\n tpPrice: string | null;\n tpSize: string | null;\n triggerType: TriggerType;\n txHash: string;\n txTime: number;\n user: string;\n useLeverage: number;\n}\n\nexport interface OrderResponse extends BaseResponse {\n data: OrderItem[];\n}\n\nexport interface PoolOpenOrder {\n amount: string;\n chainId: number;\n minQuoteOut: string;\n orderId: number;\n poolId: string;\n poolType: PoolType;\n triggerPrice: string;\n triggerType: TriggerType;\n txTime: number;\n user: string;\n}\n\nexport interface PoolOpenOrdersResponse extends BaseResponse {\n data: PoolOpenOrder[];\n}\n\nexport interface AccessTokenRequest {\n accessToken: string;\n address: string;\n}\n\nexport interface HttpEnvParams {\n isProd?: boolean\n}\n\nexport enum HttpKlineIntervalEnum {\n Minute1 = 1,\n Minute5 = 5,\n Minute15 = 15,\n Minute30 = 30,\n Hour1 = 60,\n Hour4 = 240,\n Day1 = 1440,\n Week1 = 10080,\n Month1 = 40320,\n}\n\nexport interface KlineDataItemType {\n time: number;\n open: string;\n close: string;\n high: string;\n low: string;\n}\n\nexport interface TickerDataItem {\n chainId: ChainId;\n poolId: string;\n oracleId: number;\n price: string;\n change: string;\n high: string;\n low: string;\n volume: string;\n turnover: string;\n}\n\nexport enum MarketType {\n Contract = 1,\n Cook = 2,\n Earn = 3,\n}\nexport enum SearchTypeEnum {\n All = 0,\n Contract = MarketType.Contract,\n Cook = MarketType.Cook,\n Earn = MarketType.Earn,\n}\n\nexport enum MarketCapType {\n BlueChips = 1,\n Alpha = 2,\n}\nexport enum SearchSecondTypeEnum {\n BlueChips = MarketCapType.BlueChips,\n Alpha = MarketCapType.Alpha,\n Favorite = 3,\n}\n\nexport interface ChainIdRequest {\n chainId: ChainId;\n}\n\nexport type FavoritesType = -1 | 1;\n\nexport interface SearchResultContractItem {\n chainId: ChainId;\n poolId: string;\n baseQuoteSymbol: string;\n symbolName: string;\n baseToken: Address;\n tokenIcon: string;\n type: MarketType;\n capType: MarketCapType;\n favorites: FavoritesType;\n volume: string;\n liquidity: string;\n basePrice: string;\n priceChange: string;\n tvl: string;\n marketCap: string;\n globalId: number;\n baseSymbol: string;\n quoteSymbol: string;\n}\n\nexport interface SearchResultCookItem {\n chainId: ChainId;\n poolId: string;\n mBaseQuoteSymbol: string;\n symbolName: string;\n baseToken: Address;\n tokenIcon: string;\n type: MarketType;\n state: MarketPoolState;\n tvl: string;\n marketCap: string;\n lpPrice: string;\n lpPriceChange: string;\n globalId: number;\n}\n\nexport interface SearchResultEarnItem {\n chainId: ChainId;\n poolId: string;\n mQuoteBaseSymbol: string;\n symbolName: string;\n baseToken: Address;\n tokenIcon: string;\n type: MarketType;\n state: MarketPoolState;\n rating: string;\n tvl: string;\n marketCap: string;\n apr: string;\n globalId: number;\n}\n\nexport interface SearchResultResponse {\n earnInfo: {\n list: SearchResultEarnItem[];\n total: number;\n };\n cookInfo: {\n list: SearchResultCookItem[];\n total: number;\n };\n contractInfo: {\n list: SearchResultContractItem[];\n total: number;\n };\n}\n\n// favorites list\nexport interface FavoritesListItem {\n ChainId: ChainId;\n poolId: string;\n symbolName: string;\n tokenIcon: string;\n capType: MarketCapType;\n baseToken: Address;\n basePrice: string;\n priceChange: string;\n volume: string;\n marketCap: string;\n baseQuoteSymbol: string;\n favorites: FavoritesType;\n}\n\n// base detail\nexport interface BaseDetailResponse {\n totalSupply: string;\n circulation: string;\n marketCap: string;\n fdv: string;\n holders: number;\n traders: number;\n liquidity: string;\n volume: string;\n longPosition: number;\n shortPosition: number;\n fundingRate: string;\n tokenIcon: string;\n poolId: string;\n mSymbol: string;\n symbolName: string;\n lpPriceChange: string;\n chainId: number;\n tokenCreateTime: number;\n baseToken: Address;\n marketId: string;\n basePrice: string;\n tvl: string;\n apr: string;\n}\n\n// market detail\nexport interface MarketDetailResponse {\n chainId: number;\n marketId: string;\n poolId: string;\n oracleId: number;\n globalId: number;\n state: MarketPoolState;\n baseSymbol: string;\n quoteSymbol: string;\n baseDecimals: number;\n quoteDecimals: number;\n baseToken: Address;\n quoteToken: Address;\n basePoolToken: Address;\n quotePoolToken: Address;\n oracleType: OracleType;\n feedId: string;\n activeTime: number;\n capType: MarketCapType;\n baseReserveRatio: string;\n quoteReserveRatio: string;\n}\n\nexport interface MarketInfo {\n chainId: number;\n marketId: string;\n poolId: string;\n quoteSymbol: string;\n quoteDecimals: number;\n quoteToken: string;\n baseReserveRatio: number;\n quoteReserveRatio: number;\n oracleFeeUsd: number;\n oracleRefundFeeUsd: number;\n poolPrimeThreshold: number;\n decimals: number;\n}\n","import type { Address } from \"viem\";\nexport interface GetHistoryOrdersParams {\n limit?: number;\n chainId?: number;\n poolId?: string;\n}\n\nexport enum OrderTypeEnum {\n Market = 0,\n Limit = 1,\n Stop = 2,\n Conditional = 3,\n}\n\nexport enum OperationEnum {\n Increase = 0,\n Decrease = 1,\n}\n\nexport enum TradeFlowTypeEnum {\n Increase = 0,\n Decrease = 1,\n AddMargin = 2,\n RemoveMargin = 3,\n CancelOrder = 4,\n ADL = 5,\n Liquidation = 6,\n MarketClose = 7,\n EarlyClose = 8,\n AddTPSL = 9,\n SecurityDeposit = 10,\n TransferToWallet = 11,\n MarginAccountDeposit = 12,\n ReferralReward = 13,\n ReferralRewardClaim = 14,\n}\n\nexport enum TriggerTypeEnum {\n Unknown = 0,\n GTE = 1,\n LTE = 2,\n}\n\nexport enum DirectionEnum {\n Long = 0,\n Short = 1,\n}\n\nexport enum OrderStatusEnum {\n Cancelled = 1,\n Expired = 2,\n Successful = 9,\n PartialFilled = 8,\n}\n\nexport enum ExecTypeEnum {\n Market = 1, // market order\n Limit = 2, // limit order\n TP = 3, // take profit order\n SL = 4, // stop loss order\n ADL = 5, // auto deleverage order\n ADLTrigger = 6, // auto deleverage trigger order\n Liquidation = 7, // liquidation order\n EarlyClose = 8, // early close order\n MarketClose = 9, // market close order\n}\n\nexport interface HistoryOrderItem {\n chainId: number; // chainId\n poolId: string; // poolId\n orderId: number; // orderId\n txTime: number; // txTime\n txHash: string; // txHash\n orderType: OrderTypeEnum; // orderType\n operation: OperationEnum; // operation\n triggerType: TriggerTypeEnum; // triggerType\n direction: DirectionEnum; // direction\n size: string; // size amount\n filledSize: string; // filled size amount\n filledAmount: string; // filled amount\n price: string; // price\n lastPrice: string; // last price(avg price)\n orderStatus: OrderStatusEnum; // order status\n execType: ExecTypeEnum; // exec type\n slippagePct: number; // slippage percentage\n executionFeeToken: Address; // execution fee token\n executionFeeAmount: string; // execution fee amount\n tradingFee: string; // trading fee\n fundingFee: string; // funding fee\n realizedPnl: string; // realized pnl\n baseSymbol: string; // base symbol\n quoteSymbol: string; // quote symbol\n userLeverage: number; // leverage\n cancelReason?: string; // cancel reason\n}\n\n/**\n * Get position history\n */\n\nexport enum CloseTypeEnum {\n Open = 0,\n PartialClose = 1,\n FullClose = 2,\n Liquidation = 3,\n EarlyClose = 4,\n MarketClose = 5,\n ADL = 6,\n TP = 7,\n SL = 8,\n Increase = 9,\n}\nexport interface PositionHistoryItem {\n chainId: number;\n poolId: string;\n positionId: number;\n direction: DirectionEnum;\n entryPrice: string;\n fundingRateIndex: string;\n size: string;\n filledSize: string;\n riskTier: number;\n collateralAmount: string;\n openTime: number;\n closeTime: number;\n realizedPnl: string;\n baseSymbol: string; // base symbol\n quoteSymbol: string; // quote symbol\n userLeverage: number; // leverage\n closeType: CloseTypeEnum; // close type\n avgClosePrice: string; // average close price\n}\n\n/**\n * Get Trade Flow\n */\nexport enum TradeFlowAccountTypeEnum {\n MarginAccount = 1,\n WalletAccount = 2,\n ReferralReward = 3,\n}\nexport interface TradeFlowItem {\n chainId: number;\n orderId: number;\n user: Address;\n poolId: string;\n fundingFee: string;\n tradingFee: string;\n charge: string;\n collateralAmount: string; // collateral quote amount\n collateralBase: string; // collateral base amount\n txHash: string;\n txTime: number;\n type: TradeFlowTypeEnum; // operation type\n accountType: TradeFlowAccountTypeEnum; // account type\n executionFee: string; // execution fee type=9(use execution fee)\n seamlessFee: string; // seamless fee\n seamlessFeeSymbol: string; // seamless fee symbol\n basePnl: string; // base pnl\n quotePnl: string; // quote pnl\n referrerRebate: string; // referrer rebate(type=13)\n referralRebate: string; // referral rebate(type=13)\n rebateClaimedAmount: string; // rebate claimed amount(type=14)\n token?: Address; // type=11|type=12(transfer token)\n}\n","import { BaseResponse } from \"../type.js\";\n\nexport type ForwarderTxParams = {\n from: string;\n to: string;\n value: string;\n gas: string;\n nonce: string;\n data: string;\n deadline: number\n signature: string\n forwardFeeToken: string\n}\n\nexport type FetchForwarderGetParams = {\n requestId: string\n}\n\nexport enum ForwarderGetStatus {\n // 1: Executing, 2: Failed when broadcasting on-chain, 3: Canceled due to timeout, 9: Executed\n EXECUTING = 1,\n BROADCAST_FAILED = 2,\n TIMEOUT_CANCEL = 3,\n EXECUTED = 9,\n}\n\nexport type FetchForwarderGetResponseData = {\n status: ForwarderGetStatus\n txHash: string\n reason: string\n}\n\nexport type FetchForwarderGetResponse = BaseResponse<FetchForwarderGetResponseData>\n","import { ApiResponse } from \"../type.js\";\nimport { http } from \"../request.js\";\nimport { getBaseUrlByEnv } from \"@/api/index.js\";\n\nexport const getPoolList = async () => {\n return http.get<ApiResponse<any[]>>(\n `${getBaseUrlByEnv()}/openapi/gateway/scan/market/list`\n );\n};\n\nexport interface PoolSymbolAllResponse {\n chainId: number;\n marketId: string;\n poolId: string;\n baseSymbol: string;\n quoteSymbol: string;\n baseTokenIcon: string;\n baseToken: string\n quoteToken: string\n baseDecimals: number\n quoteDecimals: number\n}\n\n","import { http } from \"@/api/request.js\";\nimport {\n ApiResponse,\n PriceResponse,\n PoolResponse,\n // PositionResponse,\n PoolOpenOrdersResponse,\n // AccessTokenRequest,\n HttpEnvParams,\n HttpKlineIntervalEnum,\n // KlineDataItemType,\n TickerDataItem,\n SearchTypeEnum,\n SearchSecondTypeEnum,\n // SearchResultResponse,\n // FavoritesListItem,\n BaseDetailResponse,\n MarketDetailResponse,\n MarketInfo,\n} from \"@/api/type.js\";\nimport { ChainId } from \"@/config/chain.js\";\nimport sdk from \"@/web3/index.js\";\n\n\nexport const getBaseUrlByEnv = () => {\n const { isTestnet, isBetaMode } = sdk?.getConfigManager()?.getConfig() || {};\n if (isBetaMode) {\n return 'https://api-beta.myx.finance';\n } else if (isTestnet) {\n return 'https://api-test.myx.cash';\n } else {\n return 'https://api.myx.finance';\n }\n};\n\nexport const getOraclePrice = async (\n chainId: ChainId,\n poolIds: string[] = [],\n): Promise<PriceResponse> => {\n if (!!poolIds.length) {\n return http.get(\n `${getBaseUrlByEnv()}/openapi/gateway/quote/price/oracles`,\n {\n chainId,\n poolIds: poolIds.join(\",\"),\n }\n );\n }\n return Promise.reject(new Error(\"Invalid pool id\"));\n};\n\nexport interface LevelConfig {\n fundingFeeRate1: number;\n fundingFeeRate1Max: number;\n fundingFeeRate2: number;\n fundingFeeSeconds: number;\n leverage: number;\n lockLiquidity: number;\n lockPriceRate: number;\n lockSeconds: number;\n maintainCollateralRate: number;\n minOrderSizeInUsd: number;\n name: string;\n slip: number;\n}\n\nexport interface PoolLevelConfig {\n level: number;\n levelName: string;\n levelConfig: LevelConfig;\n}\n\nexport interface GetPoolLevelConfigParams {\n poolId: string;\n chainId: ChainId;\n isProd?: boolean;\n}\n\n/**\n * Get Pool Level Config\n */\n// export const getPoolLevelConfig = async ({\n// poolId,\n// chainId,\n// isProd = true,\n// }: GetPoolLevelConfigParams) => {\n// return http.get<ApiResponse<PoolLevelConfig>>(\n// `${getBaseUrlByEnv(\n// isProd\n// )}/openapi/gateway/risk/market_pool/level_config${addQueryParams({\n// poolId,\n// chainId,\n// })}`\n// );\n// };\n\nexport const getPoolDetail = async (\n chainId: number,\n poolId: string,\n): Promise<PoolResponse> => {\n return await http.get<PoolResponse>(\n `${getBaseUrlByEnv()}/openapi/gateway/scan/market/info?chainId=${chainId}&poolId=${poolId}`\n );\n};\n\n// export const getPositions = async (\n// accessToken: string,\n// address: string,\n// isProd: boolean = true\n// ): Promise<PositionResponse> => {\n// return await http.get<PositionResponse>(\n// `${getBaseUrlByEnv(isProd)}/openapi/gateway/scan/position/open`,\n// undefined, // params\n// {\n// headers: {\n// myx_openapi_access_token: accessToken,\n// myx_openapi_account: address,\n// },\n// }\n// );\n// };\n\n// export const getOrders = async (\n// accessToken: string,\n// address: string,\n// isProd: boolean = true\n// ): Promise<PositionResponse> => {\n// return await http.get<PositionResponse>(\n// `${getBaseUrlByEnv(isProd)}/openapi/gateway/scan/order/open`,\n// undefined,\n// {\n// headers: {\n// myx_openapi_access_token: accessToken,\n// myx_openapi_account: address,\n// },\n// }\n// );\n// };\n\nexport const getPoolOpenOrders = async (\n accessToken: string,\n address: string,\n chainId: ChainId,\n): Promise<PoolOpenOrdersResponse> => {\n return await http.get<PoolOpenOrdersResponse>(\n `${getBaseUrlByEnv()}/openapi/gateway/scan/market/pool-order/open?chainId=${chainId}`,\n undefined,\n {\n headers: {\n myx_openapi_access_token: accessToken,\n myx_openapi_account: address,\n },\n }\n );\n};\n\n/**\n * Get Kline Data\n */\nexport interface GetKlineDataParams {\n chainId: ChainId;\n poolId: string;\n endTime: number;\n limit: number;\n interval: HttpKlineIntervalEnum;\n}\n\n// export const getKlineData = (\n// { chainId, poolId, endTime, limit, interval }: GetKlineDataParams,\n// envParams: HttpEnvParams\n// ) => {\n// const isProd = envParams?.isProd ?? true;\n// return http.get<ApiResponse<KlineDataItemType[]>>(\n// `${getBaseUrlByEnv(isProd)}/openapi/gateway/quote/candles`,\n// {\n// chainId,\n// poolId,\n// endTime,\n// limit,\n// interval,\n// }\n// );\n// };\n\n/**\n * Get Kline Latest Bar\n */\n// export const getKlineLatestBar = async (\n// params: Pick<GetKlineDataParams, \"chainId\" | \"poolId\" | \"interval\">,\n// envParams: HttpEnvParams\n// ) => {\n// const isProd = envParams?.isProd ?? true;\n// return http.get<ApiResponse<KlineDataItemType>>(\n// `${getBaseUrlByEnv(isProd)}/openapi/gateway/quote/candle/latest`,\n// params\n// );\n// };\n\n// Get Ticker Data\nexport interface GetTickerDataParams {\n chainId: ChainId;\n poolIds: string[];\n}\n\nexport const getTickerData = async (\n { chainId, poolIds }: GetTickerDataParams,\n envParams: HttpEnvParams\n) => {\n return http.get<ApiResponse<TickerDataItem[]>>(\n `${getBaseUrlByEnv()}/openapi/gateway/quote/candle/tickers`,\n {\n chainId,\n poolIds: poolIds.join(\",\"),\n }\n );\n};\n\n// // Get ALL Tickers\n// export const getAllTickers = async (envParams: HttpEnvParams) => {\n// const isProd = envParams?.isProd ?? true;\n// return http.get<ApiResponse<TickerDataItem[]>>(\n// `${getBaseUrlByEnv(isProd)}/v2/mx-gateway/quote/candle/all_tickers`\n// );\n// };\n\n/**\n * search\n */\n\nexport interface SearchMarketParams {\n chainId: ChainId | 0; // 0 for all chains\n searchType?: SearchTypeEnum;\n type?: SearchSecondTypeEnum;\n searchKey?: string; // keywords\n}\n// search market pool\n// export const searchMarketAuth = async (\n// { accessToken, address, ...params }: SearchMarketParams & AccessTokenRequest,\n// envParams: HttpEnvParams\n// ) => {\n// const isProd = envParams?.isProd ?? true;\n// return http.get<ApiResponse<SearchResultResponse>>(\n// `${getBaseUrlByEnv(isProd)}/openapi/gateway/scan/market/ac-search`,\n// params,\n// {\n// headers: {\n// myx_openapi_access_token: accessToken,\n// myx_openapi_account: address,\n// },\n// }\n// );\n// };\n\n// export const searchMarket = async (\n// { ...params }: SearchMarketParams,\n// envParams: HttpEnvParams\n// ) => {\n// const isProd = envParams?.isProd ?? true;\n// return http.get<ApiResponse<SearchResultResponse>>(\n// `${getBaseUrlByEnv(isProd)}/openapi/gateway/scan/market/search`,\n// params\n// );\n// };\n\n/**\n * favorite\n */\nexport interface AddFavoriteParams {\n poolId: string;\n chainId: ChainId;\n}\n\n// export const addFavorite = async (\n// { accessToken, address, ...params }: AddFavoriteParams & AccessTokenRequest,\n// envParams: HttpEnvParams\n// ) => {\n// const isProd = envParams?.isProd ?? true;\n// return http.get<ApiResponse<null>>(\n// `${getBaseUrlByEnv(isProd)}/openapi/gateway/scan/market/add-favorites`,\n// params,\n// {\n// headers: {\n// myx_openapi_access_token: accessToken,\n// myx_openapi_account: address,\n// },\n// }\n// );\n// };\n\nexport interface RemoveFavoriteParams {\n poolId: string;\n chainId: ChainId;\n}\n\n// export const removeFavorite = async (\n// {\n// accessToken,\n// address,\n// ...params\n// }: RemoveFavoriteParams & AccessTokenRequest,\n// envParams: HttpEnvParams\n// ) => {\n// const isProd = envParams?.isProd ?? true;\n// return http.get<ApiResponse<null>>(\n// `${getBaseUrlByEnv(isProd)}/openapi/gateway/scan/market/cancel-favorites`,\n// params,\n// {\n// headers: {\n// myx_openapi_access_token: accessToken,\n// myx_openapi_account: address,\n// },\n// }\n// );\n// };\n\n/**\n * Favorites List\n */\nexport type FavoritesTimeInterval = \"10m\" | \"1h\" | \"4h\" | \"12h\" | \"24h\";\n\nexport interface FavoritesListParams {\n poolId?: string;\n before?: number;\n after?: number;\n limit?: number;\n timeInterval?: FavoritesTimeInterval;\n chainId: ChainId | 0;\n}\n\n// export const getFavoritesList = async (\n// { accessToken, address, ...params }: FavoritesListParams & AccessTokenRequest,\n// envParams: HttpEnvParams\n// ) => {\n// const isProd = envParams?.isProd ?? true;\n// return http.get<ApiResponse<FavoritesListItem[]>>(\n// `${getBaseUrlByEnv(isProd)}/openapi/gateway/scan/market/favorites`,\n// params,\n// {\n// headers: {\n// myx_openapi_access_token: accessToken,\n// myx_openapi_account: address,\n// },\n// }\n// );\n// };\n\nexport interface GetBaseDetailParams {\n chainId: ChainId;\n poolId: string;\n}\nexport const getBaseDetail = async (\n { ...params }: GetBaseDetailParams\n) => {\n return http.get<ApiResponse<BaseDetailResponse>>(\n `${getBaseUrlByEnv()}/openapi/gateway/scan/market/base-details`,\n params\n );\n};\n\nexport interface GetMarketDetailParams {\n chainId: number;\n poolId: string;\n}\nexport const getMarketDetail = async (\n { ...params }: GetMarketDetailParams\n) => {\n return http.get<ApiResponse<MarketDetailResponse>>(\n `${getBaseUrlByEnv()}/openapi/gateway/scan/market/detail`,\n params\n );\n};\n\nexport const getMarketList = async () => {\n return http.get<ApiResponse<MarketInfo[]>>(\n `${getBaseUrlByEnv()}/openapi/gateway/scan/market`\n );\n};\n\nexport * from \"./type.js\";\n\nexport * from \"./account/index.js\";\n\nexport * from \"./seamless/index.js\";\nexport * from \"./pool/index.js\";\n","import { ConfigManager } from \"@/manager/config/index.js\";\nimport { getMarketList, MarketInfo } from \"@/api/index.js\";\nimport type { WalletClient } from \"viem\";\n\nexport class MxSDK {\n version = __SDK_VERSION__;\n /** @deprecated Prefer getWalletClient(chainId) for viem-based flows. */\n public provider: unknown;\n #configManager?: ConfigManager;\n private static _instance: MxSDK;\n public Markets: MarketInfo[] | undefined;\n\n constructor() {\n // Version log: host can setSdkLogSink(console) to see this\n }\n\n setConfigManager(cm: ConfigManager) {\n this.#configManager = cm;\n }\n getConfigManager(): ConfigManager | undefined {\n return this.#configManager;\n }\n\n /** @deprecated Use getWalletClient(chainId) instead. */\n public setProvider(provider: unknown) {\n this.provider = provider;\n }\n public getProvider() {\n return this.provider;\n }\n static getInstance() {\n if (!this._instance) {\n this._instance = new MxSDK();\n }\n return this._instance;\n }\n public async getMarkets() {\n try {\n const result = await getMarketList();\n const data = result?.data || [];\n this.Markets = data;\n return data;\n } catch (error) {\n throw error;\n }\n }\n}\n\nconst sdk = MxSDK.getInstance();\n\nexport default sdk;\n\n/** Returns viem WalletClient for the chain. Prefer this over ethers BrowserProvider. */\nexport const getWalletProvider = async (chainId: number): Promise<WalletClient> => {\n const cm = sdk.getConfigManager();\n if (!cm?.hasSigner()) throw new Error(\"No signer: call auth({ signer }) or auth({ walletClient })\");\n return cm.getViemWalletClient(chainId);\n};\n\nexport { getPublicClient, getWalletClient, setConfigManagerForViem } from \"./viemClients.js\";\n","import { ContractAddress } from \"@/config/chain.js\";\n\nexport const BSC_MAINNET: ContractAddress = {\n USDC: '0x55d398326f99059fF775485246999027B3197955',\n POOL_MANAGER: '0x04218C23f89cAA2E4395a7Bd94410057705D1184',\n Account: '0x269cdAd14cf2cD3c720BC16ef0321700CccaC574',\n POSITION_MANAGER: '0x04218C23f89cAA2E4395a7Bd94410057705D1184',\n ORDER_MANAGER: '0x8d38a857390E1586481cF8994F4feBc315D0249b',\n PYTH: '0x4D7E825f80bDf85e913E0DD2A2D54927e9dE1594', // Not a Pyth Adapter\n ERC20: '0x55d398326f99059fF775485246999027B3197955',\n LIQUIDITY_ROUTER:'0x637dB5906E51e6e73fF6EF059870cf70B1874aa5',\n BASE_POOL: '0x6a775E908629eFC6357b3d89E5528524a6f378Dd',\n QUOTE_POOL:'0x73b2dcfdc7dC78a7A51B778E93c09FC173923BcE',\n ORACLE: '0xAdD60e47D2C5e7d57B1e5a3F9d24dE43933b8A7A', // MYXOracle\n EIP7702Delegation: '0x798860BbBC6e011C5508f92a102ee53a44cECfb7',\n MARKET_MANAGER: \"0x98Af86B194ce82cac650C87F45e5B9f7A4A40AB2\",\n DATA_PROVIDER: \"0x96955bE362b35846c2E7b9B40fC961080DCBbA67\",\n ORACLE_RESERVE: \"0xBFE7b174F4013e9f6526030EB0c52b094A237E6E\",\n FORWARDER: '0xD0894e09317F455dd698A706bb62D783e95aA7Ad',\n TRADING_ROUTER: '0xb0c56a233535971b8903497f98b90Cf53aE77A13',\n REIMBURSEMENT: \"0x5EFB5E4C3807b6152157DbF4Ae75c31F0Cdec478\",\n DISPUTE_COURT: \"0xEaAf5b9184C48486a6Fb51f70E101087598a95C8\",\n}\n\n\n\n","import { ChainId, ContractAddress } from \"@/config/chain.js\"\nimport { ARB_TEST_SEPOLIA } from \"./ARB_TEST_SEPOLIA.js\"\nimport { ARB_BETA_SEPOLIA } from \"./ARB_BETA_SEPOLIA.js\"\nimport { LINEA_SEPOLIA } from \"@/config/address/LINEA_SEPOLIA.js\";\nimport { LINEA_BETA_SEPOLIA } from \"@/config/address/LINEA_BETA_SEPOLIA.js\";\nimport { BSC_TEST_NET } from \"@/config/address/BSC_TEST_NET.js\";\nimport { BSC_BETA_NET } from \"@/config/address/BSC_BETA_NET.js\";\nimport sdk from \"@/web3/index.js\";\nimport { BSC_MAINNET } from \"./BSC_MAINET_NET.js\";\n\nexport const getContractAddressByChainId = (chainId: ChainId): ContractAddress => {\n const { isBetaMode } = sdk?.getConfigManager()?.getConfig() || {};\n switch (chainId) {\n case ChainId.ARB_TESTNET:\n return isBetaMode ? ARB_BETA_SEPOLIA : ARB_TEST_SEPOLIA\n case ChainId.LINEA_SEPOLIA:\n return isBetaMode ? LINEA_BETA_SEPOLIA : LINEA_SEPOLIA\n case ChainId.BSC_TESTNET:\n return isBetaMode ? BSC_BETA_NET : BSC_TEST_NET\n case ChainId.BSC_MAINNET:\n return BSC_MAINNET\n\n default:\n return {} as ContractAddress\n }\n}\n","/**\n * Optional log sink for SDK. Default is no-op so the SDK does not touch the global `console`.\n * Host can call setSdkLogSink(console) to get logs; in LavaMoat environments leave unset to reduce allowlist.\n */\nexport type LogSink = {\n log?: (...args: unknown[]) => void;\n info?: (...args: unknown[]) => void;\n warn?: (...args: unknown[]) => void;\n error?: (...args: unknown[]) => void;\n};\n\nlet sink: LogSink | null = null;\n\nexport function setSdkLogSink(s: LogSink | null): void {\n sink = s;\n}\n\nexport function getSdkLogSink(): LogSink {\n return sink ?? {};\n}\n\nfunction noop(): void {}\n\nexport function sdkLog(...args: unknown[]): void {\n (sink?.log ?? sink?.info ?? noop)(...args);\n}\n\nexport function sdkWarn(...args: unknown[]): void {\n (sink?.warn ?? noop)(...args);\n}\n\nexport function sdkError(...args: unknown[]): void {\n (sink?.error ?? noop)(...args);\n}\n","import { getSdkLogSink } from \"./sink.js\";\n\n/**\n * MyxLogger\n * Uses optional sink (no global console by default) so LavaMoat allowlist can omit \"console\".\n * Host can setSdkLogSink(console) to get logs.\n */\nexport type LogLevel = \"debug\" | \"info\" | \"error\" | \"warn\" | \"none\";\n\nexport interface LoggerOptions {\n logLevel?: LogLevel;\n /** Optional sink; if not set, uses getSdkLogSink() (no-op by default). */\n sink?: { log?: (...a: unknown[]) => void; info?: (...a: unknown[]) => void; warn?: (...a: unknown[]) => void; error?: (...a: unknown[]) => void };\n}\n\nexport class Logger {\n private options: LoggerOptions;\n constructor(options?: LoggerOptions) {\n this.options = {\n ...options,\n logLevel: options?.logLevel ?? \"info\",\n };\n }\n\n private get out() {\n return this.options.sink ?? getSdkLogSink();\n }\n\n debug(message: string, ...args: unknown[]) {\n if (this.options.logLevel === \"none\") return;\n if (this.options.logLevel === \"debug\") {\n (this.out.log ?? this.out.info)?.(`[MYX-SDK-DEBUG] ${message}`, ...args);\n }\n }\n\n info(message: string, ...args: unknown[]) {\n if (this.options.logLevel === \"none\") return;\n if (this.options.logLevel === \"debug\" || this.options.logLevel === \"info\") {\n (this.out.log ?? this.out.info)?.(`[MYX-SDK-INFO] ${message}`, ...args);\n }\n }\n\n error(message: string, ...args: unknown[]) {\n if (this.options.logLevel === \"none\") return;\n if (this.options.logLevel === \"debug\" || this.options.logLevel === \"info\" || this.options.logLevel === \"error\") {\n this.out.error?.(`[MYX-SDK-ERROR] ${message}`, ...args);\n }\n }\n\n warn(message: string, ...args: unknown[]) {\n if (this.options.logLevel !== \"none\") {\n this.out.warn?.(`[MYX-SDK-WARN] ${message}`, ...args);\n }\n }\n}\n\nexport {\n setSdkLogSink,\n getSdkLogSink,\n sdkLog,\n sdkWarn,\n sdkError,\n} from \"./sink.js\";\nexport type { LogSink } from \"./sink.js\";\n","import {ErrorType, ErrorDecoder} from 'ethers-decode-error'\nimport {customErrorMapping} from './customErrorMap.js'\nconst errorDecoder = ErrorDecoder.create();\n\n\nexport enum ErrorCode {\n Invalid_Chain_ID = 1,\n Invalid_TOKEN_ADDRESS,\n Insufficient_Balance = 3,\n Insufficient_Amount_Of_Approved,\n USER_REJECTED_REQUEST = 4001,\n Invalid_Base,\n Invalid_slippage,\n Invalid_Amount,\n Invalid_Pool_State,\n Invalid_Params,\n Invalid_Amount_Withdrawable_Lp_Amount\n}\n\nexport const Errors = {\n [ErrorCode.Invalid_Chain_ID]: `Invalid Chain`,\n [ErrorCode.Invalid_TOKEN_ADDRESS]: `Invalid Token Address`,\n [ErrorCode.USER_REJECTED_REQUEST]: `User Rejected`,\n [ErrorCode.Insufficient_Balance]: `Insufficient Balance`,\n [ErrorCode.Insufficient_Amount_Of_Approved]: `Insufficient Amount Of Approved`,\n [ErrorCode.Invalid_Base]: `Invalid Base Token Address`,\n [ErrorCode.Invalid_slippage]: `Invalid Slippage`,\n [ErrorCode.Invalid_Amount]: `Invalid Amount`,\n [ErrorCode.Invalid_Pool_State]: `Invalid Pool State`,\n [ErrorCode.Invalid_Params]: `Invalid Params`,\n [ErrorCode.Invalid_Amount_Withdrawable_Lp_Amount]: `Invalid Amount Withdrawable LP Amount`,\n}\nfunction isUserRejected(error: any): boolean {\n let err = error\n \n while (err) {\n if (err.name === \"UserRejectedRequestError\") return true\n err = err.cause\n }\n \n return false\n}\n\nexport function didUserReject(error: any): boolean {\n return (\n error?.code === ErrorCode.USER_REJECTED_REQUEST\n // || (connection.type === ConnectionTypeEnum.WALLET_CONNECT_V2 && error?.toString?.() === ErrorCode.WC_V2_MODAL_CLOSED)\n // || (connection.type === ConnectionTypeEnum.COINBASE_WALLET && error?.toString?.() === ErrorCode.CB_REJECTED_REQUEST)\n )\n}\n\nexport async function getErrorTextFormError(error: any) {\n const message = error?.shortMessage ||\n error?.details ||\n error?.message\n \n if (typeof error === \"string\") {\n return {error}\n }\n \n if(isUserRejected(error)) {\n return {error: Errors[ErrorCode.USER_REJECTED_REQUEST]}\n }\n \n // const decodeErrorResult = await errorDecoder.decode(error)\n // // decodeErrorResult available for debugging if host sets log sink\n // if (decodeErrorResult.type === ErrorType.UserRejectError || decodeErrorResult.name === \"ACTION_REJECTED\") {\n // return {\n // error: Errors[ErrorCode.USER_REJECTED_REQUEST],\n // }\n // }\n // if (decodeErrorResult.type === ErrorType.CustomError) {\n // const errorKey = Object.keys(customErrorMapping).find((k) => k.toLowerCase() === decodeErrorResult.selector.toLowerCase())\n // if (errorKey) {\n // return {\n // error:{\n // code: errorKey,\n // message: customErrorMapping[errorKey]\n // },\n // }\n // }\n // return {\n // error: {\n // code: error?.code,\n // message: error?.reason || decodeErrorResult.reason || error.message\n // },\n // }\n // }\n //\n // // console.error(error)\n \n return {\n error: {\n code: error?.code || error?.name || 'Unknow Error',\n message\n },\n }\n}\n","import { getPublicClient } from \"@/web3/viemClients.js\";\nimport { sdkError } from \"@/logger\";\nimport { ChainId } from \"@/config/chain.js\";\nimport TOKEN_ABI from \"@/abi/IERC20Metadata.json\";\nimport { type Address } from \"@/api\";\n\nexport const getBalanceOf = async (chainId: ChainId, account: string, tokenAddress: string) => {\n try {\n const client = getPublicClient(chainId);\n const balance = await client.readContract({\n address: tokenAddress as Address,\n abi: TOKEN_ABI as never,\n functionName: \"balanceOf\",\n args: [account as Address],\n });\n return balance as bigint;\n } catch (e) {\n sdkError(e);\n throw e;\n }\n}\n\n\n","import { ChainId, isSupportedChainFn } from \"@/config/chain.js\";\nimport { ErrorCode, Errors } from \"@/config/error.js\";\nimport { getBalanceOf } from \"@/common/balanceOf.js\";\nimport { maxUint256, parseUnits } from \"viem\";\nimport { getAllowanceApproved } from \"@/common/allowance.js\";\nimport { approve } from \"@/common/approve.js\";\n\nexport interface Optional {\n chainId?: number | ChainId;\n slippage?: number;\n amount?: number,\n decimals?: number;\n tokenAddress?: string;\n contractAddress?: string;\n account?:string;\n}\ntype OptionalParams = Partial<Optional>;\n\nexport const checkParams = async (params: OptionalParams) => {\n \n if ('chainId' in params) {\n const valid = isSupportedChainFn(params.chainId as ChainId);\n if (!valid) {\n throw new Error(Errors[ErrorCode.Invalid_Chain_ID]);\n }\n }\n \n if ('slippage' in params) {\n if (!(Number(params?.slippage) <= 1 && Number(params?.slippage) > 0)) {\n throw new Error(Errors[ErrorCode.Invalid_slippage]);\n }\n }\n \n if ('amount' in params) {\n if (Number(params.amount) === Number.NaN || Number(params.amount) < 0 ) {\n throw new Error(Errors[ErrorCode.Invalid_Amount])\n }\n }\n \n // console.log('checkbalance')\n const {tokenAddress,contractAddress, chainId, amount, decimals, account} = params\n if(amount && chainId && Number(decimals) >= 0 && account) {\n \n \n const amountIn = parseUnits(amount.toString(), Number(decimals))\n if (tokenAddress ) {\n const balance = await getBalanceOf (chainId, account, tokenAddress)\n // console.log (\"balance\", balance, tokenAddress);\n \n if (!balance || balance < amountIn) {\n throw new Error (Errors[ErrorCode.Insufficient_Balance]);\n }\n }\n if (contractAddress && tokenAddress) {\n const isApproved = await getAllowanceApproved (chainId, account, tokenAddress, contractAddress, amountIn)\n \n if (!isApproved) {\n await approve (chainId, account, tokenAddress, contractAddress, maxUint256);\n }\n }\n }\n}\n","import { getPublicClient } from \"@/web3/viemClients.js\";\nimport { ChainId } from \"@/config/chain.js\";\nimport TOKEN_ABI from \"@/abi/IERC20Metadata.json\";\nimport type { Address } from \"@/api\";\n\nexport const getAllowanceApproved = async (chainId: ChainId, account: string, tokenAddress: string, approveAddress: string, approveAmount: bigint) => {\n try {\n const client = getPublicClient(chainId);\n const allowance = await client.readContract({\n address: tokenAddress as Address,\n abi: TOKEN_ABI as never,\n functionName: \"allowance\",\n args: [account as Address, approveAddress as Address],\n });\n if ((allowance as bigint) >= approveAmount) return true;\n return false;\n } catch (e) {\n throw e;\n }\n}\n","import { ChainId } from \"@/config/chain.js\";\nimport { getPublicClient } from \"@/web3/viemClients.js\";\nimport { CHAIN_INFO } from \"@/config/chains/index.js\";\nimport { parseUnits } from \"viem\";\nimport { COMMON_CONFIG_DECIMALS } from \"@/config/decimals.js\";\n\nexport const bigintTradingGasToRatioCalculator = (gas: bigint, ratio: Number) => {\n return BigInt(gas) * parseUnits(ratio.toString(), COMMON_CONFIG_DECIMALS) / BigInt(10 ** COMMON_CONFIG_DECIMALS);\n};\n\nexport const bigintTradingGasPriceWithRatio = async (chainId: ChainId) => {\n try {\n const chainInfo = CHAIN_INFO[chainId];\n const client = getPublicClient(chainId);\n const gasPrice = await client.getGasPrice();\n if (gasPrice == null) {\n throw new Error(\"Network Error\");\n }\n const gasPriceWithRatio = bigintTradingGasToRatioCalculator(gasPrice, chainInfo.gasPriceRatio);\n return {\n gasPrice: gasPriceWithRatio,\n }\n \n } catch (e) {\n // todo show error message\n throw e\n }\n \n}\n\n\n// slipper < 1 && > 0\nexport const bigintAmountSlipperCalculator = (amount: bigint, slipper: Number = 0.01) => {\n const radio = parseUnits('1', COMMON_CONFIG_DECIMALS) - parseUnits(slipper.toString(), COMMON_CONFIG_DECIMALS)\n return amount * radio / BigInt(10 ** (COMMON_CONFIG_DECIMALS) )\n}\n","export const COMMON_CONFIG_DECIMALS = 8\n\nexport const FUNDING_RATE_PERCENT_DISPLAY_DECIMALS = 4\n\nexport const COMMON_PERCENT_DISPLAY_DECIMALS = 2\n\nexport const COMMON_PRICE_DECIMALS = 30\nexport const COMMON_LP_AMOUNT_DECIMALS = 18\nexport const COMMON_PRICE_DISPLAY_DECIMALS = 2\n\nexport const MYX_TOKEN_DECIMALS = 18\n\n\nexport const COMMON_NETWORK_FEE_DISPLAY_DECIMALS = 6\nexport const COMMON_NATIVE_TOKEN_DECIMALS = 18\n\nexport const FEE_RATE_PERCENT_DISPLAY_DECIMALS = 4\n\nexport const VIP_PROFITS_PRECISION = 2\n\nexport const COMMON_USD_ASSETS_LABEL = 'USD'\n","import { getERC20Contract } from \"@/web3/providers.js\";\nimport { getPublicClient } from \"@/web3/viemClients.js\";\nimport { ChainId } from \"@/config/chain.js\";\nimport { type Address } from \"@/api/index.js\";\nimport { bigintTradingGasPriceWithRatio, bigintTradingGasToRatioCalculator } from \"@/common/tradingGas.ts\";\nimport { CHAIN_INFO } from \"@/config/chains/index.js\";\n\nexport const approve = async (chainId: ChainId, _account: string, tokenAddress: string, approveAddress: string, amount: bigint) => {\n try {\n const chainInfo = CHAIN_INFO[chainId];\n const contract = await getERC20Contract(chainId, tokenAddress);\n if (!contract.write) throw new Error(\"Wallet client required for write\");\n // 1️⃣ estimate gas\n const _gasLimit = await contract!.estimateGas!.approve([approveAddress as Address, amount]);\n const gasLimit = bigintTradingGasToRatioCalculator (_gasLimit, chainInfo.gasLimitRatio)\n const { gasPrice } = await bigintTradingGasPriceWithRatio (chainId)\n \n const hash = await contract.write.approve([approveAddress as Address, amount],{gasLimit, gasPrice}) as Address;\n const client = getPublicClient(chainId);\n await client.waitForTransactionReceipt({ hash });\n } catch (e) {\n throw e;\n }\n};\n","import { getOraclePrice, OracleType, type PriceType } from \"@/api/index.js\";\nimport { ChainId } from \"@/config/chain\";\nimport { isNil } from \"lodash-es\";\n// import { getPythContract } from \"@/web3/providers\";\nconst parsePriceData = async (chainId: ChainId, data: PriceType[]) => {\n const result = await Promise.all(\n data.map(async (item) => {\n const { publishTime, vaa, oracleType, nativeFee, price, poolId } = item\n let value = !isNil(nativeFee) ? BigInt(nativeFee) : 1n\n\n // if (oracleType === OracleType.Pyth) {\n // const PythContract = await getPythContract(chainId)\n // const v = await PythContract.getUpdateFee([vaa])\n // value = v\n // }\n\n return {\n poolId,\n price,\n value,\n publishTime,\n oracleType: oracleType ?? OracleType.Pyth,\n vaa,\n }\n })\n )\n\n return result\n}\n\nexport const getPricesData = async (chainId: ChainId, poolIds: string[]) => {\n if (!poolIds || !poolIds.length) return\n const rs = await getOraclePrice(chainId, poolIds)\n const result = await parsePriceData(chainId, rs.data)\n return result\n}\nexport const getPriceData = async (chainId: ChainId, poolId: string) => {\n if (!poolId) return\n const rs = await getOraclePrice(chainId, [poolId])\n const data = rs?.data?.[0]\n if (!data) {\n throw new Error(`Unable to get price for ${poolId}`)\n }\n\n const result = await parsePriceData(chainId, [data])\n return result?.[0]\n}\n\n","import { getAccount, getLiquidityRouterContract } from \"@/web3/providers\";\nimport { ClaimParams, ClaimRebatesParams } from \"@/lp/type.js\";\nimport { sdkError } from \"@/logger\";\nimport { CHAIN_INFO } from \"@/config/chains/index\";\nimport { checkParams } from \"@/common/checkParams\";\nimport {\n bigintTradingGasPriceWithRatio,\n bigintTradingGasToRatioCalculator\n} from \"@/common/tradingGas\";\nimport { getPricesData } from \"@/common/price\";\nimport { getErrorTextFormError } from \"@/config/error\";\nimport { getPublicClient } from \"@/web3\";\n\nexport const claimBasePoolRebate = async (\n params: ClaimParams\n) => {\n try {\n const { chainId, poolId} = params;\n \n const chainInfo = CHAIN_INFO[chainId];\n const account = await getAccount (chainId);\n \n await checkParams ({\n account,\n chainId,\n })\n const priceResponse = await getPricesData(chainId, [poolId]);\n if (!priceResponse) return\n \n const values = priceResponse.map((item) => {\n return item.value\n })\n \n const prices = priceResponse.map((item) => {\n return {\n poolId: poolId,\n oracleType: item.oracleType,\n publishTime: item.publishTime,\n oracleUpdateData: item?.vaa ?? '0',\n }\n })\n \n const data = {\n prices,\n values,\n poolId,\n recipient: account\n }\n // console.log('base claim', data)\n const contract = await getLiquidityRouterContract(chainId)\n\n // estimate gas (viem style, args array)\n const _gasLimit = await contract.estimateGas!.claimBasePoolRebate(\n [prices, poolId, account],\n { value: values[0] },\n )\n const gasLimit = bigintTradingGasToRatioCalculator(_gasLimit, chainInfo.gasLimitRatio)\n const {gasPrice} = await bigintTradingGasPriceWithRatio(chainId)\n const response = await contract.write!.claimBasePoolRebate(\n [prices, poolId, account],\n {\n gasLimit,\n gasPrice,\n value: values[0],\n },\n )\n \n // console.log('base claim',response)\n return response\n \n } catch (error) {\n sdkError(error);\n throw typeof error === \"string\" ? error : (await getErrorTextFormError (error))\n }\n}\n\n\nexport const claimBasePoolRebates = async (\n params: ClaimRebatesParams\n) => {\n try {\n const { chainId, poolIds } = params;\n if (poolIds.length === 0) return;\n \n const chainInfo = CHAIN_INFO[chainId];\n const account = await getAccount (chainId);\n \n await checkParams ({\n account,\n chainId,\n })\n const priceData = await getPricesData (chainId, poolIds)\n if (!priceData) return\n \n const prices = priceData.map ((item) => {\n return {\n poolId: item.poolId,\n oracleType: item.oracleType,\n publishTime: item.publishTime,\n oracleUpdateData: item?.vaa ?? '0',\n }\n })\n \n const values = priceData.map ((item) => item.value)\n const value = values.reduce ((prev, curr) => curr + prev, 0n)\n \n const data = {\n prices,\n poolIds,\n value,\n recipient: account\n }\n \n // console.log ('base claim pool rebates', data)\n const contract = await getLiquidityRouterContract (chainId)\n\n // estimate gas (viem style, args array)\n const _gasLimit = await contract.estimateGas!.claimBasePoolRebates(\n [prices, poolIds, account],\n { value },\n )\n const gasLimit = bigintTradingGasToRatioCalculator (_gasLimit, chainInfo.gasLimitRatio)\n const { gasPrice } = await bigintTradingGasPriceWithRatio (chainId)\n const hash = await contract.write!.claimBasePoolRebates(\n [prices, poolIds, account],\n {\n gasLimit,\n gasPrice,\n value,\n },\n )\n \n const receipt = await getPublicClient(chainId).waitForTransactionReceipt({ hash });\n \n return receipt\n \n } catch (error) {\n sdkError(error);\n throw typeof error === \"string\" ? error : (await getErrorTextFormError (error))\n }\n}\n","import { getAccount, getLiquidityRouterContract } from \"@/web3/providers.js\";\nimport { parseUnits } from \"viem\";\nimport { sdkError } from \"@/logger\";\nimport {\n bigintAmountSlipperCalculator,\n bigintTradingGasPriceWithRatio,\n bigintTradingGasToRatioCalculator\n} from \"@/common/tradingGas.js\";\nimport { CHAIN_INFO } from \"@/config/chains/index.js\";\nimport { getContractAddressByChainId } from \"@/config/address/index.js\";\n\nimport { Deposit,type OracleUpdatePrice } from \"@/lp/type.js\";\nimport { checkParams } from \"@/common/checkParams.js\";\nimport { previewLpAmountOut } from \"@/lp/base/preview.js\";\nimport { getPoolInfo } from \"@/lp/getPoolInfo.js\";\nimport { type Address, MarketPoolState } from \"@/api/index.js\";\nimport { COMMON_PRICE_DECIMALS } from \"@/config/decimals.js\";\nimport { getPriceData } from \"@/common/price.js\";\nimport { getTpSlParams } from \"@/common/getTpSlParams.js\";\nimport type { TpSl } from \"@/lp/pool/type.js\";\nimport { ErrorCode, Errors, getErrorTextFormError } from \"@/config/error.js\";\nimport { getPublicClient } from \"@/web3\";\n\n\nexport const deposit = async (params: Deposit) => {\n try {\n const { poolId, chainId, amount, slippage = 0.01, tpsl = [] } = params;\n await checkParams (params)\n \n const pool = await getPoolInfo (chainId,poolId);\n if (!pool) {\n throw new Error(Errors[ErrorCode.Invalid_Params])\n }\n const decimals = pool?.baseDecimals\n const quoteDecimals = pool?.quoteDecimals\n const tokenAddress = pool?.baseToken\n \n \n const chainInfo = CHAIN_INFO[chainId];\n const account = await getAccount (chainId);\n \n const addresses = getContractAddressByChainId(chainId);\n const contractAddress = addresses.BASE_POOL;\n \n await checkParams ({\n tokenAddress,\n contractAddress,\n decimals,\n account,\n chainId,\n amount,\n })\n \n const isNeedPrice = !(Number(pool?.state) === MarketPoolState.Cook || Number(pool?.state) === MarketPoolState.Primed)\n const price : OracleUpdatePrice[] =[]\n const amountIn = parseUnits (amount.toString (), decimals)\n let value = 0n;\n let amountOut;\n if (isNeedPrice) {\n const priceData = await getPriceData(chainId, poolId)\n if (!priceData) return\n const referencePrice = parseUnits(priceData.price, COMMON_PRICE_DECIMALS)\n price.push({\n poolId: poolId as Address,\n oracleType: priceData.oracleType,\n publishTime: BigInt(priceData.publishTime),\n oracleUpdateData: priceData.vaa as Address,\n })\n \n amountOut = await previewLpAmountOut ({ chainId, poolId, amountIn, price: referencePrice })\n value = priceData.value\n } else {\n amountOut = await previewLpAmountOut ({ chainId, poolId, amountIn})\n }\n \n const _tpsl = tpsl.map((item) => {\n return {\n amount,\n triggerPrice: item.triggerPrice,\n triggerType: item.triggerType,\n } as TpSl\n })\n const tpslParams = getTpSlParams(slippage, _tpsl, decimals, quoteDecimals);\n \n const data = {\n poolId: poolId as unknown as import(\"viem\").Hex,\n amountIn,\n minAmountOut: bigintAmountSlipperCalculator(amountOut, slippage),\n recipient: account,\n tpslParams\n }\n \n const contract = await getLiquidityRouterContract(chainId)\n\n // estimate gas (viem style, args array)\n const _gasLimit = await contract.estimateGas!.depositBase(\n [price, data],\n { value },\n )\n \n const gasLimit = bigintTradingGasToRatioCalculator(_gasLimit, chainInfo.gasLimitRatio)\n const {gasPrice} = await bigintTradingGasPriceWithRatio (chainId);\n const hash = await contract.write!.depositBase(\n [price, data],\n {\n gasLimit,\n gasPrice,\n value,\n },\n )\n \n const receipt = await getPublicClient(chainId).waitForTransactionReceipt({ hash });\n \n return receipt\n \n } catch (error) {\n sdkError(error)\n throw typeof error === \"string\" ? error : (await getErrorTextFormError (error))\n }\n}\n","import { getBasePoolContract } from \"@/web3/providers.js\";\nimport { previewAmountOutParams, PreviewWithdrawDataParams } from \"@/lp/type.js\";\nimport { CHAIN_INFO } from \"@/config/chains/index.js\";\nimport { getOraclePrice } from \"@/api/index.js\";\nimport { parseUnits } from \"viem\";\nimport { COMMON_LP_AMOUNT_DECIMALS, COMMON_PRICE_DECIMALS } from \"@/config/decimals.js\";\nimport { checkParams } from \"@/common/checkParams.js\";\nimport { getErrorTextFormError } from \"@/config/error.js\";\nimport { sdkError } from \"@/logger\";\n\nexport const previewLpAmountOut = async ({chainId, amountIn, poolId, price = 0n}: previewAmountOutParams) => {\n try {\n const chainInfo = CHAIN_INFO[chainId];\n\n // console.log(\"previewLpAmountOut data\", [poolId, amountIn, price]);\n const basePoolContract = await getBasePoolContract(chainId);\n \n const request = await basePoolContract.read.previewLpAmountOut(\n [poolId, amountIn, price],\n )\n // console.log(request)\n return request\n } catch (error) {\n sdkError(error)\n throw typeof error === \"string\" ? error : (await getErrorTextFormError (error))\n }\n}\n\n\nexport const previewBaseAmountOut = async ({chainId, amountIn, poolId, price = 0n}: previewAmountOutParams) => {\n try {\n const chainInfo = CHAIN_INFO[chainId];\n\n // console.log(\"previewQuoteAmountOut data\", [poolId, amountIn, price]);\n const basePoolContract = await getBasePoolContract(chainId);\n \n const request = await basePoolContract.read.previewBaseAmountOut(\n [poolId, amountIn, price],\n )\n // console.log('previewBaseAmountOut response', request)\n return request\n } catch (error) {\n sdkError(error)\n throw typeof error === \"string\" ? error : (await getErrorTextFormError (error))\n }\n}\n\nexport const previewUserWithdrawData = async ({ chainId, account, poolId, amount = 0 }: PreviewWithdrawDataParams) => {\n try {\n \n if (!chainId || !account || !poolId ) return\n if (!amount) {\n return {\n baseAmountOut: 0n,\n rebateAmount: 0n\n }\n }\n const chainInfo = CHAIN_INFO[chainId];\n const decimals = COMMON_LP_AMOUNT_DECIMALS;\n \n await checkParams ({\n // tokenAddress: lpAddress,\n decimals,\n account,\n chainId,\n amount: Number(amount),\n })\n \n const amountIn = parseUnits(amount.toString(), decimals);\n \n // todo ws price\n const priceResponse = await getOraclePrice(chainId, [poolId]);\n const _price = priceResponse.data?.[0]?.price || '0';\n \n const price = parseUnits(_price, COMMON_PRICE_DECIMALS)\n \n // console.log(\"previewUserWithdrawData data\", [poolId, amountIn,account, price]);\n const basePoolContract = await getBasePoolContract(chainId);\n const request = await basePoolContract.read.previewUserWithdrawData(\n [poolId, amountIn, account, price],\n )\n const [baseAmountOut, rebateAmount] = request\n return {\n baseAmountOut,\n rebateAmount,\n }\n \n } catch (error) {\n // sdkError(error)\n throw typeof error === \"string\" ? error : (await getErrorTextFormError (error))\n }\n}\n","import { getPoolDetail, type MarketPool } from \"@/api/index.js\";\nimport { ChainId } from \"@/config/chain.js\";\nimport { getErrorTextFormError } from \"@/config/error.js\";\n\n\nexport const getPoolInfo = async (chainId: ChainId, poolId: string) => {\n try {\n if (!chainId || !poolId) return\n const response = await getPoolDetail(chainId, poolId);\n const pool: MarketPool = response.data\n return pool;\n } catch (error) {\n throw typeof error === \"string\" ? error : (await getErrorTextFormError (error))\n }\n}\n","import { ErrorCode, Errors } from \"@/config/error.js\";\nimport { parseUnits } from \"viem\";\nimport { COMMON_LP_AMOUNT_DECIMALS, COMMON_PRICE_DECIMALS, } from \"@/config/decimals.js\";\nimport { bigintAmountSlipperCalculator } from \"@/common/tradingGas.js\";\nimport type { TpSl, TpSLParams } from \"@/lp/pool/index.js\";\nimport { getDecimalPlaces } from \"@/utils/number.js\";\n\nexport const getTpSlParams = (slippage: number = 0.01, tpsl: TpSl[] = [], decimals = COMMON_LP_AMOUNT_DECIMALS, quoteDecimal: number) => {\n if (tpsl.length === 0) {\n return []\n }\n if (tpsl.filter(item => item.amount && item.triggerPrice && item.triggerType).length === 0) {\n throw new Error(Errors[ ErrorCode.Invalid_Params]);\n }\n \n \n const tpslParams = tpsl.map(item => {\n const amount = parseUnits(item.amount.toString(), decimals)\n const triggerPrice = parseUnits(item.triggerPrice.toString(), COMMON_PRICE_DECIMALS)\n const decimal = getDecimalPlaces(item.triggerPrice.toString())\n const price = parseUnits(item.triggerPrice.toString(), decimal)\n const minQuoteOut = bigintAmountSlipperCalculator(amount * price * BigInt(10 ** quoteDecimal)/ BigInt(10 ** (decimal + decimals)), slippage)\n return {\n amount,\n triggerPrice,\n triggerType: BigInt(item.triggerType),\n minQuoteOut\n } as TpSLParams\n })\n \n return tpslParams\n}\n","export function getDecimalPlaces(value: string): number {\n return value.includes(\".\") ? value.split(\".\")[1].length : 0;\n}\n","import { getAccount, getBasePoolContract, getLiquidityRouterContract } from \"@/web3/providers.js\";\nimport { parseUnits } from \"viem\";\nimport { WithdrawParams } from \"@/lp/type.js\";\nimport { CHAIN_INFO } from \"@/config/chains/index.js\";\nimport { checkParams } from \"@/common/checkParams.js\";\nimport { getPoolInfo } from \"@/lp/getPoolInfo.js\";\nimport { bigintTradingGasPriceWithRatio, bigintTradingGasToRatioCalculator } from \"@/common/tradingGas.js\";\nimport { getPriceData } from \"@/common/price.js\";\nimport { COMMON_LP_AMOUNT_DECIMALS, COMMON_PRICE_DECIMALS } from \"@/config/decimals.js\";\nimport { getErrorTextFormError } from \"@/config/error.js\";\nimport { sdkError } from \"@/logger\";\nimport { ChainId } from \"@/config/chain.js\";\nimport { getPublicClient } from \"@/web3\";\nimport { getWithdrawData } from \"@/common/withdrawData.ts\";\nimport { PoolType } from \"@/lp/pool\";\nimport { MarketPoolState } from \"@/api\";\n\nexport const withdrawableLpAmount = async (\n params: {\n chainId: ChainId;\n poolId: string;\n price?: bigint;\n }\n) => {\n try {\n const {chainId, poolId, price} = params;\n let referencePrice = price\n const basePoolContract = await getBasePoolContract(chainId);\n if (typeof price === 'undefined' || price === null) {\n try {\n const priceData = await getPriceData(chainId, poolId)\n referencePrice = parseUnits(priceData?.price || '0', COMMON_PRICE_DECIMALS)\n } catch (error) {\n referencePrice = parseUnits( '0', COMMON_PRICE_DECIMALS)\n }\n \n }\n \n const request = await basePoolContract.read.withdrawableLpAmount([poolId, referencePrice || 0n])\n // console.log(`base pool withdrawableLpAmount: ${request}`)\n \n return request\n \n } catch (error) {\n // sdkError(error);\n throw typeof error === \"string\" ? error : (await getErrorTextFormError (error))\n }\n}\n\nexport const withdraw = async (\n params: WithdrawParams\n) => {\n try {\n const { chainId, poolId, amount, slippage = 0.01 } = params;\n const pool = await getPoolInfo (chainId, poolId)\n const lpAddress = pool?.basePoolToken\n \n const chainInfo = CHAIN_INFO[chainId];\n const account = await getAccount (chainId);\n \n const decimals = COMMON_LP_AMOUNT_DECIMALS;\n \n await checkParams ({\n tokenAddress: lpAddress,\n decimals,\n account,\n chainId,\n amount,\n })\n \n const amountIn = parseUnits (amount.toString (), decimals);\n \n const {price, data, value} = await getWithdrawData({poolId,chainId,account,amountIn, slippage, poolType: PoolType.Base, state: pool?.state as MarketPoolState})\n \n const contract = await getLiquidityRouterContract (chainId)\n \n // estimate gas (viem style, args array)\n const _gasLimit = await contract.estimateGas!.withdrawBase (\n [price, data],\n { value },\n )\n const gasLimit = bigintTradingGasToRatioCalculator (_gasLimit, chainInfo.gasLimitRatio)\n const { gasPrice } = await bigintTradingGasPriceWithRatio (chainId)\n const hash = await contract.write!.withdrawBase (\n [price, data],\n {\n gasLimit,\n gasPrice,\n value,\n },\n )\n \n const receipt = await getPublicClient(chainId).waitForTransactionReceipt({ hash });\n \n return receipt\n \n \n } catch (error) {\n sdkError(error);\n throw typeof error === \"string\" ? error : (await getErrorTextFormError (error))\n }\n}\n\n\n\n","import { type Address, MarketPoolState } from \"@/api\";\nimport { OracleUpdatePrice } from \"@/lp/type.ts\";\nimport { getPriceData } from \"@/common/price.ts\";\nimport { parseUnits } from \"viem\";\nimport { COMMON_PRICE_DECIMALS } from \"@/config/decimals.ts\";\nimport { previewBaseAmountOut } from \"@/lp/base/preview.ts\";\nimport { bigintAmountSlipperCalculator } from \"@/common/tradingGas.ts\";\nimport { ChainId } from \"@/config/chain.js\";\nimport { PoolType } from \"@/lp/pool/index.js\";\nimport { previewQuoteAmountOut } from \"@/lp/quote/preview.ts\";\n\nexport const getWithdrawData = async (\n {\n amountIn,\n chainId,\n poolId,\n state,\n slippage,\n poolType,\n account\n }: {\n amountIn: bigint,\n account: string,\n chainId: ChainId,\n poolId: string,\n state:MarketPoolState,\n slippage: number,\n poolType: PoolType\n }) => {\n \n const isNeedPrice = !(state === MarketPoolState.Cook || state === MarketPoolState.Primed)\n \n const price: OracleUpdatePrice[] = []\n let value = 0n;\n let amountOut;\n const previewAmountOut = poolType === PoolType.Base ? previewBaseAmountOut : previewQuoteAmountOut\n // let _withdrawableLpAmount;\n if (isNeedPrice) {\n try {\n const priceData = await getPriceData (chainId, poolId)\n if (priceData) {\n const referencePrice = parseUnits (priceData.price, COMMON_PRICE_DECIMALS)\n price.push ({\n poolId: poolId as Address,\n oracleType: priceData.oracleType,\n publishTime: BigInt(priceData.publishTime),\n oracleUpdateData: priceData.vaa as Address,\n })\n amountOut = await previewAmountOut ({ chainId, poolId, amountIn, price: referencePrice })\n value = priceData.value\n }\n } catch (e) {\n console.error(e)\n amountOut = await previewAmountOut ({ chainId, poolId, amountIn })\n }\n // _withdrawableLpAmount = await withdrawableLpAmount({chainId, poolId, price: referencePrice})\n } else {\n amountOut = await previewAmountOut ({ chainId, poolId, amountIn })\n // _withdrawableLpAmount = await withdrawableLpAmount({chainId, poolId, price: 0n})\n }\n \n /*if (_withdrawableLpAmount && amountIn > _withdrawableLpAmount) {\n throw new Error(Errors[ErrorCode.Invalid_Amount_Withdrawable_Lp_Amount]);\n }*/\n \n const data = {\n poolId,\n amountIn,\n minAmountOut: bigintAmountSlipperCalculator (amountOut, slippage),\n recipient: account\n }\n \n return {\n price,\n data,\n value\n }\n}\n","import { CreatePoolRequest } from \"@/lp/pool/type.js\";\nimport { getDataProviderContract, getPoolManagerContract, ProviderType, } from \"../../web3/providers.js\";\nimport { ChainId } from \"@/config/chain.js\";\nimport { ErrorCode, Errors, getErrorTextFormError } from \"@/config/error.js\";\nimport { sdkError } from \"@/logger\";\nimport { getContractAddressByChainId } from \"@/config/address/index.js\";\nimport sdk from \"@/web3/index.js\";\n\nexport const getMarketInfo = (chainId: ChainId, quoteToken: string) => {\n const marketId = sdk?.Markets?.find((m) => m.chainId === chainId && m.quoteToken === quoteToken);\n return marketId;\n};\n\nexport const getMarketPoolId = async ({\n chainId,\n baseToken,\n marketId,\n}: CreatePoolRequest) => {\n try {\n // if (!isSupportedChainFn(chainId)) {\n // throw new Error(Errors[ ErrorCode.Invalid_Chain_ID]);\n // }\n if (!baseToken) {\n throw new Error(Errors[ErrorCode.Invalid_TOKEN_ADDRESS]);\n }\n const addresses = getContractAddressByChainId(chainId);\n const contract = await getPoolManagerContract(chainId, ProviderType.JSON);\n\n const data = [marketId, baseToken];\n \n const request = await contract.read!.getMarketPool(data);\n\n return request.poolId === '0x0000000000000000000000000000000000000000000000000000000000000000' || !request.poolId\n ? undefined\n : request.poolId;\n } catch (error) {\n sdkError(error);\n throw typeof error === \"string\"\n ? error\n : (await getErrorTextFormError(error));\n }\n};\n\nexport const getMarketPools = async (chainId: ChainId) => {\n try {\n // if (!isSupportedChainFn(chainId)) {\n // throw new Error(Errors[ ErrorCode.Invalid_Chain_ID]);\n // }\n\n // const chainInfo = CHAIN_INFO[chainId];\n // const addresses = Address[chainId as keyof typeof Address];\n // const address = addresses.POOL_MANAGER;\n const contract = await getPoolManagerContract(chainId);\n\n // const data = [ marketId ]\n\n const request = await contract.read.getPools();\n return request || [];\n } catch (error) {\n sdkError(error);\n throw typeof error === \"string\"\n ? error\n : (await getErrorTextFormError(error));\n }\n};\n\nexport const getPoolInfo = async (\n chainId: ChainId,\n poolId: string,\n marketPrice: bigint = 0n\n) => {\n try {\n const contract = await getDataProviderContract(chainId);\n const request = await contract.read.getPoolInfo([poolId, marketPrice]);\n // console.log(request);\n const info = {\n quotePool: {\n poolToken: request.quotePool.poolToken,\n exchangeRate: request.quotePool.exchangeRate,\n poolTokenPrice: request.quotePool.poolTokenPrice,\n poolTokenSupply: request.quotePool.poolTokenSupply,\n totalDebt: request.quotePool.totalDebt,\n baseCollateral: request.quotePool.baseCollateral,\n },\n basePool: {\n poolToken: request.basePool.poolToken,\n exchangeRate: request.basePool.exchangeRate,\n poolTokenPrice: request.basePool.poolTokenPrice,\n poolTokenSupply: request.basePool.poolTokenSupply,\n totalDebt: request.basePool.totalDebt,\n baseCollateral: request.basePool.baseCollateral,\n },\n reserveInfo: {\n baseTotalAmount: request.reserveInfo.baseTotalAmount,\n baseReservedAmount: request.reserveInfo.baseReservedAmount,\n quoteTotalAmount: request.reserveInfo.quoteTotalAmount,\n quoteReservedAmount: request.reserveInfo.quoteReservedAmount,\n },\n fundingInfo: {\n nextFundingRate: request.fundingInfo.nextFundingRate,\n lastFundingFeeTracker: request.fundingInfo.lastFundingFeeTracker,\n nextEpochTime: request.fundingInfo.nextEpochTime,\n },\n\n ioTracker: {\n tracker: request.oi.tracker,\n longSize: request.oi.longSize,\n shortSize: request.oi.shortSize,\n poolEntryPrice: request.oi.poolEntryPrice,\n },\n liquidityInfo: {\n windowCaps: request.liquidityInfo.windowCaps,\n openInterest: request.liquidityInfo.openInterest,\n }\n };\n // console.log(info);\n return info;\n } catch (error) {\n sdkError(error);\n throw typeof error === \"string\"\n ? error\n : (await getErrorTextFormError(error));\n }\n};\n","import { CreatePoolRequest } from \"@/lp/pool/type.js\";\nimport { getPoolManagerContract } from \"../../web3/providers.js\";\nimport { bigintTradingGasPriceWithRatio, bigintTradingGasToRatioCalculator } from \"@/common/tradingGas.js\";\nimport { ErrorCode, Errors, getErrorTextFormError } from \"@/config/error.js\";\nimport { CHAIN_INFO } from \"@/config/chains/index.js\";\nimport { getMarketPoolId } from \"@/lp/pool/get.js\";\nimport { getPublicClient } from \"@/web3\";\n\nexport const createPool = async ({chainId, baseToken, marketId}:CreatePoolRequest) => {\n try {\n // if (!isSupportedChainFn(chainId)) {\n // throw new Error(Errors[ ErrorCode.Invalid_Chain_ID]);\n // }\n \n if (!baseToken) {\n throw new Error(Errors[ErrorCode.Invalid_TOKEN_ADDRESS]);\n }\n // const _poolId = await getPoolManagerContract(chainId);\n // if (_poolId) {\n // throw new Error(Errors[ErrorCode.Invalid_Base]);\n // }\n \n \n const chainInfo = CHAIN_INFO[chainId];\n const contract = await getPoolManagerContract(chainId)\n\n const data = { marketId, baseToken }\n\n const _gasLimit = await contract.estimateGas!.deployPool([data])\n const gasLimit = bigintTradingGasToRatioCalculator(_gasLimit, chainInfo.gasLimitRatio)\n // console.log(\"gasLimit\", _gasLimit, gasLimit);\n \n const {gasPrice} = await bigintTradingGasPriceWithRatio (chainId);\n // console.log(\"gasPrice\", gasPrice)\n \n const hash = await contract.write!.deployPool([data], {\n gasLimit,\n gasPrice\n })\n const receipt = await getPublicClient(chainId).waitForTransactionReceipt({ hash });\n \n \n if (receipt) {\n const poolId = await getMarketPoolId({chainId, baseToken, marketId})\n return poolId\n }\n // console.log(request)\n } catch (error) {\n // console.error(error)\n throw typeof error === \"string\" ? error : (await getErrorTextFormError (error))\n }\n}\n","import { ChainId } from \"@/config/chain.js\";\nimport { getPoolTokenContract } from \"@/web3/providers.js\";\nimport { getErrorTextFormError } from \"@/config/error.js\";\nimport { sdkError } from \"@/logger\";\n\nexport const getUserGenesisShare = async (chainId: ChainId, tokenAddress: string, account: string) => {\n try {\n const contract = await getPoolTokenContract (chainId, tokenAddress)\n \n const request = await contract.read.userGenesisShare ([account])\n // console.log (`UserGenesisShare : `, request)\n return request\n } catch (error) {\n sdkError(error)\n throw typeof error === \"string\" ? error : (await getErrorTextFormError (error))\n }\n}\n","import { AddTpSLParams } from \"@/lp/pool/type.js\";\nimport { getLiquidityRouterContract } from \"../../web3/providers.js\";\nimport { sdkError } from \"@/logger\";\nimport {\n bigintTradingGasPriceWithRatio,\n bigintTradingGasToRatioCalculator\n} from \"@/common/tradingGas.js\";\nimport { ErrorCode, Errors, getErrorTextFormError } from \"@/config/error.js\";\nimport { CHAIN_INFO } from \"@/config/chains/index.js\";\nimport { checkParams } from \"@/common/checkParams.js\";\nimport { getTpSlParams } from \"@/common/getTpSlParams.js\";\nimport { getPoolInfo } from \"@/lp/getPoolInfo.js\";\nimport { COMMON_LP_AMOUNT_DECIMALS } from \"@/config/decimals.js\";\nimport { getPublicClient } from \"@/web3\";\n\n\nexport const addTpSl = async (params:AddTpSLParams) => {\n try {\n const {chainId, poolId, poolType,slippage = 0.01, tpsl = []} = params;\n await checkParams (params)\n const pool = await getPoolInfo(chainId, poolId);\n if (!pool) {\n throw new Error(Errors[ErrorCode.Invalid_Params])\n }\n \n const decimals = COMMON_LP_AMOUNT_DECIMALS\n const quoteDecimals = pool.quoteDecimals\n \n const tpslParams = getTpSlParams(slippage, tpsl, decimals, quoteDecimals);\n \n const chainInfo = CHAIN_INFO[chainId];\n const contract = await getLiquidityRouterContract(chainId)\n \n const data = {\n poolId,\n poolType: BigInt(poolType),\n tpslParams\n }\n \n // console.log('add tpSl params:', data)\n \n const _gasLimit = await contract.estimateGas!.addTpsl([data])\n const gasLimit = bigintTradingGasToRatioCalculator(_gasLimit, chainInfo.gasLimitRatio)\n // console.log(\"gasLimit\", _gasLimit, gasLimit);\n \n const {gasPrice} = await bigintTradingGasPriceWithRatio (chainId);\n // console.log(\"gasPrice\", gasPrice)\n \n const hash = await contract.write!.addTpsl([data], {\n gasLimit,\n gasPrice\n })\n \n const receipt = await getPublicClient(chainId).waitForTransactionReceipt({ hash });\n \n return receipt\n } catch (error) {\n sdkError(error)\n throw typeof error === \"string\" ? error : (await getErrorTextFormError (error))\n }\n}\n","import { CancelTpSLParams } from \"@/lp/pool/type.js\";\nimport { getLiquidityRouterContract } from \"../../web3/providers.js\";\nimport {\n bigintTradingGasPriceWithRatio,\n bigintTradingGasToRatioCalculator\n} from \"@/common/tradingGas.js\";\nimport { getErrorTextFormError } from \"@/config/error.js\";\nimport { sdkError } from \"@/logger\";\nimport { CHAIN_INFO } from \"@/config/chains/index.js\";\nimport { checkParams } from \"@/common/checkParams.js\";\nimport { getPublicClient } from \"@/web3\";\n\n\nexport const cancelTpSl = async (params:CancelTpSLParams) => {\n try {\n const {chainId, orderId} = params;\n await checkParams (params)\n \n const chainInfo = CHAIN_INFO[chainId];\n const contract = await getLiquidityRouterContract(chainId)\n\n const _gasLimit = await contract.estimateGas!.cancelTpsl([orderId])\n const gasLimit = bigintTradingGasToRatioCalculator(_gasLimit, chainInfo.gasLimitRatio)\n // console.log(\"gasLimit\", _gasLimit, gasLimit);\n \n const {gasPrice} = await bigintTradingGasPriceWithRatio (chainId);\n // console.log(\"gasPrice\", gasPrice)\n \n const hash = await contract.write!.cancelTpsl([orderId], {\n gasLimit,\n gasPrice\n })\n \n const receipt = await getPublicClient(chainId).waitForTransactionReceipt({ hash });\n \n return receipt\n } catch (error) {\n sdkError(error)\n throw typeof error === \"string\" ? error : (await getErrorTextFormError (error))\n }\n}\n","import { getAddress, formatUnits } from \"viem\";\nimport { sdkError } from \"@/logger\";\nimport { getPublicClient } from \"@/web3/viemClients.js\";\nimport TOKEN_ABI from \"@/abi/IERC20Metadata.json\";\nimport { type Address } from \"@/api\";\n\nasync function checkImageExists(url: string): Promise<boolean> {\n try {\n const res = await fetch(url, { method: \"HEAD\" });\n return res.ok;\n } catch {\n return false;\n }\n}\n\nexport const getTokenInfo = async (chainId: number, tokenAddress: string, account?: string) => {\n try {\n const client = getPublicClient(chainId);\n const addr = tokenAddress as Address;\n const [name, symbol, decimals, totalSupply] = await Promise.all([\n client.readContract({ address: addr, abi: TOKEN_ABI as never, functionName: \"name\" }),\n client.readContract({ address: addr, abi: TOKEN_ABI as never, functionName: \"symbol\" }),\n client.readContract({ address: addr, abi: TOKEN_ABI as never, functionName: \"decimals\" }),\n client.readContract({ address: addr, abi: TOKEN_ABI as never, functionName: \"totalSupply\" }),\n ]);\n const normalized = getAddress(addr);\n const iconUrl = `https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/${chainId}/assets/${normalized}/logo.png`;\n const fallbackIcon = \"\";\n const icon = (await checkImageExists(iconUrl)) ? iconUrl : fallbackIcon;\n let balance: number | undefined;\n if (account) {\n const rawBalance = await client.readContract({ address: addr, abi: TOKEN_ABI as never, functionName: \"balanceOf\", args: [account as Address] });\n balance = Number(formatUnits(rawBalance as bigint, Number(decimals)));\n }\n return {\n address: tokenAddress,\n name: name as string,\n symbol: symbol as string,\n decimals: Number(decimals),\n icon,\n totalSupply: Number(formatUnits(totalSupply as bigint, Number(decimals))),\n ...(account ? { balance } : {}),\n };\n } catch (e) {\n sdkError(e);\n throw e;\n }\n};\n","export * from './approve.js'\nexport * from './allowance.js'\nexport * from './balanceOf.js'\nexport * from './tradingGas.js'\nexport * from './tokenInfo.js'\n\nexport { formatUnits, parseUnits } from \"viem\";\n\n","import { ChainId } from \"@/config/chain.js\";\nimport { ErrorCode, Errors, getErrorTextFormError } from \"@/config/error.js\";\nimport { sdkError } from \"@/logger\";\nimport { CHAIN_INFO } from \"@/config/chains/index.js\";\nimport { getAccount, getPoolManagerContract } from \"@/web3/providers.js\";\nimport { checkParams } from \"@/common/checkParams\";\nimport { bigintTradingGasPriceWithRatio, bigintTradingGasToRatioCalculator } from \"@/common/index.js\";\nimport { getPoolInfo } from \"@/lp/getPoolInfo.js\";\nimport { formatUnits, parseUnits } from \"viem\";\nimport { getContractAddressByChainId } from \"@/config/address/index.js\";\nimport sdk, { getPublicClient } from \"@/web3\";\n\nexport const reprime = async (chainId: ChainId, poolId: string, marketId: string) => {\n try {\n await checkParams({ chainId })\n const pool = await getPoolInfo(chainId, poolId);\n if (!pool) {\n throw new Error(Errors[ErrorCode.Invalid_Params])\n }\n const account = await getAccount(chainId);\n const markets = sdk?.Markets?.length ? sdk?.Markets : (await sdk.getMarkets());\n const market = (markets || [])?.find((m) => m.chainId === chainId && m.marketId === marketId);\n if (!market) {\n throw new Error('Invalid Market');\n }\n\n const _amount = parseUnits(market.oracleFeeUsd.toString(), pool.quoteDecimals)\n\n if (!_amount) {\n throw new Error('Invalid Market');\n }\n\n await checkParams({\n tokenAddress: pool.quoteToken,\n contractAddress: getContractAddressByChainId(chainId).ORACLE_RESERVE,\n decimals: pool.quoteDecimals,\n account,\n chainId,\n amount: Number(formatUnits(_amount, pool.quoteDecimals)),\n })\n\n const chainInfo = CHAIN_INFO[chainId];\n const contract = await getPoolManagerContract(chainId)\n const _gasLimit = await contract.estimateGas!.reprimePool([{ poolId }])\n const gasLimit = bigintTradingGasToRatioCalculator(_gasLimit, chainInfo.gasLimitRatio)\n const { gasPrice } = await bigintTradingGasPriceWithRatio(chainId);\n \n const hash = await contract.write!.reprimePool([{ poolId }], {gasLimit, gasPrice })\n const receipt = await getPublicClient(chainId).waitForTransactionReceipt({ hash });\n \n return receipt\n } catch (error) {\n sdkError(error);\n throw typeof error === \"string\" ? error : (await getErrorTextFormError(error))\n }\n}\n","import { getPoolOpenOrders } from \"@/api/index.js\";\nimport { ChainId } from \"@/config/chain.js\";\nimport { sdkError } from \"@/logger\";\nimport { MxSDK } from \"@/web3/index.js\";\n\nexport const getOpenOrders = async (chainId: ChainId, address: string) => {\n try {\n // Automatically obtain accessToken; it will be refreshed if missing or expired\n const accessToken = await MxSDK.getInstance().getConfigManager()?.getAccessToken();\n if (!accessToken) {\n throw new Error(\n \"Failed to obtain accessToken\"\n )\n }\n const response = await getPoolOpenOrders(accessToken, address, chainId)\n return response.data || [];\n\n } catch (error) {\n sdkError(error);\n throw error;\n }\n}\n","import { getQuotePoolContract } from \"@/web3/providers.js\";\nimport { previewAmountOutParams } from \"@/lp/type.js\";\nimport { getErrorTextFormError } from \"@/config/error.js\";\nimport { sdkError } from \"@/logger\";\n\nexport const previewLpAmountOut = async ({chainId, amountIn, poolId, price = 0n}: previewAmountOutParams) => {\n try {\n const quotePoolContract = await getQuotePoolContract(chainId);\n const request = await quotePoolContract.read.previewLpAmountOut(\n [poolId, amountIn, price],\n )\n return request\n } catch (error) {\n sdkError(error)\n throw typeof error === \"string\" ? error : (await getErrorTextFormError (error))\n }\n}\n\n\nexport const previewQuoteAmountOut = async ({chainId, amountIn, poolId, price = 0n}: previewAmountOutParams) => {\n try {\n const quotePoolContract = await getQuotePoolContract(chainId);\n const request = await quotePoolContract.read.previewQuoteAmountOut(\n [poolId, amountIn, price],\n )\n return request\n } catch (error) {\n sdkError(error)\n throw typeof error === \"string\" ? error : (await getErrorTextFormError (error))\n }\n}\n","import { RewardsParams } from \"@/lp/type.js\";\nimport { CHAIN_INFO } from \"@/config/chains/index.js\";\nimport { getBasePoolContract } from \"@/web3/providers.js\";\nimport { getOraclePrice } from \"@/api/index.js\";\nimport { parseUnits } from \"viem\";\nimport { COMMON_PRICE_DECIMALS } from \"@/config/decimals.js\";\nimport { getErrorTextFormError } from \"@/config/error.js\";\nimport { sdkError } from \"@/logger\";\n\nexport const getRewards = async (params: RewardsParams) => {\n try {\n const {chainId, account, poolId} = params;\n if (!chainId || !account || !poolId) return\n const chainInfo = CHAIN_INFO[chainId];\n const lpAmountIn = 0n\n \n // todo ws price\n const priceResponse = await getOraclePrice(chainId, [poolId]);\n const _price = priceResponse.data?.[0]?.price || '0';\n \n const price = parseUnits(_price, COMMON_PRICE_DECIMALS)\n \n // console.log(\"pendingUserRebates base data:\", [poolId, lpAmountIn,account, price]);\n const basePoolContract = await getBasePoolContract(chainId);\n \n const request = await basePoolContract.read.pendingUserRebates(\n [poolId, account, price],\n )\n /* console.log(\"pendingUserRebates base result:\", {\n rebates: request?.rebates,\n genesisRebates: request?.genesisRebates,\n });*/\n \n return {\n rebates: request?.rebates,\n genesisRebates: request?.genesisRebates,\n }\n \n } catch (error) {\n sdkError(error);\n throw typeof error === \"string\" ? error : (await getErrorTextFormError (error))\n }\n}\n","import { ChainId } from \"@/config/chain.js\";\nimport { getBasePoolContract } from \"@/web3/providers.js\";\nimport { getPriceData } from \"@/common/price.js\";\nimport { parseUnits } from \"viem\";\nimport { COMMON_PRICE_DECIMALS } from \"@/config/decimals.js\";\nimport { getErrorTextFormError } from \"@/config/error.js\";\n\nexport const getLpPrice = async (chainId: ChainId, poolId: string) => {\n if (!poolId) return;\n try {\n const contract = await getBasePoolContract(chainId);\n let price = 0n;\n // if (!(Number(pool?.state) === MarketPoolState.Cook || Number(pool?.state) === MarketPoolState.Primed)) {\n const res = await getPriceData(chainId, poolId);\n if (res?.price) {\n price = parseUnits(res.price, COMMON_PRICE_DECIMALS);\n }\n // }\n const data = await contract.read.getPoolTokenPrice([poolId, price]);\n // console.log(`pool ${poolId} price: `, data);\n return data;\n } catch (error) {\n // console.error(error);\n throw typeof error === \"string\" ? error : (await getErrorTextFormError (error));\n }\n}\n","export { deposit } from \"./deposit.js\";\nexport {withdraw, withdrawableLpAmount} from \"./withdraw.js\";\nexport {transfer} from \"./transfer.js\";\nexport {getRewards} from \"./rewards.js\";\nexport {claimQuotePoolRebate, claimQuotePoolRebates} from \"./claim.js\";\nexport {getLpPrice} from \"./price.js\";\n","import { getAccount, getLiquidityRouterContract } from \"@/web3/providers.js\";\nimport { parseUnits } from \"viem\";\nimport {\n bigintAmountSlipperCalculator,\n bigintTradingGasPriceWithRatio,\n bigintTradingGasToRatioCalculator\n} from \"@/common/tradingGas.js\";\nimport { CHAIN_INFO } from \"@/config/chains/index.js\";\nimport { Deposit, type OracleUpdatePrice } from \"@/lp/type.js\";\nimport { checkParams } from \"@/common/checkParams.js\";\nimport { previewLpAmountOut } from \"@/lp/quote/preview.js\";\nimport { type Address, MarketPoolState } from \"@/api/index.js\";\nimport { getPoolInfo } from \"@/lp/getPoolInfo.js\";\nimport { getPriceData } from \"@/common/price.js\";\nimport { COMMON_PRICE_DECIMALS } from \"@/config/decimals.js\";\nimport type { TpSl } from \"@/lp/pool/index.js\";\nimport { getTpSlParams } from \"@/common/getTpSlParams.js\";\nimport { ErrorCode, Errors, getErrorTextFormError } from \"@/config/error.js\";\nimport { getContractAddressByChainId } from \"@/config/address/index.js\";\nimport { getPublicClient } from \"@/web3\";\nimport { sdkError } from \"@/logger\";\n\n\nexport const deposit = async (params: Deposit) => {\n try {\n const {poolId, chainId, amount, slippage = 0.01, tpsl = []} = params;\n await checkParams(params)\n const pool = await getPoolInfo(chainId, poolId);\n if (!pool) {\n throw new Error(Errors[ErrorCode.Invalid_Params])\n }\n const chainInfo = CHAIN_INFO[chainId];\n const account = await getAccount (chainId);\n \n const addresses = getContractAddressByChainId(chainId);\n const contractAddress = addresses.QUOTE_POOL;\n \n const tokenAddress = pool.quoteToken;\n const decimals = pool?.quoteDecimals;\n \n await checkParams ({\n tokenAddress,\n contractAddress,\n decimals,\n account,\n chainId,\n amount,\n })\n \n const amountIn = parseUnits(amount.toString(), decimals)\n \n const isNeedPrice = !(Number(pool?.state) === MarketPoolState.Cook || Number(pool?.state) === MarketPoolState.Primed)\n \n const price : OracleUpdatePrice[] =[]\n \n let value = 0n\n let amountOut;\n \n if (isNeedPrice) {\n // todo getprice\n const priceData = await getPriceData(chainId, poolId)\n if (!priceData) return\n const referencePrice = parseUnits(priceData.price, COMMON_PRICE_DECIMALS)\n price.push({\n poolId: poolId as Address,\n oracleType: priceData.oracleType,\n publishTime: BigInt(priceData.publishTime),\n oracleUpdateData: priceData.vaa as Address,\n });\n amountOut = await previewLpAmountOut ({ chainId, poolId, amountIn, price: referencePrice })\n value = priceData.value\n } else {\n amountOut = await previewLpAmountOut ({ chainId, poolId, amountIn})\n }\n \n const _tpsl = tpsl.map((item) => {\n return {\n amount,\n triggerPrice: item.triggerPrice,\n triggerType: item.triggerType,\n } as TpSl\n })\n \n const tpslParams = getTpSlParams(slippage, _tpsl, decimals, decimals);\n \n const data = {\n poolId: poolId as unknown as import(\"viem\").Hex,\n amountIn,\n minAmountOut: bigintAmountSlipperCalculator(amountOut, slippage),\n recipient: account,\n tpslParams\n }\n \n // console.log(\"deposit params: price, data, value :\",price, data, value);\n \n const contract = await getLiquidityRouterContract(chainId)\n \n // estimate gas (viem style, args array)\n const _gasLimit = await contract.estimateGas!.depositQuote(\n [price, data],\n { value },\n )\n \n const gasLimit = bigintTradingGasToRatioCalculator(_gasLimit, chainInfo.gasLimitRatio)\n const {gasPrice} = await bigintTradingGasPriceWithRatio (chainId);\n const hash = await contract.write!.depositQuote(\n [price, data],\n {\n gasLimit,\n gasPrice,\n value,\n },\n )\n const receipt = await getPublicClient(chainId).waitForTransactionReceipt({ hash });\n \n return receipt\n } catch (error) {\n sdkError(error)\n throw typeof error === \"string\" ? error : (await getErrorTextFormError (error))\n }\n}\n","import { getAccount, getLiquidityRouterContract, getQuotePoolContract } from \"@/web3/providers.js\";\nimport { parseUnits } from \"viem\";\nimport { WithdrawParams } from \"@/lp/type.js\";\nimport { CHAIN_INFO } from \"@/config/chains/index.js\";\nimport {\n bigintTradingGasPriceWithRatio,\n bigintTradingGasToRatioCalculator\n} from \"@/common/tradingGas.js\";\nimport { checkParams } from \"@/common/checkParams.js\";\nimport { getPoolInfo } from \"@/lp/getPoolInfo.js\";\nimport { MarketPoolState } from \"@/api/index.js\";\nimport { getPriceData } from \"@/common/price.js\";\nimport { COMMON_LP_AMOUNT_DECIMALS, COMMON_PRICE_DECIMALS } from \"@/config/decimals.js\";\nimport { getErrorTextFormError } from \"@/config/error.js\";\nimport { ChainId } from \"@/config/chain.js\";\nimport { sdkError } from \"@/logger\";\nimport { getPublicClient } from \"@/web3\";\nimport { getWithdrawData } from \"@/common/withdrawData.ts\";\nimport { PoolType } from \"@/lp/pool\";\n\nexport const withdrawableLpAmount = async (\n params: {\n chainId: ChainId;\n poolId: string;\n price?: bigint;\n }\n) => {\n try {\n const {chainId, poolId, price} = params;\n let referencePrice = price\n const quotePoolContract = await getQuotePoolContract(chainId);\n if (typeof price === 'undefined' || price === null) {\n try {\n const priceData = await getPriceData(chainId, poolId)\n referencePrice = parseUnits(priceData?.price || '0', COMMON_PRICE_DECIMALS)\n } catch (error) {\n referencePrice = parseUnits( '0', COMMON_PRICE_DECIMALS)\n }\n }\n \n const request = await quotePoolContract.read.withdrawableLpAmount([poolId, referencePrice || 0n])\n return request\n \n } catch (error) {\n sdkError(error);\n throw typeof error === \"string\" ? error : (await getErrorTextFormError (error))\n }\n}\n\nexport const withdraw = async (params: WithdrawParams) => {\n try {\n const { chainId, poolId, amount, slippage = 0.01 } = params;\n const pool = await getPoolInfo (chainId, poolId)\n const lpAddress = pool?.quotePoolToken\n \n const chainInfo = CHAIN_INFO[chainId];\n const account = await getAccount (chainId);\n \n const decimals = COMMON_LP_AMOUNT_DECIMALS;\n \n await checkParams ({\n tokenAddress: lpAddress,\n decimals,\n account,\n chainId,\n amount,\n })\n \n \n const amountIn = parseUnits (amount.toString (), decimals)\n \n const {price, data, value} = await getWithdrawData({\n poolId,\n chainId,\n account,\n amountIn,\n slippage,\n poolType: PoolType.Quote,\n state: pool?.state as MarketPoolState\n })\n \n const contract = await getLiquidityRouterContract (chainId)\n\n const _gasLimit = await contract.estimateGas!.withdrawQuote(\n [price, data],\n { value },\n )\n const gasLimit = bigintTradingGasToRatioCalculator (_gasLimit, chainInfo.gasLimitRatio)\n const { gasPrice } = await bigintTradingGasPriceWithRatio (chainId);\n const hash = await contract.write!.withdrawQuote(\n [price, data],\n {\n gasLimit,\n gasPrice,\n value,\n },\n )\n \n const receipt = await getPublicClient(chainId).waitForTransactionReceipt({ hash });\n \n return receipt\n \n } catch (error) {\n sdkError(error);\n throw typeof error === \"string\" ? error : (await getErrorTextFormError (error))\n }\n}\n\n\n","import { getAccount, getLiquidityRouterContract } from \"@/web3/providers.js\";\nimport { bigintTradingGasPriceWithRatio, bigintTradingGasToRatioCalculator } from \"@/common/tradingGas.js\";\nimport { parseUnits } from \"viem\";\nimport { CHAIN_INFO } from \"@/config/chains/index.js\";\nimport { checkParams } from \"@/common/checkParams.js\";\nimport { ChainId } from \"@/config/chain.js\";\nimport { MarketPoolState } from \"@/api/type.js\";\nimport { ErrorCode, Errors, getErrorTextFormError } from \"@/config/error.js\";\nimport { getPoolInfo } from \"@/lp/getPoolInfo.js\";\nimport { COMMON_LP_AMOUNT_DECIMALS } from \"@/config/decimals.js\";\nimport { getPublicClient } from \"@/web3\";\n\n\nexport const transfer = async (chainId:ChainId,fromPoolId:string, toPoolId: string, amount: number) => {\n try {\n const fromPool = await getPoolInfo(chainId, fromPoolId);\n const toPool = await getPoolInfo(chainId, toPoolId);\n \n if (!toPool || !fromPool) return null;\n \n if([MarketPoolState.PreBench, MarketPoolState.Bench].includes(toPool.state)) {\n throw new Error(Errors[ErrorCode.Invalid_Pool_State]) // todo\n }\n \n const account = await getAccount (chainId);\n const chainInfo = CHAIN_INFO[chainId];\n const decimals = COMMON_LP_AMOUNT_DECIMALS\n \n await checkParams({chainId, amount,account, decimals, tokenAddress: fromPool.quotePoolToken})\n \n const data = {\n fromPoolId,\n toPoolId,\n minLpOut: 0n,\n amount: parseUnits(amount.toString(), decimals),\n }\n // console.log('migrateLiquiditydata', data)\n const contract = await getLiquidityRouterContract(chainId)\n // estimate gas (viem style, args array)\n const _gasLimit = await contract.estimateGas!.migrateLiquidity([data])\n \n const gasLimit = bigintTradingGasToRatioCalculator(_gasLimit, chainInfo.gasLimitRatio)\n const {gasPrice} = await bigintTradingGasPriceWithRatio (chainId);\n const hash = await contract.write!.migrateLiquidity([data], {\n gasLimit,\n gasPrice\n })\n \n const receipt = await getPublicClient(chainId).waitForTransactionReceipt({ hash });\n \n return receipt\n } catch (error) {\n // console.error(error)\n throw typeof error === \"string\" ? error : (await getErrorTextFormError (error))\n }\n}\n","import { RewardsParams } from \"@/lp/type.js\";\nimport { getQuotePoolContract } from \"@/web3/providers.js\";\nimport { getOraclePrice } from \"@/api/index.js\";\nimport { parseUnits } from \"viem\";\nimport { COMMON_PRICE_DECIMALS } from \"@/config/decimals.js\";\nimport { getErrorTextFormError } from \"@/config/error.js\";\nimport { sdkError } from \"@/logger\";\n\nexport const getRewards = async (params: RewardsParams) => {\n try {\n const {chainId, account, poolId} = params;\n if (!chainId || !account || !poolId) return\n \n const priceResponse = await getOraclePrice(chainId, [poolId]);\n const _price = priceResponse.data?.[0]?.price || '0';\n \n const price = parseUnits(_price, COMMON_PRICE_DECIMALS)\n \n const contract = await getQuotePoolContract(chainId);\n \n const request = await contract.read.pendingUserRebates(\n [poolId, account, price],\n )\n // console.log(\"pendingUserRebates quote result:\", request);\n \n return request\n \n } catch (error) {\n sdkError(error);\n throw typeof error === \"string\" ? error : (await getErrorTextFormError (error))\n }\n}\n","import { getAccount, getLiquidityRouterContract } from \"@/web3/providers.js\";\nimport { ClaimParams, ClaimRebatesParams } from \"@/lp/type.js\";\nimport { CHAIN_INFO } from \"@/config/chains/index.js\";\nimport { checkParams } from \"@/common/checkParams.js\";\nimport {\n bigintTradingGasPriceWithRatio,\n bigintTradingGasToRatioCalculator\n} from \"@/common/tradingGas.js\";\nimport { COMMON_LP_AMOUNT_DECIMALS } from \"@/config/decimals.js\";\nimport { getPricesData } from \"@/common/price.js\";\nimport { getErrorTextFormError } from \"@/config/error.js\";\nimport { sdkError } from \"@/logger\";\nimport { getPublicClient } from \"@/web3\";\nimport type { Address } from \"@/api\";\n\nexport const claimQuotePoolRebate = async (\n params: ClaimParams\n) => {\n try {\n const { chainId, poolId} = params;\n \n const chainInfo = CHAIN_INFO[chainId];\n const account = await getAccount (chainId);\n \n const decimals = COMMON_LP_AMOUNT_DECIMALS;\n \n await checkParams ({\n account,\n chainId,\n })\n \n const priceResponse = await getPricesData(chainId, [poolId]);\n if (!priceResponse) return\n \n const values = priceResponse.map((item) => {\n return item.value\n })\n \n const prices = priceResponse.map((item) => {\n return {\n poolId: item.poolId,\n oracleUpdateData: item?.vaa ?? '0',\n publishTime: item.publishTime,\n oracleType: item.oracleType,\n }\n })\n \n const data = {\n prices,\n values,\n poolId,\n recipient: account\n }\n \n const contract = await getLiquidityRouterContract(chainId)\n // console.log(\"quote claim params\", data)\n\n // estimate gas (viem style, args array)\n const _gasLimit = await contract.estimateGas!.claimQuotePoolRebate(\n [prices, poolId, account],\n { value: values[0] },\n )\n const gasLimit = bigintTradingGasToRatioCalculator(_gasLimit, chainInfo.gasLimitRatio)\n const {gasPrice} = await bigintTradingGasPriceWithRatio(chainId)\n const response = await contract.write!.claimQuotePoolRebate(\n [prices, poolId, account],\n {\n gasLimit,\n gasPrice,\n value: values[0],\n },\n )\n \n // console.log('quote claim',response)\n return response\n \n } catch (error) {\n sdkError(error);\n throw typeof error === \"string\" ? error : (await getErrorTextFormError (error))\n }\n}\n\n\n\nexport const claimQuotePoolRebates = async (\n params: ClaimRebatesParams\n) => {\n try {\n const { chainId, poolIds} = params;\n if(poolIds.length === 0) return;\n \n const chainInfo = CHAIN_INFO[chainId];\n const account = await getAccount (chainId);\n \n const decimals = COMMON_LP_AMOUNT_DECIMALS;\n \n await checkParams ({\n account,\n chainId,\n })\n const priceResponse = await getPricesData(chainId, poolIds);\n if (!priceResponse) return\n const prices = priceResponse.map((item) => {\n return {\n poolId: item.poolId,\n oracleType: item.oracleType,\n publishTime: item.publishTime,\n oracleUpdateData: item?.vaa ?? '0',\n }\n })\n const values = priceResponse.map((item) => item.value)\n const value = values.reduce((prev, curr) => curr + prev, 0n)\n \n const data = {\n prices,\n value,\n poolIds,\n recipient: account\n }\n \n // console.log(\"quote claim Rebates params\", data)\n \n const contract = await getLiquidityRouterContract(chainId)\n\n // estimate gas (viem style, args array)\n const _gasLimit = await contract.estimateGas!.claimQuotePoolRebates(\n [prices, poolIds, account],\n { value },\n )\n const gasLimit = bigintTradingGasToRatioCalculator(_gasLimit, chainInfo.gasLimitRatio)\n const {gasPrice} = await bigintTradingGasPriceWithRatio(chainId)\n const hash = await contract.write!.claimQuotePoolRebates(\n [prices, poolIds, account],\n {\n gasLimit,\n gasPrice,\n value,\n },\n )\n \n const receipt = await getPublicClient(chainId).waitForTransactionReceipt({ hash });\n \n return receipt\n \n } catch (error) {\n sdkError(error);\n throw typeof error === \"string\" ? error : (await getErrorTextFormError (error))\n }\n}\n","import { ChainId } from \"@/config/chain.js\";\nimport { getQuotePoolContract } from \"@/web3/providers.js\";\nimport { getPriceData } from \"@/common/price.js\";\nimport { parseUnits } from \"viem\";\nimport { COMMON_PRICE_DECIMALS } from \"@/config/decimals.js\";\nimport { getErrorTextFormError } from \"@/config/error.js\";\nimport { sdkError } from \"@/logger\";\n\nexport const getLpPrice = async (chainId:ChainId,poolId: string) => {\n if (!poolId) return\n try {\n const contract = await getQuotePoolContract (chainId);\n let price = 0n\n const res = await getPriceData (chainId, poolId)\n if (res?.price) {\n price = parseUnits (res.price, COMMON_PRICE_DECIMALS)\n }\n \n const data = await contract.read.getPoolTokenPrice ([poolId, price])\n // console.log( `pool ${poolId} price: `, data)\n return data\n } catch (error) {\n sdkError(error)\n throw typeof error === \"string\" ? error : (await getErrorTextFormError (error))\n }\n}\n","\nexport {getMarket} from './getMarket.js'\nexport {getOracleFee} from './getOracleFee.js'\n\n","import { getErrorTextFormError } from \"@/config/error.js\";\nimport { sdkError } from \"@/logger\";\nimport { getMarketManageContract } from \"@/web3/providers.js\";\nimport { ChainId } from \"@/config/chain.js\";\nimport { checkParams } from \"@/common/checkParams.js\";\n\nexport const getMarket = async (chainId: ChainId, marketId: string) => {\n try {\n await checkParams({chainId})\n if (!marketId) return\n \n const contract = await getMarketManageContract(chainId)\n \n const request = await contract.read.getMarket([marketId])\n // console.log(\"MarketManage.getMarket request\", request);\n \n return request;\n } catch (error) {\n sdkError(error);\n throw typeof error === \"string\" ? error : (await getErrorTextFormError (error))\n }\n}\n","import { getErrorTextFormError } from \"@/config/error.js\";\nimport { sdkError } from \"@/logger\";\nimport { getMarketManageContract } from \"@/web3/providers.js\";\nimport { ChainId } from \"@/config/chain.js\";\nimport { checkParams } from \"@/common/checkParams.js\";\n\nexport const getOracleFee = async (chainId: ChainId, marketId: string) => {\n try {\n await checkParams({chainId})\n if (!marketId) return\n \n const contract = await getMarketManageContract(chainId)\n \n const request = await contract.read.getOracleFee([marketId])\n // console.log(\"MarketManage.getOracleFee request\", request);\n \n // console.log(request)\n return request;\n } catch (error) {\n sdkError(error);\n throw typeof error === \"string\" ? error : (await getErrorTextFormError (error))\n }\n}\n","import * as base from './base/index.js';\nimport * as quote from './quote/index.js';\nimport * as market from './market/index.js';\n\nexport * from '../common/price.js';\n\n// Explicitly import and assemble from pool submodule to avoid pool.getPoolInfo and others being tree-shaken by frontend bundlers\nimport {\n createPool,\n getMarketPoolId,\n getMarketPools,\n getPoolInfo,\n getUserGenesisShare,\n addTpSl,\n cancelTpSl,\n reprime,\n getPoolDetail,\n getOpenOrders,\n} from './pool/index.js';\nexport type { AddTpSLParams, CancelTpSLParams, CreatePoolRequest, TpSLParams, TpSl } from './pool/type.js';\n\nconst pool = {\n createPool,\n getMarketPoolId,\n getMarketPools,\n getPoolInfo,\n getUserGenesisShare,\n addTpSl,\n cancelTpSl,\n reprime,\n getPoolDetail,\n getOpenOrders,\n};\n\nexport { base, quote, pool, market };\nexport { COMMON_PRICE_DECIMALS, COMMON_LP_AMOUNT_DECIMALS } from \"@/config/decimals\";\n\n\n","import mitt from \"mitt\";\nimport { Options as RWSOptions } from \"reconnecting-websocket\";\n\nimport {\n WebSocketSubscriptionItem,\n WebSocketRequest,\n WebSocketMethodEnum,\n WebSocketEvents,\n WebSocketConfig,\n WebSocketMessageResponse,\n WebSocketTopicEnum,\n NativeTickerData,\n WebSocketAckMessageResponse,\n} from \"./types.js\";\nimport {\n generateListenerId,\n generateRequestId,\n isAckMessageResponse,\n messageTransform,\n} from \"./utils.js\";\nimport { Logger, LoggerOptions } from \"@/logger\";\nimport { MyxErrorCode, MyxSDKError } from \"@/manager/error/const\";\nimport ReconnectingWebSocket from \"reconnecting-websocket\";\nimport { md5 } from \"@/crypto/md5\";\n\n// subscription info\nexport interface Subscription {\n topic: string;\n id: string;\n callbacks: Set<(data: any) => void>; // support multiple callback\n}\n\nconst DEFAULT_CONFIG: WebSocketConfig = {\n url: \"\",\n initialReconnectDelay: 1000,\n maxReconnectDelay: 30000,\n reconnectMultiplier: 1.5,\n maxReconnectAttempts: 10,\n maxEnqueuedMessages: 100,\n requestTimeout: 10000,\n heartbeatInterval: 10000,\n heartbeatMessage: \"ping\",\n noMessageTimeout: 5000,\n connectionTimeout: 10000,\n};\n\nexport class MyxWebSocketClient {\n private ws: ReconnectingWebSocket | null = null;\n private config: WebSocketConfig;\n private subscriptions = new Map<string, Subscription>();\n /**\n * waiting requests\n */\n private waitingRequests = new Map<\n string,\n {\n onSuccess: Set<(data: Record<string, any>) => void>;\n onError: Set<(error: MyxSDKError) => void>;\n }\n >();\n /**\n * event bus\n */\n private eventBus = mitt<WebSocketEvents>();\n private heartbeatIntervalId: NodeJS.Timeout | null = null;\n\n /**\n * Track if this is the first connection or a reconnection\n */\n private isFirstConnection = true;\n\n /**\n *\n */\n private lastMessageTime = 0;\n\n /**\n * logger\n */\n private logger: Logger;\n\n constructor(config?: Partial<WebSocketConfig & LoggerOptions>) {\n /**\n * init config\n */\n const _config = {\n ...config,\n logLevel: config?.logLevel || \"info\",\n };\n const { logLevel, ...args } = _config;\n this.config = {\n // default config\n ...DEFAULT_CONFIG,\n // user config\n ...args,\n } as Required<WebSocketConfig>;\n\n /**\n * init logger\n */\n this.logger = new Logger({\n logLevel: config?.logLevel,\n });\n\n this.logger.debug(\"WebSocketClient constructor\", this.config);\n }\n\n /**\n * connect WebSocket\n */\n public connect(): Promise<void> {\n return new Promise((resolve, reject) => {\n if (this.ws?.readyState === WebSocket.OPEN || this.ws?.readyState === WebSocket.CONNECTING) {\n resolve();\n return;\n }\n\n try {\n // create reconnecting-websocket config\n const rwsConfig: RWSOptions = {\n maxReconnectionDelay: this.config.maxReconnectDelay,\n minReconnectionDelay: this.config.initialReconnectDelay,\n reconnectionDelayGrowFactor: this.config.reconnectMultiplier,\n maxRetries: this.config.maxReconnectAttempts,\n maxEnqueuedMessages: this.config.maxEnqueuedMessages,\n connectionTimeout: this.config.connectionTimeout,\n };\n\n this.ws = new ReconnectingWebSocket(\n this.config.url,\n this.config.protocols,\n rwsConfig\n );\n\n this.setupEventListeners(resolve, reject);\n } catch (error) {\n reject(error);\n }\n });\n }\n\n private async onBeforeReSubscribe() {\n if (this.config.onBeforeReSubscribe) {\n await this.config.onBeforeReSubscribe();\n }\n return true;\n }\n\n /**\n * setup event listeners\n */\n private setupEventListeners(\n resolve: () => void,\n reject: (reason?: any) => void\n ) {\n if (!this.ws) return;\n\n this.ws.onopen = async (event) => {\n this.eventBus.emit(\"open\", event);\n this.lastMessageTime = Date.now();\n this.timeoutHeartbeat();\n\n // Only resubscribe on reconnection, not on first connection\n if (!this.isFirstConnection) {\n this.onBeforeReSubscribe().then(() => this.resubscribeAll());\n }\n this.isFirstConnection = false;\n resolve();\n };\n\n this.ws.onmessage = (event) => {\n this.handleMessage(event);\n };\n\n this.ws.onclose = (event) => {\n this.eventBus.emit(\"close\", event as CloseEvent);\n this.stopHeartbeatTimer();\n };\n\n this.ws.onerror = (event) => {\n this.eventBus.emit(\"error\", event as unknown as Event);\n reject(event);\n };\n\n // listen reconnect event\n (this.ws as any).addEventListener(\"reconnecting\", (event: any) => {\n this.eventBus.emit(\"reconnecting\", { detail: event.detail || 0 });\n // Mark that this is a reconnection, not first connection\n this.isFirstConnection = false;\n });\n\n // listen max reconnect attempts event\n (this.ws as any).addEventListener(\"maxreconnectattempts\", () => {\n this.eventBus.emit(\"maxreconnectattempts\", undefined);\n });\n }\n\n /**\n * reply ping message\n */\n private pong(data: string) {\n this.send({\n request: WebSocketMethodEnum.Pong,\n args: data,\n });\n }\n\n /** request */\n public request(param: WebSocketRequest) {\n return new Promise((resolve, reject) => {\n const requestId = generateRequestId(param);\n if (this.waitingRequests.has(requestId)) {\n this.waitingRequests.get(requestId)?.onSuccess.add(resolve);\n this.waitingRequests.get(requestId)?.onError.add(reject);\n } else {\n this.waitingRequests.set(requestId, {\n onSuccess: new Set([resolve]),\n onError: new Set([reject]),\n });\n }\n this.send(param);\n });\n }\n\n /**\n * subscribe\n * support multiple consumers subscribing to the same listenerId, only send one subscription message\n * support batch subscription: pass an array of subscriptions to subscribe multiple topics at once\n */\n public subscribe(\n subscription: WebSocketSubscriptionItem | WebSocketSubscriptionItem[],\n callback: (data: any) => void\n ) {\n const subscriptionList = Array.isArray(subscription)\n ? subscription\n : [subscription];\n // console.log('sinscribes:', subscriptionList)\n // this.logger.debug('subscriptionList:', subscriptionList)\n const newSubscriptionIds: string[] = [];\n // track processed subscriptionIds to avoid duplicate processing\n const processedIds = new Set<string>();\n subscriptionList.forEach((subscriptionItem) => {\n const subscriptionId = generateListenerId(subscriptionItem);\n // this.logger.debug('subscriptionId:', subscriptionId)\n // skip if already processed in this batch\n if (processedIds.has(subscriptionId)) {\n return;\n }\n processedIds.add(subscriptionId);\n\n if (this.subscriptions.has(subscriptionId)) {\n // if the subscription already exists, only add the new callback\n const existingSubscription = this.subscriptions.get(subscriptionId)!;\n existingSubscription.callbacks.add(callback);\n // this.logger.debug(\n // `add callback to existing subscription: ${subscriptionId}`\n // );\n } else {\n // create new subscription\n const subscriptionObj: Subscription = {\n id: subscriptionId,\n topic: subscriptionItem.topic,\n callbacks: new Set([callback]),\n };\n\n // save subscription\n this.subscriptions.set(subscriptionId, subscriptionObj);\n newSubscriptionIds.push(subscriptionId);\n this.logger.debug(`create new subscription: ${subscriptionId}`);\n }\n });\n\n // batch send all new subscriptions in one request\n if (newSubscriptionIds.length > 0) {\n this.send({\n request: WebSocketMethodEnum.SubscribeV2,\n args: newSubscriptionIds,\n });\n }\n }\n\n /**\n * unsubscribe\n * unsubscribe by callback, only send unsubscribe message when all callbacks are removed\n * support batch unsubscribe: pass an array of subscriptions to unsubscribe multiple topics at once\n */\n public unsubscribe(\n subscriptions: WebSocketSubscriptionItem | WebSocketSubscriptionItem[],\n callback: (data: any) => void\n ): void {\n if (!subscriptions) return;\n\n const subscriptionList = Array.isArray(subscriptions)\n ? subscriptions\n : [subscriptions];\n\n const subscriptionsToUnsubscribe: string[] = [];\n // track processed subscriptionIds to avoid duplicate processing\n const processedIds = new Set<string>();\n\n subscriptionList.forEach((subscriptionItem) => {\n const subscriptionId = generateListenerId(subscriptionItem);\n \n // skip if already processed in this batch\n if (processedIds.has(subscriptionId)) {\n return;\n }\n processedIds.add(subscriptionId);\n\n const subscriptionObj = this.subscriptions.get(subscriptionId);\n\n if (subscriptionObj) {\n // remove the specified callback\n subscriptionObj.callbacks.delete(callback);\n this.logger.debug(`remove callback from subscription: ${subscriptionId}`);\n // if there are no callbacks, mark as need to unsubscribe\n if (subscriptionObj.callbacks.size === 0) {\n this.subscriptions.delete(subscriptionId);\n subscriptionsToUnsubscribe.push(subscriptionId);\n this.logger.debug(\n `subscription ${subscriptionId} has no callbacks, will unsubscribe`\n );\n }\n }\n });\n\n // batch send unsubscribe message for subscriptions that have no callbacks\n if (subscriptionsToUnsubscribe.length > 0) {\n this.send({\n request: WebSocketMethodEnum.UnsubscribeV2,\n args: subscriptionsToUnsubscribe,\n });\n }\n }\n\n /**\n * send message\n */\n public send(data: WebSocketRequest) {\n const message = typeof data === \"string\" ? data : JSON.stringify(data);\n\n if (!this.ws) {\n throw new MyxSDKError(\n MyxErrorCode.SocketNotConnected,\n \"WebSocket is not connected\"\n );\n }\n\n if (\n this.ws.readyState !== WebSocket.OPEN &&\n this.ws.readyState !== WebSocket.CONNECTING\n ) {\n this.reconnect();\n }\n this.ws.send(message);\n }\n\n /**\n * disconnect\n */\n public disconnect(): void {\n this.stopHeartbeatTimer();\n\n if (this.ws) {\n this.ws.close();\n this.ws = null;\n }\n }\n\n /**\n * reconnect\n */\n public reconnect(): void {\n if (this.ws) {\n if (this.ws.readyState !== WebSocket.CONNECTING) {\n this.ws.reconnect();\n }\n } else {\n this.connect().catch((err) => {\n this.logger.error(err);\n });\n }\n }\n\n /**\n * check if connected\n */\n public isConnected(): boolean {\n return this.ws?.readyState === WebSocket.OPEN;\n }\n\n /**\n * event listen\n */\n public on<K extends keyof WebSocketEvents>(\n event: K,\n handler: (data: WebSocketEvents[K]) => void\n ): void {\n this.eventBus.on(event, handler);\n }\n\n /**\n * remove event listen\n */\n public off<K extends keyof WebSocketEvents>(\n event: K,\n handler: (data: WebSocketEvents[K]) => void\n ): void {\n this.eventBus.off(event, handler);\n }\n\n /**\n * private methods\n */\n\n /**\n * handle received message\n */\n private handleMessage(event: MessageEvent): void {\n try {\n const data = JSON.parse(event.data) as WebSocketMessageResponse;\n // update last message time\n this.lastMessageTime = Date.now();\n if (data.type === \"ping\") {\n // this.logger.debug(\"Ping Message received\");\n // reply pong message by microtask\n queueMicrotask(() => {\n this.pong(data.data as string);\n });\n return;\n }\n if (isAckMessageResponse(data)) {\n this.handleAckMessage(data as WebSocketAckMessageResponse);\n\n return;\n }\n\n // handle subscription message\n this.handleSubscriptionMessage(data);\n } catch (error) {\n this.logger.error(`Failed to parse WebSocket message: ${error}`);\n }\n }\n\n /**\n * handle Ack Message\n */\n private handleAckMessage(data: WebSocketAckMessageResponse): void {\n let requestId: string;\n switch (data.type) {\n case WebSocketMethodEnum.SignIn:\n requestId = generateRequestId({\n request: data.type,\n args: \"\",\n });\n break;\n default:\n requestId = generateRequestId({\n request: data.type,\n args: data.data.data,\n } as WebSocketRequest);\n break;\n }\n const waitRequest = this.waitingRequests.get(requestId);\n const isSuccess = (data as WebSocketAckMessageResponse).data.code === 9200;\n if (!isSuccess) {\n this.logger.error(`Ack Message:${data.type} received`, data);\n this.eventBus.emit(\"error\", data as unknown as Event);\n } else {\n this.logger.debug(`AcK Message:${data.type} received`);\n }\n\n // emit request error callback\n if (waitRequest?.onError.size && !isSuccess) {\n waitRequest.onError.forEach((reject) => {\n reject(new MyxSDKError(MyxErrorCode.RequestFailed, \"Request failed\"));\n });\n }\n // emit request success callback\n if (waitRequest?.onSuccess.size && isSuccess) {\n waitRequest.onSuccess.forEach((resolve) => {\n resolve(data.data);\n });\n }\n }\n\n /**\n * handle subscription message\n */\n private handleSubscriptionMessage(data: WebSocketMessageResponse): void {\n // dispatch message by subscriptionId\n\n // transform data\n let dataParsed = messageTransform(data);\n\n const subscriptionId = dataParsed.type;\n // this.logger.debug(`handle subscription message: ${subscriptionId}`);\n\n const subscription = this.subscriptions.get(subscriptionId);\n // if subscription not found, return\n if (!subscription) return;\n\n subscription.callbacks.forEach((callback) => {\n try {\n callback(dataParsed);\n } catch (error) {\n this.logger.error(`Callback Error (${subscriptionId}): ${error}`);\n }\n });\n }\n\n /**\n * resubscribe all after reconnect (autoResubscribe is true)\n */\n private resubscribeAll(): void {\n if (this.subscriptions.size === 0) return;\n this.logger.debug(\"resubscribe all...\");\n\n const subscriptionIds: string[] = Array.from(\n this.subscriptions.values()\n ).map((subscription) => subscription.id);\n\n if (subscriptionIds.length > 0) {\n this.send({\n request: WebSocketMethodEnum.SubscribeV2,\n args: subscriptionIds,\n });\n this.logger.debug(`resubscribe ${subscriptionIds.length} topics`);\n }\n }\n\n /**\n * start heartbeat (noMessageTimeout is reached)\n */\n private timeoutHeartbeat(): void {\n this.stopHeartbeatTimer();\n if (\n Date.now() - this.lastMessageTime >\n (this.config.noMessageTimeout || DEFAULT_CONFIG.noMessageTimeout)\n ) {\n this.logger.debug(\"no message timeout\");\n const hasActiveSubscription = this.subscriptions.size > 0;\n // if no active subscription, close the connection\n if (!hasActiveSubscription) {\n this.ws?.close();\n } else {\n // if response time is too long, reconnect the connection\n this.reconnect();\n }\n }\n this.heartbeatIntervalId = setTimeout(() => {\n this.timeoutHeartbeat();\n }, this.config.heartbeatInterval);\n }\n\n /**\n * stop heartbeat (heartbeatInterval is reached)\n */\n private stopHeartbeatTimer(): void {\n if (this.heartbeatIntervalId) {\n clearInterval(this.heartbeatIntervalId);\n this.heartbeatIntervalId = null;\n }\n }\n}\n","import { Hex, MD5 } from 'crypto-es'\n\nexport const md5 = (message: string, length?: 16 | 32) => {\n return MD5(message, { outputLength: length || 32 }).toString(Hex)\n}\n","import { md5 } from \"@/crypto/md5\";\nimport {\n KlineDataResponse,\n KlineResolution,\n NativeTickerData,\n TickersDataResponse,\n WebSocketMessageResponse,\n WebSocketMethodEnum,\n WebSocketRequest,\n WebSocketSubscriptionItem,\n WebSocketTopicEnum,\n} from \"./types.js\";\n\n/**\n *\n * generateRequestId\n */\nexport const generateRequestId = (param: WebSocketRequest) => {\n switch (param.request) {\n case WebSocketMethodEnum.SignIn:\n return md5(param.request);\n }\n return md5(JSON.stringify(param));\n};\n\n/**\n * generate listener id\n */\nexport const generateListenerId = <T extends WebSocketTopicEnum>(\n subscription: WebSocketSubscriptionItem<T>\n): string => {\n const { topic, params } = subscription;\n\n switch (topic) {\n case WebSocketTopicEnum.Kline:\n return `${topic}.${params.globalId}_${params.resolution}`;\n case WebSocketTopicEnum.Ticker:\n return `${topic}.${params.globalId}`;\n case WebSocketTopicEnum.TickerAll:\n case WebSocketTopicEnum.Order:\n case WebSocketTopicEnum.Position:\n return topic;\n default:\n return md5(JSON.stringify({ topic, params }));\n }\n};\n\n/**\n * isAckMessageResponse\n */\nexport const isAckMessageResponse = ({ type }: WebSocketMessageResponse) => {\n return Boolean(\n type === WebSocketMethodEnum.Pong ||\n type === WebSocketMethodEnum.SignIn ||\n type === WebSocketMethodEnum.SubscribeV2 ||\n type === WebSocketMethodEnum.UnsubscribeV2 ||\n type === \"ping\" ||\n type === \"pong\"\n );\n};\n\n/**\n * parse topic from type\n */\nexport const parseTopicFromType = (type: string) => {\n switch (type) {\n case WebSocketTopicEnum.Order:\n case WebSocketTopicEnum.Position:\n case WebSocketTopicEnum.TickerAll:\n return type;\n default:\n const [topic] = type.split(\".\");\n return topic;\n }\n};\n\n/**\n * native message transform\n */\nexport const messageTransform = (data: WebSocketMessageResponse) => {\n const topic = parseTopicFromType(data.type);\n switch (topic) {\n /**\n * tickers\n */\n case WebSocketTopicEnum.Ticker: {\n const [, globalId = \"\"] = data.type.split(\".\");\n return {\n ...data,\n type: generateListenerId({\n topic: WebSocketTopicEnum.Ticker,\n params: { globalId: parseInt(globalId) },\n }),\n globalId: parseInt(globalId),\n } as TickersDataResponse;\n }\n /**\n * kline\n */\n case WebSocketTopicEnum.Kline: {\n const [, paramData = \"\"] = data.type.split(\".\");\n let [globalId, resolution] = paramData.split(\"_\");\n\n return {\n ...data,\n type: generateListenerId({\n topic: WebSocketTopicEnum.Kline,\n params: {\n globalId: parseInt(globalId),\n resolution: resolution as KlineResolution,\n },\n }),\n globalId: parseInt(globalId),\n resolution: resolution,\n } as KlineDataResponse;\n }\n }\n\n return data;\n};\n","export enum MyxErrorCode {\n SocketNotConnected = \"SOCKET_NOT_CONNECTED\",\n SocketNotInited = \"SOCKET_NOT_INITED\",\n ParamError = \"PARAM_ERROR\",\n InvalidChainId = \"INVALID_CHAIN_ID\",\n InvalidAccessToken = \"INVALID_ACCESS_TOKEN\",\n RequestFailed = \"REQUEST_FAILED\",\n InvalidSigner = \"INVALID_SIGNER\",\n InvalidPrivateKey = \"INVALID_PRIVATE_KEY\",\n InsufficientBalance = \"INSUFFICIENT_BALANCE\",\n Timeout = \"TIMEOUT\",\n OperationFailed = \"OPERATION_FAILED\",\n InvalidSeamlessWallet = \"INVALID_SEAMLESS_WALLET\",\n InsufficientMarginBalance = \"INSUFFICIENT_MARGIN_BALANCE\",\n InvalidBrokerAddress = \"INVALID_BROKER_ADDRESS\",\n TransactionFailed = \"TRANSACTION_FAILED\",\n}\n\nexport class MyxSDKError extends Error {\n constructor(code: MyxErrorCode, message?: string) {\n super(message);\n this.name = code;\n }\n\n toJSON() {\n return {\n code: this.name,\n message: this.message,\n };\n }\n\n toString() {\n return `[MYX-ERROR-${this.name}]: ${this.message}`;\n }\n}\n","export enum ChainIdEnum {\n LINEA_SEPOLIA = 59141,\n LINEA_MAINNET = 59144,\n ARB_TESTNET = 421614,\n ARB_MAINNET = 42161,\n BSC_TESTNET = 97,\n BSC_MAINNET = 56,\n}\n\n/**\n * mainnet chain ids\n */\n\nexport const MAINNET_CHAIN_IDS = [\n ChainIdEnum.BSC_MAINNET,\n ChainIdEnum.LINEA_MAINNET,\n ChainIdEnum.ARB_MAINNET,\n] as const;\n\n/**\n * testnet chain ids\n */\nexport const TESTNET_CHAIN_IDS = [\n ChainIdEnum.LINEA_SEPOLIA,\n ChainIdEnum.ARB_TESTNET,\n ChainIdEnum.BSC_TESTNET,\n] as const;\n\nexport const BETA_ENV_CHAIN_IDS = [\n ChainIdEnum.BSC_TESTNET,\n ChainIdEnum.ARB_TESTNET,\n] as const;","export const WEBSOCKET_URL = {\n TestNet: \"wss://oapi-test.myx.cash/ws\",\n MainNet: \"wss://oapi.myx.finance/ws\",\n BetaNet: \"wss://oapi-beta.myx.finance/ws\",\n} as const;\n","import { MyxWebSocketClient } from \"./websocket/socket.js\";\nimport {\n KlineResolution,\n WebSocketMethodEnum,\n WebSocketTopicEnum,\n WebSocketEvents,\n} from \"./websocket/types.js\";\nimport {\n OnKlineCallback,\n OnOrderCallback,\n OnPositionCallback,\n OnTickersCallback,\n} from \"./types/index.js\";\nimport { Logger } from \"@/logger\";\nimport { ConfigManager } from \"@/manager/config\";\nimport { WEBSOCKET_URL } from \"@/manager/const\";\nimport { MyxErrorCode, MyxSDKError } from \"../error/const.js\";\n\nexport class SubScription {\n private wsClient: MyxWebSocketClient;\n\n private configManager: ConfigManager;\n private logger: Logger;\n constructor(configManager: ConfigManager, logger: Logger) {\n this.configManager = configManager;\n this.logger = logger;\n let socketUrl: string = WEBSOCKET_URL.MainNet;\n if (configManager.getConfig().isBetaMode) {\n socketUrl = WEBSOCKET_URL.BetaNet;\n } else if (configManager.getConfig().isTestnet) {\n socketUrl = WEBSOCKET_URL.TestNet;\n }\n this.wsClient = new MyxWebSocketClient({\n logLevel: this.configManager.getConfig()?.logLevel,\n url: socketUrl,\n ...this.configManager.getConfig()?.socketConfig,\n onBeforeReSubscribe: () => {\n if (this.clientAuth) {\n return this.auth(true).then(() => {\n this.logger.debug(\"reconnect auth success\");\n });\n }\n },\n });\n }\n\n /**\n *\n * getters\n */\n\n public get isConnected() {\n return this.wsClient.isConnected();\n }\n\n /**\n * public methods\n */\n\n public connect() {\n this.wsClient.connect();\n }\n\n public disconnect() {\n this.wsClient.disconnect();\n }\n\n public reconnect() {\n this.wsClient.reconnect();\n }\n\n /**\n * tickers subscription methods\n */\n subscribeTickers(globalIds: number | number[], callback: OnTickersCallback) {\n // this.logger.debug(`subscribe tickers ${globalIds}`);\n const globalIdsList = Array.isArray(globalIds) ? globalIds : [globalIds];\n this.wsClient.subscribe(\n globalIdsList.map((globalId) => ({\n topic: WebSocketTopicEnum.Ticker,\n params: { globalId },\n })),\n callback\n );\n }\n unsubscribeTickers(\n globalIds: number | number[],\n callback: OnTickersCallback\n ) {\n // this.logger.debug(`unsubscribe tickers ${globalIds}`);\n const globalIdsList = Array.isArray(globalIds) ? globalIds : [globalIds];\n this.wsClient.unsubscribe(\n globalIdsList.map((globalId) => ({\n topic: WebSocketTopicEnum.Ticker,\n params: { globalId },\n })),\n callback\n );\n }\n\n /**\n * kline subscription methods\n */\n subscribeKline(\n globalId: number,\n resolution: KlineResolution,\n callback: OnKlineCallback\n ) {\n this.logger.debug(`subscribe kline ${globalId} ${resolution}`);\n this.wsClient.subscribe(\n {\n topic: WebSocketTopicEnum.Kline,\n params: {\n globalId: globalId,\n resolution: resolution,\n },\n },\n callback\n );\n }\n\n unsubscribeKline(\n globalId: number,\n resolution: KlineResolution,\n callback: OnKlineCallback\n ) {\n this.logger.debug(`unsubscribe kline ${globalId} ${resolution}`);\n this.wsClient.unsubscribe(\n {\n topic: WebSocketTopicEnum.Kline,\n params: {\n globalId: globalId,\n resolution: resolution,\n },\n },\n callback\n );\n }\n\n private async getSdkAuthParams() {\n const config = this.configManager.getConfig();\n if (!this.configManager.hasSigner()) throw new MyxSDKError(MyxErrorCode.InvalidSigner);\n const userAddress = await this.configManager.getSignerAddress(config.chainId);\n if (!userAddress) {\n throw new MyxSDKError(MyxErrorCode.InvalidSigner);\n }\n return {\n userAddress\n }\n }\n private clientAuth = false;\n private prevUserAddress: string | null = null;\n /**\n * with auth methods\n */\n public async auth(isReconnect = false) {\n const { userAddress } = await this.getSdkAuthParams();\n\n if (userAddress === this.prevUserAddress && this.clientAuth && !isReconnect) {\n // client auth success\n return Promise.resolve();\n }\n\n this.logger.debug(`sdkaccount: ${userAddress}`);\n await this.wsClient\n .request({\n request: WebSocketMethodEnum.SignIn,\n args: `sdkaccount.${userAddress}`,\n })\n .then(() => {\n // client auth success\n this.logger.debug(`auth success ${userAddress}`);\n this.clientAuth = true;\n this.prevUserAddress = userAddress;\n });\n }\n\n /**\n * these methods are private data of the account, please ensure that the auth method is called before calling these methods\n */\n\n /**\n * position subscription methods\n */\n async subscribePosition(callback: OnPositionCallback) {\n this.logger.debug(`subscribe position`);\n await this.auth();\n this.wsClient.subscribe(\n {\n topic: WebSocketTopicEnum.Position,\n },\n callback\n );\n }\n\n unsubscribePosition(callback: OnPositionCallback) {\n this.logger.debug(`unsubscribe position`);\n this.wsClient.unsubscribe(\n {\n topic: WebSocketTopicEnum.Position,\n },\n callback\n );\n }\n\n /**\n * order subscription methods\n */\n async subscribeOrder(callback: OnOrderCallback) {\n this.logger.debug(`subscribe order`);\n await this.auth();\n this.wsClient.subscribe(\n {\n topic: WebSocketTopicEnum.Order,\n },\n callback\n );\n }\n\n unsubscribeOrder(callback: OnOrderCallback) {\n this.logger.debug(`unsubscribe order`);\n this.wsClient.unsubscribe(\n {\n topic: WebSocketTopicEnum.Order,\n },\n callback\n );\n }\n\n /**\n * event listen\n */\n on<K extends keyof WebSocketEvents>(\n event: K,\n handler: (data: WebSocketEvents[K]) => void\n ): void {\n this.wsClient.on(event, handler);\n }\n\n /**\n * event remove listen\n */\n\n off<K extends keyof WebSocketEvents>(\n event: K,\n handler: (data: WebSocketEvents[K]) => void\n ): void {\n this.wsClient.off(event, handler);\n }\n}\n","import type { ISigner, SignerLike, WalletClientLike, MinimalSignerLike } from \"./types.js\";\n\nfunction isWalletClientLike(s: SignerLike): s is WalletClientLike {\n return (\n typeof (s as WalletClientLike).getAddresses === \"function\" &&\n typeof (s as WalletClientLike).signMessage === \"function\" &&\n typeof (s as WalletClientLike).sendTransaction === \"function\"\n );\n}\n\nfunction isMinimalSignerLike(s: SignerLike): s is MinimalSignerLike {\n return (\n typeof (s as MinimalSignerLike).getAddress === \"function\" &&\n typeof (s as MinimalSignerLike).signMessage === \"function\" &&\n typeof (s as MinimalSignerLike).sendTransaction === \"function\"\n );\n}\n\n/**\n * Wrap viem WalletClient as ISigner.\n * Use this when the app uses viem (e.g. wagmi useWalletClient) so no ethers is required for auth.\n */\nexport function fromViemWalletClient(walletClient: WalletClientLike): ISigner {\n const wc = walletClient as WalletClientLike & { signTypedData?(args: unknown): Promise<`0x${string}`> };\n return {\n async getAddress() {\n const [address] = await walletClient.getAddresses();\n if (!address) throw new Error(\"WalletClient: no address\");\n return address as string;\n },\n async signMessage(message: string | Uint8Array) {\n const msg = typeof message === \"string\" ? message : { raw: message };\n return (await walletClient.signMessage({ message: msg })) as string;\n },\n async sendTransaction(tx) {\n const to = tx.to as `0x${string}` | undefined;\n if (!to) throw new Error(\"sendTransaction: to is required\");\n const hash = await walletClient.sendTransaction({\n to,\n data: tx.data as `0x${string}` | undefined,\n value: tx.value != null ? BigInt(tx.value) : undefined,\n gas: tx.gasLimit != null ? BigInt(tx.gasLimit) : undefined,\n gasPrice: tx.gasPrice != null ? BigInt(tx.gasPrice) : undefined,\n maxFeePerGas: tx.maxFeePerGas != null ? BigInt(tx.maxFeePerGas) : undefined,\n maxPriorityFeePerGas:\n tx.maxPriorityFeePerGas != null ? BigInt(tx.maxPriorityFeePerGas) : undefined,\n });\n return { hash: hash as string };\n },\n ...(typeof wc.signTypedData === \"function\"\n ? {\n async signTypedData(params: { domain: Record<string, unknown>; types: Record<string, unknown>; primaryType: string; message: Record<string, unknown> }) {\n return (await wc.signTypedData!(params)) as string;\n },\n }\n : {}),\n };\n}\n\n/**\n * Wrap any object with getAddress/signMessage/sendTransaction as ISigner.\n * Use for ethers v5 or v6 Signer, or any compatible implementation.\n */\nexport function fromMinimalSigner(signer: MinimalSignerLike): ISigner {\n const minimal = signer as MinimalSignerLike & { signTypedData?(domain: unknown, types: unknown, message: unknown): Promise<string> };\n return {\n getAddress: () => signer.getAddress(),\n signMessage: (msg) => signer.signMessage(msg),\n async sendTransaction(tx) {\n const res = await signer.sendTransaction({\n ...tx,\n value: tx.value != null ? BigInt(tx.value) : undefined,\n gasLimit: tx.gasLimit != null ? BigInt(tx.gasLimit) : undefined,\n } as Record<string, unknown>);\n return { hash: res.hash };\n },\n ...(typeof minimal.signTypedData === \"function\"\n ? {\n async signTypedData(params: { domain: Record<string, unknown>; types: Record<string, unknown>; primaryType: string; message: Record<string, unknown> }) {\n return minimal.signTypedData!(params.domain, params.types, params.message);\n },\n }\n : {}),\n };\n}\n\n/**\n * Normalize SignerLike to ISigner.\n * - WalletClient -> fromViemWalletClient\n * - MinimalSignerLike (ethers v5/v6 Signer) -> fromMinimalSigner\n * - Already ISigner -> return as is\n */\nexport function normalizeSigner(signerLike: SignerLike): ISigner {\n if (isWalletClientLike(signerLike)) return fromViemWalletClient(signerLike);\n if (isMinimalSignerLike(signerLike)) return fromMinimalSigner(signerLike);\n return signerLike as ISigner;\n}\n","/**\n * Creates a viem WalletClient that uses ISigner for eth_sendTransaction and signTypedData.\n * Uses a local account that delegates to signer so getAddresses() and signTypedData work.\n */\nimport { createWalletClient, custom, type WalletClient } from \"viem\";\nimport { getChainInfo } from \"@/config/chains/index.js\";\nimport { ChainId } from \"@/config/chain.js\";\nimport type { ISigner } from \"./types.js\";\n\nfunction getRpcUrl(chainId: number): string {\n const info = getChainInfo(chainId as ChainId);\n const urls = [\n ...(info.privateJsonRPCUrl ? [info.privateJsonRPCUrl] : []),\n ...(Array.isArray(info.publicJsonRPCUrl) ? [...info.publicJsonRPCUrl] : []),\n ].filter(Boolean) as string[];\n if (urls.length === 0) throw new Error(`${chainId} has no jsonRPCUrl configured`);\n return urls[0]!;\n}\n\nconst chainCache: Record<number, { id: number; name: string; nativeCurrency: { name: string; symbol: string; decimals: number }; rpcUrls: { default: { http: string[] } } }> = {};\n\nfunction getChain(chainId: number) {\n if (!chainCache[chainId]) {\n const info = getChainInfo(chainId as ChainId);\n chainCache[chainId] = {\n id: chainId,\n name: info.label || `Chain ${chainId}`,\n nativeCurrency: info.nativeCurrency as { name: string; symbol: string; decimals: number },\n rpcUrls: { default: { http: [getRpcUrl(chainId)] } },\n };\n }\n return chainCache[chainId];\n}\n\n/** Returns a viem WalletClient that uses the given ISigner for sending transactions and signing. */\nexport async function createWalletClientFromSigner(signer: ISigner, chainId: number): Promise<WalletClient> {\n const rpcUrl = getRpcUrl(chainId);\n const chain = getChain(chainId) as import(\"viem\").Chain;\n const address = (await signer.getAddress()) as `0x${string}`;\n\n const account = {\n address,\n type: \"local\" as const,\n async signMessage({ message }: { message: import(\"viem\").SignableMessage }) {\n const msg = typeof message === \"string\" ? message : message.raw;\n return (await signer.signMessage(msg)) as `0x${string}`;\n },\n async signTypedData(typedData: import(\"viem\").TypedDataDefinition) {\n if (!signer.signTypedData) throw new Error(\"ISigner.signTypedData required for this operation\");\n return (await signer.signTypedData({\n domain: typedData.domain as Record<string, unknown>,\n types: typedData.types as Record<string, unknown>,\n primaryType: typedData.primaryType,\n message: typedData.message as Record<string, unknown>,\n })) as `0x${string}`;\n },\n source: \"custom\",\n } as unknown as import(\"viem\").LocalAccount;\n\n const provider = {\n request: async (args: { method: string; params?: unknown[] }) => {\n if (args.method === \"eth_sendTransaction\") {\n const tx = (args.params?.[0] ?? {}) as Record<string, unknown>;\n const { hash } = await signer.sendTransaction({\n to: tx.to as string,\n data: tx.data as string | undefined,\n value: tx.value != null ? BigInt(tx.value as string | number) : undefined,\n gasLimit: tx.gas != null ? BigInt(tx.gas as string | number) : undefined,\n gasPrice: tx.gasPrice != null ? BigInt(tx.gasPrice as string | number) : undefined,\n maxFeePerGas: tx.maxFeePerGas != null ? BigInt(tx.maxFeePerGas as string | number) : undefined,\n maxPriorityFeePerGas: tx.maxPriorityFeePerGas != null ? BigInt(tx.maxPriorityFeePerGas as string | number) : undefined,\n });\n return hash as `0x${string}`;\n }\n // Wallet-only methods must be signed locally, not forwarded to public RPC.\n if (args.method === \"eth_signTypedData_v4\" || args.method === \"eth_signTypedData\") {\n if (!signer.signTypedData) {\n throw new Error(\"ISigner.signTypedData required for eth_signTypedData_v4\");\n }\n const typedDataJson = args.params?.[1];\n if (typeof typedDataJson !== \"string\") {\n throw new Error(\"Invalid eth_signTypedData_v4 params\");\n }\n const typedData = JSON.parse(typedDataJson) as {\n domain: Record<string, unknown>;\n types: Record<string, unknown>;\n primaryType: string;\n message: Record<string, unknown>;\n };\n return (await signer.signTypedData({\n domain: typedData.domain,\n types: typedData.types,\n primaryType: typedData.primaryType,\n message: typedData.message,\n })) as `0x${string}`;\n }\n const res = await fetch(rpcUrl, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({ jsonrpc: \"2.0\", id: 1, method: args.method, params: args.params ?? [] }),\n });\n const json = (await res.json()) as { result?: unknown; error?: { message: string } };\n if (json.error) throw new Error(json.error.message);\n return json.result;\n },\n };\n\n return createWalletClient({\n account,\n chain,\n transport: custom(provider),\n }) as WalletClient;\n}\n","import {\n BETA_ENV_CHAIN_IDS,\n MAINNET_CHAIN_IDS,\n TESTNET_CHAIN_IDS,\n} from \"../const/index.js\";\nimport { MyxErrorCode, MyxSDKError } from \"../error/const.js\";\nimport { LogLevel, sdkWarn, sdkError } from \"@/logger\";\nimport { WebSocketConfig } from \"@/manager/subscription/websocket/types\";\nimport { WalletClient } from \"viem\";\nimport type { SignerLike, ISigner } from \"../../signer/types.js\";\nimport { normalizeSigner } from \"../../signer/adapters.js\";\nimport { createWalletClientFromSigner } from \"../../signer/viemWalletFromSigner.js\";\n\ninterface AccessTokenResponse {\n accessToken: string;\n expireAt: number;\n}\n\ninterface GetAccessTokenQueueItem {\n resolve: (token: string | null) => void;\n reject: (error: any) => void;\n forceRefresh: boolean;\n}\n\nexport interface MyxClientConfig {\n /**\n * @deprecated Pass chainId from outside in each method for flexibility; this field will be removed in a future version\n */\n chainId: number;\n /** ethers v5/v6 Signer, viem WalletClient, or ISigner. Use walletClient when app uses viem to avoid ethers in bundle. */\n signer?: SignerLike;\n // seamlessAccount?: {\n // masterAddress: string;\n // wallet: Account | null;\n // authorized: boolean;\n // };\n walletClient?: WalletClient;\n brokerAddress: string;\n isTestnet?: boolean;\n isBetaMode?: boolean;\n poolingInterval?: number;\n // seamlessMode?: boolean;\n socketConfig?: Partial<Omit<WebSocketConfig, \"url\">>;\n logLevel?: LogLevel;\n getAccessToken?:\n | (() => Promise<AccessTokenResponse | undefined>)\n | (() => AccessTokenResponse | undefined); // Client-provided method to get accessToken\n}\n\nexport class ConfigManager {\n private config: MyxClientConfig;\n private accessToken?: string;\n private accessTokenExpiry?: number; // accessToken expiry timestamp\n /** Normalized ISigner when auth({ signer }) is used (ethers or ISigner). Not set when only walletClient is used. */\n private _normalizedSigner: ISigner | null = null;\n\n constructor(config: MyxClientConfig) {\n const mergedConfig: MyxClientConfig = {\n isTestnet: false,\n isBetaMode: false,\n ...config,\n };\n this.validateConfig(mergedConfig);\n this.config = mergedConfig;\n }\n\n public clear() {\n this.accessToken = undefined;\n this.accessTokenExpiry = undefined;\n this._normalizedSigner = null;\n this.config = {\n ...this.config,\n signer: undefined,\n walletClient: undefined,\n getAccessToken: undefined,\n };\n }\n\n /** True if auth was done with signer or walletClient. */\n hasSigner(): boolean {\n return !!(this.config.walletClient || this.config.signer != null || this._normalizedSigner != null);\n }\n\n /** Returns the signer address for the given chainId. Use when only address is needed. */\n async getSignerAddress(chainId: number): Promise<string> {\n if (this.config.walletClient) {\n const [addr] = await this.config.walletClient.getAddresses();\n if (addr) return addr;\n }\n if (this._normalizedSigner) return this._normalizedSigner.getAddress();\n throw new MyxSDKError(MyxErrorCode.InvalidSigner, \"Invalid signer\");\n }\n\n /** Returns viem WalletClient for the chain (for readContract/writeContract). Use when SDK uses viem. */\n async getViemWalletClient(chainId: number): Promise<WalletClient> {\n if (this.config.walletClient) return this.config.walletClient as WalletClient;\n if (this._normalizedSigner) return await createWalletClientFromSigner(this._normalizedSigner, chainId);\n throw new MyxSDKError(MyxErrorCode.InvalidSigner, \"Invalid signer: call auth({ signer }) or auth({ walletClient })\");\n }\n\n // public async startSeamlessMode(open: boolean) {\n // this.config = {\n // ...this.config,\n // seamlessMode: open,\n // };\n\n // return this.config;\n // }\n\n // public updateSeamlessWallet({\n // wallet,\n // authorized,\n // masterAddress,\n // }: {\n // wallet?: Account | null;\n // authorized?: boolean;\n // masterAddress?: string;\n // }) {\n // this.config = {\n // ...this.config,\n // seamlessAccount: {\n // masterAddress: masterAddress ?? \"\",\n // wallet: wallet ?? null,\n // authorized: authorized ?? false,\n // },\n // };\n // }\n\n public updateClientChainId(chainId: number, brokerAddress: string) {\n this.config = {\n ...this.config,\n chainId,\n brokerAddress,\n };\n }\n\n public auth(params: Pick<MyxClientConfig, \"signer\" | \"walletClient\" | \"getAccessToken\">) {\n // before auth, clear the accessToken and signer state\n this.clear();\n this.config = {\n ...this.config,\n ...params,\n };\n if (params.signer != null) {\n this._normalizedSigner = normalizeSigner(params.signer);\n }\n this.validateConfig(this.config);\n }\n\n private validateConfig(config: MyxClientConfig) {\n const { isTestnet, isBetaMode, chainId } = config;\n\n /**\n * chainId must be in the range of TESTNET_CHAIN_IDS or MAINNET_CHAIN_IDS\n */\n\n if (isTestnet) {\n if (!TESTNET_CHAIN_IDS.includes(chainId))\n throw new MyxSDKError(\n MyxErrorCode.InvalidChainId,\n `chainId ${chainId} is not in the range of TESTNET_CHAIN_IDS`\n );\n } else if (isBetaMode) {\n if (!BETA_ENV_CHAIN_IDS.includes(chainId))\n throw new MyxSDKError(\n MyxErrorCode.InvalidChainId,\n `chainId ${chainId} is not in the range of BETA_ENV_CHAIN_IDS`\n );\n } else {\n if (!MAINNET_CHAIN_IDS.includes(chainId))\n throw new MyxSDKError(\n MyxErrorCode.InvalidChainId,\n `chainId ${chainId} is not in the range of MAINNET_CHAIN_IDS`\n );\n }\n }\n\n /**\n * Get currently stored accessToken (does not auto-refresh)\n * @returns Promise<string | null> Current accessToken or null\n */\n async getAccessToken(): Promise<string | null> {\n return this.accessToken ?? null;\n }\n\n /**\n * Manually refresh accessToken (must be called explicitly by the client)\n * @param forceRefresh Whether to force refresh\n * @returns Promise<string | null> Refreshed accessToken or null\n */\n private _getAccessTokenQueue: Array<GetAccessTokenQueueItem> = [];\n private _isGettingAccessToken = false;\n async refreshAccessToken(forceRefresh: boolean = false): Promise<string | null> {\n return new Promise((resolve, reject) => {\n this._getAccessTokenQueue.push({\n resolve,\n reject,\n forceRefresh,\n });\n this._processAccessTokenQueue();\n });\n }\n\n private _processAccessTokenQueue() {\n if (this._isGettingAccessToken) {\n return;\n }\n this._isGettingAccessToken = true;\n const item = this._getAccessTokenQueue.shift();\n if (item) {\n this._refreshAccessToken(item.forceRefresh)\n .then(item.resolve)\n .catch(item.reject)\n .finally(() => {\n this._isGettingAccessToken = false;\n if (this._getAccessTokenQueue.length > 0) {\n this._processAccessTokenQueue();\n }\n });\n } else {\n this._isGettingAccessToken = false;\n }\n }\n\n private async _refreshAccessToken(\n forceRefresh: boolean = false\n ): Promise<string | null> {\n // If current token is valid and no force refresh, return it\n if (!forceRefresh && this.isAccessTokenValid()) {\n this._isGettingAccessToken = false;\n return this.accessToken!;\n }\n\n // If no getAccessToken method provided, return null\n if (!this.config.getAccessToken) {\n sdkWarn(\"No getAccessToken method provided in config\");\n return null;\n }\n\n try {\n\n // Call client-provided method to get new token\n const response = (await this.config.getAccessToken()) ?? {\n accessToken: \"\",\n expireAt: 0,\n };\n\n if (response && response.accessToken) {\n // expireAt is expiry timestamp; convert to validity in seconds\n let expiryInSeconds = 3600; // Default 1 hour\n if (response.expireAt) {\n const currentTime = Math.floor(Date.now() / 1000); // Current timestamp (seconds)\n expiryInSeconds = response.expireAt - currentTime; // Remaining validity\n\n // Ensure positive; use default if already expired\n if (expiryInSeconds <= 0) {\n sdkWarn(\"Received expired token, using default expiry\");\n expiryInSeconds = 3600;\n }\n }\n\n this.setAccessToken(response.accessToken, expiryInSeconds);\n return response.accessToken;\n } else {\n sdkWarn(\"❌ Received empty accessToken\");\n return null;\n }\n } catch (error) {\n sdkError(\"❌ Failed to refresh accessToken:\", error);\n return null;\n }\n }\n\n /**\n * Set accessToken and expiry\n * @param token accessToken\n * @param expiryInSeconds Token validity in seconds, default 1 hour\n */\n setAccessToken(token: string, expiryInSeconds: number = 3600): void {\n this.accessToken = token;\n this.accessTokenExpiry = Date.now() + expiryInSeconds * 1000;\n }\n\n /**\n * Get currently stored accessToken (does not trigger refresh)\n * @returns string | undefined Current accessToken\n */\n getCurrentAccessToken(): string | undefined {\n return this.accessToken;\n }\n\n // /**\n // * Check if current accessToken is valid\n // * @returns boolean Whether token is valid\n // */\n isAccessTokenValid(): boolean {\n return !!this.accessToken;\n }\n\n /**\n * Clear accessToken\n */\n clearAccessToken(): void {\n this.accessToken = undefined;\n this.accessTokenExpiry = undefined;\n }\n\n getConfig() {\n return this.config;\n }\n}\n","import { ConfigManager } from \"@/manager/config\";\nimport {\n GetKlineDataParams,\n GetTickerDataParams,\n SearchMarketParams,\n AddFavoriteParams,\n RemoveFavoriteParams,\n FavoritesListParams,\n type GetBaseDetailParams,\n type GetMarketDetailParams,\n} from \"@/api\";\nimport { KlineResolution } from \"../subscription/types/index.js\";\nimport { Utils } from \"../utils/index.js\";\nimport { MyxErrorCode, MyxSDKError } from \"../error/const.js\";\nimport { Api } from \"../api/index.js\";\n\nexport class Markets {\n private configManager: ConfigManager;\n private utils: Utils;\n private api: Api;\n constructor(configManager: ConfigManager, utils: Utils, api: Api) {\n this.configManager = configManager;\n this.utils = utils;\n this.api = api;\n }\n\n getMarkets() {\n return Promise.resolve([]);\n }\n\n async getPoolLevelConfig(poolId: string, chainId: number) {\n const config = this.configManager.getConfig();\n return (\n await this.api.getPoolLevelConfig({\n poolId,\n chainId,\n })\n ).data;\n }\n\n /**\n * kline start\n */\n async getKlineList({\n interval,\n ...params\n }: Pick<GetKlineDataParams, \"poolId\" | \"limit\" | \"endTime\" | \"chainId\"> & {\n interval: KlineResolution;\n }) {\n const config = this.configManager.getConfig();\n return (\n await this.api.getKlineData(\n {\n ...params,\n interval: this.utils.transferKlineResolutionToInterval(interval),\n }\n )\n ).data;\n }\n\n async getKlineLatestBar({\n interval,\n ...params\n }: Pick<GetKlineDataParams, \"poolId\" | \"limit\" | \"endTime\" | \"chainId\"> & {\n interval: KlineResolution;\n }) {\n const config = this.configManager.getConfig();\n return (\n await this.api.getKlineLatestBar(\n {\n ...params,\n interval: this.utils.transferKlineResolutionToInterval(interval),\n }\n )\n ).data;\n }\n /**\n * kline end\n */\n\n /**\n * ticker start\n */\n async getTickerList(params: GetTickerDataParams) {\n return (\n await this.api.getTickerData(params)\n ).data;\n }\n\n /**\n * ticker end\n */\n\n /**\n * search by access token\n * (only for authenticated users)\n *\n */\n async searchMarketAuth(params: SearchMarketParams, address: string) {\n const accessToken = await this.configManager.getAccessToken() ?? ''\n \n return (\n await this.api.searchMarketAuth(\n {\n address: address,\n ...params,\n accessToken: accessToken,\n }\n )\n ).data;\n }\n\n /**\n * search by unauthenticated users\n */\n async searchMarket(params: SearchMarketParams) {\n return (\n await this.api.searchMarket(params)\n ).data;\n }\n\n /**\n * get favorites list\n * (only for authenticated users)\n */\n async getFavoritesList(params: FavoritesListParams, address: string) {\n const accessToken = await this.configManager.getAccessToken() ?? ''\n\n return (\n await this.api.getFavoritesList(\n {\n ...params,\n address: address,\n accessToken: accessToken,\n }\n )\n ).data;\n }\n /**\n * favorite\n */\n async addFavorite(params: AddFavoriteParams, address: string) {\n const accessToken = await this.configManager.getAccessToken() ?? ''\n \n return (\n await this.api.addFavorite(\n {\n ...params,\n address: address,\n accessToken: accessToken,\n }\n )\n ).data;\n }\n\n async removeFavorite(params: RemoveFavoriteParams, address: string) {\n const accessToken = await this.configManager.getAccessToken() ?? ''\n \n return (\n await this.api.removeFavorite(\n {\n ...params,\n address: address,\n accessToken: accessToken,\n }\n )\n ).data;\n }\n\n /**\n * base detail\n */\n async getBaseDetail(params: GetBaseDetailParams) {\n return (\n await this.api.getBaseDetail(params)\n ).data;\n }\n\n /**\n * get market detail\n */\n async getMarketDetail(params: GetMarketDetailParams) {\n return (\n await this.api.getMarketDetail(params)\n ).data;\n }\n\n /**\n * get pool symbol all\n */\n async getPoolSymbolAll() {\n return (\n await this.api.getPoolSymbolAll()\n ).data;\n }\n}\n","import { ConfigManager, MyxClientConfig } from \"../config/index.js\";\nimport { Logger } from \"@/logger\";\n\nimport { GetHistoryOrdersParams } from \"@/api\";\nimport { Utils } from \"../utils/index.js\";\nimport brokerAbi from \"@/abi/Broker.json\";\nimport { encodeFunctionData, maxUint256 } from \"viem\";\nimport { getPublicClient } from \"@/web3/viemClients.js\";\nimport { MyxErrorCode, MyxSDKError } from \"../error/const.js\";\nimport { Seamless } from \"../seamless/index.js\";\nimport {\n getForwarderContract,\n getBrokerSingerContract,\n} from \"@/web3/providers\";\nimport dayjs from \"dayjs\";\nimport { Account } from \"../account/index.js\";\nimport { Api } from \"../api/index.js\";\nimport { TRADE_GAS_LIMIT_RATIO } from \"@/config/fee\";\nimport { ChainId } from \"@/config/chain\";\nimport { getContractAddressByChainId } from \"@/config/address/index.js\";\n\nexport class Position {\n private configManager: ConfigManager;\n private logger: Logger;\n private utils: Utils;\n private seamless: Seamless;\n private account: Account;\n private api: Api;\n constructor(\n configManager: ConfigManager,\n logger: Logger,\n utils: Utils,\n seamless: Seamless,\n account: Account,\n api: Api\n ) {\n this.configManager = configManager;\n this.logger = logger;\n this.utils = utils;\n this.seamless = seamless;\n this.account = account;\n this.api = api;\n }\n\n async listPositions(address: string, positionId?: string) {\n // Auto-fetch accessToken; refresh if missing or expired\n const accessToken = await this.configManager.getAccessToken();\n\n try {\n const res = await this.api.getPositions({\n accessToken: accessToken ?? '',\n address: address,\n positionId: positionId,\n });\n return {\n code: 0,\n data: res.data,\n };\n } catch (error) {\n this.logger.error(\"Error fetching positions:\", error);\n return {\n code: -1,\n message: \"Failed to fetch positions\",\n };\n }\n }\n\n async getPositionHistory(params: GetHistoryOrdersParams, address: string) {\n const accessToken = await this.configManager.getAccessToken() ?? ''\n\n const res = await this.api.getPositionHistory(\n { accessToken, ...params, address: address },\n );\n return {\n code: 0,\n data: res.data,\n };\n }\n\n async adjustCollateral({\n poolId,\n positionId,\n adjustAmount,\n quoteToken,\n chainId,\n address,\n }: {\n poolId: string;\n positionId: string;\n adjustAmount: string;\n quoteToken: string;\n chainId: number;\n address: string;\n }) {\n const config: MyxClientConfig = this.configManager.getConfig();\n\n try {\n /**\n * fetch oracle price\n */\n const priceData = await this.utils.getOraclePrice(poolId, chainId);\n if (!priceData) {\n throw new Error(\"Failed to get price data\");\n }\n const updateParams = {\n poolId: poolId,\n oracleType: priceData.oracleType,\n publishTime: priceData.publishTime,\n oracleUpdateData: priceData?.vaa ?? \"0\",\n };\n\n let needsApproval = false;\n\n if (Number(adjustAmount) > 0) {\n needsApproval = await this.utils.needsApproval(\n address,\n chainId,\n quoteToken,\n adjustAmount,\n getContractAddressByChainId(chainId).TRADING_ROUTER\n );\n }\n\n // const authorized =\n // this.configManager.getConfig().seamlessAccount?.authorized;\n // const seamlessWallet =\n // this.configManager.getConfig().seamlessAccount?.wallet;\n\n let depositAmount = BigInt(0);\n\n const used = BigInt(adjustAmount) > 0 ? BigInt(adjustAmount) : 0n;\n const availableRes = await this.account.getAvailableMarginBalance({\n poolId,\n chainId,\n address,\n });\n const availableAccountMarginBalance = availableRes.code === 0 ? (availableRes.data ?? 0n) : 0n;\n let diff = BigInt(0);\n if (availableAccountMarginBalance < used) {\n diff = used - availableAccountMarginBalance;\n depositAmount = diff;\n }\n\n const depositData = {\n token: quoteToken,\n amount: depositAmount.toString(),\n };\n\n // if (config.seamlessMode && authorized && seamlessWallet) {\n // const isEnoughGas = await this.utils.checkSeamlessGas(\n // config.seamlessAccount?.masterAddress as string,\n // chainId\n // );\n\n // if (!isEnoughGas) {\n // throw new MyxSDKError(\n // MyxErrorCode.InsufficientBalance,\n // \"Insufficient relay fee\"\n // );\n // }\n\n // const forwarderContract = await getForwarderContract(chainId);\n\n // const functionHash = encodeFunctionData({\n // abi: brokerAbi as any,\n // functionName: \"updatePriceAndAdjustCollateral\",\n // args: [[updateParams], depositData, positionId, adjustAmount],\n // });\n\n // const nonce = await forwarderContract.read.nonces([seamlessWallet.address as `0x${string}`]);\n\n // const forwardTxParams = {\n // from: seamlessWallet.address ?? \"\",\n // to: this.configManager.getConfig().brokerAddress,\n // value: (priceData?.value ?? \"1\").toString(),\n // gas: \"10000000\",\n // deadline: dayjs().add(60, \"minute\").unix(),\n // data: functionHash,\n // nonce: nonce.toString(),\n // };\n // const rs = await this.seamless.forwarderTx(\n // forwardTxParams,\n // chainId,\n // seamlessWallet as any\n // );\n\n // return {\n // code: 0,\n // message: \"adjust collateral success\",\n // data: rs,\n // };\n // }\n\n if (!this.configManager.hasSigner()) {\n throw new MyxSDKError(MyxErrorCode.InvalidSigner, \"Invalid signer\");\n }\n /**\n * call broker contract\n */\n const brokerContract = await getBrokerSingerContract(chainId, config.brokerAddress);\n\n if (needsApproval) {\n const approvalResult = await this.utils.approveAuthorization({\n chainId,\n quoteAddress: quoteToken,\n amount: maxUint256.toString(),\n spenderAddress: getContractAddressByChainId(chainId).TRADING_ROUTER,\n });\n if (approvalResult.code !== 0) {\n throw new Error(approvalResult.message);\n }\n }\n\n const hash = await brokerContract.write!.updatePriceAndAdjustCollateral(\n [[updateParams], depositData, positionId, adjustAmount],\n {\n value: BigInt(priceData?.value ?? \"1\"),\n gas: (BigInt(10000000) * TRADE_GAS_LIMIT_RATIO[chainId as ChainId]) / 100n,\n }\n );\n\n await getPublicClient(chainId).waitForTransactionReceipt({ hash });\n\n return {\n code: 0,\n data: { hash },\n message: \"Adjust collateral transaction submitted\",\n };\n } catch (error) {\n return {\n code: -1,\n message: (error as Error).message,\n };\n }\n }\n}\n","export const OrderType = {\n MARKET: 0,\n LIMIT: 1,\n STOP: 2, // TPSL\n CONDITIONAL: 3 // CPSL\n} as const;\n\nexport type OrderType = typeof OrderType[keyof typeof OrderType];\n\nexport const TriggerType = {\n NONE: 0,\n GTE: 1,\n LTE: 2\n} as const;\n\nexport type TriggerType = typeof TriggerType[keyof typeof TriggerType];\n\nexport const OperationType = {\n INCREASE: 0,\n DECREASE: 1,\n} as const;\n\nexport type OperationType = typeof OperationType[keyof typeof OperationType];\n\nexport const Direction = {\n LONG: 0,\n SHORT: 1\n} as const;\n\nexport type Direction = typeof Direction[keyof typeof Direction];\n\nexport const TimeInForce = {\n IOC: 0,\n} as const;\n\nexport type TimeInForce = typeof TimeInForce[keyof typeof TimeInForce];\n\nexport const TIME_IN_FORCE: TimeInForce = TimeInForce.IOC;","/**\n * Trading related types and enums\n */\n\n// Order Types\nexport const OrderType = {\n MARKET: 0, // Market order\n LIMIT: 1, // Limit order\n STOP: 2, // Stop order\n CONDITIONAL: 3, // Conditional order\n} as const;\nexport type OrderType = (typeof OrderType)[keyof typeof OrderType];\n\n// Trigger Types\nexport const TriggerType = {\n NONE: 0, // No trigger\n GTE: 1, // Greater than or equal (>=)\n LTE: 2, // Less than or equal (<=)\n} as const;\nexport type TriggerType = (typeof TriggerType)[keyof typeof TriggerType];\n\n// Operation Types\nexport const OperationType = {\n INCREASE: 0, // Increase position\n DECREASE: 1, // Decrease position\n} as const;\nexport type OperationType = (typeof OperationType)[keyof typeof OperationType];\n\n// Direction\nexport const Direction = {\n LONG: 0, // Long\n SHORT: 1, // Short\n} as const;\nexport type Direction = (typeof Direction)[keyof typeof Direction];\n\n// Time in Force\nexport const TimeInForce = {\n IOC: 0, // Immediate or cancel\n} as const;\nexport type TimeInForce = (typeof TimeInForce)[keyof typeof TimeInForce];\n\n// Trading position interface\nexport interface Position {\n positionId: string;\n poolId: string;\n direction: Direction;\n size: string;\n collateral: string;\n leverage: number;\n entryPrice: string;\n markPrice: string;\n pnl: string;\n unrealizedPnl: string;\n liquidationPrice: string;\n marginRatio: string;\n timestamp: number;\n}\n\n// Order interface\nexport interface Order {\n orderId: string;\n poolId: string;\n positionId: string;\n orderType: OrderType;\n triggerType: TriggerType;\n operation: OperationType;\n direction: Direction;\n size: string;\n collateralAmount: string;\n orderPrice?: string;\n triggerPrice?: string;\n timeInForce: TimeInForce;\n postOnly: boolean;\n slippagePct: string;\n leverage: number;\n status: OrderStatus;\n createdAt: number;\n updatedAt: number;\n}\n\n// Order Status\nexport const OrderStatus = {\n PENDING: 0, // Pending\n PARTIAL: 1, // Partially filled\n FILLED: 2, // Fully filled\n CANCELLED: 3, // Cancelled\n REJECTED: 4, // Rejected\n EXPIRED: 5, // Expired\n} as const;\nexport type OrderStatus = (typeof OrderStatus)[keyof typeof OrderStatus];\n\n// Trading parameters for placing orders\nexport interface PlaceOrderParams {\n chainId: number;\n address: string;\n poolId: string;\n positionId: string;\n orderType: OrderType;\n triggerType: TriggerType;\n direction: Direction;\n collateralAmount: string;\n size: string;\n price: string;\n timeInForce: TimeInForce;\n postOnly: boolean;\n slippagePct: string;\n executionFeeToken: string;\n leverage: number;\n tpSize?: string;\n tpPrice?: string;\n slSize?: string;\n slPrice?: string;\n}\n\nexport interface PositionTpSlOrderParams {\n chainId: number;\n address: string;\n poolId: string;\n positionId: string;\n executionFeeToken: string;\n tpTriggerType: TriggerType;\n slTriggerType: TriggerType;\n direction: Direction; // position direction\n leverage: number;\n tpSize?: string;\n tpPrice?: string;\n slSize?: string;\n slPrice?: string;\n slippagePct: string;\n}\n// Trading result\nexport interface TradingResult {\n success: boolean;\n orderId?: string;\n transactionHash: string;\n gasUsed?: string;\n error?: string;\n}\n\nexport interface UpdateOrderTpSlParams {\n orderId: string;\n tpSize: string;\n tpPrice: string;\n slSize: string;\n slPrice: string;\n address: string;\n executionFeeToken: string;\n}\n","import { ConfigManager, MyxClientConfig } from \"../config/index.js\";\nimport { Logger } from \"@/logger\";\nimport { GetHistoryOrdersParams } from \"@/api\";\nimport {\n getBrokerSingerContract,\n // getForwarderContract,\n // getSeamlessBrokerContract,\n} from \"@/web3/providers\";\nimport { getPublicClient } from \"@/web3/viemClients.js\";\nimport { TIME_IN_FORCE } from \"@/config/con\";\nimport {\n PlaceOrderParams,\n OperationType,\n OrderType,\n PositionTpSlOrderParams,\n} from \"@/types/trading\";\nimport { Utils } from \"../utils/index.js\";\nimport { UpdateOrderParams } from \"@/types/order\";\nimport { MyxErrorCode, MyxSDKError } from \"../error/const.js\";\nimport { maxUint256 } from \"viem\";\nimport { Seamless } from \"../seamless/index.js\";\n// import Broker_ABI from \"@/abi/Broker.json\";\n// import dayjs from \"dayjs\";\nimport { Account } from \"../account/index.js\";\nimport { ChainId } from \"@/config/chain\";\nimport { Api } from \"../api/index.js\";\nimport { TRADE_GAS_LIMIT_RATIO } from \"@/config/fee\";\nimport { getContractAddressByChainId } from \"@/config/address/index.js\";\n\nexport class Order {\n private configManager: ConfigManager;\n private logger: Logger;\n private utils: Utils;\n private seamless: Seamless;\n private account: Account\n private api: Api;\n constructor(configManager: ConfigManager, logger: Logger, utils: Utils, seamless: Seamless, account: Account, api: Api) {\n this.configManager = configManager;\n this.logger = logger;\n this.utils = utils;\n this.seamless = seamless;\n this.account = account\n this.api = api;\n }\n\n async createIncreaseOrder(params: PlaceOrderParams, tradingFee: string, marketId: string) {\n try {\n const config: MyxClientConfig = this.configManager.getConfig();\n\n const networkFee = await this.utils.getNetworkFee(\n marketId,\n params.chainId\n );\n\n let totalNetWorkFee = BigInt(networkFee)\n\n if (params.tpSize && BigInt(params.tpSize) > 0) {\n totalNetWorkFee += BigInt(networkFee)\n }\n if (params.slSize && BigInt(params.slSize) > 0) {\n totalNetWorkFee += BigInt(networkFee)\n }\n\n const totalCollateralAmount = BigInt(params.collateralAmount) + BigInt(tradingFee)\n const availableRes = await this.account.getAvailableMarginBalance({ poolId: params.poolId, chainId: params.chainId, address: params.address });\n const availableAccountMarginBalance = availableRes.code === 0 ? (availableRes.data ?? 0n) : 0n;\n const needAmount = totalCollateralAmount + totalNetWorkFee\n let depositAmount = BigInt(0)\n const diff = needAmount - availableAccountMarginBalance\n\n if (diff > BigInt(0)) {\n depositAmount = diff\n }\n\n const depositData = {\n token: params.executionFeeToken,\n amount: depositAmount.toString()\n }\n\n const data = {\n user: params.address,\n poolId: params.poolId,\n orderType: params.orderType,\n triggerType: params.triggerType,\n operation: OperationType.INCREASE,\n direction: params.direction,\n collateralAmount: totalCollateralAmount.toString(),\n size: params.size,\n price: params.price,\n timeInForce: TIME_IN_FORCE,\n postOnly: params.postOnly ?? false,\n slippagePct: params.slippagePct ?? \"0\",\n leverage: params.leverage ?? 0,\n tpSize: params.tpSize ?? \"0\",\n tpPrice: params.tpPrice ?? \"0\",\n slSize: params.slSize ?? \"0\",\n slPrice: params.slPrice ?? \"0\",\n }\n\n // const authorized = this.configManager.getConfig().seamlessAccount?.authorized\n // const seamlessWallet = this.configManager.getConfig().seamlessAccount?.wallet\n\n // if (config.seamlessMode && authorized && seamlessWallet) {\n\n // const isEnoughGas = await this.utils.checkSeamlessGas(params.address, params.chainId)\n\n // if (!isEnoughGas) {\n // throw new MyxSDKError(MyxErrorCode.InsufficientBalance, \"Insufficient relay fee\");\n // }\n\n // const forwarderContract = await getForwarderContract(params.chainId)\n // let functionHash = ''\n\n // if (!params.positionId) {\n // this.logger.info(\"createIncreaseOrder placeOrderWithSalt data --->\", [\n // '1',\n // { ...depositData },\n // data\n // ])\n // functionHash = encodeFunctionData({ abi: Broker_ABI as any, functionName: 'placeOrderWithSalt', args: ['1', { ...depositData }, data] })\n // } else {\n // functionHash = encodeFunctionData({ abi: Broker_ABI as any, functionName: 'placeOrderWithPosition', args: [params.positionId.toString(), { ...depositData }, data] })\n // }\n // const nonce = await forwarderContract.read.nonces([seamlessWallet.address as `0x${string}`])\n\n // const forwardTxParams = {\n // from: seamlessWallet.address ?? '',\n // to: this.configManager.getConfig().brokerAddress,\n // value: '0',\n // gas: '800000',\n // deadline: dayjs().add(60, 'minute').unix(),\n // data: functionHash,\n // nonce: nonce.toString(),\n // }\n\n // this.logger.info(\"createIncreaseOrder forward tx params --->\", forwardTxParams)\n\n // const rs = await this.seamless.forwarderTx(forwardTxParams, params.chainId, seamlessWallet as any);\n\n // return {\n // code: 0,\n // message: \"create increase order success\",\n // data: rs,\n // };\n // }\n\n const needsApproval = await this.utils.needsApproval(\n params.address,\n params.chainId,\n params.executionFeeToken,\n params.collateralAmount,\n getContractAddressByChainId(params.chainId).TRADING_ROUTER,\n );\n\n if (!this.configManager.hasSigner()) {\n throw new MyxSDKError(MyxErrorCode.InvalidSigner, \"Invalid signer\");\n }\n\n if (needsApproval) {\n const approvalResult = await this.utils.approveAuthorization({\n chainId: params.chainId,\n quoteAddress: params.executionFeeToken,\n amount: maxUint256.toString(),\n spenderAddress: getContractAddressByChainId(params.chainId).TRADING_ROUTER,\n });\n\n if (approvalResult.code !== 0) {\n throw new Error(approvalResult.message);\n }\n }\n\n const brokerContract = await getBrokerSingerContract(\n params.chainId,\n this.configManager.getConfig().brokerAddress\n );\n\n let hash: `0x${string}`;\n\n if (!params.positionId) {\n const positionSalt = '1';\n this.logger.info(\"createIncreaseOrder salt position params--->\", { positionSalt, data, depositData });\n\n const gasLimit = await brokerContract.estimateGas!.placeOrderWithSalt([positionSalt, { ...depositData }, data]);\n\n hash = await brokerContract.write!.placeOrderWithSalt(\n [positionSalt, { ...depositData }, data],\n {\n gasLimit: (gasLimit * TRADE_GAS_LIMIT_RATIO[params.chainId as ChainId]) / 100n,\n }\n );\n } else {\n this.logger.info(\"createIncreaseOrder nft position params--->\", { ...data, positionId: params.positionId });\n\n const gasLimit = await brokerContract.estimateGas!.placeOrderWithPosition([\n params.positionId.toString(),\n { ...depositData },\n data,\n ]);\n\n hash = await brokerContract.write!.placeOrderWithPosition(\n [params.positionId.toString(), { ...depositData }, data],\n {\n gasLimit: (gasLimit * TRADE_GAS_LIMIT_RATIO[params.chainId as ChainId]) / 100n,\n }\n );\n }\n\n const receipt = await getPublicClient(params.chainId).waitForTransactionReceipt({ hash });\n\n const result = {\n success: true,\n transactionHash: hash,\n blockNumber: receipt?.blockNumber,\n gasUsed: receipt?.gasUsed?.toString(),\n status: receipt?.status === \"success\" ? \"success\" : \"failed\",\n confirmations: 1,\n timestamp: Date.now(),\n receipt,\n };\n\n return {\n code: 0,\n message: \"create increase order success\",\n data: result,\n };\n } catch (error) {\n this.logger.error(\"Error placing order:\", error);\n return {\n code: -1,\n // @ts-ignore\n message: error?.message,\n };\n }\n }\n\n async closeAllPositions(chainId: number, params: PlaceOrderParams[]) {\n try {\n const config: MyxClientConfig = this.configManager.getConfig();\n\n const depositData = {\n token: '0x0000000000000000000000000000000000000000',\n amount: '0'\n };\n\n const positionIds = params.map((param: PlaceOrderParams) => param.positionId.toString());\n\n const dataMap = params.map((param: PlaceOrderParams) => {\n return {\n user: param.address,\n poolId: param.poolId,\n orderType: param.orderType,\n triggerType: param.triggerType,\n operation: OperationType.DECREASE,\n direction: param.direction,\n collateralAmount: param.collateralAmount,\n size: param.size,\n price: param.price,\n timeInForce: TIME_IN_FORCE,\n postOnly: param.postOnly,\n slippagePct: param.slippagePct,\n leverage: param.leverage,\n tpSize: 0,\n tpPrice: 0,\n slSize: 0,\n slPrice: 0,\n }\n })\n\n this.logger.info(\"closeAllPositions params--->\", depositData, positionIds, dataMap);\n\n // const authorized = this.configManager.getConfig().seamlessAccount?.authorized\n // const seamlessWallet = this.configManager.getConfig().seamlessAccount?.wallet\n // if (config.seamlessMode && authorized && seamlessWallet) {\n\n // const isEnoughGas = await this.utils.checkSeamlessGas(params[0].address, chainId)\n\n // if (!isEnoughGas) {\n // throw new MyxSDKError(MyxErrorCode.InsufficientBalance, \"Insufficient relay fee\");\n // }\n\n // const forwarderContract = await getForwarderContract(chainId)\n\n // const brokerContract = await getSeamlessBrokerContract(\n // this.configManager.getConfig().brokerAddress,\n // seamlessWallet as any\n // );\n // const functionHash = encodeFunctionData({ abi: Broker_ABI as any, functionName: 'placeOrdersWithPosition', args: [depositData, positionIds, dataMap] })\n\n // const nonce = await forwarderContract.read.nonces([seamlessWallet.address as `0x${string}`])\n\n // const forwardTxParams = {\n // from: seamlessWallet.address ?? '',\n // to: this.configManager.getConfig().brokerAddress,\n // value: '0',\n // gas: '800000',\n // deadline: dayjs().add(60, 'minute').unix(),\n // data: functionHash,\n // nonce: nonce.toString(),\n // }\n\n // this.logger.info(\"cancel all positions forward tx params --->\", forwardTxParams)\n\n // const rs = await this.seamless.forwarderTx(forwardTxParams, chainId, seamlessWallet as any);\n\n // return {\n // code: 0,\n // message: \"cancel all positions success\",\n // data: rs,\n // };\n // }\n\n if (!this.configManager.hasSigner()) {\n throw new MyxSDKError(MyxErrorCode.InvalidSigner, \"Invalid signer\");\n }\n\n const brokerContract = await getBrokerSingerContract(\n chainId,\n this.configManager.getConfig().brokerAddress\n );\n\n const gasLimit = await brokerContract.estimateGas!.placeOrdersWithPosition([depositData, positionIds, dataMap]);\n const hash = await brokerContract.write!.placeOrdersWithPosition([depositData, positionIds, dataMap], {\n gasLimit: (gasLimit * TRADE_GAS_LIMIT_RATIO[chainId as ChainId]) / 100n,\n });\n\n const receipt = await getPublicClient(chainId).waitForTransactionReceipt({ hash });\n\n return {\n code: 0,\n message: \"close all positions success\",\n transactionHash: hash,\n blockNumber: receipt?.blockNumber,\n gasUsed: receipt?.gasUsed?.toString(),\n status: receipt?.status === \"success\" ? \"success\" : \"failed\",\n confirmations: 1,\n timestamp: Date.now(),\n receipt,\n };\n } catch (error) {\n return {\n code: -1,\n // @ts-ignore\n message: error?.message,\n };\n }\n }\n\n async createDecreaseOrder(params: PlaceOrderParams) {\n try {\n const config: MyxClientConfig = this.configManager.getConfig();\n\n const data = {\n user: params.address,\n poolId: params.poolId,\n orderType: params.orderType,\n triggerType: params.triggerType,\n operation: OperationType.DECREASE,\n direction: params.direction,\n collateralAmount: params.collateralAmount,\n size: params.size,\n price: params.price,\n timeInForce: TIME_IN_FORCE,\n postOnly: params.postOnly,\n slippagePct: params.slippagePct,\n leverage: params.leverage,\n tpSize: 0,\n tpPrice: 0,\n slSize: 0,\n slPrice: 0,\n }\n\n const depositData = {\n token: '0x0000000000000000000000000000000000000000',\n amount: '0'\n }\n\n // const needsApproval = await this.utils.needsApproval(\n // params.address,\n // params.chainId,\n // params.executionFeeToken,\n // depositAmount.toString(),\n // getContractAddressByChainId(params.chainId).TRADING_ROUTER,\n // );\n\n // const authorized = this.configManager.getConfig().seamlessAccount?.authorized\n // const seamlessWallet = this.configManager.getConfig().seamlessAccount?.wallet\n // if (config.seamlessMode && authorized && seamlessWallet) {\n // const isEnoughGas = await this.utils.checkSeamlessGas(params.address, params.chainId)\n\n // if (!isEnoughGas) {\n // throw new MyxSDKError(MyxErrorCode.InsufficientBalance, \"Insufficient relay fee\");\n // }\n\n // const forwarderContract = await getForwarderContract(params.chainId)\n\n // const brokerContract = await getSeamlessBrokerContract(\n // this.configManager.getConfig().brokerAddress,\n // seamlessWallet as any\n // );\n // let functionHash = ''\n\n // if (!params.positionId) {\n // functionHash = encodeFunctionData({ abi: Broker_ABI as any, functionName: 'placeOrderWithSalt', args: ['1', { ...depositData }, data] })\n // } else {\n // functionHash = encodeFunctionData({ abi: Broker_ABI as any, functionName: 'placeOrderWithPosition', args: [params.positionId.toString(), { ...depositData }, data] })\n // }\n\n // const nonce = await forwarderContract.read.nonces([seamlessWallet.address as `0x${string}`])\n\n // const forwardTxParams = {\n // from: seamlessWallet.address ?? '',\n // to: this.configManager.getConfig().brokerAddress,\n // value: '0',\n // gas: '800000',\n // deadline: dayjs().add(60, 'minute').unix(),\n // data: functionHash,\n // nonce: nonce.toString(),\n // }\n\n // this.logger.info(\"create decrease order forward tx params --->\", forwardTxParams)\n\n // const rs = await this.seamless.forwarderTx(forwardTxParams, params.chainId, seamlessWallet as any);\n\n // return {\n // code: 0,\n // message: \"create decrease order success\",\n // data: rs,\n // };\n // }\n\n if (!this.configManager.hasSigner()) {\n throw new MyxSDKError(MyxErrorCode.InvalidSigner, \"Invalid signer\");\n }\n\n const brokerContract = await getBrokerSingerContract(\n params.chainId,\n this.configManager.getConfig().brokerAddress\n );\n\n // if (needsApproval) {\n // const approvalResult = await this.utils.approveAuthorization({\n // chainId: params.chainId,\n // quoteAddress: params.executionFeeToken,\n // amount: ethers.MaxUint256.toString(),\n // spenderAddress: getContractAddressByChainId(params.chainId).TRADING_ROUTER,\n // });\n\n // if (approvalResult.code !== 0) {\n // throw new Error(approvalResult.message);\n // }\n // }\n\n\n let hash: `0x${string}`;\n if (!params.positionId) {\n const positionId = 1\n this.logger.info(\"createDecreaseOrder salt position params--->\", [positionId, depositData, { data }]);\n const gasLimit = await brokerContract.estimateGas!.placeOrderWithSalt([positionId.toString(), depositData, data]);\n\n hash = await brokerContract.write!.placeOrderWithSalt(\n [positionId.toString(), depositData, data],\n {\n gasLimit: (gasLimit * TRADE_GAS_LIMIT_RATIO[params.chainId as ChainId]) / 100n,\n }\n );\n } else {\n this.logger.info(\"createDecreaseOrder nft position params--->\", [params.positionId, depositData, { data }]);\n const gasLimit = await brokerContract.estimateGas!.placeOrderWithPosition([params.positionId.toString(), depositData, data]);\n\n hash = await brokerContract.write!.placeOrderWithPosition(\n [params.positionId.toString(), depositData, data],\n {\n gasLimit: (gasLimit * TRADE_GAS_LIMIT_RATIO[params.chainId as ChainId]) / 100n,\n }\n );\n }\n\n const receipt = await getPublicClient(params.chainId).waitForTransactionReceipt({ hash });\n\n const result = {\n success: true,\n transactionHash: hash,\n blockNumber: receipt?.blockNumber,\n gasUsed: receipt?.gasUsed?.toString(),\n status: receipt?.status === \"success\" ? \"success\" : \"failed\",\n confirmations: 1,\n timestamp: Date.now(),\n receipt,\n };\n\n // if (!orderId) {\n // this.logger.warn(\"Warning: OrderId not found in transaction logs\");\n // result.success = false;\n // }\n\n return {\n code: 0,\n message: \"create decrease order success\",\n data: result,\n };\n } catch (error) {\n return {\n code: -1,\n // @ts-ignore\n message: error?.message,\n };\n }\n }\n\n async createPositionTpSlOrder(params: PositionTpSlOrderParams) {\n try {\n // const config: MyxClientConfig = this.configManager.getConfig();\n // if (!this.configManager.hasSigner() && !config.seamlessMode) {\n // throw new MyxSDKError(MyxErrorCode.InvalidSigner, \"Invalid signer\");\n // }\n const brokerContract = await getBrokerSingerContract(\n params.chainId,\n this.configManager.getConfig().brokerAddress\n );\n\n try {\n\n if (params.tpSize !== \"0\" && params.slSize !== \"0\") {\n const data = [\n {\n user: params.address,\n poolId: params.poolId,\n orderType: OrderType.STOP,\n triggerType: params.tpTriggerType,\n operation: OperationType.DECREASE,\n direction: params.direction,\n collateralAmount: '0',\n size: params.tpSize ?? \"0\",\n price: params.tpPrice ?? \"0\",\n timeInForce: TIME_IN_FORCE,\n postOnly: false,\n slippagePct: params.slippagePct ?? \"0\",\n leverage: params.leverage,\n tpSize: \"0\",\n tpPrice: \"0\",\n slSize: \"0\",\n slPrice: \"0\",\n },\n {\n user: params.address,\n poolId: params.poolId,\n orderType: OrderType.STOP,\n triggerType: params.slTriggerType,\n operation: OperationType.DECREASE,\n direction: params.direction,\n collateralAmount: '0',\n size: params.slSize ?? \"0\",\n price: params.slPrice ?? \"0\",\n timeInForce: TIME_IN_FORCE,\n postOnly: false,\n slippagePct: params.slippagePct ?? \"0\",\n leverage: params.leverage,\n tpSize: \"0\",\n tpPrice: \"0\",\n slSize: \"0\",\n slPrice: \"0\",\n },\n ];\n\n // const depositAmount = BigInt(networkFee) * BigInt(2)\n\n // const needsApproval = await this.utils.needsApproval(\n // params.address,\n // params.chainId,\n // params.executionFeeToken,\n // depositAmount.toString(),\n // getContractAddressByChainId(params.chainId).TRADING_ROUTER,\n // );\n\n const depositData = {\n token: '0x0000000000000000000000000000000000000000',\n amount: '0'\n }\n\n // const authorized = this.configManager.getConfig().seamlessAccount?.authorized\n // const seamlessWallet = this.configManager.getConfig().seamlessAccount?.wallet\n // if (config.seamlessMode && authorized && seamlessWallet) {\n\n // // if (needsApproval) {\n // // const approvalResult = await this.utils.approveAuthorization({\n // // chainId: params.chainId,\n // // quoteAddress: params.executionFeeToken,\n // // amount: ethers.MaxUint256.toString(),\n // // signer: seamlessWallet as any,\n // // });\n\n // // if (approvalResult.code !== 0) {\n // // throw new Error(approvalResult.message);\n // // }\n // // }\n\n // const isEnoughGas = await this.utils.checkSeamlessGas(params.address, params.chainId)\n\n // if (!isEnoughGas) {\n // throw new MyxSDKError(MyxErrorCode.InsufficientBalance, \"Insufficient relay fee\");\n // }\n\n // const forwarderContract = await getForwarderContract(params.chainId)\n\n // const brokerContract = await getSeamlessBrokerContract(\n // this.configManager.getConfig().brokerAddress,\n // seamlessWallet as any\n // );\n // let functionHash = ''\n\n // if (!params.positionId) {\n // functionHash = encodeFunctionData({ abi: Broker_ABI as any, functionName: 'placeOrdersWithSalt', args: [depositData, ['1', '1'], data] })\n // } else {\n // functionHash = encodeFunctionData({ abi: Broker_ABI as any, functionName: 'placeOrdersWithPosition', args: [depositData, [params.positionId.toString(), params.positionId.toString()], data] })\n // }\n\n // const nonce = await forwarderContract.read.nonces([seamlessWallet.address as `0x${string}`])\n\n // const forwardTxParams = {\n // from: seamlessWallet.address ?? '',\n // to: this.configManager.getConfig().brokerAddress,\n // value: '0',\n // gas: '800000',\n // deadline: dayjs().add(60, 'minute').unix(),\n // data: functionHash,\n // nonce: nonce.toString(),\n // }\n\n // this.logger.info(\"createPositionTpSlOrder forward tx params --->\", forwardTxParams)\n\n // const rs = await this.seamless.forwarderTx(forwardTxParams, params.chainId, seamlessWallet as any);\n\n // return {\n // code: 0,\n // message: \"createPositionTpSlOrder success\",\n // data: rs,\n // };\n // }\n\n // if (needsApproval) {\n // const approvalResult = await this.utils.approveAuthorization({\n // chainId: params.chainId,\n // quoteAddress: params.executionFeeToken,\n // amount: ethers.MaxUint256.toString(),\n // spenderAddress: getContractAddressByChainId(params.chainId).TRADING_ROUTER,\n // });\n\n // if (approvalResult.code !== 0) {\n // throw new Error(approvalResult.message);\n // }\n // }\n\n let hash: `0x${string}`;\n if (!params.positionId) {\n this.logger.info(\"createPositionTpSlOrder salt position data--->\", data);\n\n const positionId = 1\n const gasLimit = await brokerContract.estimateGas!.placeOrdersWithSalt([depositData, [positionId.toString(), positionId.toString()], data]);\n\n hash = await brokerContract.write!.placeOrdersWithSalt([depositData, [positionId.toString(), positionId.toString()], data], {\n gasLimit: (gasLimit * TRADE_GAS_LIMIT_RATIO[params.chainId as ChainId]) / 100n,\n });\n } else {\n const gasLimit = await brokerContract.estimateGas!.placeOrdersWithPosition([depositData, [params.positionId.toString(), params.positionId.toString()], data]);\n\n hash = await brokerContract.write!.placeOrdersWithPosition([depositData, [params.positionId.toString(), params.positionId.toString()], data], {\n gasLimit: (gasLimit * TRADE_GAS_LIMIT_RATIO[params.chainId as ChainId]) / 100n,\n });\n }\n\n const receipt = await getPublicClient(params.chainId).waitForTransactionReceipt({ hash });\n\n const result = {\n success: true,\n transactionHash: hash,\n blockNumber: receipt?.blockNumber,\n gasUsed: receipt?.gasUsed?.toString(),\n status: receipt?.status === \"success\" ? \"success\" : \"failed\",\n confirmations: 1,\n timestamp: Date.now(),\n receipt,\n };\n\n // if (!orderId) {\n // this.logger.warn(\"Warning: OrderId not found in transaction logs\");\n // result.success = false;\n // }\n\n return {\n code: 0,\n message: \"create decrease order success\",\n data: result,\n };\n }\n\n const data = {\n user: params.address,\n poolId: params.poolId,\n orderType: OrderType.STOP,\n triggerType:\n params.tpSize !== \"0\" ? params.tpTriggerType : params.slTriggerType,\n operation: OperationType.DECREASE,\n direction: params.direction,\n collateralAmount: '0',\n size:\n params.tpSize !== \"0\" ? params.tpSize ?? \"0\" : params.slSize ?? \"0\",\n price:\n params.tpPrice !== \"0\"\n ? params.tpPrice ?? \"0\"\n : params.slPrice ?? \"0\",\n timeInForce: TIME_IN_FORCE,\n postOnly: false,\n slippagePct: params.slippagePct ?? \"0\",\n leverage: 0,\n tpSize: \"0\",\n tpPrice: \"0\",\n slSize: \"0\",\n slPrice: \"0\",\n };\n\n const depositData = {\n token: '0x0000000000000000000000000000000000000000',\n amount: '0'\n }\n\n // const needsApproval = await this.utils.needsApproval(\n // params.address,\n // params.chainId,\n // params.executionFeeToken,\n // networkFee.toString(),\n // getContractAddressByChainId(params.chainId).TRADING_ROUTER,\n // );\n\n // const authorized = this.configManager.getConfig().seamlessAccount?.authorized\n // const seamlessWallet = this.configManager.getConfig().seamlessAccount?.wallet\n // if (config.seamlessMode && authorized && seamlessWallet) {\n\n // // if (needsApproval) {\n // // const approvalResult = await this.utils.approveAuthorization({\n // // chainId: params.chainId,\n // // quoteAddress: params.executionFeeToken,\n // // amount: ethers.MaxUint256.toString(),\n // // signer: seamlessWallet as any,\n // // });\n\n // // if (approvalResult.code !== 0) {\n // // throw new Error(approvalResult.message);\n // // }\n // // }\n\n // const isEnoughGas = await this.utils.checkSeamlessGas(params.address, params.chainId)\n\n // if (!isEnoughGas) {\n // throw new MyxSDKError(MyxErrorCode.InsufficientBalance, \"Insufficient relay fee\");\n // }\n\n // const forwarderContract = await getForwarderContract(params.chainId)\n\n // const brokerContract = await getSeamlessBrokerContract(\n // this.configManager.getConfig().brokerAddress,\n // seamlessWallet as any\n // );\n // let functionHash = ''\n\n // if (!params.positionId) {\n // functionHash = encodeFunctionData({ abi: Broker_ABI as any, functionName: 'placeOrderWithSalt', args: ['1', depositData, data] })\n // } else {\n // functionHash = encodeFunctionData({ abi: Broker_ABI as any, functionName: 'placeOrderWithPosition', args: [params.positionId.toString(), depositData, data] })\n // }\n\n // const nonce = await forwarderContract.read.nonces([seamlessWallet.address as `0x${string}`])\n\n // const forwardTxParams = {\n // from: seamlessWallet.address ?? '',\n // to: this.configManager.getConfig().brokerAddress,\n // value: '0',\n // gas: '800000',\n // deadline: dayjs().add(60, 'minute').unix(),\n // data: functionHash,\n // nonce: nonce.toString(),\n // }\n\n // this.logger.info(\"createPositionTpSlOrder forward tx params --->\", forwardTxParams)\n\n // const rs = await this.seamless.forwarderTx(forwardTxParams, params.chainId, seamlessWallet as any);\n\n // return {\n // code: 0,\n // message: \"createPositionTpSlOrder success\",\n // data: rs,\n // };\n // }\n\n let hash: `0x${string}`;\n if (!params.positionId) {\n this.logger.info(\"createPositionTpOrSlOrder salt position data--->\", data);\n const positionId = 1;\n const gasLimit = await brokerContract.estimateGas!.placeOrderWithSalt([positionId.toString(), depositData, data]);\n\n hash = await brokerContract.write!.placeOrderWithSalt([positionId.toString(), depositData, data], {\n gasLimit: (gasLimit * TRADE_GAS_LIMIT_RATIO[params.chainId as ChainId]) / 100n,\n });\n } else {\n this.logger.info(\"createPositionTpOrSlOrder nft position data--->\", data);\n const gasLimit = await brokerContract.estimateGas!.placeOrderWithPosition([params.positionId.toString(), depositData, data]);\n hash = await brokerContract.write!.placeOrderWithPosition([params.positionId.toString(), depositData, data], {\n gasLimit: (gasLimit * TRADE_GAS_LIMIT_RATIO[params.chainId as ChainId]) / 100n,\n });\n }\n\n const receipt = await getPublicClient(params.chainId).waitForTransactionReceipt({ hash });\n\n const result = {\n success: true,\n transactionHash: hash,\n blockNumber: receipt?.blockNumber,\n gasUsed: receipt?.gasUsed?.toString(),\n status: receipt?.status === \"success\" ? \"success\" : \"failed\",\n confirmations: 1,\n timestamp: Date.now(),\n receipt,\n };\n\n // if (!orderId) {\n // this.logger.warn(\"Warning: OrderId not found in transaction logs\");\n // result.success = false;\n // }\n\n return {\n code: 0,\n message: \"create decrease order success\",\n data: result,\n };\n } catch (error) {\n return {\n code: -1,\n // @ts-ignore\n message: error?.message,\n };\n }\n } catch (error) {\n return {\n code: -1,\n // @ts-ignore\n message: error?.message,\n };\n }\n }\n\n\n async cancelAllOrders(orderIds: string[], chainId: ChainId) {\n try {\n // const config: MyxClientConfig = this.configManager.getConfig();\n\n\n // const authorized = this.configManager.getConfig().seamlessAccount?.authorized\n // const seamlessWallet = this.configManager.getConfig().seamlessAccount?.wallet\n // if (config.seamlessMode && authorized && seamlessWallet) {\n\n // const isEnoughGas = await this.utils.checkSeamlessGas(config.seamlessAccount?.masterAddress as string, chainId)\n\n // if (!isEnoughGas) {\n // throw new MyxSDKError(MyxErrorCode.InsufficientBalance, \"Insufficient relay fee\");\n // }\n\n // const forwarderContract = await getForwarderContract(chainId)\n\n // const brokerContract = await getSeamlessBrokerContract(\n // this.configManager.getConfig().brokerAddress,\n // seamlessWallet as any\n // );\n // let functionHash = encodeFunctionData({ abi: Broker_ABI as any, functionName: 'cancelOrders', args: [orderIds] })\n\n // const nonce = await forwarderContract.read.nonces([seamlessWallet.address as `0x${string}`])\n\n // const forwardTxParams = {\n // from: seamlessWallet.address ?? '',\n // to: this.configManager.getConfig().brokerAddress,\n // value: '0',\n // gas: '800000',\n // deadline: dayjs().add(60, 'minute').unix(),\n // data: functionHash,\n // nonce: nonce.toString(),\n // }\n\n // this.logger.info(\"create decrease order forward tx params --->\", forwardTxParams)\n\n // const rs = await this.seamless.forwarderTx(forwardTxParams, chainId, seamlessWallet as any);\n\n // return {\n // code: 0,\n // message: \"create decrease order success\",\n // data: rs,\n // };\n // }\n\n if (!this.configManager.hasSigner()) {\n throw new MyxSDKError(MyxErrorCode.InvalidSigner, \"Invalid signer\");\n }\n const brokerContract = await getBrokerSingerContract(\n chainId,\n this.configManager.getConfig().brokerAddress\n );\n\n const hash = await brokerContract.write!.cancelOrders([orderIds]);\n await getPublicClient(chainId).waitForTransactionReceipt({ hash });\n return {\n code: 0,\n message: \"cancel all orders success\",\n };\n } catch (error) {\n return {\n code: -1,\n // @ts-ignore\n message: error?.message,\n };\n }\n }\n\n async cancelOrder(orderId: string, chainId: ChainId) {\n try {\n // const config: MyxClientConfig = this.configManager.getConfig();\n\n // const authorized = this.configManager.getConfig().seamlessAccount?.authorized\n // const seamlessWallet = this.configManager.getConfig().seamlessAccount?.wallet\n // if (config.seamlessMode && authorized && seamlessWallet) {\n // const isEnoughGas = await this.utils.checkSeamlessGas(config.seamlessAccount?.masterAddress as string, chainId)\n\n // if (!isEnoughGas) {\n // throw new MyxSDKError(MyxErrorCode.InsufficientBalance, \"Insufficient relay fee\");\n // }\n\n // const brokerContract = await getSeamlessBrokerContract(\n // this.configManager.getConfig().brokerAddress,\n // seamlessWallet as any\n // );\n // const forwarderContract = await getForwarderContract(chainId)\n // let functionHash = encodeFunctionData({ abi: Broker_ABI as any, functionName: 'cancelOrder', args: [BigInt(orderId)] })\n\n // const nonce = await forwarderContract.read.nonces([seamlessWallet.address as `0x${string}`])\n\n // const forwardTxParams = {\n // from: seamlessWallet.address ?? '',\n // to: this.configManager.getConfig().brokerAddress,\n // value: '0',\n // gas: '800000',\n // deadline: dayjs().add(60, 'minute').unix(),\n // data: functionHash,\n // nonce: nonce.toString(),\n // }\n\n // this.logger.info(\"createIncreaseOrder forward tx params --->\", forwardTxParams)\n\n // const rs = await this.seamless.forwarderTx(forwardTxParams, chainId, seamlessWallet as any);\n\n // return {\n // code: 0,\n // message: \"cancel order success\",\n // data: rs,\n // };\n // }\n\n if (!this.configManager.hasSigner()) {\n throw new MyxSDKError(MyxErrorCode.InvalidSigner, \"Invalid signer\");\n }\n const brokerContract = await getBrokerSingerContract(\n chainId,\n this.configManager.getConfig().brokerAddress\n );\n\n const hash = await brokerContract.write!.cancelOrder([orderId]);\n await getPublicClient(chainId).waitForTransactionReceipt({ hash });\n return {\n code: 0,\n message: \"cancel order success\",\n };\n } catch (error) {\n return {\n code: -1,\n // @ts-ignore\n message: error?.message,\n };\n }\n }\n\n async cancelOrders(orderIds: string[], chainId: ChainId) {\n try {\n // const config: MyxClientConfig = this.configManager.getConfig();\n\n\n // const authorized = this.configManager.getConfig().seamlessAccount?.authorized\n // const seamlessWallet = this.configManager.getConfig().seamlessAccount?.wallet\n // if (config.seamlessMode && authorized && seamlessWallet) {\n // const isEnoughGas = await this.utils.checkSeamlessGas(config.seamlessAccount?.masterAddress as string, chainId)\n\n // if (!isEnoughGas) {\n // throw new MyxSDKError(MyxErrorCode.InsufficientBalance, \"Insufficient relay fee\");\n // }\n\n // const forwarderContract = await getForwarderContract(chainId)\n\n // const brokerContract = await getSeamlessBrokerContract(\n // this.configManager.getConfig().brokerAddress,\n // seamlessWallet as any\n // );\n // let functionHash = encodeFunctionData({ abi: Broker_ABI as any, functionName: 'cancelOrders', args: [orderIds] })\n\n // const nonce = await forwarderContract.read.nonces([seamlessWallet.address as `0x${string}`])\n\n // const forwardTxParams = {\n // from: seamlessWallet.address ?? '',\n // to: this.configManager.getConfig().brokerAddress,\n // value: '0',\n // gas: '800000',\n // deadline: dayjs().add(60, 'minute').unix(),\n // data: functionHash,\n // nonce: nonce.toString(),\n // }\n\n // this.logger.info(\"cancel orders forward tx params --->\", forwardTxParams)\n\n // const rs = await this.seamless.forwarderTx(forwardTxParams, chainId, seamlessWallet as any);\n\n // return {\n // code: 0,\n // message: \"cancel orders success\",\n // data: rs,\n // };\n // }\n\n\n if (!this.configManager.hasSigner()) {\n throw new MyxSDKError(MyxErrorCode.InvalidSigner, \"Invalid signer\");\n }\n const brokerContract = await getBrokerSingerContract(\n chainId,\n this.configManager.getConfig().brokerAddress\n );\n const hash = await brokerContract.write!.cancelOrders([orderIds]);\n await getPublicClient(chainId).waitForTransactionReceipt({ hash });\n return {\n code: 0,\n message: \"Orders canceled success\",\n };\n } catch (error) {\n this.logger.error(\"Error canceling orders:\", error);\n return {\n code: -1,\n // @ts-ignore\n message: error?.message,\n };\n }\n }\n\n async updateOrderTpSl(params: UpdateOrderParams, quoteAddress: string, chainId: number, address: string, marketId: string, isTpSlOrder?: boolean) {\n const config: MyxClientConfig = this.configManager.getConfig();\n\n const networkFee = await this.utils.getNetworkFee(marketId, chainId)\n\n const data = {\n orderId: params.orderId,\n size: params.size,\n price: params.price,\n tpsl: {\n tpSize: isTpSlOrder ? params.tpSize : '0',\n tpPrice: isTpSlOrder ? params.tpPrice : '0',\n slSize: isTpSlOrder ? params.slSize : '0',\n slPrice: isTpSlOrder ? params.slPrice : '0',\n },\n };\n\n const depositData = {\n token: quoteAddress,\n amount: networkFee.toString()\n }\n\n // const authorized = this.configManager.getConfig().seamlessAccount?.authorized\n // const seamlessWallet = this.configManager.getConfig().seamlessAccount?.wallet\n // if (config.seamlessMode && authorized && seamlessWallet) {\n // const isEnoughGas = await this.utils.checkSeamlessGas(config.seamlessAccount?.masterAddress as string, chainId)\n\n // if (!isEnoughGas) {\n // throw new MyxSDKError(MyxErrorCode.InsufficientBalance, \"Insufficient relay fee\");\n // }\n\n // const brokerContract = await getSeamlessBrokerContract(\n // this.configManager.getConfig().brokerAddress,\n // seamlessWallet as any\n // );\n // const forwarderContract = await getForwarderContract(chainId)\n // let functionHash = encodeFunctionData({ abi: Broker_ABI as any, functionName: 'updateOrder', args: [depositData, data] })\n\n // const nonce = await forwarderContract.read.nonces([seamlessWallet.address as `0x${string}`])\n\n // const forwardTxParams = {\n // from: seamlessWallet.address ?? '',\n // to: this.configManager.getConfig().brokerAddress,\n // value: '0',\n // gas: '800000',\n // deadline: dayjs().add(60, 'minute').unix(),\n // data: functionHash,\n // nonce: nonce.toString(),\n // }\n\n // this.logger.info(\"createIncreaseOrder forward tx params --->\", forwardTxParams)\n\n // const rs = await this.seamless.forwarderTx(forwardTxParams, chainId, seamlessWallet as any);\n\n // return {\n // code: 0,\n // message: \"update order success\",\n // data: rs,\n // };\n // }\n\n\n if (!this.configManager.hasSigner()) {\n throw new MyxSDKError(MyxErrorCode.InvalidSigner, \"Invalid signer\");\n }\n\n const brokerContract = await getBrokerSingerContract(\n chainId,\n config.brokerAddress\n );\n\n this.logger.info(\"updateOrderTpSl params\", data);\n\n try {\n const needsApproval = await this.utils.needsApproval(\n address,\n chainId,\n params.executionFeeToken,\n networkFee.toString(),\n getContractAddressByChainId(chainId).TRADING_ROUTER,\n );\n\n if (needsApproval) {\n const approvalResult = await this.utils.approveAuthorization({\n chainId: chainId,\n quoteAddress: params.executionFeeToken,\n amount: maxUint256.toString(),\n spenderAddress: getContractAddressByChainId(chainId).TRADING_ROUTER,\n });\n\n if (approvalResult.code !== 0) {\n throw new Error(approvalResult.message);\n }\n }\n\n const gasLimit = await brokerContract.estimateGas!.updateOrder([depositData, data]);\n\n const hash = await brokerContract.write!.updateOrder([depositData, data], {\n gasLimit: (gasLimit * TRADE_GAS_LIMIT_RATIO[chainId as ChainId]) / 100n,\n });\n\n const receipt = await getPublicClient(chainId).waitForTransactionReceipt({ hash });\n this.logger.info(\"updateOrderTpSl receipt\", receipt);\n return {\n code: 0,\n data: receipt,\n message: \"update order success\",\n };\n } catch (error) {\n this.logger.error(\"Error updating order:\", error);\n return {\n code: -1,\n message: \"Failed to update order\",\n };\n }\n }\n\n async getOrders(address: string) {\n\n // Auto-fetch accessToken; refresh if missing or expired\n const accessToken = await this.configManager.getAccessToken();\n\n try {\n const res = await this.api.getOrders(accessToken ?? '', address);\n return {\n code: 0,\n data: res.data,\n };\n } catch (error) {\n this.logger.error(\"Error fetching orders:\", error);\n return {\n code: -1,\n message: \"Failed to fetch orders\",\n };\n }\n }\n\n async getOrderHistory(params: GetHistoryOrdersParams, address: string) {\n const accessToken = await this.configManager.getAccessToken() ?? ''\n\n const res = await this.api.getHistoryOrders({ accessToken, ...params, address });\n return {\n code: 0,\n data: res.data,\n };\n }\n}\n","import { ConfigManager, MyxClientConfig } from \"../config/index.js\";\nimport { decodeEventLog, maxUint256 } from \"viem\";\nimport Emiter_ABI from \"@/abi/Emiter.json\";\nimport { getContractAddressByChainId } from \"@/config/address/index.js\";\nimport { Logger } from \"@/logger\";\nimport { HttpKlineIntervalEnum } from \"@/api\";\nimport { getErrorTextFormError } from \"@/config/error\";\nimport { customErrorMapping } from \"@/config/customErrorMap\";\nimport { KlineResolution } from \"../subscription/types/index.js\";\nimport { MyxErrorCode, MyxSDKError } from \"../error/const.js\";\nimport { getPriceData } from \"@/lp\";\n\nimport {\n getDataProviderContract,\n getBrokerContract,\n getMarketManageContract,\n getTokenContract,\n getERC20Contract,\n ProviderType,\n} from \"@/web3/providers\";\nimport { getPublicClient } from \"@/web3/viemClients.js\";\nimport {\n bigintTradingGasPriceWithRatio,\n bigintTradingGasToRatioCalculator,\n} from \"@/common\";\nimport { CHAIN_INFO } from \"@/config/chains/index\";\n// import { executeAddressByChainId } from \"@/config/address/index.js\";\n\nexport class Utils {\n private configManager: ConfigManager;\n private logger: Logger;\n constructor(configManager: ConfigManager, logger: Logger) {\n this.configManager = configManager;\n this.logger = logger;\n }\n\n getOrderIdFromTransaction(receipt: any): string | null {\n if (!receipt || !receipt.logs) {\n return null;\n }\n\n for (let i = 0; i < receipt.logs.length; i++) {\n const log = receipt.logs[i];\n this.logger.info(`Log ${i}:`, { address: log.address, topics: log.topics, data: log.data });\n try {\n const decoded = decodeEventLog({\n abi: Emiter_ABI as never,\n data: (log.data ?? \"0x\") as `0x${string}`,\n topics: (log.topics ?? []) as [`0x${string}`, ...`0x${string}`[]],\n });\n const args = (decoded as { eventName?: string; args?: { orderId?: unknown } }).args;\n if (decoded.eventName === \"OrderPlaced\" && args?.orderId != null) {\n return String(args.orderId);\n }\n } catch {\n continue;\n }\n }\n // this.logger.warn(\"OrderPlaced event not found in transaction logs\");\n return null;\n }\n\n private async getApproveQuoteAmount(\n account: string,\n chainId: number,\n tokenAddress: string,\n spenderAddress?: string\n ) {\n try {\n if (!tokenAddress || (typeof tokenAddress === \"string\" && !tokenAddress.trim())) {\n throw new Error(\"getApproveQuoteAmount: tokenAddress is required (ERC20 contract address)\");\n }\n const spender = spenderAddress ?? getContractAddressByChainId(chainId).Account;\n const tokenContract = getTokenContract(chainId, tokenAddress);\n const allowance = await tokenContract.read.allowance([account as `0x${string}`, spender as `0x${string}`]);\n return { code: 0, data: String(allowance) };\n } catch (error) {\n this.logger.error(\"Error getting allowance:\", error);\n throw typeof error === \"string\" ? error : (await getErrorTextFormError(error));\n }\n }\n\n async needsApproval(\n account: string,\n chainId: number,\n tokenAddress: string,\n requiredAmount: string,\n spenderAddress?: string\n ): Promise<boolean> {\n try {\n const currentAllowanceRes = await this.getApproveQuoteAmount(\n account,\n chainId,\n tokenAddress,\n spenderAddress\n );\n const currentAllowance = currentAllowanceRes.data;\n const allowanceBigInt = BigInt(currentAllowance);\n const requiredBigInt = BigInt(requiredAmount);\n\n const needsApproval = allowanceBigInt < requiredBigInt;\n\n return needsApproval;\n } catch (error) {\n this.logger.error(\"Error checking approval needs:\", error);\n return true;\n }\n }\n\n async approveAuthorization({\n chainId,\n quoteAddress,\n amount,\n spenderAddress,\n }: {\n chainId: number;\n quoteAddress: string;\n amount?: string;\n spenderAddress?: string;\n signer?: unknown;\n }) {\n try {\n const contract = await getERC20Contract(chainId, quoteAddress);\n const approveAmount = amount ?? maxUint256;\n const spender = spenderAddress ?? getContractAddressByChainId(chainId).Account;\n const gasPrice = await this.getGasPriceByRatio();\n const hash = await contract.write!.approve([spender as `0x${string}`, approveAmount], { gasPrice });\n const client = getPublicClient(chainId);\n await client.waitForTransactionReceipt({ hash });\n return { code: 0, message: \"Approval success\" };\n } catch (error) {\n this.logger.error(\"Approval error:\", error);\n return { code: -1, message: (error as Error)?.message };\n }\n }\n\n async getUserTradingFeeRate(\n assetClass: number,\n riskTier: number,\n chainId: number,\n userAddress?: string\n ): Promise<\n | { code: 0; data: { takerFeeRate: string; makerFeeRate: string; baseTakerFeeRate: string; baseMakerFeeRate: string } }\n | { code: -1; message: string }\n > {\n const config: MyxClientConfig = this.configManager.getConfig();\n const brokerAddress = config.brokerAddress;\n\n try {\n const brokerContract = getBrokerContract(chainId, brokerAddress);\n const targetAddress = userAddress ?? await this.configManager.getSignerAddress(chainId);\n\n const userFeeRate = await brokerContract.read.getUserFeeRate([\n targetAddress as `0x${string}`,\n assetClass,\n riskTier]\n );\n\n return {\n code: 0,\n data: {\n takerFeeRate: userFeeRate[0].toString(),\n makerFeeRate: userFeeRate[1].toString(),\n baseTakerFeeRate: userFeeRate[2].toString(),\n baseMakerFeeRate: userFeeRate[3].toString(),\n },\n };\n } catch (error) {\n this.logger.error(\"Error getting user trading fee rate:\", error);\n return {\n code: -1,\n message: (error as Error)?.message ?? \"Unknown error\",\n };\n }\n }\n\n async getNetworkFee(marketId: string, chainId: number) {\n try {\n const marketManagerContract = await getMarketManageContract(chainId, ProviderType.JSON);\n const networkFee = await marketManagerContract.read.getExecutionFee([marketId as `0x${string}`]);\n return networkFee.toString();\n } catch (error) {\n this.logger.error(\"Error getting network fee:\", error);\n return \"0\";\n }\n }\n\n async getOraclePrice(poolId: string, chainId: number) {\n try {\n const priceData = await getPriceData(chainId, poolId);\n if (!priceData) throw new Error(\"Failed to get price data\");\n return priceData;\n } catch (error) {\n this.logger.error(\"Error getting oracle price:\", error);\n throw error;\n }\n }\n\n async buildUpdatePriceParams(poolId: string, chainId: number) {\n const priceData = await this.getOraclePrice(poolId, chainId);\n if (!priceData) throw new Error(\"Failed to get price data\");\n return [\n {\n poolId: poolId,\n oracleUpdateData: priceData.vaa,\n publishTime: priceData.publishTime,\n oracleType: priceData.oracleType,\n value: priceData.value,\n price: priceData.price,\n },\n ];\n }\n\n transferKlineResolutionToInterval(resolution: KlineResolution) {\n switch (resolution) {\n case \"1m\":\n return HttpKlineIntervalEnum.Minute1;\n case \"5m\":\n return HttpKlineIntervalEnum.Minute5;\n case \"15m\":\n return HttpKlineIntervalEnum.Minute15;\n case \"30m\":\n return HttpKlineIntervalEnum.Minute30;\n case \"1h\":\n return HttpKlineIntervalEnum.Hour1;\n case \"4h\":\n return HttpKlineIntervalEnum.Hour4;\n case \"1d\":\n return HttpKlineIntervalEnum.Day1;\n case \"1w\":\n return HttpKlineIntervalEnum.Week1;\n case \"1M\":\n return HttpKlineIntervalEnum.Month1;\n default:\n throw new MyxSDKError(\n MyxErrorCode.ParamError,\n `Invalid kline resolution: ${resolution}`\n );\n }\n }\n\n async getErrorMessage(error: any, fallbackErrorMessage = \"Unknown error\") {\n try {\n if (typeof error === \"string\") {\n return error;\n }\n if (error instanceof MyxSDKError) {\n return error.message;\n }\n\n const errorText = await getErrorTextFormError(error);\n if (errorText) {\n return errorText.error;\n }\n\n return JSON.stringify(error);\n } catch (error: any) {\n return error?.message ?? error?.toString() ?? fallbackErrorMessage;\n }\n }\n\n async checkSeamlessGas(userAddress: string, chainId: number, forwardFeeToken: string) {\n const marketManagerContract = await getMarketManageContract(chainId, ProviderType.JSON);\n const relayFee = await marketManagerContract.read.getForwardFeeByToken([forwardFeeToken as `0x${string}`]);\n const tokenContract = getTokenContract(chainId, forwardFeeToken);\n const balance = await tokenContract.read.balanceOf([userAddress as `0x${string}`]);\n if (BigInt(relayFee) > 0n && BigInt(balance) < BigInt(relayFee)) return false;\n return true;\n }\n\n async getLiquidityInfo({\n chainId,\n poolId,\n marketPrice,\n }: {\n chainId: number;\n poolId: string;\n marketPrice: string;\n }) {\n try {\n const dataProviderContract = await getDataProviderContract(chainId, ProviderType.JSON);\n // viem read methods require args to be passed as an array, otherwise AbiEncodingLengthMismatchError (Given length: 0) will be thrown\n const poolInfo = await dataProviderContract.read.getPoolInfo([poolId as `0x${string}`, marketPrice]);\n return { code: 0, data: poolInfo };\n } catch (error) {\n this.logger.error(\"Error getting pool info:\", error);\n return { code: -1, message: (error as Error)?.message };\n }\n }\n\n formatErrorMessage(error: any) {\n if (typeof error === \"string\") {\n return error;\n }\n if (error instanceof MyxSDKError) {\n return error.message;\n }\n\n // Handle user rejected transaction\n if (\n error?.code === \"ACTION_REJECTED\" ||\n error?.code === 4001 ||\n error?.info?.error?.code === 4001 ||\n (typeof error?.message === \"string\" &&\n (error.message.toLowerCase().includes(\"user rejected\") ||\n error.message.toLowerCase().includes(\"denied\")))\n ) {\n return \"User Rejected\";\n }\n\n // Try to parse custom error selector\n // First try to get from error.data\n let errorData = error?.data;\n\n // If error.data is missing, try to extract data from error.message\n if (!errorData && error?.message && typeof error.message === \"string\") {\n // Match data=\"0x...\" format\n const dataMatch = error.message.match(/data=[\"'](0x[0-9a-fA-F]+)[\"']/i);\n if (dataMatch && dataMatch[1]) {\n errorData = dataMatch[1];\n }\n }\n\n if (errorData) {\n // Extract selector (first 10 chars: 0x + 8 hex chars)\n const selector =\n typeof errorData === \"string\" && errorData.startsWith(\"0x\")\n ? errorData.slice(0, 10).toLowerCase()\n : null;\n\n if (selector) {\n // Look up in error mapping\n const errorKey = Object.keys(customErrorMapping).find(\n (k) => k.toLowerCase() === selector\n );\n if (errorKey) {\n return customErrorMapping[errorKey];\n }\n }\n }\n\n // Try to extract info from error.reason or error.message\n if (error?.reason) {\n return error.reason;\n }\n if (error?.message) {\n return error.message;\n }\n\n return JSON.stringify(error);\n }\n\n async getGasPriceByRatio() {\n const chainId = this.configManager.getConfig().chainId;\n return (await bigintTradingGasPriceWithRatio(chainId)).gasPrice;\n }\n\n async getGasLimitByRatio(gasLimit: bigint) {\n const chainId = this.configManager.getConfig().chainId;\n const chainInfo = CHAIN_INFO[chainId];\n return bigintTradingGasToRatioCalculator(\n gasLimit,\n chainInfo?.gasLimitRatio ?? 1.3\n );\n }\n}\n","[\n {\n \"type\": \"error\",\n \"name\": \"AddressEmptyCode\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"target\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ERC1967InvalidImplementation\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"implementation\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ERC1967NonPayable\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"FailedCall\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidInitialization\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotAddressManager\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotAllowedIdentifier\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotDependencyManager\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotInitializing\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotProxyAdmin\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"UUPSUnauthorizedCallContext\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"UUPSUnsupportedProxiableUUID\",\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"slot\"\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"BlockHeader\",\n \"inputs\": [\n {\n \"type\": \"uint256\",\n \"name\": \"blockNumber\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"blockTimestamp\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"sequence\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"CollateralAccepted\",\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"quoteDebt\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"baseCollateral\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"quoteCollateral\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"totalQuoteDebt\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"totalBaseCollateral\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"CollateralAdjusted\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"user\",\n \"indexed\": false\n },\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\",\n \"indexed\": false\n },\n {\n \"type\": \"bytes32\",\n \"name\": \"positionId\",\n \"indexed\": false\n },\n {\n \"type\": \"uint8\",\n \"name\": \"direction\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"beforeCollateralAmount\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"afterCollateralAmount\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"EnterDispute\",\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"Exchanged\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"user\",\n \"indexed\": false\n },\n {\n \"type\": \"address\",\n \"name\": \"source\",\n \"indexed\": false\n },\n {\n \"type\": \"address\",\n \"name\": \"target\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"sourceAmount\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"targetAmount\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"price\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"ExecutionMatched\",\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256[]\",\n \"name\": \"triggerOrderIds\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256[]\",\n \"name\": \"matchedOrderIds\",\n \"indexed\": false\n },\n {\n \"type\": \"uint8\",\n \"name\": \"matchType\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"price\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"ExitDispute\",\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"FeeDistributed\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"user\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"orderId\",\n \"indexed\": false\n },\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\",\n \"indexed\": false\n },\n {\n \"type\": \"int32\",\n \"name\": \"tradingFeeRate\",\n \"indexed\": false\n },\n {\n \"type\": \"bool\",\n \"name\": \"isMaker\",\n \"indexed\": false\n },\n {\n \"type\": \"int256\",\n \"name\": \"tradingFee\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"baseTradingFee\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"brokerTradingFee\",\n \"indexed\": false\n },\n {\n \"type\": \"address\",\n \"name\": \"broker\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"referralRebate\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"referrerRebate\",\n \"indexed\": false\n },\n {\n \"type\": \"address\",\n \"name\": \"referrer\",\n \"indexed\": false\n },\n {\n \"type\": \"int256\",\n \"name\": \"reserveFee\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"FundingRateUpdated\",\n \"inputs\": [\n {\n \"type\": \"uint64\",\n \"name\": \"epochs\",\n \"indexed\": false\n },\n {\n \"type\": \"uint64\",\n \"name\": \"duration\",\n \"indexed\": false\n },\n {\n \"type\": \"uint64\",\n \"name\": \"previousEpochTime\",\n \"indexed\": false\n },\n {\n \"type\": \"uint64\",\n \"name\": \"lastEpochTime\",\n \"indexed\": false\n },\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\",\n \"indexed\": false\n },\n {\n \"type\": \"int256\",\n \"name\": \"fundingRate\",\n \"indexed\": false\n },\n {\n \"type\": \"int256\",\n \"name\": \"fundingRateTracker\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"price\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"Initialized\",\n \"inputs\": [\n {\n \"type\": \"uint64\",\n \"name\": \"version\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"LiquidityLockUpdated\",\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\",\n \"indexed\": false\n },\n {\n \"type\": \"uint64\",\n \"name\": \"windowAnchor\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"priceFloor\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"priceCeiling\",\n \"indexed\": false\n },\n {\n \"type\": \"int256\",\n \"name\": \"openInterest\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"LiquidityMigrated\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"user\",\n \"indexed\": false\n },\n {\n \"type\": \"bytes32\",\n \"name\": \"fromPoolId\",\n \"indexed\": false\n },\n {\n \"type\": \"bytes32\",\n \"name\": \"toPoolId\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"lpAmountIn\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"lpAmountOut\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"LiquidityStopOrderCancelled\",\n \"inputs\": [\n {\n \"type\": \"uint256\",\n \"name\": \"orderId\",\n \"indexed\": false\n },\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\",\n \"indexed\": false\n },\n {\n \"type\": \"string\",\n \"name\": \"reason\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"LiquidityStopOrderCreated\",\n \"inputs\": [\n {\n \"type\": \"uint256\",\n \"name\": \"orderId\",\n \"indexed\": false\n },\n {\n \"type\": \"address\",\n \"name\": \"user\",\n \"indexed\": false\n },\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\",\n \"indexed\": false\n },\n {\n \"type\": \"uint8\",\n \"name\": \"poolType\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"amount\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"triggerPrice\",\n \"indexed\": false\n },\n {\n \"type\": \"uint8\",\n \"name\": \"triggerType\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"minQuoteOut\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"LiquidityStopOrderExecuted\",\n \"inputs\": [\n {\n \"type\": \"uint256\",\n \"name\": \"orderId\",\n \"indexed\": false\n },\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\",\n \"indexed\": false\n },\n {\n \"type\": \"address\",\n \"name\": \"executor\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"oraclePrice\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"poolTokenPrice\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"MarketCreated\",\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"marketId\",\n \"indexed\": false\n },\n {\n \"type\": \"address\",\n \"name\": \"deployer\",\n \"indexed\": false\n },\n {\n \"type\": \"address\",\n \"name\": \"quoteToken\",\n \"indexed\": false\n },\n {\n \"type\": \"uint32\",\n \"name\": \"baseReserveRatio\",\n \"indexed\": false\n },\n {\n \"type\": \"uint32\",\n \"name\": \"quoteReserveRatio\",\n \"indexed\": false\n },\n {\n \"type\": \"uint64\",\n \"name\": \"oracleFeeUsd\",\n \"indexed\": false\n },\n {\n \"type\": \"uint64\",\n \"name\": \"oracleRefundFeeUsd\",\n \"indexed\": false\n },\n {\n \"type\": \"uint128\",\n \"name\": \"poolPrimeThreshold\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"OrderCancelled\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"broker\",\n \"indexed\": false\n },\n {\n \"type\": \"address\",\n \"name\": \"user\",\n \"indexed\": false\n },\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"orderId\",\n \"indexed\": false\n },\n {\n \"type\": \"string\",\n \"name\": \"remark\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"OrderFilled\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"broker\",\n \"indexed\": false\n },\n {\n \"type\": \"address\",\n \"name\": \"user\",\n \"indexed\": false\n },\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\",\n \"indexed\": false\n },\n {\n \"type\": \"bytes32\",\n \"name\": \"positionId\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"orderId\",\n \"indexed\": false\n },\n {\n \"type\": \"uint8\",\n \"name\": \"orderType\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"orderSize\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"fillSize\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"filledSize\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"orderPrice\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"fillPrice\",\n \"indexed\": false\n },\n {\n \"type\": \"int256\",\n \"name\": \"realizedPnl\",\n \"indexed\": false\n },\n {\n \"type\": \"int256\",\n \"name\": \"tradingFee\",\n \"indexed\": false\n },\n {\n \"type\": \"int256\",\n \"name\": \"fundingFee\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"executionFeeAmount\",\n \"indexed\": false\n },\n {\n \"type\": \"address\",\n \"name\": \"keeper\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"OrderMarkedADL\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"broker\",\n \"indexed\": false\n },\n {\n \"type\": \"address\",\n \"name\": \"user\",\n \"indexed\": false\n },\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"orderId\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"available\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"requested\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"OrderPlaced\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"broker\",\n \"indexed\": false\n },\n {\n \"type\": \"address\",\n \"name\": \"user\",\n \"indexed\": false\n },\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\",\n \"indexed\": false\n },\n {\n \"type\": \"bytes32\",\n \"name\": \"positionId\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"orderId\",\n \"indexed\": false\n },\n {\n \"type\": \"uint8\",\n \"name\": \"orderType\",\n \"indexed\": false\n },\n {\n \"type\": \"uint8\",\n \"name\": \"operation\",\n \"indexed\": false\n },\n {\n \"type\": \"uint8\",\n \"name\": \"direction\",\n \"indexed\": false\n },\n {\n \"type\": \"uint8\",\n \"name\": \"triggerType\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"collateralAmount\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"size\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"price\",\n \"indexed\": false\n },\n {\n \"type\": \"uint8\",\n \"name\": \"tif\",\n \"indexed\": false\n },\n {\n \"type\": \"bool\",\n \"name\": \"postOnly\",\n \"indexed\": false\n },\n {\n \"type\": \"uint16\",\n \"name\": \"slippagePct\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"executionFeeAmount\",\n \"indexed\": false\n },\n {\n \"type\": \"uint16\",\n \"name\": \"userLeverage\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"OrderUpdated\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"broker\",\n \"indexed\": false\n },\n {\n \"type\": \"address\",\n \"name\": \"user\",\n \"indexed\": false\n },\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"orderId\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"size\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"price\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"tpSize\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"tpPrice\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"slSize\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"slPrice\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"PoolActivated\",\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\",\n \"indexed\": false\n },\n {\n \"type\": \"address\",\n \"name\": \"baseToken\",\n \"indexed\": false\n },\n {\n \"type\": \"address\",\n \"name\": \"quoteToken\",\n \"indexed\": false\n },\n {\n \"type\": \"uint8\",\n \"name\": \"oracleType\",\n \"indexed\": false\n },\n {\n \"type\": \"bytes32\",\n \"name\": \"oracleFeedId\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"PoolDeactivated\",\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\",\n \"indexed\": false\n },\n {\n \"type\": \"address\",\n \"name\": \"baseToken\",\n \"indexed\": false\n },\n {\n \"type\": \"address\",\n \"name\": \"quoteToken\",\n \"indexed\": false\n },\n {\n \"type\": \"string\",\n \"name\": \"remark\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"PoolDeployed\",\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"marketId\",\n \"indexed\": false\n },\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\",\n \"indexed\": false\n },\n {\n \"type\": \"address\",\n \"name\": \"deployer\",\n \"indexed\": false\n },\n {\n \"type\": \"address\",\n \"name\": \"baseToken\",\n \"indexed\": false\n },\n {\n \"type\": \"address\",\n \"name\": \"quoteToken\",\n \"indexed\": false\n },\n {\n \"type\": \"address\",\n \"name\": \"basePoolToken\",\n \"indexed\": false\n },\n {\n \"type\": \"address\",\n \"name\": \"quotePoolToken\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"PoolDeposited\",\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\",\n \"indexed\": false\n },\n {\n \"type\": \"address\",\n \"name\": \"user\",\n \"indexed\": false\n },\n {\n \"type\": \"address\",\n \"name\": \"recipient\",\n \"indexed\": false\n },\n {\n \"type\": \"address\",\n \"name\": \"underlyingToken\",\n \"indexed\": false\n },\n {\n \"type\": \"address\",\n \"name\": \"poolToken\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"underlyingIn\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"poolTokenOut\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"oraclePrice\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"exchangeRate\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"poolTokenPrice\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"PoolFundDistributed\",\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"profits\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"genesisProfits\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"basePoolAmount\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"quotePoolAmount\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"genesisBasePoolAmount\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"genesisQuotePoolAmount\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"exchangedBaseFromProfits\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"exchangedBaseAmount\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"PoolFundingFeeSettled\",\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\",\n \"indexed\": false\n },\n {\n \"type\": \"int256\",\n \"name\": \"prevFundingRateTracker\",\n \"indexed\": false\n },\n {\n \"type\": \"int256\",\n \"name\": \"nextFundingRateTracker\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"price\",\n \"indexed\": false\n },\n {\n \"type\": \"uint8\",\n \"name\": \"direction\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"positionSize\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"fundingFee\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"PoolPreDeactivated\",\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\",\n \"indexed\": false\n },\n {\n \"type\": \"string\",\n \"name\": \"remark\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"PoolPrimed\",\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\",\n \"indexed\": false\n },\n {\n \"type\": \"address\",\n \"name\": \"baseToken\",\n \"indexed\": false\n },\n {\n \"type\": \"address\",\n \"name\": \"quoteToken\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"baseAmount\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"quoteAmount\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"PoolRebateClaimed\",\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\",\n \"indexed\": false\n },\n {\n \"type\": \"address\",\n \"name\": \"user\",\n \"indexed\": false\n },\n {\n \"type\": \"address\",\n \"name\": \"recipient\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"amount\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"PoolRefunded\",\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\",\n \"indexed\": false\n },\n {\n \"type\": \"address\",\n \"name\": \"receiver\",\n \"indexed\": false\n },\n {\n \"type\": \"address\",\n \"name\": \"baseToken\",\n \"indexed\": false\n },\n {\n \"type\": \"address\",\n \"name\": \"quoteToken\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"baseAmount\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"quoteAmount\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"PoolReprimed\",\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\",\n \"indexed\": false\n },\n {\n \"type\": \"address\",\n \"name\": \"primer\",\n \"indexed\": false\n },\n {\n \"type\": \"address\",\n \"name\": \"token\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"amount\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"PoolSettlementRecorded\",\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"orderId\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"poolEntryPrice\",\n \"indexed\": false\n },\n {\n \"type\": \"int256\",\n \"name\": \"realizedPnl\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"PoolWithdrawn\",\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\",\n \"indexed\": false\n },\n {\n \"type\": \"address\",\n \"name\": \"user\",\n \"indexed\": false\n },\n {\n \"type\": \"address\",\n \"name\": \"recipient\",\n \"indexed\": false\n },\n {\n \"type\": \"address\",\n \"name\": \"underlyingToken\",\n \"indexed\": false\n },\n {\n \"type\": \"address\",\n \"name\": \"poolToken\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"poolTokenIn\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"underlyingOut\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"rebateOut\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"oraclePrice\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"exchangeRate\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"poolTokenPrice\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"PositionEarlyClosed\",\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\",\n \"indexed\": false\n },\n {\n \"type\": \"bytes32\",\n \"name\": \"positionId\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"orderId\",\n \"indexed\": false\n },\n {\n \"type\": \"address\",\n \"name\": \"broker\",\n \"indexed\": false\n },\n {\n \"type\": \"address\",\n \"name\": \"user\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"positionSize\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"executeSize\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"executePrice\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"PositionForceClosed\",\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\",\n \"indexed\": false\n },\n {\n \"type\": \"bytes32\",\n \"name\": \"positionId\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"orderId\",\n \"indexed\": false\n },\n {\n \"type\": \"address\",\n \"name\": \"broker\",\n \"indexed\": false\n },\n {\n \"type\": \"address\",\n \"name\": \"user\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"positionSize\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"executePrice\",\n \"indexed\": false\n },\n {\n \"type\": \"string\",\n \"name\": \"reason\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"PositionLiquidated\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"broker\",\n \"indexed\": false\n },\n {\n \"type\": \"address\",\n \"name\": \"user\",\n \"indexed\": false\n },\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\",\n \"indexed\": false\n },\n {\n \"type\": \"bytes32\",\n \"name\": \"positionId\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"orderId\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"positionSize\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"liquidationSize\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"liquidationPrice\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"PositionNFTMinted\",\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\",\n \"indexed\": false\n },\n {\n \"type\": \"bytes32\",\n \"name\": \"oldPositionId\",\n \"indexed\": false\n },\n {\n \"type\": \"bytes32\",\n \"name\": \"newPositionId\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"tokenId\",\n \"indexed\": false\n },\n {\n \"type\": \"address\",\n \"name\": \"owner\",\n \"indexed\": false\n },\n {\n \"type\": \"address\",\n \"name\": \"recipient\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"PositionRiskControlDataMigrated\",\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"from\",\n \"indexed\": false\n },\n {\n \"type\": \"bytes32\",\n \"name\": \"to\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"PositionRiskControlDataUpdated\",\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\",\n \"indexed\": false\n },\n {\n \"type\": \"bytes32\",\n \"name\": \"positionId\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"freeAmount\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"lockedAmount\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"PositionTransfer\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"from\",\n \"indexed\": false\n },\n {\n \"type\": \"address\",\n \"name\": \"to\",\n \"indexed\": false\n },\n {\n \"type\": \"bytes32\",\n \"name\": \"positionId\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"PositionUpdated\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"broker\",\n \"indexed\": false\n },\n {\n \"type\": \"address\",\n \"name\": \"owner\",\n \"indexed\": false\n },\n {\n \"type\": \"bytes32\",\n \"name\": \"positionId\",\n \"indexed\": false\n },\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\",\n \"indexed\": false\n },\n {\n \"type\": \"uint8\",\n \"name\": \"direction\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"orderId\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"beforeSize\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"afterSize\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"beforeCollateralAmount\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"afterCollateralAmount\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"entryPrice\",\n \"indexed\": false\n },\n {\n \"type\": \"int256\",\n \"name\": \"fundingRateIndex\",\n \"indexed\": false\n },\n {\n \"type\": \"uint8\",\n \"name\": \"riskTier\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"earlyClosePrice\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"ReferralRebateClaimed\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"user\",\n \"indexed\": false\n },\n {\n \"type\": \"address\",\n \"name\": \"token\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"amount\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"ReserveRebateCollected\",\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\",\n \"indexed\": false\n },\n {\n \"type\": \"address\",\n \"name\": \"token\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"amount\",\n \"indexed\": false\n },\n {\n \"type\": \"address\",\n \"name\": \"keeper\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"poolAmount\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"stakingAmount\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"keeperAmount\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"treasuryAmount\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"reservedAmount\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"ecoFundAmount\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"ReserveRebateDisbursed\",\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\",\n \"indexed\": false\n },\n {\n \"type\": \"address\",\n \"name\": \"token\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"amount\",\n \"indexed\": false\n },\n {\n \"type\": \"address\",\n \"name\": \"keeper\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"poolAmount\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"stakingAmount\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"keeperAmount\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"treasuryAmount\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"reservedAmount\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"ecoFundAmount\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"TradingFeeTierUpdated\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"broker\",\n \"indexed\": false\n },\n {\n \"type\": \"uint8\",\n \"name\": \"feeType\",\n \"indexed\": false\n },\n {\n \"type\": \"uint8\",\n \"name\": \"tier\",\n \"indexed\": false\n },\n {\n \"type\": \"uint32\",\n \"name\": \"takerFeeRate\",\n \"indexed\": false\n },\n {\n \"type\": \"int32\",\n \"name\": \"makerFeeRate\",\n \"indexed\": false\n },\n {\n \"type\": \"bool\",\n \"name\": \"isEnabled\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"Upgraded\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"implementation\",\n \"indexed\": true\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"UserFeeDataUpdated\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"broker\",\n \"indexed\": false\n },\n {\n \"type\": \"address\",\n \"name\": \"signer\",\n \"indexed\": false\n },\n {\n \"type\": \"address\",\n \"name\": \"user\",\n \"indexed\": false\n },\n {\n \"type\": \"uint8\",\n \"name\": \"tier\",\n \"indexed\": false\n },\n {\n \"type\": \"address\",\n \"name\": \"referrer\",\n \"indexed\": false\n },\n {\n \"type\": \"uint32\",\n \"name\": \"totalReferralRebatePct\",\n \"indexed\": false\n },\n {\n \"type\": \"uint32\",\n \"name\": \"referrerRebatePct\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"UserSettlementRecorded\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"user\",\n \"indexed\": false\n },\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\",\n \"indexed\": false\n },\n {\n \"type\": \"uint256\",\n \"name\": \"orderId\",\n \"indexed\": false\n },\n {\n \"type\": \"int256\",\n \"name\": \"charge\",\n \"indexed\": false\n },\n {\n \"type\": \"int256\",\n \"name\": \"realizedPnl\",\n \"indexed\": false\n },\n {\n \"type\": \"int256\",\n \"name\": \"tradingFee\",\n \"indexed\": false\n },\n {\n \"type\": \"int256\",\n \"name\": \"fundingFee\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"event\",\n \"anonymous\": false,\n \"name\": \"UserSpecialFeeTierUpdated\",\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"broker\",\n \"indexed\": false\n },\n {\n \"type\": \"address\",\n \"name\": \"user\",\n \"indexed\": false\n },\n {\n \"type\": \"uint8\",\n \"name\": \"oldTier\",\n \"indexed\": false\n },\n {\n \"type\": \"uint8\",\n \"name\": \"newTier\",\n \"indexed\": false\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"UPGRADE_INTERFACE_VERSION\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"string\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"emitCollateralAccepted\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"tuple\",\n \"name\": \"params\",\n \"components\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"quoteDebt\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"baseCollateral\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"quoteCollateral\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"totalQuoteDebt\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"totalBaseCollateral\"\n }\n ]\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"emitCollateralAdjusted\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"tuple\",\n \"name\": \"params\",\n \"components\": [\n {\n \"type\": \"address\",\n \"name\": \"user\"\n },\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"bytes32\",\n \"name\": \"positionId\"\n },\n {\n \"type\": \"uint8\",\n \"name\": \"direction\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"beforeCollateralAmount\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"afterCollateralAmount\"\n }\n ]\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"emitEnterDispute\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"emitExchanged\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"tuple\",\n \"name\": \"params\",\n \"components\": [\n {\n \"type\": \"address\",\n \"name\": \"user\"\n },\n {\n \"type\": \"address\",\n \"name\": \"source\"\n },\n {\n \"type\": \"address\",\n \"name\": \"target\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"sourceAmount\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"targetAmount\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"price\"\n }\n ]\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"emitExecutionMatched\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"tuple\",\n \"name\": \"params\",\n \"components\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"uint256[]\",\n \"name\": \"triggerOrderIds\"\n },\n {\n \"type\": \"uint256[]\",\n \"name\": \"matchedOrderIds\"\n },\n {\n \"type\": \"uint8\",\n \"name\": \"matchType\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"price\"\n }\n ]\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"emitExitDispute\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"emitFundingRateUpdated\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"tuple\",\n \"name\": \"params\",\n \"components\": [\n {\n \"type\": \"uint64\",\n \"name\": \"epochs\"\n },\n {\n \"type\": \"uint64\",\n \"name\": \"duration\"\n },\n {\n \"type\": \"uint64\",\n \"name\": \"previousEpochTime\"\n },\n {\n \"type\": \"uint64\",\n \"name\": \"lastEpochTime\"\n },\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"int256\",\n \"name\": \"fundingRate\"\n },\n {\n \"type\": \"int256\",\n \"name\": \"fundingRateTracker\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"price\"\n }\n ]\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"emitLiquidityLockUpdated\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"tuple\",\n \"name\": \"params\",\n \"components\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"uint64\",\n \"name\": \"windowAnchor\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"priceFloor\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"priceCeiling\"\n },\n {\n \"type\": \"int256\",\n \"name\": \"openInterest\"\n }\n ]\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"emitLiquidityMigrated\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"tuple\",\n \"name\": \"params\",\n \"components\": [\n {\n \"type\": \"address\",\n \"name\": \"user\"\n },\n {\n \"type\": \"bytes32\",\n \"name\": \"fromPoolId\"\n },\n {\n \"type\": \"bytes32\",\n \"name\": \"toPoolId\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"lpAmountIn\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"lpAmountOut\"\n }\n ]\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"emitLiquidityStopOrderCancelled\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"tuple\",\n \"name\": \"params\",\n \"components\": [\n {\n \"type\": \"uint256\",\n \"name\": \"orderId\"\n },\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"string\",\n \"name\": \"reason\"\n }\n ]\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"emitLiquidityStopOrderCreated\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"tuple\",\n \"name\": \"params\",\n \"components\": [\n {\n \"type\": \"uint256\",\n \"name\": \"orderId\"\n },\n {\n \"type\": \"address\",\n \"name\": \"user\"\n },\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"uint8\",\n \"name\": \"poolType\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"amount\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"triggerPrice\"\n },\n {\n \"type\": \"uint8\",\n \"name\": \"triggerType\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"minQuoteOut\"\n }\n ]\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"emitLiquidityStopOrderExecuted\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"tuple\",\n \"name\": \"params\",\n \"components\": [\n {\n \"type\": \"uint256\",\n \"name\": \"orderId\"\n },\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"address\",\n \"name\": \"executor\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"oraclePrice\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"poolTokenPrice\"\n }\n ]\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"emitMarketCreated\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"tuple\",\n \"name\": \"params\",\n \"components\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"marketId\"\n },\n {\n \"type\": \"address\",\n \"name\": \"deployer\"\n },\n {\n \"type\": \"address\",\n \"name\": \"quoteToken\"\n },\n {\n \"type\": \"uint32\",\n \"name\": \"baseReserveRatio\"\n },\n {\n \"type\": \"uint32\",\n \"name\": \"quoteReserveRatio\"\n },\n {\n \"type\": \"uint64\",\n \"name\": \"oracleFeeUsd\"\n },\n {\n \"type\": \"uint64\",\n \"name\": \"oracleRefundFeeUsd\"\n },\n {\n \"type\": \"uint128\",\n \"name\": \"poolPrimeThreshold\"\n }\n ]\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"emitOrderCancelled\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"tuple\",\n \"name\": \"params\",\n \"components\": [\n {\n \"type\": \"address\",\n \"name\": \"broker\"\n },\n {\n \"type\": \"address\",\n \"name\": \"user\"\n },\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"orderId\"\n },\n {\n \"type\": \"string\",\n \"name\": \"remark\"\n }\n ]\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"emitOrderFilled\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"tuple\",\n \"name\": \"params\",\n \"components\": [\n {\n \"type\": \"address\",\n \"name\": \"broker\"\n },\n {\n \"type\": \"address\",\n \"name\": \"user\"\n },\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"bytes32\",\n \"name\": \"positionId\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"orderId\"\n },\n {\n \"type\": \"uint8\",\n \"name\": \"orderType\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"orderSize\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"fillSize\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"filledSize\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"orderPrice\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"fillPrice\"\n },\n {\n \"type\": \"int256\",\n \"name\": \"realizedPnl\"\n },\n {\n \"type\": \"int256\",\n \"name\": \"tradingFee\"\n },\n {\n \"type\": \"int256\",\n \"name\": \"fundingFee\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"executionFeeAmount\"\n },\n {\n \"type\": \"address\",\n \"name\": \"keeper\"\n }\n ]\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"emitOrderMarkedADL\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"tuple\",\n \"name\": \"params\",\n \"components\": [\n {\n \"type\": \"address\",\n \"name\": \"broker\"\n },\n {\n \"type\": \"address\",\n \"name\": \"user\"\n },\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"orderId\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"available\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"requested\"\n }\n ]\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"emitOrderPlaced\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"tuple\",\n \"name\": \"params\",\n \"components\": [\n {\n \"type\": \"address\",\n \"name\": \"broker\"\n },\n {\n \"type\": \"address\",\n \"name\": \"user\"\n },\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"bytes32\",\n \"name\": \"positionId\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"orderId\"\n },\n {\n \"type\": \"uint8\",\n \"name\": \"orderType\"\n },\n {\n \"type\": \"uint8\",\n \"name\": \"operation\"\n },\n {\n \"type\": \"uint8\",\n \"name\": \"direction\"\n },\n {\n \"type\": \"uint8\",\n \"name\": \"triggerType\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"collateralAmount\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"size\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"price\"\n },\n {\n \"type\": \"uint8\",\n \"name\": \"tif\"\n },\n {\n \"type\": \"bool\",\n \"name\": \"postOnly\"\n },\n {\n \"type\": \"uint16\",\n \"name\": \"slippagePct\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"executionFeeAmount\"\n },\n {\n \"type\": \"uint16\",\n \"name\": \"userLeverage\"\n }\n ]\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"emitOrderUpdated\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"tuple\",\n \"name\": \"params\",\n \"components\": [\n {\n \"type\": \"address\",\n \"name\": \"broker\"\n },\n {\n \"type\": \"address\",\n \"name\": \"user\"\n },\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"orderId\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"size\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"price\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"tpSize\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"tpPrice\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"slSize\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"slPrice\"\n }\n ]\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"emitPoolActivated\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"tuple\",\n \"name\": \"params\",\n \"components\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"address\",\n \"name\": \"baseToken\"\n },\n {\n \"type\": \"address\",\n \"name\": \"quoteToken\"\n },\n {\n \"type\": \"uint8\",\n \"name\": \"oracleType\"\n },\n {\n \"type\": \"bytes32\",\n \"name\": \"oracleFeedId\"\n }\n ]\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"emitPoolDeactivated\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"tuple\",\n \"name\": \"params\",\n \"components\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"address\",\n \"name\": \"baseToken\"\n },\n {\n \"type\": \"address\",\n \"name\": \"quoteToken\"\n },\n {\n \"type\": \"string\",\n \"name\": \"remark\"\n }\n ]\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"emitPoolDeployed\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"tuple\",\n \"name\": \"params\",\n \"components\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"marketId\"\n },\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"address\",\n \"name\": \"deployer\"\n },\n {\n \"type\": \"address\",\n \"name\": \"baseToken\"\n },\n {\n \"type\": \"address\",\n \"name\": \"quoteToken\"\n },\n {\n \"type\": \"address\",\n \"name\": \"basePoolToken\"\n },\n {\n \"type\": \"address\",\n \"name\": \"quotePoolToken\"\n }\n ]\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"emitPoolDeposited\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"tuple\",\n \"name\": \"params\",\n \"components\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"address\",\n \"name\": \"user\"\n },\n {\n \"type\": \"address\",\n \"name\": \"recipient\"\n },\n {\n \"type\": \"address\",\n \"name\": \"underlyingToken\"\n },\n {\n \"type\": \"address\",\n \"name\": \"poolToken\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"underlyingIn\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"poolTokenOut\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"oraclePrice\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"exchangeRate\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"poolTokenPrice\"\n }\n ]\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"emitPoolFundDistributed\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"tuple\",\n \"name\": \"params\",\n \"components\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"profits\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"genesisProfits\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"basePoolAmount\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"quotePoolAmount\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"genesisBasePoolAmount\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"genesisQuotePoolAmount\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"exchangedBaseFromProfits\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"exchangedBaseAmount\"\n }\n ]\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"emitPoolFundingFeeSettled\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"tuple\",\n \"name\": \"params\",\n \"components\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"int256\",\n \"name\": \"prevFundingRateTracker\"\n },\n {\n \"type\": \"int256\",\n \"name\": \"nextFundingRateTracker\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"price\"\n },\n {\n \"type\": \"uint8\",\n \"name\": \"direction\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"positionSize\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"fundingFee\"\n }\n ]\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"emitPoolPreDeactivated\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"tuple\",\n \"name\": \"params\",\n \"components\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"string\",\n \"name\": \"remark\"\n }\n ]\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"emitPoolPrimed\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"tuple\",\n \"name\": \"params\",\n \"components\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"address\",\n \"name\": \"baseToken\"\n },\n {\n \"type\": \"address\",\n \"name\": \"quoteToken\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"baseAmount\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"quoteAmount\"\n }\n ]\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"emitPoolRebateClaimed\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"tuple\",\n \"name\": \"params\",\n \"components\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"address\",\n \"name\": \"user\"\n },\n {\n \"type\": \"address\",\n \"name\": \"recipient\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"amount\"\n }\n ]\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"emitPoolRefunded\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"tuple\",\n \"name\": \"params\",\n \"components\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"address\",\n \"name\": \"receiver\"\n },\n {\n \"type\": \"address\",\n \"name\": \"baseToken\"\n },\n {\n \"type\": \"address\",\n \"name\": \"quoteToken\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"baseAmount\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"quoteAmount\"\n }\n ]\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"emitPoolReprimed\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"tuple\",\n \"name\": \"params\",\n \"components\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"address\",\n \"name\": \"primer\"\n },\n {\n \"type\": \"address\",\n \"name\": \"token\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"amount\"\n }\n ]\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"emitPoolSettlementRecorded\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"tuple\",\n \"name\": \"params\",\n \"components\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"orderId\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"poolEntryPrice\"\n },\n {\n \"type\": \"int256\",\n \"name\": \"realizedPnl\"\n }\n ]\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"emitPoolWithdrawn\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"tuple\",\n \"name\": \"params\",\n \"components\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"address\",\n \"name\": \"user\"\n },\n {\n \"type\": \"address\",\n \"name\": \"recipient\"\n },\n {\n \"type\": \"address\",\n \"name\": \"underlyingToken\"\n },\n {\n \"type\": \"address\",\n \"name\": \"poolToken\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"poolTokenIn\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"underlyingOut\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"rebateOut\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"oraclePrice\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"exchangeRate\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"poolTokenPrice\"\n }\n ]\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"emitPositionEarlyClosed\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"tuple\",\n \"name\": \"params\",\n \"components\": [\n {\n \"type\": \"address\",\n \"name\": \"broker\"\n },\n {\n \"type\": \"address\",\n \"name\": \"user\"\n },\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"bytes32\",\n \"name\": \"positionId\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"orderId\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"positionSize\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"executeSize\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"executePrice\"\n }\n ]\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"emitPositionForceClosed\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"tuple\",\n \"name\": \"params\",\n \"components\": [\n {\n \"type\": \"address\",\n \"name\": \"broker\"\n },\n {\n \"type\": \"address\",\n \"name\": \"user\"\n },\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"bytes32\",\n \"name\": \"positionId\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"orderId\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"positionSize\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"executePrice\"\n },\n {\n \"type\": \"string\",\n \"name\": \"reason\"\n }\n ]\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"emitPositionLiquidated\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"tuple\",\n \"name\": \"params\",\n \"components\": [\n {\n \"type\": \"address\",\n \"name\": \"broker\"\n },\n {\n \"type\": \"address\",\n \"name\": \"user\"\n },\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"bytes32\",\n \"name\": \"positionId\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"orderId\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"positionSize\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"liquidationSize\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"liquidationPrice\"\n }\n ]\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"emitPositionNFTMinted\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"tuple\",\n \"name\": \"params\",\n \"components\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"bytes32\",\n \"name\": \"oldPositionId\"\n },\n {\n \"type\": \"bytes32\",\n \"name\": \"newPositionId\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"tokenId\"\n },\n {\n \"type\": \"address\",\n \"name\": \"owner\"\n },\n {\n \"type\": \"address\",\n \"name\": \"recipient\"\n }\n ]\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"emitPositionRiskControlDataMigrated\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"tuple\",\n \"name\": \"params\",\n \"components\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"from\"\n },\n {\n \"type\": \"bytes32\",\n \"name\": \"to\"\n }\n ]\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"emitPositionRiskControlDataUpdated\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"tuple\",\n \"name\": \"params\",\n \"components\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"bytes32\",\n \"name\": \"positionId\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"freeAmount\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"lockedAmount\"\n }\n ]\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"emitPositionTransfer\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"tuple\",\n \"name\": \"params\",\n \"components\": [\n {\n \"type\": \"address\",\n \"name\": \"from\"\n },\n {\n \"type\": \"address\",\n \"name\": \"to\"\n },\n {\n \"type\": \"bytes32\",\n \"name\": \"positionId\"\n }\n ]\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"emitPositionUpdated\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"tuple\",\n \"name\": \"params\",\n \"components\": [\n {\n \"type\": \"address\",\n \"name\": \"broker\"\n },\n {\n \"type\": \"address\",\n \"name\": \"owner\"\n },\n {\n \"type\": \"bytes32\",\n \"name\": \"positionId\"\n },\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"uint8\",\n \"name\": \"direction\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"orderId\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"beforeSize\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"afterSize\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"beforeCollateralAmount\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"afterCollateralAmount\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"entryPrice\"\n },\n {\n \"type\": \"int256\",\n \"name\": \"fundingRateIndex\"\n },\n {\n \"type\": \"uint8\",\n \"name\": \"riskTier\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"earlyClosePrice\"\n }\n ]\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"emitReferralRebateClaimed\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"tuple\",\n \"name\": \"params\",\n \"components\": [\n {\n \"type\": \"address\",\n \"name\": \"user\"\n },\n {\n \"type\": \"address\",\n \"name\": \"token\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"amount\"\n }\n ]\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"emitReserveRebateCollected\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"tuple\",\n \"name\": \"params\",\n \"components\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"address\",\n \"name\": \"token\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"amount\"\n },\n {\n \"type\": \"address\",\n \"name\": \"keeper\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"poolAmount\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"stakingAmount\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"keeperAmount\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"treasuryAmount\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"reservedAmount\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"ecoFundAmount\"\n }\n ]\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"emitReserveRebateDisbursed\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"tuple\",\n \"name\": \"params\",\n \"components\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"address\",\n \"name\": \"token\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"amount\"\n },\n {\n \"type\": \"address\",\n \"name\": \"keeper\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"poolAmount\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"stakingAmount\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"keeperAmount\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"treasuryAmount\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"reservedAmount\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"ecoFundAmount\"\n }\n ]\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"emitTradingFeeTierUpdated\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"tuple\",\n \"name\": \"params\",\n \"components\": [\n {\n \"type\": \"address\",\n \"name\": \"broker\"\n },\n {\n \"type\": \"uint8\",\n \"name\": \"feeType\"\n },\n {\n \"type\": \"uint8\",\n \"name\": \"tier\"\n },\n {\n \"type\": \"uint32\",\n \"name\": \"takerFeeRate\"\n },\n {\n \"type\": \"int32\",\n \"name\": \"makerFeeRate\"\n },\n {\n \"type\": \"bool\",\n \"name\": \"isEnabled\"\n }\n ]\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"emitUserFeeDataUpdated\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"tuple\",\n \"name\": \"params\",\n \"components\": [\n {\n \"type\": \"address\",\n \"name\": \"broker\"\n },\n {\n \"type\": \"address\",\n \"name\": \"signer\"\n },\n {\n \"type\": \"address\",\n \"name\": \"user\"\n },\n {\n \"type\": \"uint8\",\n \"name\": \"tier\"\n },\n {\n \"type\": \"address\",\n \"name\": \"referrer\"\n },\n {\n \"type\": \"uint32\",\n \"name\": \"totalReferralRebatePct\"\n },\n {\n \"type\": \"uint32\",\n \"name\": \"referrerRebatePct\"\n }\n ]\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"emitUserFeeSettlementAndDistributed\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"tuple\",\n \"name\": \"params\",\n \"components\": [\n {\n \"type\": \"address\",\n \"name\": \"user\"\n },\n {\n \"type\": \"bytes32\",\n \"name\": \"poolId\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"orderId\"\n },\n {\n \"type\": \"int256\",\n \"name\": \"charge\"\n },\n {\n \"type\": \"int256\",\n \"name\": \"realizedPnl\"\n },\n {\n \"type\": \"int256\",\n \"name\": \"tradingFee\"\n },\n {\n \"type\": \"int256\",\n \"name\": \"fundingFee\"\n },\n {\n \"type\": \"int32\",\n \"name\": \"tradingFeeRate\"\n },\n {\n \"type\": \"bool\",\n \"name\": \"isMaker\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"baseTradingFee\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"brokerTradingFee\"\n },\n {\n \"type\": \"address\",\n \"name\": \"broker\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"referralRebate\"\n },\n {\n \"type\": \"uint256\",\n \"name\": \"referrerRebate\"\n },\n {\n \"type\": \"address\",\n \"name\": \"referrer\"\n },\n {\n \"type\": \"int256\",\n \"name\": \"reserveFee\"\n }\n ]\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"emitUserSpecialFeeTierUpdated\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"tuple\",\n \"name\": \"params\",\n \"components\": [\n {\n \"type\": \"address\",\n \"name\": \"broker\"\n },\n {\n \"type\": \"address\",\n \"name\": \"user\"\n },\n {\n \"type\": \"uint8\",\n \"name\": \"oldTier\"\n },\n {\n \"type\": \"uint8\",\n \"name\": \"newTier\"\n }\n ]\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"getAddressManager\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"address\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"getDependencyAddress\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"bytes32\",\n \"name\": \"identifier\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"address\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"getImplementation\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"address\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"initialize\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"addressManager\"\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"isBlockHeaderEmitted\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"uint256\",\n \"name\": \"blockNumber\"\n }\n ],\n \"outputs\": [\n {\n \"type\": \"bool\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"proxiableUUID\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"registerContract\",\n \"constant\": false,\n \"payable\": false,\n \"inputs\": [\n {\n \"type\": \"bytes32[]\",\n \"name\": \"identifiers\"\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"sequencer\",\n \"constant\": true,\n \"stateMutability\": \"view\",\n \"payable\": false,\n \"inputs\": [],\n \"outputs\": [\n {\n \"type\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"upgradeTo\",\n \"constant\": false,\n \"stateMutability\": \"payable\",\n \"payable\": true,\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"newImplementation\"\n },\n {\n \"type\": \"bytes\",\n \"name\": \"data\"\n }\n ],\n \"outputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"upgradeToAndCall\",\n \"constant\": false,\n \"stateMutability\": \"payable\",\n \"payable\": true,\n \"inputs\": [\n {\n \"type\": \"address\",\n \"name\": \"newImplementation\"\n },\n {\n \"type\": \"bytes\",\n \"name\": \"data\"\n }\n ],\n \"outputs\": []\n }\n]\n","export const customErrorMapping: Record<string, string> = {\n \"0xfa52dfc0\": \"AccountInsufficientFreeAmount()\",\n \"0xe2a1a260\": \"AccountInsufficientReservedAmount()\",\n \"0xffd10028\": \"AccountInsufficientTradableAmount(uint256,uint256)\",\n \"0x9996b315\": \"AddressEmptyCode(address)\",\n \"0x4c9c8ce3\": \"ERC1967InvalidImplementation(address)\",\n \"0xb398979f\": \"ERC1967NonPayable()\",\n \"0xd6bda275\": \"FailedCall()\",\n \"0xf92ee8a9\": \"InvalidInitialization()\",\n \"0x44d3438f\": \"NotAddressManager()\",\n \"0x3fc81f20\": \"NotDependencyManager()\",\n \"0xd7e6bcf8\": \"NotInitializing()\",\n \"0x507f487a\": \"NotProxyAdmin()\",\n \"0xe03f6024\": \"PermissionDenied(address,address)\",\n \"0x5274afe7\": \"SafeERC20FailedOperation(address)\",\n \"0xe07c8dba\": \"UUPSUnauthorizedCallContext()\",\n \"0xaa1d49a4\": \"UUPSUnsupportedProxiableUUID(bytes32)\",\n \"0x24775e06\": \"SafeCastOverflowedUintToInt(uint256)\",\n \"0xba767932\": \"ConvertAmountMismatch(uint256,uint256)\",\n \"0xd93c0665\": \"EnforcedPause()\",\n \"0x8dfc202b\": \"ExpectedPause()\",\n \"0x059e2f49\": \"InRewindMode()\",\n \"0x42301c23\": \"InsufficientOutputAmount()\",\n \"0xcaa99aac\": \"MismatchExecuteFee(uint256,uint256,uint256)\",\n \"0x8637dfc0\": \"NotInRewindMode()\",\n \"0x4578ddb8\": \"OnlyRelayer()\",\n \"0x1e4fbdf7\": \"OwnableInvalidOwner(address)\",\n \"0x118cdaa7\": \"OwnableUnauthorizedAccount(address)\",\n \"0x3ee5aeb5\": \"ReentrancyGuardReentrantCall()\",\n \"0x90b8ec18\": \"TransferFailed()\",\n \"0xbe1af266\": \"InternalOnly()\",\n \"0x3385aa1f\": \"ExceedOrderSize(uint256)\",\n \"0xb07e3bc4\": \"InsufficientCollateral(uint256,uint256)\",\n \"0x613970e0\": \"InvalidParameter()\",\n \"0x27d08510\": \"NotActiveBroker(address)\",\n \"0xf6412b5a\": \"NotOrderOwner()\",\n \"0x70d645e3\": \"NotPositionOwner()\",\n \"0xe75316c6\": \"OrderNotExist(OrderId)\",\n \"0xba01b06f\": \"PoolNotActive(PoolId)\",\n \"0xddefae28\": \"AlreadyMinted()\",\n \"0x64283d7b\": \"ERC721IncorrectOwner(address,uint256,address)\",\n \"0x177e802f\": \"ERC721InsufficientApproval(address,uint256)\",\n \"0xa9fbf51f\": \"ERC721InvalidApprover(address)\",\n \"0x5b08ba18\": \"ERC721InvalidOperator(address)\",\n \"0x89c62b64\": \"ERC721InvalidOwner(address)\",\n \"0x64a0ae92\": \"ERC721InvalidReceiver(address)\",\n \"0x73c6ac6e\": \"ERC721InvalidSender(address)\",\n \"0x7e273289\": \"ERC721NonexistentToken(uint256)\",\n \"0xb4762117\": \"ExceedMaxLeverage(PositionId)\",\n \"0x29143a42\": \"ExceedPositionSize()\",\n \"0x8ea9158f\": \"InvalidPosition(PositionId)\",\n \"0xa5afd143\": \"PositionNotHealthy(PositionId,uint256)\",\n \"0xba0d3752\": \"PositionNotInitialized(PositionId)\",\n \"0xc20f35b7\": \"UnderflowOI()\",\n \"0xf4d678b8\": \"InsufficientBalance()\",\n \"0x6aee3c1a\": \"InsufficientRiskReserves()\",\n \"0x2c5211c6\": \"InvalidAmount()\",\n \"0x82cb17ef\": \"InvalidSplitConfig()\",\n \"0xe921c36b\": \"AlreadyMigrated(PositionId,PositionId)\",\n \"0xd34e366f\": \"ExceedBaseCollateral(uint256,uint256)\",\n \"0xc7544914\": \"ExceedDebt(uint256,uint256)\",\n \"0xe7aa687a\": \"ExceedExchangeable()\",\n \"0x4b3c8f33\": \"ExceedMaxBaseProfit()\",\n \"0xdc82bd68\": \"ExceedMinOutputAmount()\",\n \"0xdb42144d\": \"InsufficientBalance(address,uint256,uint256)\",\n \"0x5646203f\": \"InsufficientCollateral(PositionId,uint256)\",\n \"0x9ac13039\": \"InsufficientPoolProfit()\",\n \"0x14be833f\": \"InsufficientReturnAmount(uint256,uint256)\",\n \"0x419ecd12\": \"MatchNotSupported()\",\n \"0x4ec4fd74\": \"PoolFundingFeeNotPositive(int256,uint256,Direction)\",\n \"0xba8f5df5\": \"PoolNotCompoundable(PoolId)\",\n \"0xf645eedf\": \"ECDSAInvalidSignature()\",\n \"0xfce698f7\": \"ECDSAInvalidSignatureLength(uint256)\",\n \"0xd78bce0c\": \"ECDSAInvalidSignatureS(bytes32)\",\n \"0x48834bee\": \"ExpiredFeeData()\",\n \"0x56d69198\": \"InvalidFeeRate()\",\n \"0x80577032\": \"NoRebateToClaim()\",\n \"0x6e6b79b0\": \"NotBrokerSigner(address)\",\n \"0xff70343d\": \"UnsupportedAssetClass(AssetClass)\",\n \"0x185676be\": \"UnsupportedFeeTier(uint8)\",\n \"0x60b25fe4\": \"BrokerAlreadyExists()\",\n \"0x7eb4a674\": \"BrokerNotFound()\",\n \"0x8c3b5bf0\": \"NotBrokerAdmin()\",\n \"0x3733548a\": \"InvalidFeeTier()\",\n \"0x192105d7\": \"InitializationFunctionReverted(address,bytes)\",\n \"0x97c7f537\": \"ExcessiveSlippage()\",\n \"0x700deaad\": \"InvalidADLPosition(OrderId,PositionId)\",\n \"0xf64fa6a8\": \"InvalidOrder(OrderId)\",\n \"0xd4944235\": \"NoADLNeeded(OrderId)\",\n \"0xe079169e\": \"NotReachedPrice(OrderId,uint256,uint256,TriggerType)\",\n \"0xc60eb335\": \"OnlyKeeper()\",\n \"0xa8ce4432\": \"SafeCastOverflowedIntToUint(int256)\",\n \"0x17229ec4\": \"NotMeetEarlyCloseCriteria(PositionId)\",\n \"0x0dc149f0\": \"AlreadyInitialized()\",\n \"0x7a5c919f\": \"InvalidRewindPrice()\",\n \"0xc53f84e7\": \"PositionRemainsHealthy(PositionId)\",\n \"0x1dab59cf\": \"InvalidOrderPair(OrderId,OrderId)\",\n \"0x230e8e43\": \"PoolNotInPreBenchState(PoolId)\",\n \"0x107dec14\": \"RiskCloseNotAllowed()\",\n \"0x664431a8\": \"NotAllowedTarget(address)\",\n \"0x03357c6c\": \"ExceedsMaximumRelayFee()\",\n \"0x0d10f63b\": \"InconsistentParamsLength()\",\n \"0x38802743\": \"InsufficientFeeAllowance(address,uint256,uint256)\",\n \"0xd95b4ad5\": \"InsufficientFeeBalance(address,uint256,uint256)\",\n \"0xa3972305\": \"MismatchedSender(address)\",\n \"0xc3b80e86\": \"RelayerRegistered(address)\",\n \"0xee0844a3\": \"RemoveRelayerFailed()\",\n \"0xc583a8da\": \"IncorrectFee(uint256)\",\n \"0x00bfc921\": \"InvalidPrice()\",\n \"0x148cd0dd\": \"VerifyPriceFailed()\",\n \"0xb12d13eb\": \"ETHTransferFailed()\",\n \"0xa83325d4\": \"PoolOracleFeeCharged()\",\n \"0x6b75f90d\": \"PoolOracleFeeNotCharged()\",\n \"0x42a0e2a7\": \"PoolOracleFeeNotExisted()\",\n \"0x8ee01e1c\": \"PoolOracleFeeNotSoldOut()\",\n \"0x5e0a829b\": \"ETHTransferFailed(address,uint256)\",\n \"0x4ba6536f\": \"GasLimitExceeded(address,uint256,uint256)\",\n \"0xca1aae4b\": \"GasLimitNotSet(address)\",\n \"0x3728b83d\": \"InvalidAmount(uint256)\",\n \"0x3484727e\": \"BaseFeeNotSoldOut()\",\n \"0x0251bde4\": \"LPNotFullyMinted()\",\n \"0x1acb203e\": \"PositionNotEmpty()\",\n \"0x2be7b24b\": \"UnexpectedPoolState()\",\n \"0x759b3876\": \"UnhealthyAfterRiskTierApplied(PositionId)\",\n \"0x7bd42a2e\": \"NotEmptyAddress()\",\n \"0x6697b232\": \"AccessControlBadConfirmation()\",\n \"0xe2517d3f\": \"AccessControlUnauthorizedAccount(address,bytes32)\",\n \"0x7c9a1cf9\": \"AlreadyVoted()\",\n \"0x796ea3a6\": \"BondNotReleased()\",\n \"0x6511c20d\": \"BondZeroAmount()\",\n \"0xf38e5973\": \"CaseAppealNotFinished()\",\n \"0x1eaa4a59\": \"CaseDeadlineNotReached()\",\n \"0xe6c67e3a\": \"CaseDeadlineReached()\",\n \"0x0fc957b1\": \"CaseNotAccepted()\",\n \"0x3ddb819d\": \"CaseNotExist(CaseId)\",\n \"0x79eab18d\": \"CaseRespondentAppealed(CaseId,address)\",\n \"0xa179f8c9\": \"ChainIdMismatch()\",\n \"0x311c16d3\": \"DisputeNotAllowed()\",\n \"0x752d88c0\": \"InvalidAccountNonce(address,uint256)\",\n \"0xa710429d\": \"InvalidContractAddress()\",\n \"0x8076dd8a\": \"InvalidFunctionSignature()\",\n \"0xc37906a0\": \"InvalidPayloadLength(uint256,uint256)\",\n \"0xdcdedda9\": \"InvalidPoolToken()\",\n \"0x3471a3c2\": \"InvalidProfitAmount()\",\n \"0x1d9617a0\": \"InvalidResponseVersion()\",\n \"0x9284b197\": \"InvalidSourceChain()\",\n \"0xb9021668\": \"NoChainResponse()\",\n \"0xc546bca4\": \"NotCaseRespondent(CaseId,address)\",\n \"0x84ae4a30\": \"NumberOfResponsesMismatch()\",\n \"0x02164961\": \"RequestTypeMismatch()\",\n \"0x4cf72652\": \"RiskCloseNotCompleted()\",\n \"0x0819bdcd\": \"SignatureExpired()\",\n \"0xc00ca938\": \"UnexpectedCaseState()\",\n \"0x7935e939\": \"UnexpectedCaseType()\",\n \"0x5e7bd6ec\": \"UnexpectedNumberOfResults()\",\n \"0x51ee5853\": \"UnsupportedQueryType(uint8)\",\n \"0x29ca666b\": \"UntrustfulVoting()\",\n \"0x439cc0cd\": \"VerificationFailed()\",\n \"0x714f5513\": \"VersionMismatch()\",\n \"0x96b8e05b\": \"WrongQueryType(uint8,uint8)\",\n \"0xbb6b170d\": \"ZeroQueries()\",\n \"0xa9214540\": \"AlreadyClaimed(CaseId,address)\",\n \"0xd4ac59c1\": \"InvalidAmount(CaseId,address)\",\n \"0x7a6f5328\": \"MerkleTreeVerificationFailed(CaseId,address)\",\n \"0x094a5cfe\": \"ReimbursementValidity(CaseId)\",\n \"0x8b922563\": \"TreeAlreadySet()\",\n \"0x7b27120a\": \"InDisputeMode()\",\n \"0xb04111ef\": \"InsufficientFreeCollateral(PositionId,uint256)\",\n \"0x12f1b11a\": \"InsufficientLockedCollateral(PositionId,uint256)\",\n \"0x6dfcc650\": \"SafeCastOverflowedUintDowncast(uint8,uint256)\",\n \"0xd24b47fb\": \"UserProfitFrozen()\",\n \"0x1c151780\": \"ExceedMinOutput(uint256,uint256)\",\n \"0xe1f0493d\": \"NotAllowedCaller(address)\",\n \"0xfb8f41b2\": \"ERC20InsufficientAllowance(address,uint256,uint256)\",\n \"0xe450d38c\": \"ERC20InsufficientBalance(address,uint256,uint256)\",\n \"0xe602df05\": \"ERC20InvalidApprover(address)\",\n \"0xec442f05\": \"ERC20InvalidReceiver(address)\",\n \"0x96c6fd1e\": \"ERC20InvalidSender(address)\",\n \"0x94280d62\": \"ERC20InvalidSpender(address)\",\n \"0x62791302\": \"ERC2612ExpiredSignature(uint256)\",\n \"0x4b800e46\": \"ERC2612InvalidSigner(address,address)\",\n \"0xb3512b0c\": \"InvalidShortString()\",\n \"0x305a27a9\": \"StringTooLong(string)\",\n \"0xfd0f789d\": \"ExceedMaxPriceDeviation()\",\n \"0x407b87e5\": \"ExchangeRateAlreadyApplied()\",\n \"0x5c6c5686\": \"ExchangeRateAlreadyDisabled()\",\n \"0x1ae17fcd\": \"InvalidDeviationRatio()\",\n \"0x18b88897\": \"InvalidUpdateFee()\",\n \"0xf76740e3\": \"PriceDeviationBelowMinimum()\",\n \"0x49386283\": \"PriceDeviationThresholdReached()\",\n \"0x19abf40e\": \"StalePrice()\",\n \"0xe351cd13\": \"ExceedMaxExchangeableAmount()\",\n \"0x15912a6f\": \"NotSupportVersion()\",\n \"0xf1364a74\": \"ArrayEmpty()\",\n \"0x15ed381d\": \"ExceedMaxProfit()\",\n \"0x51aeee6c\": \"PoolNotExist(PoolId)\",\n \"0x70f6c197\": \"InvalidQuoteTokenAddress()\",\n \"0x0b8457f4\": \"InvalidRatioParams()\",\n \"0x29dae146\": \"MarketAlreadyExisted()\",\n \"0xf040b67a\": \"MarketNotExisted()\",\n \"0x0e442a4a\": \"InvalidBaseToken()\",\n \"0x24e219c7\": \"MarketNotExist(MarketId)\",\n \"0xcc36f935\": \"PoolExists(PoolId)\",\n \"0xe84c308d\": \"ExceedBaseReserved(uint256,uint256)\",\n \"0x3e241751\": \"ExceedQuoteReserved(uint256,uint256)\",\n \"0xde656889\": \"ExceedReservable(uint256,uint256,uint256)\",\n \"0xd54d0fc4\": \"InsufficientLiquidity(uint256,uint256,uint256)\",\n \"0x7e562a65\": \"InvalidDistributionAmount()\",\n \"0x83c7580d\": \"ReservableNotEnough(uint256,uint256)\",\n \"0x94eef58a\": \"ERC2771ForwarderExpiredRequest(uint48)\",\n \"0xc845a056\": \"ERC2771ForwarderInvalidSigner(address,address)\",\n \"0x70647f79\": \"ERC2771ForwarderMismatchedValue(uint256,uint256)\",\n \"0xd2650cd1\": \"ERC2771UntrustfulTarget(address,address)\",\n \"0xcf479181\": \"InsufficientBalance(uint256,uint256)\",\n \"0x4c150d8f\": \"DifferentMarket(PoolId,PoolId)\",\n \"0xaa98b06a\": \"InsufficientQuoteIn(uint256,uint256,uint256)\",\n \"0x3e589bee\": \"InvalidLiquidityAmount()\",\n \"0xaebd3617\": \"InvalidTpsl(uint256)\",\n \"0x7fe81129\": \"SamePoolMigration(PoolId)\",\n \"0x71c4efed\": \"SlippageExceeded(uint256,uint256)\",\n \"0x62b9bc7b\": \"DesignatedTokenMismatch(address,address)\",\n \"0x49465eb0\": \"NotForwardAllowedTarget(address)\",\n \"0x301b6707\": \"ExecutionFeeNotCollected()\",\n \"0xc6e8248a\": \"InsufficientSize()\",\n \"0xd15b4fe2\": \"InvalidQuoteToken()\",\n \"0xd8daec7c\": \"MarketNotInitialized()\",\n \"0xcd4891b6\": \"NotInDisputeMode()\",\n \"0x1ad308dc\": \"OrderExpired(OrderId)\",\n \"0x486aa307\": \"PoolNotInitialized()\"\n} as const;\n","import { ConfigManager, MyxClientConfig } from \"../config/index.js\";\nimport { Logger } from \"@/logger\";\nimport { Utils } from \"../utils/index.js\";\nimport { encodeFunctionData, maxUint256, zeroAddress } from \"viem\";\nimport Account_ABI from \"@/abi/Account.json\";\nimport { getContractAddressByChainId } from \"@/config/address/index.js\";\nimport { MyxErrorCode, MyxSDKError } from \"../error/const.js\";\nimport { getTokenContract, getDataProviderContract, getBrokerContract, getForwarderContract, getAccountContract, getBrokerSingerContract } from \"@/web3/providers\";\nimport { getPublicClient } from \"@/web3/viemClients.js\";\nimport { AppealStatus, MyxClient } from \"../index.js\";\nimport dayjs from \"dayjs\";\nimport Broker_ABI from \"@/abi/Broker.json\";\nimport { AccountInfo } from \"@/types/common.js\";\nimport { GetHistoryOrdersParams } from \"@/api/index.js\";\n\nexport class Account {\n private configManager: ConfigManager;\n private logger: Logger;\n private utils: Utils;\n private client: MyxClient;\n constructor(configManager: ConfigManager, logger: Logger, utils: Utils, client: MyxClient) {\n this.configManager = configManager;\n this.logger = logger;\n this.utils = utils;\n this.client = client;\n }\n\n /** Retry an async call a few times to tolerate intermittent RPC/decoding failures (e.g. BAD_DATA / 0x). */\n private async withRetry<T>(fn: () => Promise<T>, retries = 3, delayMs = 300): Promise<T> {\n let lastErr: unknown;\n for (let i = 0; i < retries; i++) {\n try {\n return await fn();\n } catch (e) {\n lastErr = e;\n if (i < retries - 1) await new Promise((r) => setTimeout(r, delayMs));\n }\n }\n throw lastErr;\n }\n\n async getTradeFlow(params: GetHistoryOrdersParams, address: string) {\n const accessToken = await this.configManager.getAccessToken() ?? ''\n\n const res = await this.client.api.getTradeFlow({ accessToken, ...params, address });\n return {\n code: 0,\n data: res.data,\n };\n }\n\n async getWalletQuoteTokenBalance({chainId, address, tokenAddress }:{chainId: number, address?: string, tokenAddress: string}) {\n if (!this.configManager.hasSigner()) {\n throw new MyxSDKError(\n MyxErrorCode.InvalidSigner,\n \"Invalid signer\"\n );\n }\n\n const tokenContract = getTokenContract(chainId, tokenAddress);\n const signerAddress = await this.configManager.getSignerAddress(chainId);\n const balance = await tokenContract.read.balanceOf([address || signerAddress as `0x${string}`]);\n return {\n code: 0,\n data: balance,\n };\n }\n\n async updateAndWithdraw(receiver: string, poolId: string, isQuoteToken: boolean, amount: string, chainId: number) {\n // const config: MyxClientConfig = this.configManager.getConfig();\n // const contractAddress = getContractAddressByChainId(chainId);\n try {\n // const authorized = this.configManager.getConfig().seamlessAccount?.authorized;\n // const seamlessWallet = this.configManager.getConfig().seamlessAccount?.wallet;\n\n // if (config.seamlessMode && authorized && seamlessWallet) {\n // const isEnoughGas = await this.utils.checkSeamlessGas(receiver, chainId);\n\n // if (!isEnoughGas) {\n // throw new MyxSDKError(MyxErrorCode.InsufficientBalance, \"Insufficient relay fee\");\n // }\n // const forwarderContract = await getForwarderContract(chainId);\n\n // const functionHash = encodeFunctionData({ abi: Account_ABI as any, functionName: \"updateAndWithdraw\", args: [receiver, poolId, true, amount] });\n // const nonce = await forwarderContract.read.nonces([seamlessWallet.address as `0x${string}`]);\n // const forwardTxParams = {\n // from: seamlessWallet.address ?? \"\",\n // to: contractAddress.Account,\n // value: \"0\",\n // gas: \"350000\",\n // deadline: dayjs().add(60, \"minute\").unix(),\n // data: functionHash,\n // nonce: nonce.toString(),\n // };\n\n // const rs = await this.client.seamless.forwarderTx(forwardTxParams, chainId, seamlessWallet as any);\n\n // return {\n // code: 0,\n // message: \"withdraw success\",\n // data: rs,\n // };\n // }\n const accountContract = await getAccountContract(chainId);\n const hash = await accountContract.write!.updateAndWithdraw([receiver, poolId, isQuoteToken, amount]);\n const receipt = await getPublicClient(chainId).waitForTransactionReceipt({ hash });\n\n return {\n code: 0,\n data: receipt,\n };\n } catch (error) {\n return {\n code: -1,\n message: (error as Error).message,\n };\n }\n }\n\n async deposit({ amount, tokenAddress, chainId }: { amount: string; tokenAddress: string; chainId: number }) {\n const account = this.configManager.hasSigner() ? await this.configManager.getSignerAddress(chainId) : \"\";\n const contractAddress = getContractAddressByChainId(chainId);\n\n try {\n const needApproval = await this.utils.needsApproval(\n account,\n chainId,\n tokenAddress,\n amount,\n contractAddress.Account,\n );\n\n // const authorized = this.configManager.getConfig().seamlessAccount?.authorized;\n // const seamlessWallet = this.configManager.getConfig().seamlessAccount?.wallet;\n\n // if (config.seamlessMode && authorized && seamlessWallet) {\n // const isEnoughGas = await this.utils.checkSeamlessGas(account, chainId);\n\n // if (!isEnoughGas) {\n // throw new MyxSDKError(MyxErrorCode.InsufficientBalance, \"Insufficient relay fee\");\n // }\n // const forwarderContract = await getForwarderContract(chainId);\n\n // const functionHash = encodeFunctionData({ abi: Account_ABI as any, functionName: \"deposit\", args: [account, tokenAddress, amount] });\n // const nonce = await forwarderContract.read.nonces([seamlessWallet.address as `0x${string}`]);\n\n // const forwardTxParams = {\n // from: seamlessWallet.address ?? \"\",\n // to: contractAddress.Account,\n // value: \"0\",\n // gas: \"350000\",\n // deadline: dayjs().add(60, \"minute\").unix(),\n // data: functionHash,\n // nonce: nonce.toString(),\n // };\n\n // const rs = await this.client.seamless.forwarderTx(forwardTxParams, chainId, seamlessWallet as any);\n\n // return {\n // code: 0,\n // message: \"deposit success\",\n // data: rs,\n // };\n // }\n\n if (needApproval) {\n const approvalResult = await this.utils.approveAuthorization({\n chainId,\n quoteAddress: tokenAddress,\n amount: maxUint256.toString(),\n spenderAddress: contractAddress.Account,\n });\n\n if (approvalResult.code !== 0) {\n throw new Error(approvalResult.message);\n }\n }\n\n const accountContract = await getAccountContract(chainId);\n const hash = await accountContract.write!.deposit([account, tokenAddress, amount]);\n const receipt = await getPublicClient(chainId).waitForTransactionReceipt({ hash });\n\n return {\n code: 0,\n data: receipt,\n };\n } catch (error) {\n return {\n code: -1,\n message: (error as Error).message,\n };\n }\n }\n\n async getAvailableMarginBalance({ poolId, chainId, address }: { poolId: string; chainId: number; address: string }) {\n try {\n const marginAccountBalanceRes = await this.getAccountInfo(chainId, address, poolId);\n if (marginAccountBalanceRes.code !== 0) {\n throw new MyxSDKError(\n MyxErrorCode.RequestFailed,\n \"Failed to get account info\"\n );\n }\n const poolAppealStatusRes = await this.client.appeal.getAppealStatus(poolId, chainId, address);\n\n const marginAccountBalance = marginAccountBalanceRes.data;\n const quoteProfit = BigInt(marginAccountBalance?.quoteProfit ?? 0);\n const freeAmount = BigInt(marginAccountBalance?.freeMargin ?? 0);\n const lockedMargin = BigInt((marginAccountBalance as any)?.lockedMargin ?? 0);\n const appealData = poolAppealStatusRes?.code === 0 ? (poolAppealStatusRes.data as any) : null;\n const appealLockedMargin =\n appealData?.status === AppealStatus.isAppealing ? BigInt(appealData?.lockedMargin ?? 0) : 0n;\n\n const availableMarginBalance = freeAmount + quoteProfit - lockedMargin - appealLockedMargin;\n\n return {\n code: 0,\n data: availableMarginBalance,\n };\n } catch (error) {\n return {\n code: -1,\n message: (error as Error).message,\n };\n }\n }\n\n async getAccountInfo(\n chainId: number,\n address: string,\n poolId: string\n ): Promise<{ code: 0; data: AccountInfo } | { code: -1; message: string }> {\n const dataProviderContract = await getDataProviderContract(chainId);\n try {\n const accountInfo = await dataProviderContract.read.getAccountInfo([poolId as `0x${string}`, address as `0x${string}`]);\n return {\n code: 0,\n data: accountInfo as AccountInfo,\n };\n } catch (error) {\n return {\n code: -1,\n message: (error as Error).message,\n };\n }\n }\n\n async getAccountVipInfo(chainId: number, address: string) {\n const config: MyxClientConfig = this.configManager.getConfig();\n\n const brokerContract = getBrokerContract(chainId, config.brokerAddress);\n const publicClient = getPublicClient(chainId);\n const latestBlock = await publicClient.getBlock({ blockTag: \"latest\" });\n const deadline = Number(latestBlock?.timestamp ?? BigInt(dayjs().unix())) + 60 * 5;\n const accessToken = (await this.configManager.getAccessToken()) ?? \"\";\n\n try {\n const currentEpoch = await this.client.api.getCurrentEpoch({ address, accessToken, broker: config.brokerAddress });\n if (currentEpoch.code !== 9200) {\n throw new MyxSDKError(\n MyxErrorCode.RequestFailed,\n currentEpoch.msg ?? \"Failed to get current epoch\"\n );\n }\n const accountVipInfo = await brokerContract.read.userFeeData([currentEpoch?.data ?? 0, address as `0x${string}`]);\n let nonce: bigint;\n try {\n nonce = await this.withRetry(() => brokerContract.read.userNonces([address as `0x${string}`]));\n } catch {\n nonce = 0n;\n }\n return {\n code: 0,\n data: { ...accountVipInfo, nonce: nonce.toString(), deadline },\n };\n } catch (error) {\n return {\n code: -1,\n message: (error as Error).message,\n };\n }\n }\n\n async getAccountVipInfoByBackend(address: string, chainId: number, deadline: number, nonce: string) {\n const accessToken = (await this.configManager.getAccessToken()) ?? \"\";\n\n try {\n const res = await this.client.api.getAccountVipInfo({ address, accessToken, chainId, deadline, nonce });\n if (res.code !== 9200) {\n throw new MyxSDKError(\n MyxErrorCode.RequestFailed,\n res.msg ?? \"Failed to get account vip info\"\n );\n }\n return {\n code: 0,\n data: res.data,\n };\n } catch (error) {\n return {\n code: -1,\n message: (error as Error).message,\n };\n }\n }\n\n async setUserFeeData(\n address: string,\n chainId: number,\n deadline: number,\n params: { tier: number; referrer: string; totalReferralRebatePct: number; referrerRebatePct: number; nonce: string },\n signature: string\n ) {\n const config: MyxClientConfig = this.configManager.getConfig();\n // const authorized = this.configManager.getConfig().seamlessAccount?.authorized;\n // const seamlessWallet = this.configManager.getConfig().seamlessAccount?.wallet;\n if (deadline < dayjs().unix()) {\n throw new MyxSDKError(\n MyxErrorCode.RequestFailed,\n \"Invalid deadline, please try again\"\n );\n }\n\n const feeData = {\n user: address,\n nonce: params.nonce,\n deadline: deadline,\n feeData: {\n tier: params.tier,\n referrer: params.referrer || zeroAddress,\n totalReferralRebatePct: params.totalReferralRebatePct,\n referrerRebatePct: params.referrerRebatePct,\n },\n signature: signature,\n };\n\n try {\n // if (config.seamlessMode && authorized && seamlessWallet) {\n // const isEnoughGas = await this.utils.checkSeamlessGas(address, chainId);\n\n // if (!isEnoughGas) {\n // throw new MyxSDKError(MyxErrorCode.InsufficientBalance, \"Insufficient relay fee\");\n // }\n // const forwarderContract = await getForwarderContract(chainId);\n\n // const functionHash = encodeFunctionData({ abi: Broker_ABI as any, functionName: \"setUserFeeData\", args: [feeData] });\n // const nonce = await forwarderContract.read.nonces([seamlessWallet.address as `0x${string}`]);\n\n // const forwardTxParams = {\n // from: seamlessWallet.address ?? \"\",\n // to: config.brokerAddress,\n // value: \"0\",\n // gas: \"350000\",\n // deadline: dayjs().add(60, \"minute\").unix(),\n // data: functionHash,\n // nonce: nonce.toString(),\n // };\n // const rs = await this.client.seamless.forwarderTx(forwardTxParams, chainId, seamlessWallet as any);\n\n // return {\n // code: 0,\n // data: rs,\n // };\n // }\n const brokerContract = await getBrokerSingerContract(chainId, config.brokerAddress);\n\n const nonce: bigint = await brokerContract.read.userNonces([address as `0x${string}`]);\n\n if (parseInt(nonce.toString()) + 1 !== parseInt(params.nonce.toString())) {\n throw new MyxSDKError(\n MyxErrorCode.RequestFailed,\n \"Invalid nonce, please try again\"\n );\n }\n\n const hash = await brokerContract.write!.setUserFeeData([feeData]);\n const receipt = await getPublicClient(chainId).waitForTransactionReceipt({ hash });\n\n return {\n code: 0,\n data: receipt,\n };\n } catch (error) {\n return {\n code: -1,\n message: (error as Error).message,\n };\n }\n }\n}\n","function encodeQueryParam(key: string, value: any) {\n const encodedKey = encodeURIComponent(key)\n return `${encodedKey}=${encodeURIComponent(typeof value === 'number' ? value : `${value}`)}`\n}\n\nexport type QueryParamsType = Record<string | number, any>\n\nfunction addQueryParam(query: QueryParamsType, key: string) {\n return encodeQueryParam(key, query[key])\n}\n\nfunction addArrayQueryParam(query: QueryParamsType, key: string) {\n const value = query[key]\n return value.map((v: any) => encodeQueryParam(key, v)).join('&')\n}\n\nexport function toQueryString(rawQuery?: QueryParamsType): string {\n const query = rawQuery || {}\n const keys = Object.keys(query).filter((key) => 'undefined' !== typeof query[key])\n return keys\n .map((key) => (Array.isArray(query[key]) ? addArrayQueryParam(query, key) : addQueryParam(query, key)))\n .join('&')\n}\n\nexport function addQueryParams(rawQuery?: QueryParamsType): string {\n const queryString = toQueryString(rawQuery)\n return queryString ? `?${queryString}` : ''\n}\n","import { WretchOptions } from \"wretch/types\";\nimport { ConfigManager } from \"../config/index.js\";\nimport { http } from \"@/api/request\";\nimport { merge } from \"lodash-es\";\nimport { MyxErrorCode, MyxSDKError } from \"../error/const.js\";\n\ninterface RequestOptions extends WretchOptions {\n auth?: boolean;\n}\n\nexport class Request {\n protected configManager: ConfigManager;\n constructor(configManager: ConfigManager) {\n this.configManager = configManager;\n }\n\n protected getHost() {\n const { isTestnet, isBetaMode } = this.configManager.getConfig();\n if (isBetaMode) {\n return \"https://api-beta.myx.finance\";\n } else if (isTestnet) {\n return \"https://api-test.myx.cash\";\n } else {\n return \"https://api.myx.finance\";\n }\n }\n\n private async buildAuthParams(): Promise<WretchOptions> {\n const config = this.configManager.getConfig();\n if (!this.configManager.hasSigner()) throw new MyxSDKError(MyxErrorCode.InvalidSigner);\n const accessToken = (await this.configManager.getAccessToken()) ?? \"\";\n const userAddress = await this.configManager.getSignerAddress(config.chainId);\n if (!userAddress) {\n throw new MyxSDKError(MyxErrorCode.InvalidSigner);\n }\n return {\n headers: {\n myx_openapi_access_token: accessToken,\n myx_openapi_account: userAddress,\n },\n };\n }\n\n private buildRequestPath(path: string) {\n if (path.startsWith(\"http\")) {\n return path;\n }\n return this.getHost() + path;\n }\n\n protected async get<T = Record<string, any>>(\n url: string,\n params: any,\n { auth = false, ...options }: RequestOptions = {}\n ) {\n const authOptions = auth ? await this.buildAuthParams() : {};\n return http.get<T>(\n this.buildRequestPath(url),\n params,\n merge(authOptions, options)\n );\n }\n\n protected async post<T = Record<string, any>>(\n url: string,\n data: any,\n { auth = false, ...options }: RequestOptions = {}\n ) {\n const authOptions = auth ? await this.buildAuthParams() : {};\n return http.post<T>(\n this.buildRequestPath(url),\n data,\n merge(authOptions, options)\n );\n }\n\n protected async put<T = Record<string, any>>(\n url: string,\n data: any,\n { auth = false, ...options }: RequestOptions = {}\n ) {\n const authOptions = auth ? await this.buildAuthParams() : {};\n return http.put<T>(\n this.buildRequestPath(url),\n data,\n merge(authOptions, options)\n );\n }\n\n protected async delete<T = Record<string, any>>(\n url: string,\n { auth = false, ...options }: RequestOptions = {}\n ) {\n const authOptions = auth ? await this.buildAuthParams() : {};\n return http.delete<T>(\n this.buildRequestPath(url),\n merge(authOptions, options)\n );\n }\n}\n","import {\n GetHistoryOrdersParams,\n HistoryOrderItem,\n PositionHistoryItem,\n TradeFlowItem,\n} from \"@/api/account\";\nimport { ConfigManager } from \"../config/index.js\";\nimport { http } from \"@/api/request\";\nimport {\n AppealDetail,\n AppealListItem,\n AppealNodeVoteItem,\n AppealNodeVoteListItem,\n AppealReconsiderationDetail,\n AppealReconsiderationListItem,\n AppealReimbursementItem,\n AppealReimbursementParams,\n AppealUploadEvidenceParams,\n GetAppealDetailParams,\n GetAppealListParams,\n GetAppealNodeVoteListParams,\n GetAppealReconsiderationDetailParams,\n GetAppealReconsiderationListParams,\n GetAppealVoteNodeDetailParams,\n GetIsVoteNodeParams,\n GetWarmholeSignParams,\n GetWarmholeSignResponse,\n IsVoteNodeEnum,\n PostVoteResponse,\n PostVoteSignatureParams,\n} from \"./appeal-type.js\";\nimport { Logger } from \"@/logger\";\nimport {\n AccessTokenRequest,\n ApiResponse,\n BaseDetailResponse,\n FavoritesListItem,\n KlineDataItemType,\n MarketDetailResponse,\n MarketInfo,\n OrderResponse,\n PoolOpenOrdersResponse,\n PoolResponse,\n PositionResponse,\n SearchResultResponse,\n TickerDataItem,\n} from \"@/api/type\";\nimport {\n AddFavoriteParams,\n FavoritesListParams,\n FetchForwarderGetParams,\n FetchForwarderGetResponse,\n ForwarderTxParams,\n GetBaseDetailParams,\n GetKlineDataParams,\n GetMarketDetailParams,\n GetPoolLevelConfigParams,\n GetTickerDataParams,\n PoolLevelConfig,\n PoolSymbolAllResponse,\n RemoveFavoriteParams,\n SearchMarketParams,\n} from \"@/api\";\nimport { addQueryParams } from \"@/api/utils\";\nimport { ChainId } from \"@/config/chain\";\nimport { Request } from \"./request.js\";\n\nexport class Api extends Request {\n private logger: Logger;\n constructor(configManager: ConfigManager, logger: Logger) {\n super(configManager);\n this.logger = logger;\n }\n\n async getTradeFlow({\n accessToken,\n address,\n ...params\n }: GetHistoryOrdersParams & AccessTokenRequest) {\n return http.get<ApiResponse<TradeFlowItem[]>>(\n `${this.getHost()}/openapi/gateway/scan/trade/flow`,\n params,\n {\n headers: {\n myx_openapi_access_token: accessToken,\n myx_openapi_account: address,\n },\n }\n );\n }\n\n async getPoolSymbolAll() {\n return http.get<ApiResponse<PoolSymbolAllResponse[]>>(\n `${this.getHost()}/openapi/gateway/scan/pools`\n );\n }\n\n async fetchForwarderGetApi(params: FetchForwarderGetParams) {\n const rs: FetchForwarderGetResponse = await http.get(\n `${this.getHost()}/v2/agent/forwarder/get${addQueryParams(params)}`\n );\n\n return rs;\n }\n\n async getPoolList() {\n return http.get<ApiResponse<any[]>>(\n `${this.getHost()}/openapi/gateway/scan/market/list`\n );\n }\n\n async forwarderTxApi(params: ForwarderTxParams, chainId: number) {\n return http.post<ApiResponse<any>>(\n `${this.getHost()}/v2/agent/forwarder/tx-v2`,\n params,\n {\n headers: {\n \"myx-chain-id\": chainId.toString(),\n },\n }\n );\n }\n\n async getOraclePrice(chainId: ChainId, poolIds: string[] = []) {\n if (!!poolIds.length) {\n return http.get(`${this.getHost()}/openapi/gateway/quote/price/oracles`, {\n chainId,\n poolIds: poolIds.join(\",\"),\n });\n }\n\n throw new Error(\"Invalid pool id\");\n }\n\n async getPoolDetail(chainId: number, poolId: string): Promise<PoolResponse> {\n return await http.get<PoolResponse>(\n `${this.getHost()}/openapi/gateway/scan/market/info?chainId=${chainId}&poolId=${poolId}`\n );\n }\n\n async getPoolLevelConfig({ poolId, chainId }: GetPoolLevelConfigParams) {\n return http.get<ApiResponse<PoolLevelConfig>>(\n `${this.getHost()}/openapi/gateway/risk/market_pool/level_config${addQueryParams(\n {\n poolId,\n chainId,\n }\n )}`\n );\n }\n\n async getPositions({ accessToken, address, positionId }: { accessToken: string, address: string, positionId?: string }) {\n return await http.get<PositionResponse>(\n `${this.getHost()}/openapi/gateway/scan/position/open`,\n { positionId },\n {\n headers: {\n myx_openapi_access_token: accessToken,\n myx_openapi_account: address,\n },\n }\n );\n }\n\n async getOrders(accessToken: string, address: string) {\n return await http.get<OrderResponse>(\n `${this.getHost()}/openapi/gateway/scan/order/open`,\n undefined,\n {\n headers: {\n myx_openapi_access_token: accessToken,\n myx_openapi_account: address,\n },\n }\n );\n }\n\n async getPoolOpenOrders(\n accessToken: string,\n address: string,\n chainId: ChainId\n ) {\n return await http.get<PoolOpenOrdersResponse>(\n `${this.getHost()}/openapi/gateway/scan/market/pool-order/open?chainId=${chainId}`,\n undefined,\n {\n headers: {\n myx_openapi_access_token: accessToken,\n myx_openapi_account: address,\n },\n }\n );\n }\n\n async getKlineData({\n chainId,\n poolId,\n endTime,\n limit,\n interval,\n }: GetKlineDataParams) {\n return http.get<ApiResponse<KlineDataItemType[]>>(\n `${this.getHost()}/openapi/gateway/quote/candles`,\n {\n chainId,\n poolId,\n endTime,\n limit,\n interval,\n }\n );\n }\n\n async getKlineLatestBar(\n params: Pick<GetKlineDataParams, \"chainId\" | \"poolId\" | \"interval\">\n ) {\n return http.get<ApiResponse<KlineDataItemType>>(\n `${this.getHost()}/openapi/gateway/quote/candle/latest`,\n params\n );\n }\n\n async getTickerData({ chainId, poolIds }: GetTickerDataParams) {\n return http.get<ApiResponse<TickerDataItem[]>>(\n `${this.getHost()}/openapi/gateway/quote/candle/tickers`,\n {\n chainId,\n poolIds: poolIds.join(\",\"),\n }\n );\n }\n\n async getAllTickers() {\n return http.get<ApiResponse<TickerDataItem[]>>(\n `${this.getHost()}/v2/mx-gateway/quote/candle/all_tickers`\n );\n }\n\n async searchMarketAuth({\n accessToken,\n address,\n ...params\n }: SearchMarketParams & AccessTokenRequest) {\n return http.get<ApiResponse<SearchResultResponse>>(\n `${this.getHost()}/openapi/gateway/scan/market/ac-search`,\n params,\n {\n headers: {\n myx_openapi_access_token: accessToken,\n myx_openapi_account: address,\n },\n }\n );\n }\n\n async searchMarket({ ...params }: SearchMarketParams) {\n return http.get<ApiResponse<SearchResultResponse>>(\n `${this.getHost()}/openapi/gateway/scan/market/search`,\n params\n );\n }\n\n async addFavorite({\n accessToken,\n address,\n ...params\n }: AddFavoriteParams & AccessTokenRequest) {\n return http.get<ApiResponse<null>>(\n `${this.getHost()}/openapi/gateway/scan/market/add-favorites`,\n params,\n {\n headers: {\n myx_openapi_access_token: accessToken,\n myx_openapi_account: address,\n },\n }\n );\n }\n\n async removeFavorite({\n accessToken,\n address,\n ...params\n }: RemoveFavoriteParams & AccessTokenRequest) {\n return http.get<ApiResponse<null>>(\n `${this.getHost()}/openapi/gateway/scan/market/cancel-favorites`,\n params,\n {\n headers: {\n myx_openapi_access_token: accessToken,\n myx_openapi_account: address,\n },\n }\n );\n }\n\n async getFavoritesList({\n accessToken,\n address,\n ...params\n }: FavoritesListParams & AccessTokenRequest) {\n return http.get<ApiResponse<FavoritesListItem[]>>(\n `${this.getHost()}/openapi/gateway/scan/market/favorites`,\n params,\n {\n headers: {\n myx_openapi_access_token: accessToken,\n myx_openapi_account: address,\n },\n }\n );\n }\n\n async getBaseDetail({ ...params }: GetBaseDetailParams) {\n return http.get<ApiResponse<BaseDetailResponse>>(\n `${this.getHost()}/openapi/gateway/scan/market/base-details`,\n params\n );\n }\n\n async getMarketDetail({ ...params }: GetMarketDetailParams) {\n return http.get<ApiResponse<MarketDetailResponse>>(\n `${this.getHost()}/openapi/gateway/scan/market/detail`,\n params\n );\n }\n\n async getHistoryOrders({\n accessToken,\n address,\n ...params\n }: GetHistoryOrdersParams & AccessTokenRequest) {\n return http.get<ApiResponse<HistoryOrderItem[]>>(\n `${this.getHost()}/openapi/gateway/scan/order/closed`,\n params,\n {\n headers: {\n myx_openapi_account: address,\n myx_openapi_access_token: accessToken,\n },\n }\n );\n }\n\n async getPositionHistory({\n accessToken,\n address,\n ...params\n }: GetHistoryOrdersParams & AccessTokenRequest) {\n return http.get<ApiResponse<PositionHistoryItem[]>>(\n `${this.getHost()}/openapi/gateway/scan/position/closed`,\n params,\n {\n headers: {\n myx_openapi_account: address,\n myx_openapi_access_token: accessToken,\n },\n }\n );\n }\n\n async getMarketList() {\n return http.get<ApiResponse<MarketInfo[]>>(\n `${this.getHost()}/openapi/gateway/scan/market`\n );\n }\n\n async getAccountVipInfo({\n address,\n accessToken,\n chainId,\n deadline,\n nonce,\n }: {\n address: string;\n accessToken: string;\n chainId: number;\n deadline: number;\n nonce: string;\n }) {\n return http.get<ApiResponse<any>>(\n `${this.getHost()}/openapi/gateway/vip/trade_config`,\n { chainId, deadline, nonce },\n {\n headers: {\n myx_openapi_account: address,\n myx_openapi_access_token: accessToken,\n },\n }\n );\n }\n\n /**\n * appeal module start ------>\n */\n async getAppealList(params: GetAppealListParams) {\n return this.get<ApiResponse<AppealListItem[]>>(\n \"/openapi/gateway/scan/dispute/list\",\n params,\n {\n auth: true,\n }\n );\n }\n\n async getAppealDetail(params: GetAppealDetailParams) {\n return this.get<ApiResponse<AppealDetail>>(\n \"/openapi/gateway/scan/dispute/details\",\n params,\n {\n auth: true,\n }\n );\n }\n\n async uploadAppealEvidence(params: AppealUploadEvidenceParams) {\n return this.get<ApiResponse<null>>(\n \"/openapi/gateway/scan/dispute/upload/evidence\",\n params,\n {\n auth: true,\n }\n );\n }\n\n async getAppealReconsiderationList(\n params: GetAppealReconsiderationListParams\n ) {\n return this.get<ApiResponse<AppealReconsiderationListItem[]>>(\n \"/openapi/gateway/scan/dispute/appeal/list\",\n params,\n {\n auth: true,\n }\n );\n }\n\n async getAppealReconsiderationDetail(\n params: GetAppealReconsiderationDetailParams\n ) {\n return this.get<ApiResponse<AppealReconsiderationDetail>>(\n \"/openapi/gateway/scan/dispute/appeal/details\",\n params,\n {\n auth: true,\n }\n );\n }\n\n async getAppealReimbursementList(params: AppealReimbursementParams) {\n return this.get<ApiResponse<AppealReimbursementItem[]>>(\n \"/openapi/gateway/scan/reimbursement/list\",\n params,\n {\n auth: true,\n }\n );\n }\n\n async getAppealNodeVoteList(params: GetAppealNodeVoteListParams) {\n return this.get<ApiResponse<AppealNodeVoteListItem[]>>(\n \"/openapi/gateway/scan/node/vote-list\",\n params\n );\n }\n\n async getAppealNodeVoteDetails(params: GetAppealVoteNodeDetailParams) {\n return this.get<ApiResponse<AppealNodeVoteItem[]>>(\n \"/openapi/gateway/scan/node/vote-details\",\n params\n );\n }\n\n async getIsVoteNode(params: GetIsVoteNodeParams) {\n return this.get<ApiResponse<IsVoteNodeEnum>>(\n \"/openapi/gateway/scan/node/vote-node-check\",\n params\n );\n }\n\n async postVoteSignature(params: PostVoteSignatureParams) {\n return this.get<ApiResponse<PostVoteResponse>>(\n `/openapi/gateway/scan/node/vote`,\n params,\n {\n auth: true,\n }\n );\n }\n\n async getPedingVoteCount() {\n return this.get<ApiResponse<number>>(\n \"/openapi/gateway/scan/node/pending-vote-total\",\n {},\n {\n auth: true,\n }\n );\n }\n\n async getMyAppealCount() {\n return this.get<ApiResponse<number>>(\n \"/openapi/gateway/scan/processing-total\",\n {},\n {\n auth: true,\n }\n );\n }\n\n async getWarmholeSign(params: GetWarmholeSignParams) {\n return this.get<ApiResponse<GetWarmholeSignResponse>>(\n \"/openapi/gateway/scan/get-warmhole-sign\",\n params, {\n auth: true\n }\n );\n }\n\n async getDisputeTotalCount() {\n return this.get<ApiResponse<number>>('/openapi/gateway/scan/dispute/dispute-total', {}, {\n auth: true\n })\n }\n\n async getAppealTotalCount() {\n return this.get<ApiResponse<number>>('/openapi/gateway/scan/dispute/appeal-total', {}, {\n auth: true\n })\n }\n\n async getReimbursementTotalCount() {\n return this.get<ApiResponse<number>>('/openapi/gateway/scan/dispute/reimbursement-total', {}, {\n auth: true\n })\n }\n\n\n /**\n * appeal module end ------>\n */\n async getCurrentEpoch({\n address,\n accessToken,\n broker,\n }: {\n address: string;\n accessToken: string;\n broker: string;\n }) {\n return http.get<ApiResponse<number>>(\n `${this.getHost()}/openapi/gateway/scan/get-current-epoch`,\n { broker },\n {\n headers: {\n myx_openapi_account: address,\n myx_openapi_access_token: accessToken,\n },\n }\n );\n }\n\n async getPoolAppealStatus({ poolId, chainId, address, accessToken }: { poolId: string, chainId: number, address: string, accessToken: string }) {\n return http.get<ApiResponse<number>>(\n `${this.getHost()}/openapi/gateway/scan/pool-id-dispute-state?poolId=${poolId}&chainId=${chainId}`,\n {},\n {\n headers: {\n myx_openapi_account: address,\n myx_openapi_access_token: accessToken,\n },\n }\n );\n }\n}\n","import { ConfigManager } from \"../config/index.js\";\nimport { Logger } from \"@/logger\";\n\nimport { Utils } from \"../utils/index.js\";\nimport { getWalletClient } from \"@/web3/viemClients.js\";\nimport { MyxErrorCode, MyxSDKError } from \"../error/const.js\";\nimport { hexToBytes, toHex, encodeFunctionData, maxUint256, isAddress } from \"viem\";\nimport { getForwarderContract, getMarketManageContract, getTokenContract, ProviderType } from \"@/web3/providers\";\nimport { Account as AccountManager } from \"../account/index.js\";\nimport dayjs from \"dayjs\";\nimport { getContractAddressByChainId } from \"@/config/address/index.js\";\nimport { getEIP712Domain } from \"@/utils\";\nimport { Api } from \"../api/index.js\";\nimport Forwarder_ABI from \"@/abi/Forwarder.json\";\nimport Broker_ABI from \"@/abi/Broker.json\";\nimport type { SignerLike } from \"@/signer/types.js\";\nimport { normalizeSigner } from \"@/signer/adapters.js\";\nimport { createWalletClientFromSigner } from \"@/signer/viemWalletFromSigner.js\";\nimport { getEip712Domain } from \"viem/actions\";\n\nconst contractTypes = {\n ForwardRequest: [\n { name: 'from', type: 'address' },\n { name: 'to', type: 'address' },\n { name: 'value', type: 'uint256' },\n { name: 'gas', type: 'uint256' },\n { name: 'nonce', type: 'uint256' },\n { name: 'deadline', type: 'uint48' },\n { name: 'data', type: 'bytes' },\n ],\n}\nconst FORWARD_PLEDGE_FEE_RADIO = 2\n\n// const calculateSignature = async (message: string) => {\n// const encoder = new TextEncoder()\n// const data = encoder.encode(message)\n// if (typeof crypto === \"undefined\" || !crypto.subtle) throw new Error(\"Crypto.subtle not available\");\n// const hashBuffer = await crypto.subtle.digest(\"SHA-256\", data);\n// const hashArray = Array.from(new Uint8Array(hashBuffer))\n// return hashArray.map((byte) => byte.toString(16).padStart(2, '0')).join('')\n// }\n\n// const seamlessNonceString = 'jAkBlC4~5!6@#$%^'\n\n\nfunction splitSignatureToVrs(signatureHex: `0x${string}`): { v: number; r: `0x${string}`; s: `0x${string}` } {\n const bytes = hexToBytes(signatureHex);\n if (bytes.length < 65) throw new Error(\"Invalid signature length\");\n const r = toHex(bytes.slice(0, 32)) as `0x${string}`;\n const s = toHex(bytes.slice(32, 64)) as `0x${string}`;\n const v = bytes[64]!;\n return { v, r, s };\n}\n\n// const generateEthWalletFromHashedSignature = (hashedSignature: string): { privateKey: `0x${string}`; wallet: Account } => {\n// const seedBytes = new Uint8Array(new TextEncoder().encode(hashedSignature));\n// const seedHex = bytesToHex(seedBytes);\n// const hashHex = keccak256(seedHex as `0x${string}`);\n// const privateKeyBytes = hexToBytes(hashHex).slice(0, 32);\n// const privateKey = toHex(privateKeyBytes) as `0x${string}`;\n\n// if (!isHex(privateKey) || privateKey.length !== 66) {\n// throw new MyxSDKError(MyxErrorCode.InvalidPrivateKey, \"Invalid private key generated\");\n// }\n\n// const wallet = privateKeyToAccount(privateKey);\n// return { privateKey, wallet };\n// };\n\n// const charFill = (ping: string) => {\n// const targetLength = 16\n// if (ping.length >= targetLength) {\n// return ping\n// }\n\n// const remainingLength = targetLength - ping.length\n// const repeatTimes = Math.ceil(remainingLength / ping.length)\n// const paddedString = ping.repeat(repeatTimes).slice(0, remainingLength)\n// return ping + paddedString\n// }\n\n// export const getIvMapString = () => Utf8.parse(seamlessNonceString)\n\nasync function signPermit(\n walletClient: Awaited<ReturnType<typeof getWalletClient>>,\n chainId: number,\n tokenAddress: string,\n owner: string,\n spender: string,\n value: bigint,\n nonce: bigint,\n deadline: number,\n): Promise<{ v: number; r: `0x${string}`; s: `0x${string}` }> {\n const tokenContract = getTokenContract(chainId, tokenAddress)\n const domain = await getEIP712Domain(tokenContract);\n\n const [account] = await walletClient.getAddresses();\n if (!account) throw new MyxSDKError(MyxErrorCode.InvalidSigner, \"No account for signPermit\");\n\n const types = {\n Permit: [\n { name: \"owner\", type: \"address\" },\n { name: \"spender\", type: \"address\" },\n { name: \"value\", type: \"uint256\" },\n { name: \"nonce\", type: \"uint256\" },\n { name: \"deadline\", type: \"uint256\" },\n ],\n };\n const message = { owner: owner as `0x${string}`, spender: spender as `0x${string}`, value, nonce, deadline };\n const signature = await walletClient.signTypedData({\n account,\n domain: { ...domain, chainId: domain.chainId },\n types,\n primaryType: \"Permit\",\n message,\n });\n return splitSignatureToVrs(signature);\n}\n\n\nexport class Seamless {\n private configManager: ConfigManager;\n private logger: Logger;\n private utils: Utils;\n private account: AccountManager;\n private api: Api;\n\n constructor(configManager: ConfigManager, logger: Logger, utils: Utils, account: AccountManager, api: Api) {\n this.configManager = configManager;\n this.logger = logger;\n this.utils = utils;\n this.account = account;\n this.api = api;\n }\n\n async onCheckRelayer(account: string, relayer: string, chainId: number, tokenAddress: string) {\n const forwarderContract = await getForwarderContract(chainId);\n const checkRelayerResult = await forwarderContract.read.isUserRelayerEnabled([account as `0x${string}`, relayer as `0x${string}`]);\n\n const isNeedApprove = await this.utils.needsApproval(\n account,\n chainId,\n tokenAddress,\n maxUint256.toString(),\n getContractAddressByChainId(chainId).TRADING_ROUTER,\n );\n\n return checkRelayerResult && !isNeedApprove;\n }\n\n async getUSDPermitParams(deadline: number, chainId: number, tokenAddress: string) {\n if (!this.configManager.hasSigner()) {\n throw new MyxSDKError(MyxErrorCode.InvalidSigner, \"Signer is required for permit\");\n }\n\n const walletClient = await getWalletClient(chainId);\n const contractAddress = getContractAddressByChainId(chainId);\n const [masterAddress] = await walletClient.getAddresses();\n if (!masterAddress) throw new MyxSDKError(MyxErrorCode.InvalidSigner, \"No account\");\n const tokenContract = getTokenContract(chainId, tokenAddress);\n try {\n const nonces = await tokenContract.read.nonces([masterAddress]);\n const tradingRouterSignPermit = await signPermit(\n walletClient,\n chainId,\n tokenAddress,\n masterAddress,\n contractAddress.TRADING_ROUTER,\n maxUint256,\n nonces,\n deadline,\n );\n const tradingRouterPermitParams = {\n token: tokenAddress,\n owner: masterAddress,\n spender: contractAddress.TRADING_ROUTER,\n value: maxUint256.toString(),\n deadline: deadline.toString(),\n v: tradingRouterSignPermit.v,\n r: tradingRouterSignPermit.r,\n s: tradingRouterSignPermit.s,\n };\n return [tradingRouterPermitParams];\n } catch (error) {\n throw new MyxSDKError(MyxErrorCode.InvalidPrivateKey, \"Invalid private key generated\");\n }\n }\n\n async getForwardEip712Domain(chainId: number) {\n const forwarderContract = await getForwarderContract(chainId);\n const forwarderJsonRpcContractDomain = await forwarderContract.read.eip712Domain();\n\n const domain = {\n name: forwarderJsonRpcContractDomain[1],\n version: forwarderJsonRpcContractDomain[2],\n chainId: forwarderJsonRpcContractDomain[3],\n verifyingContract: forwarderJsonRpcContractDomain[4],\n };\n\n return domain;\n }\n\n async forwardTxInFront({\n chainId,\n seamlessAddress,\n signFunction,\n forwardFeeToken,\n functionName,\n orderParams\n }: {\n chainId: number,\n masterAddress: string,\n seamlessAddress: string,\n signFunction: (signParams: {\n domain: any,\n functionHash: string,\n to: string,\n nonce: string,\n deadline: number,\n }) => Promise<string>,\n functionName: string\n forwardFeeToken: string\n orderParams: any\n }) {\n const nonce = await (await getForwarderContract(chainId)).read.nonces([seamlessAddress as `0x${string}`]);\n const deadline = dayjs().add(60, 'minute').unix()\n\n const domain = await this.getForwardEip712Domain(chainId)\n const functionHash = encodeFunctionData({\n abi: Broker_ABI as any,\n functionName: functionName,\n args: orderParams,\n });\n\n const signature = await signFunction({\n domain,\n functionHash,\n // todo pick contract\n to: this.configManager.getConfig().brokerAddress,\n nonce: nonce.toString(),\n deadline,\n })\n\n\n // const signature = await walletClient.signTypedData({\n // account,\n // domain,\n // types: contractTypes,\n // primaryType: \"ForwardRequest\",\n // message: {\n // from: from as `0x${string}`,\n // to: to as `0x${string}`,\n // value: BigInt(value),\n // gas: BigInt(gas),\n // nonce: BigInt(nonce),\n // deadline: BigInt(deadline),\n // data: data as `0x${string}`,\n // },\n // });\n\n console.log('signature-->', signature)\n\n const txRs = await this.api.forwarderTxApi(\n {\n from: seamlessAddress,\n // todo pick contract\n to: this.configManager.getConfig().brokerAddress,\n value: '0',\n gas: '800000',\n nonce: nonce.toString(),\n data: functionHash,\n deadline,\n signature,\n forwardFeeToken\n },\n chainId\n );\n\n if (txRs.data?.txHash) {\n // Poll chain for transaction status\n const maxAttempts = 5 // Max 5 attempts\n const pollInterval = 1000 // Poll every 1 second\n\n for (let attempt = 0; attempt < maxAttempts; attempt++) {\n try {\n const rs = await this.api.fetchForwarderGetApi({ requestId: txRs.data.requestId })\n\n if (rs.data?.status === 9) {\n return {\n code: 0,\n }\n }\n\n // If not on chain yet, wait and poll again\n if (attempt < maxAttempts - 1) {\n await new Promise(resolve => setTimeout(resolve, pollInterval))\n }\n } catch (error) {\n this.logger.error('Poll transaction from chain error:', error)\n // If not the last attempt, continue polling\n if (attempt < maxAttempts - 1) {\n await new Promise(resolve => setTimeout(resolve, pollInterval))\n }\n }\n }\n\n // Poll timeout, return failure\n return {\n code: -1,\n data: null,\n message: 'Transaction confirmation timeout, please check later',\n }\n } else {\n return {\n code: -1,\n data: null,\n message: 'Your request timed out, please try again',\n }\n }\n\n }\n\n async forwarderTx(\n {\n from,\n to,\n value,\n gas,\n deadline,\n data,\n nonce,\n forwardFeeToken,\n }: {\n from: string;\n to: string;\n value: string;\n gas: string;\n deadline: number;\n data: string;\n nonce: string;\n forwardFeeToken: string;\n },\n chainId: number,\n ) {\n const domain = await this.getForwardEip712Domain(chainId);\n\n const walletClient = await getWalletClient(chainId);\n\n const [account] = await walletClient.getAddresses();\n if (!account) throw new MyxSDKError(MyxErrorCode.InvalidSigner, \"Missing signer for forwarderTx\");\n\n const signature = await walletClient.signTypedData({\n account,\n domain,\n types: contractTypes,\n primaryType: \"ForwardRequest\",\n message: {\n from: from as `0x${string}`,\n to: to as `0x${string}`,\n value: BigInt(value),\n gas: BigInt(gas),\n nonce: BigInt(nonce),\n deadline: BigInt(deadline),\n data: data as `0x${string}`,\n },\n });\n\n const txRs = await this.api.forwarderTxApi({ from, to, value, gas, nonce, data, deadline, signature, forwardFeeToken }, chainId);\n return txRs;\n }\n\n async authorizeSeamlessAccount({\n approve,\n seamlessAddress,\n chainId,\n forwardFeeToken,\n }: {\n approve: boolean;\n seamlessAddress: string;\n chainId: number;\n forwardFeeToken: string;\n walletClientOrSigner?: Awaited<ReturnType<typeof getWalletClient>> | SignerLike;\n }) {\n const masterAddress = this.configManager.hasSigner() ? await this.configManager.getSignerAddress(chainId) : \"\";\n\n if (approve) {\n const balanceRes = await this.account.getWalletQuoteTokenBalance({ chainId, address: masterAddress, tokenAddress: forwardFeeToken });\n const balance = balanceRes.data;\n const marketManagerContract = await getMarketManageContract(chainId);\n const pledgeFee = await marketManagerContract.read.getForwardFeeByToken([forwardFeeToken as `0x${string}`]);\n const gasFee = BigInt(pledgeFee) * BigInt(FORWARD_PLEDGE_FEE_RADIO)\n if (gasFee > 0 && gasFee > BigInt(balance)) {\n this.logger.debug('Insufficient balance')\n throw new MyxSDKError(MyxErrorCode.InsufficientBalance, \"Insufficient balance\");\n }\n }\n\n const deadline = dayjs().add(60, 'minute').unix()\n let permitParams: any[] = []\n if (approve) {\n try {\n permitParams = await this.getUSDPermitParams(deadline, chainId, forwardFeeToken)\n } catch (error) {\n this.logger.warn('Failed to get USD permit params, proceeding without permit:', error)\n permitParams = []\n }\n }\n\n const forwarderContract = await getForwarderContract(chainId, ProviderType.Signer);\n const nonce = await (await getForwarderContract(chainId)).read.nonces([masterAddress as `0x${string}`]);\n const functionHash = encodeFunctionData({\n abi: Forwarder_ABI as any,\n functionName: \"permitAndApproveForwarder\",\n args: [seamlessAddress, approve, permitParams],\n });\n\n const txRs = await this.forwarderTx({\n from: masterAddress,\n to: forwarderContract.address,\n value: '0',\n gas: '800000',//gas.toString(),\n nonce: nonce.toString(),\n data: functionHash,\n deadline,\n forwardFeeToken,\n }, chainId)\n\n if (txRs.data?.txHash) {\n // Poll chain for transaction status\n const maxAttempts = 5 // Max 5 attempts\n const pollInterval = 1000 // Poll every 1 second\n\n for (let attempt = 0; attempt < maxAttempts; attempt++) {\n try {\n const rs = await this.api.fetchForwarderGetApi({ requestId: txRs.data.requestId })\n\n if (rs.data?.status === 9) {\n return {\n code: 0,\n data: {\n seamlessAccount: seamlessAddress,\n authorized: approve,\n },\n }\n }\n\n // If not on chain yet, wait and poll again\n if (attempt < maxAttempts - 1) {\n await new Promise(resolve => setTimeout(resolve, pollInterval))\n }\n } catch (error) {\n this.logger.error('Poll transaction from chain error:', error)\n // If not the last attempt, continue polling\n if (attempt < maxAttempts - 1) {\n await new Promise(resolve => setTimeout(resolve, pollInterval))\n }\n }\n }\n\n // Poll timeout, return failure\n return {\n code: -1,\n data: null,\n message: 'Transaction confirmation timeout, please check later',\n }\n } else {\n return {\n code: -1,\n data: null,\n message: 'Your request timed out, please try again',\n }\n }\n }\n\n async getOriginSeamlessAccount(address: string, chainId: number) {\n const forwarderContract = await getForwarderContract(chainId);\n const masterAddress = await forwarderContract.read.originAccount([address as `0x${string}`]);\n\n return {\n code: 0,\n data: { masterAddress },\n };\n }\n\n /**\n * Build ForwardRequest fields for a Broker contract call executed via the Forwarder.\n * `data` must be the ABI args array for `functionName` (same order as the contract), with no undefined addresses.\n */\n async formatForwarderTxParams({\n address,\n chainId,\n forwardFeeToken,\n functionName,\n data,\n seamlessAddress,\n }: {\n address: string;\n chainId: number;\n forwardFeeToken: string;\n functionName: string;\n /** ABI args tuple for `functionName`, e.g. `[user, poolId, ...]` */\n data: readonly unknown[] | unknown[];\n seamlessAddress: string;\n }) {\n const brokerAddress = this.configManager.getConfig().brokerAddress;\n if (!brokerAddress || !isAddress(brokerAddress)) {\n throw new MyxSDKError(\n MyxErrorCode.InvalidBrokerAddress,\n \"brokerAddress is missing or invalid; pass brokerAddress in MyxClient constructor / updateClientChainId\"\n );\n }\n if (!address || !isAddress(address)) {\n throw new MyxSDKError(MyxErrorCode.ParamError, \"address (master) is missing or invalid\");\n }\n if (!seamlessAddress || !isAddress(seamlessAddress)) {\n throw new MyxSDKError(MyxErrorCode.ParamError, \"seamlessAddress is missing or invalid\");\n }\n if (!forwardFeeToken || !isAddress(forwardFeeToken)) {\n throw new MyxSDKError(MyxErrorCode.ParamError, \"forwardFeeToken is missing or invalid\");\n }\n if (!Array.isArray(data)) {\n throw new MyxSDKError(\n MyxErrorCode.ParamError,\n \"data must be an array of ABI arguments for encodeFunctionData (e.g. [arg1, arg2])\"\n );\n }\n\n const isEnoughGas = await this.utils.checkSeamlessGas(address, chainId, forwardFeeToken);\n\n if (!isEnoughGas) {\n throw new MyxSDKError(MyxErrorCode.InsufficientBalance, \"Insufficient relay fee\");\n }\n\n const forwarderContract = await getForwarderContract(chainId);\n let functionHash: `0x${string}`;\n try {\n functionHash = encodeFunctionData({\n abi: Broker_ABI as any,\n functionName,\n args: data as any,\n });\n } catch (e) {\n throw new MyxSDKError(\n MyxErrorCode.ParamError,\n `encodeFunctionData failed for Broker.${String(functionName)}: ${(e as Error).message}. Check args shape and that no address field is undefined.`\n );\n }\n\n const nonce = await forwarderContract.read.nonces([seamlessAddress as `0x${string}`]);\n\n return {\n from: seamlessAddress,\n to: brokerAddress,\n value: \"0\",\n gas: \"800000\",\n deadline: dayjs().add(60, \"minute\").unix(),\n data: functionHash,\n nonce: nonce.toString(),\n forwardFeeToken,\n };\n }\n\n // async unLockSeamlessWallet({ masterAddress, password, apiKey, chainId }: { masterAddress: string, password: string, apiKey: string, chainId: number }) {\n // const key = Utf8.parse(charFill(password));\n // const iv = getIvMapString();\n // const decrypted = AES.decrypt(apiKey, key, { iv, mode: CBC, padding: Pkcs7 });\n // const privateKey = decrypted.toString(Utf8) as `0x${string}`;\n // const wallet = privateKeyToAccount(privateKey);\n // let isAuthorized = await this.onCheckRelayer(masterAddress, wallet.address, chainId);\n\n // if (!isAuthorized) {\n // await this.authorizeSeamlessAccount({ approve: true, seamlessAddress: wallet.address, chainId });\n // isAuthorized = true;\n // }\n // this.configManager.updateSeamlessWallet({\n // masterAddress,\n // wallet,\n // authorized: isAuthorized,\n // });\n // return {\n // code: 0,\n // data: {\n // masterAddress,\n // seamlessAccount: wallet.address,\n // authorized: isAuthorized,\n // },\n // };\n // }\n\n // async exportSeamlessPrivateKey({ password, apiKey }: { password: string, apiKey: string }) {\n // const key = Utf8.parse(charFill(password));\n // const iv = getIvMapString();\n // const decrypted = AES.decrypt(apiKey, key, { iv, mode: CBC, padding: Pkcs7 });\n // const privateKey = decrypted.toString(Utf8);\n // const wallet = privateKeyToAccount(privateKey as `0x${string}`);\n\n // if (wallet.address !== this.configManager.getConfig().seamlessAccount?.wallet?.address) {\n // throw new MyxSDKError(MyxErrorCode.InvalidPrivateKey, \"Invalid private key\");\n // }\n\n // return {\n // code: 0,\n // data: { privateKey },\n // };\n // }\n\n // async importSeamlessPrivateKey({ privateKey, password, chainId }: { privateKey: string, password: string, chainId: number }) {\n // if (!isHex(privateKey as `0x${string}`) || (privateKey as string).length !== 66) {\n // throw new MyxSDKError(MyxErrorCode.InvalidPrivateKey, \"Invalid private key\");\n // }\n\n // const wallet = privateKeyToAccount(privateKey as `0x${string}`);\n // const forwarderContract = await getForwarderContract(chainId);\n // const masterAddress = await forwarderContract.read.originAccount([wallet.address]);\n\n // if (masterAddress === zeroAddress) {\n // throw new MyxSDKError(MyxErrorCode.InvalidPrivateKey, \"The private key is not a senseless account\");\n // }\n\n // const isAuthorized = await this.onCheckRelayer(masterAddress, wallet.address, chainId);\n // const key = Utf8.parse(charFill(password));\n // const iv = getIvMapString();\n // const encrypted = AES.encrypt(privateKey, key, { iv, mode: CBC, padding: Pkcs7 });\n // const apiKey = encrypted.toString();\n\n // this.configManager.updateSeamlessWallet({\n // masterAddress,\n // wallet,\n // authorized: isAuthorized,\n // });\n\n // return {\n // code: 0,\n // data: {\n // masterAddress,\n // seamlessAccount: wallet.address,\n // authorized: isAuthorized,\n // apiKey,\n // },\n // };\n // }\n\n // async startSeamlessMode({ open }: { open: boolean }) {\n\n // await this.configManager.startSeamlessMode(open)\n\n // return {\n // code: 0,\n // data: {\n // open,\n // },\n // }\n // }\n\n // async createSeamless({ password, chainId }: { password: string, chainId: number }) {\n // if (!this.configManager.hasSigner()) {\n // throw new MyxSDKError(MyxErrorCode.InvalidSigner, \"Invalid signer\");\n // }\n // const walletClient = await getWalletClient(chainId);\n // const [account] = await walletClient.getAddresses();\n // if (!account) throw new MyxSDKError(MyxErrorCode.InvalidSigner, \"No account\");\n\n // try {\n // const createAccountSignature = await walletClient.signMessage({\n // account,\n // message: `${account}_${password}`,\n // });\n // const hashedSignature = await calculateSignature(createAccountSignature);\n // const { privateKey, wallet } = generateEthWalletFromHashedSignature(hashedSignature);\n\n // const key = Utf8.parse(charFill(password));\n // const iv = getIvMapString();\n // const encrypted = AES.encrypt(privateKey, key, { iv, mode: CBC, padding: Pkcs7 });\n // const apiKey = encrypted.toString();\n\n // let isAuthorized = await this.onCheckRelayer(account, wallet.address, chainId);\n // this.configManager.updateSeamlessWallet({\n // masterAddress: account,\n // wallet,\n // authorized: isAuthorized,\n // });\n\n // return {\n // code: 0,\n // data: {\n // masterAddress: account,\n // seamlessAccount: wallet.address,\n // authorized: isAuthorized,\n // apiKey,\n // },\n // };\n // } catch (error) {\n // return {\n // code: -1,\n // message: (error as Error).message,\n // };\n // }\n // }\n}","\nexport const getEIP712Domain = async (contract: any) => {\n try {\n const eip712Domain = await (contract as any).read.eip712Domain();\n\n return {\n name: eip712Domain[1],\n version: eip712Domain[2],\n chainId: BigInt(eip712Domain[3]),\n verifyingContract: eip712Domain[4] as `0x${string}`,\n };\n } catch (error) {\n throw new Error(`Error fetching EIP712 domain: ${error}`);\n }\n};\n\nexport function wait(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms))\n}\n\nfunction waitRandom(min: number, max: number): Promise<void> {\n return wait(min + Math.round(Math.random() * Math.max(0, max - min)))\n}\n\n/** Thrown if the function is canceled before resolving. */\nexport class CanceledError extends Error {\n constructor() {\n super()\n this.name = 'CanceledError'\n }\n\n name = 'CanceledError'\n message = 'Retryable was canceled'\n}\n\n/** May be thrown to force a retry. */\nexport class RetryableError extends Error {\n constructor() {\n super()\n this.name = 'RetryableError'\n }\n\n name = 'RetryableError'\n}\n\n/** If the number of retries is 0, it is determined to time out. */\nexport class TimeoutError extends Error {\n constructor() {\n super()\n this.name = 'TimeoutError'\n }\n\n name = 'TimeoutError'\n message = 'Retryable was Timeout'\n}\n\nexport interface RetryOptions {\n n: number\n minWait: number\n maxWait: number\n}\n\n/**\n * Retries a function until its returned promise successfully resolves, up to n times.\n * @param fn function to retry\n * @param n how many times to retry\n * @param minWait min wait between retries in ms\n * @param maxWait max wait between retries in ms\n */\nexport function retry<T>(\n fn: () => Promise<T>,\n { n, minWait, maxWait }: RetryOptions\n): { promise: Promise<T>; cancel: () => void } {\n let completed = false\n let rejectCancelled: (error: Error) => void\n // eslint-disable-next-line no-async-promise-executor\n const promise = new Promise<T>(async (resolve, reject) => {\n rejectCancelled = reject\n // eslint-disable-next-line no-constant-condition\n while (true) {\n let result: T\n try {\n result = await fn()\n if (!completed) {\n resolve(result)\n completed = true\n }\n break\n } catch (error) {\n if (completed) {\n break\n }\n if (n <= 0 || !(error instanceof RetryableError)) {\n if (error instanceof RetryableError) {\n reject(new TimeoutError())\n } else {\n reject(error)\n }\n\n completed = true\n break\n }\n n--\n }\n await waitRandom(minWait, maxWait)\n }\n })\n return {\n promise,\n cancel: () => {\n if (completed) return\n completed = true\n rejectCancelled(new CanceledError())\n },\n }\n}","import {\n getDisputeCourtContract,\n getReimbursementContract,\n ProviderType,\n} from \"@/web3/providers\";\nimport { getPublicClient } from \"@/web3/viemClients.js\";\nimport { MyxClient } from \"../index.js\";\nimport { MyxErrorCode, MyxSDKError } from \"../error/const.js\";\nimport { decodeEventLog } from \"viem\";\nimport type { Address } from \"viem\";\nimport DisputeCourt_ABI from \"@/abi/DisputeCourt.json\";\nimport { BaseMyxClient } from \"../base/BaseMyxClient.js\";\nimport { AppealVoteParams } from \"./type.js\";\nimport {\n AppealReimbursementParams,\n AppealUploadEvidenceParams,\n GetAppealDetailParams,\n GetAppealListParams,\n GetAppealNodeVoteListParams,\n GetAppealReconsiderationDetailParams,\n GetAppealReconsiderationListParams,\n GetAppealVoteNodeDetailParams,\n GetIsVoteNodeParams,\n GetWarmholeSignParams,\n GuardianSignatureItem,\n PostVoteSignatureParams,\n} from \"../api/appeal-type.js\";\nimport { ConfigManager } from \"../config/index.js\";\n\nexport class Appeal extends BaseMyxClient {\n private configManager: ConfigManager;\n constructor(client: MyxClient, configManager: ConfigManager) {\n super(client);\n this.configManager = configManager;\n }\n\n private getDisputeCourtContract(auth: boolean = true) {\n return getDisputeCourtContract(this.config.chainId, auth ? ProviderType.Signer : ProviderType.JSON);\n }\n\n private getReimbursementContract(auth: boolean = true) {\n return getReimbursementContract(this.config.chainId, auth ? ProviderType.Signer : ProviderType.JSON);\n }\n\n private getCaseIdFromReceiptLogs(receipt: { logs: { address: Address; topics: unknown[]; data: `0x${string}` }[] }, eventName: \"DisputeFiled\" | \"AppealFiled\") {\n const key = eventName === \"DisputeFiled\" ? \"caseId\" : \"appealCaseId\";\n for (const log of receipt.logs) {\n try {\n const decoded = decodeEventLog({ abi: DisputeCourt_ABI as any, data: log.data, topics: log.topics as [`0x${string}`, ...`0x${string}`[]] }) as { eventName: string; args?: Record<string, bigint> };\n if (decoded.eventName === eventName && decoded.args && key in decoded.args) {\n return decoded.args[key];\n }\n } catch {\n continue;\n }\n }\n return null;\n }\n\n /**\n * submit appeal\n * @param poolId - the pool id\n * @param poolToken - the pool token\n * @returns the transaction receipt\n */\n async submitAppeal(poolId: string, lpToken: Address, lpAmount: string) {\n // lp approve check\n const account = this.configManager.hasSigner() ? await this.configManager.getSignerAddress(this.config.chainId) : \"\";\n const needApprove = await this.client.utils.needsApproval(\n account,\n this.config.chainId,\n lpToken,\n lpAmount,\n this.getAddressConfig().DISPUTE_COURT\n );\n this.client.logger.debug(\"need-approve\", needApprove);\n if (needApprove) {\n await this.client.utils.approveAuthorization({\n chainId: this.config.chainId,\n quoteAddress: lpToken,\n spenderAddress: this.getAddressConfig().DISPUTE_COURT,\n });\n }\n const contract = await this.getDisputeCourtContract();\n const prices = await this.client.utils.buildUpdatePriceParams(\n poolId,\n this.config.chainId\n );\n\n const value = BigInt(prices[0].value.toString() || \"1\");\n\n const _gasLimit = await contract.estimateGas!.fileDispute([prices, poolId as `0x${string}`, lpToken], { value });\n const gasLimit = await this.client.utils.getGasLimitByRatio(_gasLimit);\n const gasPrice = await this.client.utils.getGasPriceByRatio();\n const hash = await contract.write!.fileDispute([prices, poolId as `0x${string}`, lpToken], {\n value,\n gasLimit,\n gasPrice,\n });\n const receipt = await getPublicClient(this.config.chainId).waitForTransactionReceipt({ hash });\n const caseId = this.getCaseIdFromReceiptLogs(receipt, \"DisputeFiled\");\n if (caseId == null) {\n throw new MyxSDKError(MyxErrorCode.TransactionFailed, \"DisputeFiledLog not found\");\n }\n return { transaction: receipt, caseId };\n }\n\n /**\n * vote for appeal\n * @param caseId - the case id\n * @param isFor - true if for the appeal, false if against the appeal\n * @returns the transaction receipt\n */\n async voteForAppeal({\n caseId,\n validator,\n isFor,\n deadline,\n v,\n r,\n s,\n }: AppealVoteParams) {\n const contract = await this.getDisputeCourtContract();\n const _gasLimit = await contract.estimateGas!.vote([caseId, validator, isFor ? 1 : 0, deadline, v, r, s]);\n const gasLimit = await this.client.utils.getGasLimitByRatio(_gasLimit);\n const gasPrice = await this.client.utils.getGasPriceByRatio();\n const hash = await contract.write!.vote([caseId, validator, isFor ? 1 : 0, deadline, v, r, s], { gasLimit, gasPrice });\n const receipt = await getPublicClient(this.config.chainId).waitForTransactionReceipt({ hash });\n return receipt;\n }\n\n /**\n * claim appeal margin\n * @param caseId - the case id\n * @returns the transaction receipt\n */\n async claimAppealMargin(caseId: number) {\n const contract = await this.getDisputeCourtContract();\n const _gasLimit = await contract.estimateGas!.claimBond([caseId]);\n const gasLimit = await this.client.utils.getGasLimitByRatio(_gasLimit);\n const gasPrice = await this.client.utils.getGasPriceByRatio();\n const hash = await contract.write!.claimBond([caseId], { gasLimit, gasPrice });\n return getPublicClient(this.config.chainId).waitForTransactionReceipt({ hash });\n }\n\n /**\n * claim reimbursement\n * @param caseId - the case id\n * @param baseAmount - the base amount\n * @param quoteAmount - the quote amount\n * @param merkleProof - the merkle proof\n * @returns the transaction receipt\n */\n async claimReimbursement(\n caseId: number,\n baseAmount: string,\n quoteAmount: string,\n merkleProof: `0x${string}`[]\n ) {\n const contract = await this.getReimbursementContract();\n const _gasLimit = await contract.estimateGas!.claimReimbursement([caseId, baseAmount, quoteAmount, merkleProof]);\n const gasLimit = await this.client.utils.getGasLimitByRatio(_gasLimit);\n const gasPrice = await this.client.utils.getGasPriceByRatio();\n const hash = await contract.write!.claimReimbursement([caseId, baseAmount, quoteAmount, merkleProof], { gasLimit, gasPrice });\n return getPublicClient(this.config.chainId).waitForTransactionReceipt({ hash });\n }\n\n /**\n * get dispute configuration\n */\n async getDisputeConfiguration() {\n const contract = await this.getDisputeCourtContract(false);\n return contract.read.getDisputeConfiguration();\n }\n\n /**\n * \n * vote node for submit appeal\n */\n async submitAppealByVoteNode(poolId: string, response: string, guardianSignatures: GuardianSignatureItem[]) {\n const contract = await this.getDisputeCourtContract();\n const gasPrice = await this.client.utils.getGasPriceByRatio();\n const gasLimit = await this.client.utils.getGasLimitByRatio(await contract.estimateGas!.fileDisputeFromStaker([poolId as `0x${string}`, response, guardianSignatures]));\n const hash = await contract.write!.fileDisputeFromStaker([poolId as `0x${string}`, response, guardianSignatures], { gasLimit, gasPrice });\n const receipt = await getPublicClient(this.config.chainId).waitForTransactionReceipt({ hash });\n const caseId = this.getCaseIdFromReceiptLogs(receipt, \"DisputeFiled\");\n if (caseId == null) throw new MyxSDKError(MyxErrorCode.TransactionFailed, \"DisputeFiledLog not found\");\n return { tx: receipt, caseId };\n }\n\n async appealReconsideration(\n caseId: number,\n appealToken: Address,\n appealAmount: string\n ) {\n const contract = await this.getDisputeCourtContract();\n const account = this.configManager.hasSigner() ? await this.configManager.getSignerAddress(this.config.chainId) : \"\";\n const spenderAddress = this.getAddressConfig().DISPUTE_COURT;\n const isNeedApprove = await this.client.utils.needsApproval(\n account,\n this.config.chainId,\n appealToken,\n appealAmount,\n spenderAddress\n );\n if (isNeedApprove) {\n const res = await this.client.utils.approveAuthorization({\n chainId: this.config.chainId,\n quoteAddress: appealToken,\n spenderAddress,\n });\n if (res.code !== 0) {\n throw new MyxSDKError(MyxErrorCode.TransactionFailed, res.message);\n }\n }\n const _gasLimit = await contract.estimateGas!.appeal([caseId]);\n const gasLimit = await this.client.utils.getGasLimitByRatio(_gasLimit);\n const gasPrice = await this.client.utils.getGasPriceByRatio();\n const hash = await contract.write!.appeal([caseId], { gasLimit, gasPrice });\n const receipt = await getPublicClient(this.config.chainId).waitForTransactionReceipt({ hash });\n const appealCaseId = this.getCaseIdFromReceiptLogs(receipt, \"AppealFiled\");\n if (appealCaseId == null) throw new MyxSDKError(MyxErrorCode.TransactionFailed, \"AppealFiledLog not found\");\n return { tx: receipt, appealCaseId, caseId };\n }\n\n /**\n * http api\n */\n\n async getAppealList(params: GetAppealListParams) {\n return this.client.api.getAppealList(params);\n }\n\n async getAppealDetail(params: GetAppealDetailParams) {\n return this.client.api.getAppealDetail(params);\n }\n\n async uploadAppealEvidence(params: AppealUploadEvidenceParams) {\n return this.client.api.uploadAppealEvidence(params);\n }\n\n async getAppealReconsiderationList(\n params: GetAppealReconsiderationListParams\n ) {\n return this.client.api.getAppealReconsiderationList(params);\n }\n\n async getAppealReconsiderationDetail(\n params: GetAppealReconsiderationDetailParams\n ) {\n return this.client.api.getAppealReconsiderationDetail(params);\n }\n\n async getAppealReimbursementList(params: AppealReimbursementParams) {\n return this.client.api.getAppealReimbursementList(params);\n }\n\n async getAppealNodeVoteList(params: GetAppealNodeVoteListParams) {\n return this.client.api.getAppealNodeVoteList(params);\n }\n\n async getAppealNodeVoteDetail(params: GetAppealVoteNodeDetailParams) {\n return this.client.api.getAppealNodeVoteDetails(params);\n }\n\n async getIsVoteNode(params: GetIsVoteNodeParams) {\n return this.client.api.getIsVoteNode(params);\n }\n\n async postVoteSignature(params: PostVoteSignatureParams) {\n return this.client.api.postVoteSignature(params);\n }\n\n async getPedingVoteCount() {\n return this.client.api.getPedingVoteCount();\n }\n\n async getMyAppealCount() {\n return this.client.api.getMyAppealCount();\n }\n\n async getWarmholeSign(params: GetWarmholeSignParams) {\n return this.client.api.getWarmholeSign(params)\n }\n async getDisputeTotalCount() {\n return this.client.api.getDisputeTotalCount();\n }\n async getAppealTotalCount() {\n return this.client.api.getAppealTotalCount();\n }\n async getReimbursementTotalCount() {\n return this.client.api.getReimbursementTotalCount();\n }\n async getAppealStatus(poolId: string, chainId: number, address: string) {\n return this.client.api.getPoolAppealStatus({ poolId, chainId, address, accessToken: await this.configManager.getAccessToken() ?? '' });\n }\n}\n","import { MyxClient, MyxClientConfig } from \"../index.js\";\nimport { MyxErrorCode, MyxSDKError } from \"../error/const.js\";\nimport { getBrokerContract } from \"@/web3/providers\";\nimport { getContractAddressByChainId } from \"@/config/address\";\nimport { isSupportedChainFn } from \"@/config/chain\";\n\nexport class BaseMyxClient {\n protected client: MyxClient;\n constructor(client: MyxClient) {\n this.client = client;\n }\n\n protected getConfig(): MyxClientConfig {\n return this.client.getConfigManager()?.getConfig();\n }\n\n protected getAddressConfig() {\n const config = this.getConfig();\n const chainId = config?.chainId;\n if (!chainId || !isSupportedChainFn(chainId)) {\n throw new MyxSDKError(MyxErrorCode.InvalidChainId, \"Invalid chain id\");\n }\n return getContractAddressByChainId(chainId);\n }\n\n protected getBrokerContract() {\n const config = this.getConfig();\n if (!config?.brokerAddress) {\n throw new MyxSDKError(\n MyxErrorCode.InvalidBrokerAddress,\n \"Invalid broker address\"\n );\n }\n return getBrokerContract(config.chainId, config.brokerAddress);\n }\n\n protected get config() {\n return this.getConfig();\n }\n}\n","import type { Address } from \"viem\";\nimport { MyxClient } from \"../index.js\";\nimport { BaseMyxClient } from \"../base/BaseMyxClient.js\";\nimport { getBrokerSingerContract } from \"@/web3/providers\";\nimport { getPublicClient } from \"@/web3/viemClients.js\";\n\nexport class Referrals extends BaseMyxClient {\n constructor(client: MyxClient) {\n super(client);\n }\n\n async claimRebate(tokenAddress: Address) {\n const config = this.getConfig();\n const brokerContract = await getBrokerSingerContract(this.config.chainId, config!.brokerAddress);\n const _gasLimit = await brokerContract.estimateGas!.claimRebate([tokenAddress]);\n const gasLimit = await this.client.utils.getGasLimitByRatio(_gasLimit);\n const gasPrice = await this.client.utils.getGasPriceByRatio();\n const hash = await brokerContract.write!.claimRebate([tokenAddress], { gasPrice, gasLimit });\n return getPublicClient(this.config.chainId).waitForTransactionReceipt({ hash });\n }\n}\n","import { type Address } from \"viem\";\n\nexport enum AppealType {\n UnderReview = 1,\n InitialVote = 2,\n PublicNotice = 3,\n UnderReconsideration = 4,\n Won = 5,\n Failed = 6,\n PlatformRuling = 7,\n PlatformRevoked = 8,\n}\n\nexport enum AppealReconsiderationType {\n InitialVoting = 1,\n PublicNotice = 2,\n UnderReconsideration = 3,\n Won = 5,\n Failed = 4,\n PlatformRuling = 6,\n PlatformRevoked = 7,\n ReconsiderationVoting = 8,\n AppealRevert = 9,\n NotAppealFailed = 10\n}\n\nexport enum AppealStage {\n UnderReview = 1,\n PublicNotice = 2,\n UnderReconsideration = 3,\n Completed = 4,\n}\n\nexport interface GetAppealListParams {\n chainId?: number;\n poolId?: string;\n type?: AppealType;\n stage?: AppealStage;\n before?: number;\n after?: number;\n limit?: number;\n}\n\nexport interface AppealListItem {\n id: number;\n chainId: number;\n caseId: number;\n poolId: string;\n complainant: string; // appeal user\n poolToken: string; // appeal margin token\n disputeBond: string; // appeal margin amount\n type: AppealType;\n stage: AppealStage;\n totalVoteCount: number; // total vote count\n votedCount: number; // voted count\n appealCount: number; // Total appeal count\n appealDeadline: number; // Appeal deadline\n compClaimDeadline: number; // Compensation claim deadline\n updateTime: number; // Update time\n disputeBondState: AppealClaimStatusEnum\n disputeBondClaimTime: number\n claimStatus: AppealClaimStatusEnum // Compensation claim status\n baseAmount?: string\n quoteAmount?: string\n successVoteCount: number\n}\n\nexport interface GetAppealDetailParams {\n caseId: number;\n}\n\nexport enum NodeTypeEnum {\n ElectionNode = 0,\n OfficialNode = 1,\n}\n\nexport enum VoteTypeEnum {\n Reject = 0,\n Support = 1,\n}\n\nexport interface AppealVoteItem {\n time: number;\n node: string;\n type: NodeTypeEnum;\n option: VoteTypeEnum;\n}\n\nexport interface AppealReconsiderationItem {\n respondent: string; // Respondent address\n type: AppealReconsiderationType;\n stage: AppealStage;\n voteCount: number;\n totalVoteCount: number;\n}\n\nexport interface AppealDetail {\n caseId: number;\n chainId: number;\n poolId: string;\n complainant: string;\n poolToken: string;\n disputeBond: string;\n type: AppealType;\n stage: AppealStage;\n totalVoteCount: number;\n votedCount: number;\n appealCount: number;\n appealDeadline: number;\n voteDeadline: number;\n epochStartTime: number;\n epochEndTime: number;\n publicNoticeTime: number;\n respondents: string[];\n compClaimDeadline: number;\n votes: AppealVoteItem[];\n appeals: AppealReconsiderationItem[];\n disputeTime: number; // Dispute time\n txHash: string; // Dispute tx hash\n disputeBondState: AppealClaimStatusEnum;\n disputeBondClaimTime: number\n claimStatus: AppealClaimStatusEnum\n baseAmount?: string\n quoteAmount?: string\n successVoteCount: number\n}\n\nexport interface AppealUploadEvidenceParams {\n caseId: number;\n poolId: string;\n evidenceUrl: string;\n}\n\nexport interface GetAppealReconsiderationListParams {\n chainId?: number;\n poolId?: string;\n type?: AppealReconsiderationType;\n stage?: AppealStage;\n before?: number;\n after?: number;\n limit?: number;\n}\n\nexport interface AppealReconsiderationListItem {\n id: number;\n chainId: number;\n caseId: number;\n poolId: string;\n respondent: string;\n appealToken: string; // margin token address\n appealBond: string; // margin amount\n type: AppealReconsiderationType;\n stage: AppealStage;\n totalVoteCount: number;\n votedCount: number\n appealDeadline: number; // appeal deadline\n publicNoticeEndTime: number; // public notice end time\n updateTime: number; // update time\n appealCaseId?: number; // Appeal case ID\n appealBondClaimTime?: number\n successVoteCount: number\n appealSuccessVoteCount?: number\n appealTotalVoteCount?: number\n appealVotedCount?: number \n}\n\nexport interface GetAppealReconsiderationDetailParams {\n caseId: number;\n appealCaseId?: number;\n}\n\nexport interface AppealReconsiderationDetail {\n id: number;\n chainId: number;\n poolId: string;\n complainant: string;\n respondent: string;\n type: AppealReconsiderationType;\n stage: AppealStage;\n disputeTotalVoteCount: number;\n disputeVotedCount: number;\n disputeTxHash: string;\n disputeVoteDeadline: number;\n disputeStartTime: number;\n disputeVotes: AppealVoteItem[]; // First-instance votes\n publicNoticeStartTime: number;\n publicNoticeEndTime: number;\n appealDeadline: number; // Appeal end time\n respondents: string[]; // Respondent list\n appealToken: string; // Margin token address\n appealBond: string; // Margin amount\n appealVotes: AppealVoteItem[]; // Appeal votes\n appealTotalVoteCount: number; // Total votable count\n appealVotedCount: number; // Voted count\n appealCaseId?: number; // Appeal case ID\n appealType: AppealReconsiderationType; // Appeal type (bound to current user)\n appealStage: AppealStage; // Appeal stage (bound to current user)\n appealBondState: AppealClaimStatusEnum; // Appeal bond state\n appealBondClaimTime?: number\n txHash: string\n appealStartTime: number\n appealEndTime: number\n appealSuccessVoteCount?: number\n successVoteCount: number\n}\n\nexport interface AppealReimbursementParams {\n before?: number;\n after?: number;\n limit?: number;\n}\n\nexport enum AppealClaimStatusEnum {\n UnClaimed = 0,\n Claimed = 1,\n}\n\nexport interface AppealReimbursementItem {\n id: number;\n caseId: number;\n chainId: number;\n poolId: string;\n baseAmount: string;\n quoteAmount: string;\n claimStatus: AppealClaimStatusEnum\n claimTime: number;\n expireTime: number;\n createTime: number;\n proof: string\n}\n\nexport interface GetAppealNodeVoteListParams {\n before?: number;\n after?: number;\n limit?: number;\n}\n\nexport enum AppealNodeVotedStateEnum {\n NotVoted = 0,\n Voted = 1,\n}\n\nexport enum AppealCaseTypeEnum {\n Appeal = 1,\n Reconsideration = 2,\n}\n\nexport enum AppealNodeStateEnum {\n NoVote = 0,\n Supported = 1,\n Rejected = 2,\n}\n\nexport interface AppealNodeVoteListItem {\n id: number;\n chainId: number;\n caseId: number;\n poolId: string;\n appealCaseId: number;\n type: AppealCaseTypeEnum;\n deadline: number;\n votedCount: number;\n totalVoteCount: number;\n voteOption: VoteTypeEnum;\n state: AppealNodeVotedStateEnum;\n nodeState: AppealNodeStateEnum;\n}\n\nexport interface AppealNodeVoteItem {\n disputeEvidenceUrl: string;\n appealEvidenceUrl: NodeTypeEnum;\n disputeRemark: VoteTypeEnum;\n appealRemark: string;\n chainId: number;\n poolId: string;\n respondent: string;\n respondents: string[];\n voteDeadline: number;\n}\n\nexport interface GetIsVoteNodeParams {\n account: string;\n}\n\nexport enum IsVoteNodeEnum {\n Yes = 1,\n No = 0,\n}\n\nexport interface GetAppealVoteNodeDetailParams {\n caseId: number;\n appealCaseId?: number;\n}\n\nexport interface PostVoteSignatureParams {\n chainId: number;\n address: Address; // DisputeCourt contract address\n caseId: number;\n type: AppealCaseTypeEnum;\n validator: Address;\n voteOption: VoteTypeEnum;\n nonce: number;\n deadline: number;\n signature: string;\n}\n\nexport type PostVoteResponse = 1 | 0;\n\n\nexport interface GetWarmholeSignParams {\n account: string\n}\n\nexport interface GuardianSignatureItem {\n r: string\n s: string\n v: string\n guardianIndex: number\n}\nexport interface GetWarmholeSignResponse {\n epoch: number // Staking epoch\n response: string // data\n guardianSignatures: GuardianSignatureItem[]\n}\n\nexport enum AppealStatus {\n None = 0,\n isAppealing = 1,\n}","import { SubScription } from \"@/manager/subscription\";\nimport { ConfigManager } from \"./config/index.js\";\nimport { type MyxClientConfig } from \"./config/index.js\";\nimport { Logger } from \"@/logger\";\nimport { Markets } from \"./markets/index.js\";\nimport { Position } from \"./position/index.js\";\nimport { Order } from \"./order/index.js\";\nimport { Utils } from \"./utils/index.js\";\nimport { Account } from \"./account/index.js\";\nimport { Api } from \"./api/index.js\";\n\nimport { MxSDK, setConfigManagerForViem } from \"@/web3\";\nimport { Seamless } from \"./seamless/index.js\";\nimport { Appeal } from \"./appeal/index.js\";\nimport { Referrals } from \"./referrals/index.js\";\n\n// types\nexport type { MyxClientConfig } from \"./config/index.js\";\nexport * from \"./subscription/types/index.js\";\nexport * from \"./api/type.js\";\n\nexport class MyxClient {\n /**\n * private properties\n */\n private configManager: ConfigManager;\n public logger: Logger;\n\n /**\n * public properties\n */\n public subscription: SubScription;\n public markets: Markets;\n public position: Position;\n public order: Order;\n public utils: Utils;\n public account: Account;\n public seamless: Seamless;\n public api: Api;\n public appeal: Appeal;\n public referrals: Referrals;\n /**\n * Get config manager (for accessToken-related methods)\n */\n public getConfigManager(): ConfigManager {\n return this.configManager;\n }\n\n constructor(options: MyxClientConfig) {\n this.configManager = new ConfigManager(options);\n this.logger = new Logger({\n logLevel: options.logLevel,\n });\n\n /**\n * initialize lp sdk\n */\n const lp = MxSDK.getInstance();\n lp.setConfigManager(this.configManager);\n setConfigManagerForViem(this.configManager);\n lp.getMarkets().then();\n\n /**\n * initialize utils\n */\n this.utils = new Utils(this.configManager, this.logger);\n\n this.api = new Api(this.configManager, this.logger);\n\n this.account = new Account(\n this.configManager,\n this.logger,\n this.utils,\n this\n );\n\n this.seamless = new Seamless(\n this.configManager,\n this.logger,\n this.utils,\n this.account,\n this.api\n );\n\n /**\n * initialize markets\n */\n this.markets = new Markets(this.configManager, this.utils, this.api);\n\n /**\n * initialize position\n */\n this.position = new Position(\n this.configManager,\n this.logger,\n this.utils,\n this.seamless,\n this.account,\n this.api\n );\n\n /**\n * initialize orders\n */\n this.order = new Order(\n this.configManager,\n this.logger,\n this.utils,\n this.seamless,\n this.account,\n this.api\n );\n\n /**\n * initialize subscription\n */\n this.subscription = new SubScription(this.configManager, this.logger);\n\n /**\n * initialize appeal\n */\n this.appeal = new Appeal(this, this.configManager);\n /*\n * initialize referrals\n */\n this.referrals = new Referrals(this);\n }\n\n /**\n * auth the client\n */\n /** Auth with signer (ethers v5/v6 or ISigner) and/or walletClient (viem). Use walletClient when app uses viem to avoid ethers in bundle. */\n public auth(\n params: Pick<MyxClientConfig, \"signer\" | \"walletClient\" | \"getAccessToken\">\n ) {\n this.configManager.auth(params);\n }\n public updateClientChainId(chainId: number, brokerAddress: string) {\n this.configManager.updateClientChainId(chainId, brokerAddress);\n }\n /**\n * close the client\n */\n public close() {\n this.configManager.clear();\n this.subscription.disconnect();\n }\n\n /**\n * Get currently stored access token (does not auto-refresh)\n */\n public async getAccessToken() {\n return await this.configManager.getAccessToken();\n }\n\n /**\n * Manually refresh access token (must be called explicitly by the client)\n * @param forceRefresh Whether to force refresh\n */\n public async refreshAccessToken(forceRefresh: boolean = false) {\n return await this.configManager.refreshAccessToken(forceRefresh);\n }\n}\n","export * from \"./lp/index.js\";\nexport { base, quote, pool, market } from \"./lp/index.js\";\nexport * from \"./api/index.js\";\n\nexport * from \"./common/index.js\";\n\nexport { MxSDK, getWalletProvider } from \"./web3/index.js\";\nexport { getPublicClient, getWalletClient, setConfigManagerForViem } from \"./web3/viemClients.js\";\n\nexport { MyxClient } from \"./manager/index.js\";\nexport * from \"./manager/index.js\";\nexport type { ISigner, SignerLike } from \"./signer/index.js\";\nexport { fromViemWalletClient, normalizeSigner } from \"./signer/index.js\";\nexport * from \"./types/trading.js\";\nexport { ChainId } from \"./config/chain.js\";\nexport const SDK_VERSION = __SDK_VERSION__;\n\n/** Optional log sink (default no-op). Call `setSdkLogSink(console)` in the host app to see SDK logs. */\nexport {\n Logger,\n setSdkLogSink,\n getSdkLogSink,\n sdkLog,\n sdkWarn,\n sdkError,\n} from \"./logger/index.js\";\nexport type { LogLevel, LoggerOptions, LogSink } from \"./logger/index.js\";\n"],"mappings":"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","names":["base_exports","__export","claimBasePoolRebate","claimBasePoolRebates","deposit","getLpPrice","getRewards","previewUserWithdrawData","withdraw","withdrawableLpAmount","getViemContract","LiquidityRouter_default","createPublicClient","fallback","http","ChainId","SupportedChainIds","isSupportedChainFn","chainId","GAS_FEE_RESERVED_RATIO","TRADE_GAS_LIMIT_RATIO","LINEA_SEPOLIA_default","GAS_FEE_RESERVED_RATIO","ARB_SEPOLIA_default","GAS_FEE_RESERVED_RATIO","BSC_TESTNET_default","GAS_FEE_RESERVED_RATIO","LINEA_MAINNET_default","GAS_FEE_RESERVED_RATIO","ARB_MAINNET_default","GAS_FEE_RESERVED_RATIO","BSC_MAINNET_default","GAS_FEE_RESERVED_RATIO","CHAIN_INFO","LINEA_SEPOLIA_default","ARB_SEPOLIA_default","BSC_TESTNET_default","LINEA_MAINNET_default","ARB_MAINNET_default","BSC_MAINNET_default","getChainInfo","chainId","chainInfo","chainIdToChain","getChain","chainId","info","getChainInfo","urls","publicClients","getPublicClient","transport","http","fallback","u","createPublicClient","configManagerRef","setConfigManagerForViem","cm","getWalletClient","PoolManager_default","IERC20Metadata_default","QuotePool_default","BasePool_default","Broker_default","PoolToken_default","MarketManager_default","DataProvider_default","Forwarder_default","Reimbursement_default","DisputeCourt_default","Account_default","ARB_TEST_SEPOLIA","ARB_BETA_SEPOLIA","LINEA_SEPOLIA","LINEA_BETA_SEPOLIA","BSC_TEST_NET","BSC_BETA_NET","wretch","client","buildQueryOptions","url","params","http","options","requestUrl","data","ErrorCode","MarketPoolState","OracleType","HttpKlineIntervalEnum","MarketType","SearchTypeEnum","MarketCapType","SearchSecondTypeEnum","OrderTypeEnum","OperationEnum","TradeFlowTypeEnum","TriggerTypeEnum","DirectionEnum","OrderStatusEnum","ExecTypeEnum","CloseTypeEnum","TradeFlowAccountTypeEnum","ForwarderGetStatus","getPoolList","http","getBaseUrlByEnv","getBaseUrlByEnv","isTestnet","isBetaMode","web3_default","getOraclePrice","chainId","poolIds","http","getPoolDetail","poolId","getPoolOpenOrders","accessToken","address","getTickerData","envParams","getBaseDetail","params","getMarketDetail","getMarketList","_configManager","_MxSDK","__privateAdd","cm","__privateSet","__privateGet","provider","data","getMarketList","error","MxSDK","sdk","web3_default","getWalletProvider","chainId","BSC_MAINNET","getContractAddressByChainId","chainId","isBetaMode","web3_default","ARB_BETA_SEPOLIA","ARB_TEST_SEPOLIA","LINEA_BETA_SEPOLIA","LINEA_SEPOLIA","BSC_BETA_NET","BSC_TEST_NET","BSC_MAINNET","getTokenContract","chainId","tokenAddress","client","getPublicClient","getViemContract","IERC20Metadata_default","getERC20Contract","getWalletClient","getAccount","account","getLiquidityRouterContract","addresses","getContractAddressByChainId","LiquidityRouter_default","getPoolManagerContract","type","PoolManager_default","walletClient","getQuotePoolContract","chainId","type","addresses","getContractAddressByChainId","client","getPublicClient","getViemContract","QuotePool_default","getWalletClient","walletClient","getBasePoolContract","BasePool_default","getBrokerSingerContract","brokerAddress","Broker_default","getBrokerContract","chainId","brokerAddress","client","getPublicClient","getViemContract","Broker_default","getPoolTokenContract","chainId","lpTokenAddress","type","client","getPublicClient","getViemContract","PoolToken_default","getWalletClient","walletClient","getMarketManageContract","addresses","getContractAddressByChainId","MarketManager_default","getDataProviderContract","DataProvider_default","getAccountContract","Account_default","getForwarderContract","Forwarder_default","getReimbursementContract","Reimbursement_default","getDisputeCourtContract","DisputeCourt_default","sink","setSdkLogSink","getSdkLogSink","noop","sdkLog","args","sdkWarn","sdkError","Logger","options","getSdkLogSink","message","args","ErrorDecoder","errorDecoder","Errors","isUserRejected","error","err","getErrorTextFormError","error","message","isUserRejected","Errors","getBalanceOf","chainId","account","tokenAddress","getPublicClient","IERC20Metadata_default","e","sdkError","maxUint256","parseUnits","getAllowanceApproved","chainId","account","tokenAddress","approveAddress","approveAmount","getPublicClient","IERC20Metadata_default","e","parseUnits","COMMON_PRICE_DECIMALS","COMMON_LP_AMOUNT_DECIMALS","bigintTradingGasToRatioCalculator","gas","ratio","parseUnits","bigintTradingGasPriceWithRatio","chainId","chainInfo","CHAIN_INFO","gasPrice","getPublicClient","bigintAmountSlipperCalculator","amount","slipper","radio","approve","chainId","_account","tokenAddress","approveAddress","amount","chainInfo","CHAIN_INFO","contract","getERC20Contract","_gasLimit","gasLimit","bigintTradingGasToRatioCalculator","gasPrice","bigintTradingGasPriceWithRatio","hash","getPublicClient","e","checkParams","params","isSupportedChainFn","Errors","tokenAddress","contractAddress","chainId","amount","decimals","account","amountIn","parseUnits","balance","getBalanceOf","getAllowanceApproved","approve","maxUint256","isNil","parsePriceData","chainId","data","item","publishTime","vaa","oracleType","nativeFee","price","poolId","value","getPricesData","poolIds","rs","getOraclePrice","getPriceData","claimBasePoolRebate","params","chainId","poolId","chainInfo","CHAIN_INFO","account","getAccount","checkParams","priceResponse","getPricesData","values","item","prices","data","contract","getLiquidityRouterContract","_gasLimit","gasLimit","bigintTradingGasToRatioCalculator","gasPrice","bigintTradingGasPriceWithRatio","error","sdkError","getErrorTextFormError","claimBasePoolRebates","poolIds","priceData","value","prev","curr","hash","getPublicClient","parseUnits","parseUnits","previewLpAmountOut","chainId","amountIn","poolId","price","chainInfo","CHAIN_INFO","getBasePoolContract","error","sdkError","getErrorTextFormError","previewBaseAmountOut","previewUserWithdrawData","account","amount","decimals","checkParams","parseUnits","_price","getOraclePrice","request","baseAmountOut","rebateAmount","getPoolInfo","chainId","poolId","getPoolDetail","error","getErrorTextFormError","parseUnits","getDecimalPlaces","value","getTpSlParams","slippage","tpsl","decimals","quoteDecimal","item","Errors","amount","parseUnits","triggerPrice","decimal","getDecimalPlaces","price","minQuoteOut","bigintAmountSlipperCalculator","deposit","params","poolId","chainId","amount","slippage","tpsl","checkParams","pool","getPoolInfo","Errors","decimals","quoteDecimals","tokenAddress","chainInfo","CHAIN_INFO","account","getAccount","contractAddress","getContractAddressByChainId","isNeedPrice","price","amountIn","parseUnits","value","amountOut","priceData","getPriceData","referencePrice","previewLpAmountOut","_tpsl","item","tpslParams","getTpSlParams","data","bigintAmountSlipperCalculator","contract","getLiquidityRouterContract","_gasLimit","gasLimit","bigintTradingGasToRatioCalculator","gasPrice","bigintTradingGasPriceWithRatio","hash","getPublicClient","error","sdkError","getErrorTextFormError","parseUnits","parseUnits","getMarketPoolId","chainId","baseToken","marketId","Errors","addresses","getContractAddressByChainId","contract","getPoolManagerContract","data","request","error","sdkError","getErrorTextFormError","getMarketPools","getPoolInfo","poolId","marketPrice","getDataProviderContract","createPool","chainId","baseToken","marketId","Errors","chainInfo","CHAIN_INFO","contract","getPoolManagerContract","data","_gasLimit","gasLimit","bigintTradingGasToRatioCalculator","gasPrice","bigintTradingGasPriceWithRatio","hash","getPublicClient","getMarketPoolId","error","getErrorTextFormError","getUserGenesisShare","chainId","tokenAddress","account","getPoolTokenContract","error","sdkError","getErrorTextFormError","addTpSl","params","chainId","poolId","poolType","slippage","tpsl","checkParams","pool","getPoolInfo","Errors","decimals","quoteDecimals","tpslParams","getTpSlParams","chainInfo","CHAIN_INFO","contract","getLiquidityRouterContract","data","_gasLimit","gasLimit","bigintTradingGasToRatioCalculator","gasPrice","bigintTradingGasPriceWithRatio","hash","getPublicClient","error","sdkError","getErrorTextFormError","cancelTpSl","params","chainId","orderId","checkParams","chainInfo","CHAIN_INFO","contract","getLiquidityRouterContract","_gasLimit","gasLimit","bigintTradingGasToRatioCalculator","gasPrice","bigintTradingGasPriceWithRatio","hash","getPublicClient","error","sdkError","getErrorTextFormError","getAddress","formatUnits","checkImageExists","url","getTokenInfo","chainId","tokenAddress","account","client","getPublicClient","addr","name","symbol","decimals","totalSupply","IERC20Metadata_default","normalized","getAddress","iconUrl","icon","balance","rawBalance","formatUnits","e","sdkError","formatUnits","parseUnits","formatUnits","parseUnits","reprime","chainId","poolId","marketId","checkParams","pool","getPoolInfo","Errors","account","getAccount","market","web3_default","m","_amount","parseUnits","getContractAddressByChainId","formatUnits","chainInfo","CHAIN_INFO","contract","getPoolManagerContract","_gasLimit","gasLimit","bigintTradingGasToRatioCalculator","gasPrice","bigintTradingGasPriceWithRatio","hash","getPublicClient","error","sdkError","getErrorTextFormError","getOpenOrders","chainId","address","accessToken","MxSDK","getPoolOpenOrders","error","sdkError","previewLpAmountOut","chainId","amountIn","poolId","price","getQuotePoolContract","error","sdkError","getErrorTextFormError","previewQuoteAmountOut","getWithdrawData","amountIn","chainId","poolId","state","slippage","poolType","account","isNeedPrice","price","value","amountOut","previewAmountOut","previewBaseAmountOut","previewQuoteAmountOut","priceData","getPriceData","referencePrice","parseUnits","e","data","bigintAmountSlipperCalculator","withdrawableLpAmount","params","chainId","poolId","price","referencePrice","basePoolContract","getBasePoolContract","priceData","getPriceData","parseUnits","error","getErrorTextFormError","withdraw","amount","slippage","pool","getPoolInfo","lpAddress","chainInfo","CHAIN_INFO","account","getAccount","decimals","checkParams","amountIn","data","value","getWithdrawData","contract","getLiquidityRouterContract","_gasLimit","gasLimit","bigintTradingGasToRatioCalculator","gasPrice","bigintTradingGasPriceWithRatio","hash","getPublicClient","sdkError","parseUnits","getRewards","params","chainId","account","poolId","chainInfo","CHAIN_INFO","lpAmountIn","_price","getOraclePrice","price","parseUnits","request","getBasePoolContract","error","sdkError","getErrorTextFormError","parseUnits","getLpPrice","chainId","poolId","contract","getBasePoolContract","price","res","getPriceData","parseUnits","error","getErrorTextFormError","quote_exports","__export","claimQuotePoolRebate","claimQuotePoolRebates","deposit","getLpPrice","getRewards","transfer","withdraw","withdrawableLpAmount","parseUnits","deposit","params","poolId","chainId","amount","slippage","tpsl","checkParams","pool","getPoolInfo","Errors","chainInfo","CHAIN_INFO","account","getAccount","contractAddress","getContractAddressByChainId","tokenAddress","decimals","amountIn","parseUnits","isNeedPrice","price","value","amountOut","priceData","getPriceData","referencePrice","previewLpAmountOut","_tpsl","item","tpslParams","getTpSlParams","data","bigintAmountSlipperCalculator","contract","getLiquidityRouterContract","_gasLimit","gasLimit","bigintTradingGasToRatioCalculator","gasPrice","bigintTradingGasPriceWithRatio","hash","getPublicClient","error","sdkError","getErrorTextFormError","parseUnits","withdrawableLpAmount","params","chainId","poolId","price","referencePrice","quotePoolContract","getQuotePoolContract","priceData","getPriceData","parseUnits","error","sdkError","getErrorTextFormError","withdraw","amount","slippage","pool","getPoolInfo","lpAddress","chainInfo","CHAIN_INFO","account","getAccount","decimals","checkParams","amountIn","data","value","getWithdrawData","contract","getLiquidityRouterContract","_gasLimit","gasLimit","bigintTradingGasToRatioCalculator","gasPrice","bigintTradingGasPriceWithRatio","hash","getPublicClient","parseUnits","transfer","chainId","fromPoolId","toPoolId","amount","fromPool","getPoolInfo","toPool","Errors","account","getAccount","chainInfo","CHAIN_INFO","decimals","checkParams","data","parseUnits","contract","getLiquidityRouterContract","_gasLimit","gasLimit","bigintTradingGasToRatioCalculator","gasPrice","bigintTradingGasPriceWithRatio","hash","getPublicClient","error","getErrorTextFormError","parseUnits","getRewards","params","chainId","account","poolId","_price","getOraclePrice","price","parseUnits","getQuotePoolContract","error","sdkError","getErrorTextFormError","claimQuotePoolRebate","params","chainId","poolId","chainInfo","CHAIN_INFO","account","getAccount","decimals","checkParams","priceResponse","getPricesData","values","item","prices","data","contract","getLiquidityRouterContract","_gasLimit","gasLimit","bigintTradingGasToRatioCalculator","gasPrice","bigintTradingGasPriceWithRatio","error","sdkError","getErrorTextFormError","claimQuotePoolRebates","poolIds","value","prev","curr","hash","getPublicClient","parseUnits","getLpPrice","chainId","poolId","contract","getQuotePoolContract","price","res","getPriceData","parseUnits","error","sdkError","getErrorTextFormError","market_exports","__export","getMarket","getOracleFee","getMarket","chainId","marketId","checkParams","getMarketManageContract","error","sdkError","getErrorTextFormError","getOracleFee","chainId","marketId","checkParams","getMarketManageContract","error","sdkError","getErrorTextFormError","pool","createPool","getMarketPoolId","getMarketPools","getPoolInfo","getUserGenesisShare","addTpSl","cancelTpSl","reprime","getOpenOrders","mitt","Hex","MD5","md5","message","length","generateRequestId","param","md5","generateListenerId","subscription","topic","params","isAckMessageResponse","type","parseTopicFromType","messageTransform","data","globalId","paramData","resolution","MyxSDKError","code","message","ReconnectingWebSocket","DEFAULT_CONFIG","MyxWebSocketClient","config","mitt","_config","logLevel","args","Logger","resolve","reject","rwsConfig","error","event","data","param","requestId","generateRequestId","subscription","callback","subscriptionList","newSubscriptionIds","processedIds","subscriptionItem","subscriptionId","generateListenerId","subscriptionObj","subscriptions","subscriptionsToUnsubscribe","message","MyxSDKError","err","handler","isAckMessageResponse","waitRequest","isSuccess","dataParsed","messageTransform","subscriptionIds","MAINNET_CHAIN_IDS","TESTNET_CHAIN_IDS","BETA_ENV_CHAIN_IDS","WEBSOCKET_URL","SubScription","configManager","logger","socketUrl","WEBSOCKET_URL","MyxWebSocketClient","globalIds","callback","globalIdsList","globalId","resolution","config","MyxSDKError","userAddress","isReconnect","event","handler","isWalletClientLike","isMinimalSignerLike","fromViemWalletClient","walletClient","wc","address","message","msg","tx","to","params","fromMinimalSigner","signer","minimal","normalizeSigner","signerLike","createWalletClient","custom","getRpcUrl","chainId","info","getChainInfo","urls","chainCache","getChain","createWalletClientFromSigner","signer","rpcUrl","chain","account","message","msg","typedData","createWalletClient","custom","args","tx","hash","typedDataJson","json","ConfigManager","config","mergedConfig","chainId","addr","MyxSDKError","createWalletClientFromSigner","brokerAddress","params","normalizeSigner","isTestnet","isBetaMode","TESTNET_CHAIN_IDS","BETA_ENV_CHAIN_IDS","MAINNET_CHAIN_IDS","forceRefresh","resolve","reject","item","sdkWarn","response","expiryInSeconds","currentTime","error","sdkError","token","Markets","configManager","utils","api","poolId","chainId","config","interval","params","address","accessToken","maxUint256","Position","configManager","logger","utils","seamless","account","api","address","positionId","accessToken","error","params","poolId","adjustAmount","quoteToken","chainId","config","priceData","updateParams","needsApproval","getContractAddressByChainId","depositAmount","used","availableRes","availableAccountMarginBalance","diff","depositData","MyxSDKError","brokerContract","getBrokerSingerContract","approvalResult","maxUint256","hash","TRADE_GAS_LIMIT_RATIO","getPublicClient","TimeInForce","TIME_IN_FORCE","OrderType","TriggerType","OperationType","Direction","TimeInForce","OrderStatus","maxUint256","Order","configManager","logger","utils","seamless","account","api","params","tradingFee","marketId","config","networkFee","totalNetWorkFee","totalCollateralAmount","availableRes","availableAccountMarginBalance","needAmount","depositAmount","diff","depositData","data","OperationType","TIME_IN_FORCE","needsApproval","getContractAddressByChainId","MyxSDKError","approvalResult","maxUint256","brokerContract","getBrokerSingerContract","hash","gasLimit","TRADE_GAS_LIMIT_RATIO","receipt","getPublicClient","error","chainId","positionIds","param","dataMap","OrderType","positionId","orderIds","orderId","quoteAddress","address","isTpSlOrder","accessToken","decodeEventLog","maxUint256","Emiter_default","customErrorMapping","Utils","configManager","logger","receipt","i","log","decoded","decodeEventLog","Emiter_default","args","account","chainId","tokenAddress","spenderAddress","spender","getContractAddressByChainId","allowance","getTokenContract","error","getErrorTextFormError","requiredAmount","currentAllowance","allowanceBigInt","requiredBigInt","quoteAddress","amount","contract","getERC20Contract","approveAmount","maxUint256","gasPrice","hash","getPublicClient","assetClass","riskTier","userAddress","brokerAddress","brokerContract","getBrokerContract","targetAddress","userFeeRate","marketId","getMarketManageContract","poolId","priceData","getPriceData","resolution","MyxSDKError","fallbackErrorMessage","errorText","forwardFeeToken","relayFee","balance","marketPrice","getDataProviderContract","errorData","dataMatch","selector","errorKey","customErrorMapping","k","bigintTradingGasPriceWithRatio","gasLimit","chainInfo","CHAIN_INFO","bigintTradingGasToRatioCalculator","maxUint256","zeroAddress","dayjs","Account","configManager","logger","utils","client","fn","retries","delayMs","lastErr","e","r","params","address","accessToken","chainId","tokenAddress","MyxSDKError","tokenContract","getTokenContract","signerAddress","receiver","poolId","isQuoteToken","amount","hash","getAccountContract","getPublicClient","error","account","contractAddress","getContractAddressByChainId","approvalResult","maxUint256","marginAccountBalanceRes","poolAppealStatusRes","marginAccountBalance","quoteProfit","freeAmount","lockedMargin","appealData","appealLockedMargin","dataProviderContract","getDataProviderContract","config","brokerContract","getBrokerContract","latestBlock","deadline","currentEpoch","accountVipInfo","nonce","res","signature","feeData","zeroAddress","getBrokerSingerContract","encodeQueryParam","key","value","addQueryParam","query","addArrayQueryParam","v","toQueryString","rawQuery","addQueryParams","queryString","merge","Request","configManager","isTestnet","isBetaMode","config","MyxSDKError","accessToken","userAddress","path","url","params","auth","options","authOptions","http","merge","data","Api","Request","configManager","logger","accessToken","address","params","http","addQueryParams","chainId","poolIds","poolId","positionId","endTime","limit","interval","deadline","nonce","broker","hexToBytes","toHex","encodeFunctionData","maxUint256","isAddress","dayjs","getEIP712Domain","contract","eip712Domain","error","contractTypes","FORWARD_PLEDGE_FEE_RADIO","splitSignatureToVrs","signatureHex","bytes","hexToBytes","r","toHex","s","signPermit","walletClient","chainId","tokenAddress","owner","spender","value","nonce","deadline","tokenContract","getTokenContract","domain","getEIP712Domain","account","MyxSDKError","types","message","signature","Seamless","configManager","logger","utils","api","relayer","checkRelayerResult","getForwarderContract","isNeedApprove","maxUint256","getContractAddressByChainId","getWalletClient","contractAddress","masterAddress","nonces","tradingRouterSignPermit","forwarderJsonRpcContractDomain","seamlessAddress","signFunction","forwardFeeToken","functionName","orderParams","dayjs","functionHash","encodeFunctionData","Broker_default","txRs","attempt","resolve","error","from","to","gas","data","approve","balance","pledgeFee","getMarketManageContract","gasFee","permitParams","forwarderContract","Forwarder_default","address","brokerAddress","isAddress","e","decodeEventLog","BaseMyxClient","client","chainId","isSupportedChainFn","MyxSDKError","getContractAddressByChainId","config","getBrokerContract","Appeal","BaseMyxClient","client","configManager","auth","getDisputeCourtContract","getReimbursementContract","receipt","eventName","key","log","decoded","decodeEventLog","DisputeCourt_default","poolId","lpToken","lpAmount","account","needApprove","contract","prices","value","_gasLimit","gasLimit","gasPrice","hash","getPublicClient","caseId","MyxSDKError","validator","isFor","deadline","v","s","baseAmount","quoteAmount","merkleProof","response","guardianSignatures","appealToken","appealAmount","spenderAddress","res","appealCaseId","params","chainId","address","Referrals","BaseMyxClient","client","tokenAddress","config","brokerContract","getBrokerSingerContract","_gasLimit","gasLimit","gasPrice","hash","getPublicClient","AppealType","AppealReconsiderationType","AppealStage","NodeTypeEnum","VoteTypeEnum","AppealClaimStatusEnum","AppealNodeVotedStateEnum","AppealCaseTypeEnum","AppealNodeStateEnum","IsVoteNodeEnum","AppealStatus","MyxClient","options","ConfigManager","Logger","lp","MxSDK","setConfigManagerForViem","Utils","Api","Account","Seamless","Markets","Position","Order","SubScription","Appeal","Referrals","params","chainId","brokerAddress","forceRefresh","SDK_VERSION"]}
|