@skate-org/amm-core-v2 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +23 -0
- package/README.md +32 -0
- package/dist/adapter/index.d.ts +3 -0
- package/dist/adapter/index.d.ts.map +1 -0
- package/dist/adapter/skate.d.ts +15 -0
- package/dist/adapter/skate.d.ts.map +1 -0
- package/dist/deployment/aggregated/_type_.d.ts +13 -0
- package/dist/deployment/aggregated/_type_.d.ts.map +1 -0
- package/dist/deployment/aggregated/dev.d.ts +3 -0
- package/dist/deployment/aggregated/dev.d.ts.map +1 -0
- package/dist/deployment/aggregated/index.d.ts +6 -0
- package/dist/deployment/aggregated/index.d.ts.map +1 -0
- package/dist/deployment/aggregated/production.d.ts +3 -0
- package/dist/deployment/aggregated/production.d.ts.map +1 -0
- package/dist/deployment/aggregated/retrieval.d.ts +26 -0
- package/dist/deployment/aggregated/retrieval.d.ts.map +1 -0
- package/dist/deployment/aggregated/staging.d.ts +3 -0
- package/dist/deployment/aggregated/staging.d.ts.map +1 -0
- package/dist/deployment/index.d.ts +4 -0
- package/dist/deployment/index.d.ts.map +1 -0
- package/dist/deployment/kernel.d.ts +15 -0
- package/dist/deployment/kernel.d.ts.map +1 -0
- package/dist/deployment/periphery.d.ts +20 -0
- package/dist/deployment/periphery.d.ts.map +1 -0
- package/dist/errors.d.ts +17 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/index.cjs +659 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +5 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +583 -0
- package/dist/index.js.map +1 -0
- package/dist/types/action.d.ts +72 -0
- package/dist/types/action.d.ts.map +1 -0
- package/dist/types/chain.d.ts +20 -0
- package/dist/types/chain.d.ts.map +1 -0
- package/dist/types/index.d.ts +6 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/mode.d.ts +25 -0
- package/dist/types/mode.d.ts.map +1 -0
- package/dist/types/pair.d.ts +13 -0
- package/dist/types/pair.d.ts.map +1 -0
- package/dist/types/vm.d.ts +29 -0
- package/dist/types/vm.d.ts.map +1 -0
- package/dist/utils/bs58.d.ts +3 -0
- package/dist/utils/bs58.d.ts.map +1 -0
- package/package.json +36 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/types/chain.ts","../src/types/vm.ts","../src/types/mode.ts","../src/types/action.ts","../src/deployment/kernel.ts","../src/deployment/periphery.ts","../src/deployment/aggregated/dev.ts","../src/deployment/aggregated/staging.ts","../src/deployment/aggregated/production.ts","../src/deployment/aggregated/retrieval.ts","../src/adapter/skate.ts","../src/utils/bs58.ts","../src/errors.ts"],"sourcesContent":["export * from \"./types\";\nexport * from \"./deployment\";\nexport * from \"./adapter\";\nexport * from \"./errors\";\n","export enum CHAIN {\n SKATE = 5050,\n\n SOLANA = 901,\n ECLIPSE = 902,\n\n SUI = 1001,\n\n BASE = 8453,\n ARBITRUM = 42161,\n BSC = 56,\n MANTLE = 5000,\n OPTIMISM = 10,\n ETHEREUM = 1,\n HYPERLIQUID = 999,\n PLUME = 98866,\n ZG = 16661,\n MONAD = 143,\n MEGAETH = 4326,\n TEMPO = 4217,\n}\n\nexport const CHAIN_MAP: Record<string, number> = Object.entries(CHAIN)\n .filter(([, value]) => typeof value === \"number\")\n .reduce(\n (map, [key, value]) => {\n map[key] = value as number;\n return map;\n },\n {} as Record<string, number>,\n );\n","import { CHAIN } from \"./chain\";\n\nexport enum VM {\n EVM = 1,\n /** Reserved — no TVM chain in scope for v2; kept for forward-compatibility with v1 numbering. */\n TVM = 2,\n SVM = 3,\n SuiVM = 4,\n}\n\nexport enum BLOCK_EXPLORER {\n SKATE = \"https://scan.skatechain.org\",\n ECLIPSE = \"https://eclipsescan.xyz\",\n SOLANA = \"https://solscan.io\",\n SUI = \"https://suiscan.xyz/mainnet\",\n BASE = \"https://basescan.org\",\n ARBITRUM = \"https://arbiscan.io\",\n MANTLE = \"https://mantlescan.xyz\",\n OPTIMISM = \"https://optimistic.etherscan.io\",\n ETHEREUM = \"https://etherscan.io\",\n BSC = \"https://bscscan.com\",\n HYPERLIQUID = \"https://hyperscan.com\",\n PLUME = \"https://explorer.plume.org\",\n ZG = \"https://chainscan.0g.ai\",\n MONAD = \"https://monadvision.com\",\n MEGAETH = \"https://megaeth.blockscout.com\",\n TEMPO = \"https://explore.tempo.xyz\",\n}\n\nexport function getBlockExplorer(chain: CHAIN): BLOCK_EXPLORER | null {\n switch (chain) {\n case CHAIN.SKATE: return BLOCK_EXPLORER.SKATE;\n case CHAIN.SOLANA: return BLOCK_EXPLORER.SOLANA;\n case CHAIN.ECLIPSE: return BLOCK_EXPLORER.ECLIPSE;\n case CHAIN.SUI: return BLOCK_EXPLORER.SUI;\n case CHAIN.BASE: return BLOCK_EXPLORER.BASE;\n case CHAIN.ARBITRUM: return BLOCK_EXPLORER.ARBITRUM;\n case CHAIN.MANTLE: return BLOCK_EXPLORER.MANTLE;\n case CHAIN.OPTIMISM: return BLOCK_EXPLORER.OPTIMISM;\n case CHAIN.ETHEREUM: return BLOCK_EXPLORER.ETHEREUM;\n case CHAIN.BSC: return BLOCK_EXPLORER.BSC;\n case CHAIN.HYPERLIQUID: return BLOCK_EXPLORER.HYPERLIQUID;\n case CHAIN.PLUME: return BLOCK_EXPLORER.PLUME;\n case CHAIN.ZG: return BLOCK_EXPLORER.ZG;\n case CHAIN.MONAD: return BLOCK_EXPLORER.MONAD;\n case CHAIN.MEGAETH: return BLOCK_EXPLORER.MEGAETH;\n case CHAIN.TEMPO: return BLOCK_EXPLORER.TEMPO;\n default: return null;\n }\n}\n\nexport function vmTypeFromChain(chainId: CHAIN): VM | null {\n switch (chainId) {\n case CHAIN.SKATE:\n case CHAIN.BASE:\n case CHAIN.ARBITRUM:\n case CHAIN.MANTLE:\n case CHAIN.OPTIMISM:\n case CHAIN.ETHEREUM:\n case CHAIN.BSC:\n case CHAIN.HYPERLIQUID:\n case CHAIN.PLUME:\n case CHAIN.ZG:\n case CHAIN.MONAD:\n case CHAIN.MEGAETH:\n case CHAIN.TEMPO:\n return VM.EVM;\n\n case CHAIN.SOLANA:\n case CHAIN.ECLIPSE:\n return VM.SVM;\n\n case CHAIN.SUI:\n return VM.SuiVM;\n\n default:\n return null;\n }\n}\n","import type { CHAIN } from \"./chain\";\n\nexport type EnvMode = \"STAGING\" | \"PRODUCTION\" | \"DEV\";\n\nexport interface DevModeConfig {\n /** Full base URL including scheme, e.g. \"http://localhost:3000/amm-action-v2\". */\n apiEndpoint: string;\n /**\n * Optional per-chain RPC URL overrides. When a `CHAIN` key is present here,\n * `@skate-org/amm-evm-v2`'s `getKernelPublicClient` / `getSourcePublicClient`\n * factories prefer the override over the built-in `DEFAULT_RPC`. Useful for\n * private MegaETH RPCs (until Skate's DEV URL is public), localnet, or\n * rate-limited public endpoints.\n *\n * A caller-supplied `transport` argument still takes precedence over this.\n */\n rpcEndpoints?: Partial<Record<CHAIN, string>>;\n}\n\nexport type EnvModeWithConfig = EnvMode | { mode: \"DEV\"; config: DevModeConfig };\n\nexport function normalizeMode(mode: EnvModeWithConfig): { mode: EnvMode; config?: DevModeConfig } {\n if (typeof mode === \"string\") return { mode };\n return { mode: mode.mode, config: mode.config };\n}\n","// v2 ActionStatus (per amm-action-v2-service).\nexport type ActionStatus =\n | \"RECEIVED\"\n | \"PROCESSED\"\n | \"EXECUTED\"\n | \"WITHDRAWN\"\n | \"KERNEL_SETTLE_FAILED\"\n | \"GATEWAY_SETTLE_FAILED\"\n | \"CORRUPTED\";\n\nexport enum TaskPhase {\n INDEX_ACTION = \"INDEX_ACTION\",\n SETTLE_KERNEL = \"SETTLE_KERNEL\",\n SUBMIT_EXECUTION = \"SUBMIT_EXECUTION\",\n SETTLE_GATEWAY = \"SETTLE_GATEWAY\",\n SETTLE_REFUND = \"SETTLE_REFUND\",\n}\n\nexport type ActionType = \"mint\" | \"burn\" | \"swap\" | \"increaseLiquidity\" | \"decreaseLiquidity\";\n\nexport type TaskFunctionMeta =\n | SettleMintMeta\n | SettleBurnMeta\n | SettleSwapMeta\n | SettleMeta\n | TransferToMeta;\n\n/**\n * Kernel-side task metadata. `decimal0`/`decimal1` are **always 18** — the kernel\n * normalizes amounts to 18 decimals regardless of source-token decimals, so\n * `amount*` strings are expressed as `10^18`-denominated raw amounts here.\n * Do not widen these literal types without a kernel-protocol change.\n */\nexport type SettleMintMeta = {\n functionName: \"settleMint\";\n args: {\n user: `0x${string}`;\n amount0ToSettle: string;\n amount1ToSettle: string;\n amount0ToTransfer: string;\n amount1ToTransfer: string;\n decimal0: 18;\n decimal1: 18;\n };\n};\n\nexport type SettleBurnMeta = {\n functionName: \"settleBurn\";\n args: {\n user: `0x${string}`;\n amount0: string;\n amount1: string;\n decimal0: 18;\n decimal1: 18;\n };\n};\n\nexport type SettleSwapMeta = {\n functionName: \"settleSwap\";\n args: {\n recipient: `0x${string}`;\n user: `0x${string}`;\n amount0ToSettle: string;\n amount1ToSettle: string;\n amount0ToTransfer: string;\n amount1ToTransfer: string;\n decimal0: 18;\n decimal1: 18;\n };\n};\n\nexport type SettleMeta = {\n functionName: \"settle\";\n args: {\n user: `0x${string}`;\n amount0: string;\n amount1: string;\n decimal0: 18;\n decimal1: 18;\n };\n};\n\nexport type TransferToMeta = {\n functionName: \"transferTo\";\n args: {\n user: `0x${string}`;\n amount0: string;\n amount1: string;\n decimal0: 18;\n decimal1: 18;\n };\n};\n","import { EnvMode } from \"../types\";\n\n// DEV (amm-action-v2, MegaETH).\nexport const KERNEL_EXECUTOR_REGISTRY_Dev = \"0x45F5e211B2CAeA14d5E5cB028923F8A5D7b1ab5d\";\nexport const KERNEL_MESSAGE_BOX_Dev = \"0xe3aC86bF5D9Ab5d9705b5e9187437e978397528B\";\nexport const KERNEL_ACCOUNT_REGISTRY_Dev = \"0xeD9e139CAcb439744277be5D7fbEe5aAF4DB8fA2\";\nexport const KERNEL_MANAGER_Dev = \"0x17B7207837e8884f7f687f1f4057751BDAf70a01\";\nexport const KERNEL_EVENT_EMITTER_Dev = \"0x8989b3ecb65f250ab7A0DC03589B0Cc8b8b04b81\";\nexport const KERNEL_POOL_IMPL_Dev = \"0x9BffA944Df7914621A7Cc638C9104C106c5C6846\";\nexport const KERNEL_POOL_USDC_USDT_Dev = \"0x2c23334eE3b030e6bacEDEDf7C511eEA08Cf7E7e\";\n\n// STAGING (v1 Skate kernel values, retained for forward-compat structure; v2 service\n// is not deployed to staging yet and POOL_INFO_Staging is empty).\nexport const KERNEL_MANAGER_Staging = \"0xB32841DD65316F672eb07c63508f4b6841b6Aee4\";\nexport const KERNEL_EVENT_EMITTER_Staging = \"0x8f16B23A11378bE8573470e23f626b9a7e41B389\";\n\n// PRODUCTION (v1 values, same caveat as staging).\nexport const KERNEL_MANAGER_Prod = \"0x46887a1f9885300f4185499Ba48C248445EEcAb1\";\nexport const KERNEL_EVENT_EMITTER_Prod = \"0xC8615dcE472fD684D0FDcEC18013EaB402F61ba7\";\n\nexport function KernelManagerAddress(mode: EnvMode = \"PRODUCTION\"): `0x${string}` {\n switch (mode) {\n case \"PRODUCTION\": return KERNEL_MANAGER_Prod as `0x${string}`;\n case \"STAGING\": return KERNEL_MANAGER_Staging as `0x${string}`;\n case \"DEV\": return KERNEL_MANAGER_Dev as `0x${string}`;\n }\n}\n\nexport function KernelEventEmitterAddress(mode: EnvMode = \"PRODUCTION\"): `0x${string}` {\n switch (mode) {\n case \"PRODUCTION\": return KERNEL_EVENT_EMITTER_Prod as `0x${string}`;\n case \"STAGING\": return KERNEL_EVENT_EMITTER_Staging as `0x${string}`;\n case \"DEV\": return KERNEL_EVENT_EMITTER_Dev as `0x${string}`;\n }\n}\n","import { CHAIN, EnvMode } from \"../types\";\n\n// DEV periphery (amm-action-v2). Chain-keyed — each source chain hosts its own\n// ActionBox / Gateway / PeripheryManager / pool-emitter stack. Arbitrum is the\n// first DEV source chain to be deployed.\n\nexport interface PeripheryDeployment {\n multicall: `0x${string}`;\n executorRegistry: `0x${string}`;\n actionBox: `0x${string}`;\n skateGateway: `0x${string}`;\n peripheryManager: `0x${string}`;\n peripheryManagerImpl: `0x${string}`;\n eventEmitter: `0x${string}`;\n peripheryPoolImpl: `0x${string}`;\n}\n\nexport const PERIPHERY_DEV: Partial<Record<CHAIN, PeripheryDeployment>> = {\n [CHAIN.ARBITRUM]: {\n multicall: \"0x3dCD7A136F0A49f3EFcC5E215793Fa1ce5c400Bf\",\n executorRegistry: \"0xE84a60d66543ef8E2E162f66a7669692b01Ee145\",\n actionBox: \"0x4309d3aE98c8A751fAc34C91536Ee860d9B8DcE1\",\n skateGateway: \"0x63Ca920425f683138B9407171b51b8172421Ba50\",\n peripheryManager: \"0x1120d6B34c4EB0CD49200aE9fBD2e4fb002d949f\",\n peripheryManagerImpl: \"0x26F01bc73cB7422DB67BBDfAcd9C987Ae66bF3D3\",\n eventEmitter: \"0xB301150AFA170816Ae18EC21e2A830Ddc7bBA1De\",\n peripheryPoolImpl: \"0x803ed7fa8934D4fe51A276cA02506b585cdb3eb4\",\n },\n};\n\nexport const PERIPHERY_STAGING: Partial<Record<CHAIN, PeripheryDeployment>> = {};\nexport const PERIPHERY_PROD: Partial<Record<CHAIN, PeripheryDeployment>> = {};\n\nexport function PeripheryDeploymentFor(\n chain: CHAIN,\n mode: EnvMode = \"PRODUCTION\",\n): PeripheryDeployment | null {\n const table =\n mode === \"DEV\" ? PERIPHERY_DEV : mode === \"STAGING\" ? PERIPHERY_STAGING : PERIPHERY_PROD;\n return table[chain] ?? null;\n}\n\nexport function PeripheryManagerAddress(\n chain: CHAIN,\n mode: EnvMode = \"PRODUCTION\",\n): `0x${string}` | null {\n return PeripheryDeploymentFor(chain, mode)?.peripheryManager ?? null;\n}\n\nexport function PeripheryEventEmitterAddress(\n chain: CHAIN,\n mode: EnvMode = \"PRODUCTION\",\n): `0x${string}` | null {\n return PeripheryDeploymentFor(chain, mode)?.eventEmitter ?? null;\n}\n\nexport function SkateGatewayAddress(\n chain: CHAIN,\n mode: EnvMode = \"PRODUCTION\",\n): `0x${string}` | null {\n return PeripheryDeploymentFor(chain, mode)?.skateGateway ?? null;\n}\n\nexport function ActionBoxAddress(\n chain: CHAIN,\n mode: EnvMode = \"PRODUCTION\",\n): `0x${string}` | null {\n return PeripheryDeploymentFor(chain, mode)?.actionBox ?? null;\n}\n","import { CHAIN } from \"../../types\";\nimport { KERNEL_POOL_USDC_USDT_Dev } from \"../kernel\";\nimport { PoolInfoType } from \"./_type_\";\n\nexport const POOL_INFO_Dev: PoolInfoType = {\n USDC_USDT: {\n kernelPool: KERNEL_POOL_USDC_USDT_Dev as `0x${string}`,\n token0: \"USDC\",\n token1: \"USDT\",\n feeBps: 1,\n peripheryInfo: {\n [CHAIN.ARBITRUM]: {\n token0: {\n address: \"0xaf88d065e77c8cC2239327C5EDb3A432268e5831\",\n symbol: \"USDC\",\n isNative: false,\n decimal: 6,\n chainId: CHAIN.ARBITRUM,\n },\n token1: {\n address: \"0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9\",\n symbol: \"USDT\",\n isNative: false,\n decimal: 6,\n chainId: CHAIN.ARBITRUM,\n },\n address: \"0x0433CCB013a590eA4231aAC9ddf05bb753c14127\",\n chain: \"ARBITRUM\",\n },\n },\n },\n};\n","import { PoolInfoType } from \"./_type_\";\n\n// v2 service is not deployed to STAGING yet. Populate this map when it is.\nexport const POOL_INFO_Staging: PoolInfoType = {};\n","import { PoolInfoType } from \"./_type_\";\n\n// v2 service is not deployed to PRODUCTION yet. Populate this map when it is.\nexport const POOL_INFO_Production: PoolInfoType = {};\n","import { CHAIN, EnvMode, Token, TokenPair } from \"../../types\";\nimport { POOL_INFO_Dev } from \"./dev\";\nimport { POOL_INFO_Staging } from \"./staging\";\nimport { POOL_INFO_Production } from \"./production\";\nimport { PoolInfoType, PoolKey } from \"./_type_\";\n\nexport function getAllPoolInfo(mode: EnvMode = \"PRODUCTION\"): PoolInfoType {\n switch (mode) {\n case \"PRODUCTION\": return POOL_INFO_Production;\n case \"STAGING\": return POOL_INFO_Staging;\n case \"DEV\": return POOL_INFO_Dev;\n }\n}\n\nexport function getAllPoolKeys(mode: EnvMode = \"PRODUCTION\"): PoolKey[] {\n return Object.keys(getAllPoolInfo(mode));\n}\n\nexport function getPoolInfoByKey(key: PoolKey, mode: EnvMode = \"PRODUCTION\") {\n return getAllPoolInfo(mode)[key] ?? null;\n}\n\nexport function getSupportedChains(mode: EnvMode = \"PRODUCTION\"): CHAIN[] {\n const poolInfo = getAllPoolInfo(mode);\n const supportedChains = new Set<CHAIN>();\n for (const poolData of Object.values(poolInfo)) {\n for (const chainId of Object.keys(poolData.peripheryInfo)) {\n supportedChains.add(Number(chainId) as CHAIN);\n }\n }\n return Array.from(supportedChains).sort((a, b) => a - b);\n}\n\nexport function getSupportedPairs(\n chainId: CHAIN,\n mode: EnvMode = \"PRODUCTION\",\n): (TokenPair & { poolKey: PoolKey })[] {\n const poolInfo = getAllPoolInfo(mode);\n const supportedPairs: (TokenPair & { poolKey: PoolKey })[] = [];\n for (const [poolKey, poolData] of Object.entries(poolInfo)) {\n const peripheryData = poolData.peripheryInfo[chainId];\n if (peripheryData) {\n supportedPairs.push({\n token0: peripheryData.token0,\n token1: peripheryData.token1,\n poolKey,\n });\n }\n }\n return supportedPairs;\n}\n\nexport function getSupportedTokens(chainId: CHAIN, mode: EnvMode = \"PRODUCTION\"): Token[] {\n const supportedPairs = getSupportedPairs(chainId, mode);\n const tokens: Token[] = [];\n const seen = new Set<string>();\n for (const { token0, token1 } of supportedPairs) {\n for (const t of [token0, token1]) {\n const key = t.address.toLowerCase();\n if (!seen.has(key)) {\n seen.add(key);\n tokens.push(t);\n }\n }\n }\n return tokens;\n}\n\nexport function getOtherTokensInPairs(\n chainId: CHAIN,\n tokenAddress: string,\n mode: EnvMode = \"PRODUCTION\",\n): Token[] {\n const supportedPairs = getSupportedPairs(chainId, mode);\n const result: Token[] = [];\n const seen = new Set<string>();\n const needle = tokenAddress.toLowerCase();\n for (const { token0, token1 } of supportedPairs) {\n let other: Token | null = null;\n if (token0.address.toLowerCase() === needle) other = token1;\n else if (token1.address.toLowerCase() === needle) other = token0;\n if (other && !seen.has(other.address.toLowerCase())) {\n seen.add(other.address.toLowerCase());\n result.push(other);\n }\n }\n return result;\n}\n\nexport function kernelPoolToPoolKey(kernelPool: `0x${string}`, mode: EnvMode = \"PRODUCTION\"): PoolKey {\n const info = getAllPoolInfo(mode);\n const lower = kernelPool.toLowerCase();\n for (const [key, poolData] of Object.entries(info)) {\n if (poolData.kernelPool.toLowerCase() === lower) return key;\n }\n throw new Error(`${mode} kernelPoolToPoolKey()::Unknown kernelPool ${kernelPool}`);\n}\n\nexport function getPeripheryDetailsByKernelPoolAndChainId(\n kernelPool: `0x${string}`,\n chainId: number,\n mode: EnvMode = \"PRODUCTION\",\n) {\n const poolKey = kernelPoolToPoolKey(kernelPool, mode);\n const info = getAllPoolInfo(mode);\n return info[poolKey]?.peripheryInfo[chainId] ?? null;\n}\n","import { bs58Decode, bs58Encode } from \"../utils/bs58\";\nimport { VM } from \"../types\";\n\nexport function base58ToBytes32(base58Str: string): `0x${string}` {\n const decoded = bs58Decode(base58Str);\n const addressBytes = new Uint8Array(32);\n const startPos = Math.max(0, 32 - decoded.length);\n addressBytes.set(decoded.slice(-32), startPos);\n return (\"0x\" + Buffer.from(addressBytes).toString(\"hex\").toLowerCase()) as `0x${string}`;\n}\n\nexport function base58ToHex(base58Str: string): `0x${string}` {\n const decoded = bs58Decode(base58Str);\n return `0x${Buffer.from(decoded).toString(\"hex\").toLowerCase()}` as `0x${string}`;\n}\n\nexport function hexToBase58(hexString: `0x${string}`): string {\n return bs58Encode(Buffer.from(hexString.slice(2), \"hex\"));\n}\n\nexport function bytes32ToBase58(hexStr: string): string {\n const hexWithoutPrefix = hexStr.startsWith(\"0x\") ? hexStr.slice(2) : hexStr;\n const addressBytes = Buffer.from(hexWithoutPrefix, \"hex\");\n const firstNonZero = addressBytes.findIndex((byte) => byte !== 0);\n const trimmed = firstNonZero < 0 ? addressBytes : addressBytes.subarray(firstNonZero);\n return bs58Encode(trimmed);\n}\n\nexport const bytes32HexRegex = /^(?:0x)?[0-9a-fA-F]{64}$/;\n\nexport function isHexString(str: unknown): boolean {\n return typeof str === \"string\" && /^0x[0-9a-fA-F]+$/.test(str);\n}\n\nexport function isHexStringLoose(str: unknown): boolean {\n return typeof str === \"string\" && /^(?:0x)?[0-9a-fA-F]+$/.test(str);\n}\n\nexport function evmAddressToBytes32(address: string): `0x${string}` {\n if (!address.startsWith(\"0x\") && !address.startsWith(\"0X\")) {\n throw new TypeError(`evmAddressToBytes32: expected 0x-prefixed address, got \"${address}\"`);\n }\n return `0x${BigInt(address).toString(16).padStart(64, \"0\")}`.toLowerCase() as `0x${string}`;\n}\n\nexport function bytes32ToEvmAddress(bytes32: string): `0x${string}` {\n const userBigInt = BigInt(bytes32);\n const addressBigInt = userBigInt & BigInt(\"0xffffffffffffffffffffffffffffffffffffffff\");\n return (`0x${addressBigInt.toString(16).padStart(40, \"0\")}`).toLowerCase() as `0x${string}`;\n}\n\nexport function toBase58(buffer: Buffer): string {\n return bs58Encode(buffer);\n}\n\nexport function bufferFromBase58(base58String: string): Buffer {\n return Buffer.from(bs58Decode(base58String));\n}\n\nexport function toBytes32Address(rawAddress: string, vmType: VM): `0x${string}` {\n switch (vmType) {\n case VM.EVM:\n return evmAddressToBytes32(rawAddress);\n case VM.SVM:\n return base58ToBytes32(rawAddress);\n case VM.SuiVM:\n if (!bytes32HexRegex.test(rawAddress)) {\n throw new TypeError(`toBytes32Address(SuiVM): expected 64-hex-char address, got \"${rawAddress}\"`);\n }\n return rawAddress as `0x${string}`;\n default:\n throw new Error(`toBytes32Address():Unsupported vmType=${vmType}`);\n }\n}\n\nexport function fromBytes32Address(bytes32Address: `0x${string}`, vmType: VM): string {\n switch (vmType) {\n case VM.EVM:\n return bytes32ToEvmAddress(bytes32Address);\n case VM.SVM:\n return bytes32ToBase58(bytes32Address);\n case VM.SuiVM:\n return bytes32Address;\n default:\n throw new Error(`fromBytes32Address():Unsupported vmType=${vmType}`);\n }\n}\n","const BASE58_ALPHABET = \"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz\";\n\nfunction base(ALPHABET: string) {\n if (ALPHABET.length >= 255) throw new TypeError(\"Alphabet too long\");\n\n const BASE_MAP = new Uint8Array(256).fill(255);\n for (let i = 0; i < ALPHABET.length; i++) {\n const xc = ALPHABET.charCodeAt(i);\n if (BASE_MAP[xc] !== 255) throw new TypeError(ALPHABET.charAt(i) + \" is ambiguous\");\n BASE_MAP[xc] = i;\n }\n\n const BASE = ALPHABET.length;\n const LEADER = ALPHABET.charAt(0);\n const FACTOR = Math.log(BASE) / Math.log(256);\n const iFACTOR = Math.log(256) / Math.log(BASE);\n\n function encode(source: Uint8Array | number[]): string {\n if (source instanceof Uint8Array) {\n // ok\n } else if (ArrayBuffer.isView(source)) {\n source = new Uint8Array((source as ArrayBufferView).buffer, (source as ArrayBufferView).byteOffset, (source as ArrayBufferView).byteLength);\n } else if (Array.isArray(source)) {\n source = Uint8Array.from(source);\n }\n if (!(source instanceof Uint8Array)) throw new TypeError(\"Expected Uint8Array\");\n if (source.length === 0) return \"\";\n\n let zeroes = 0;\n let length = 0;\n let pbegin = 0;\n const pend = source.length;\n\n while (pbegin !== pend && source[pbegin] === 0) {\n pbegin++;\n zeroes++;\n }\n\n const size = ((pend - pbegin) * iFACTOR + 1) >>> 0;\n const b58 = new Uint8Array(size);\n\n while (pbegin !== pend) {\n let carry = source[pbegin]!;\n let i = 0;\n for (let it1 = size - 1; (carry !== 0 || i < length) && it1 !== -1; it1--, i++) {\n carry += (256 * b58[it1]!) >>> 0;\n b58[it1] = carry % BASE >>> 0;\n carry = (carry / BASE) >>> 0;\n }\n if (carry !== 0) throw new Error(\"Non-zero carry\");\n length = i;\n pbegin++;\n }\n\n let it2 = size - length;\n while (it2 !== size && b58[it2] === 0) it2++;\n\n let str = LEADER.repeat(zeroes);\n for (; it2 < size; ++it2) str += ALPHABET.charAt(b58[it2]!);\n return str;\n }\n\n function decodeUnsafe(source: string): Uint8Array | undefined {\n if (typeof source !== \"string\") throw new TypeError(\"Expected String\");\n if (source.length === 0) return new Uint8Array();\n\n let psz = 0;\n let zeroes = 0;\n let length = 0;\n while (source[psz] === LEADER) {\n zeroes++;\n psz++;\n }\n\n const size = ((source.length - psz) * FACTOR + 1) >>> 0;\n const b256 = new Uint8Array(size);\n\n while (psz < source.length) {\n const charCode = source.charCodeAt(psz);\n if (charCode > 255) return;\n let carry = BASE_MAP[charCode]!;\n if (carry === 255) return;\n let i = 0;\n for (let it3 = size - 1; (carry !== 0 || i < length) && it3 !== -1; it3--, i++) {\n carry += (BASE * b256[it3]!) >>> 0;\n b256[it3] = carry % 256 >>> 0;\n carry = (carry / 256) >>> 0;\n }\n if (carry !== 0) throw new Error(\"Non-zero carry\");\n length = i;\n psz++;\n }\n\n let it4 = size - length;\n while (it4 !== size && b256[it4] === 0) it4++;\n\n const vch = new Uint8Array(zeroes + (size - it4));\n let j = zeroes;\n while (it4 !== size) vch[j++] = b256[it4++]!;\n return vch;\n }\n\n function decode(source: string): Uint8Array {\n const buffer = decodeUnsafe(source);\n if (buffer) return buffer;\n throw new Error(\"Non-base\" + BASE + \" character\");\n }\n\n return { encode, decode, decodeUnsafe };\n}\n\nconst codec = base(BASE58_ALPHABET);\nexport const bs58Encode = codec.encode;\nexport const bs58Decode = codec.decode;\n","/**\n * Base class for all errors originating from `@skate-org/amm-*` packages.\n *\n * Callers can use `err instanceof SdkError` to catch any SDK-origin failure\n * without needing to know the specific subclass. Subclasses live in the\n * package closest to their domain:\n *\n * - `ApiError` / `NotFoundError` / `NotImplementedError` — `@skate-org/amm-api-v2`\n * - `EvmReadError` / `EvmWriteError` — `@skate-org/amm-evm-v2`\n *\n * Each subclass sets its own `.name`; this base only defines the identity.\n */\nexport class SdkError extends Error {\n override readonly name: string = \"SdkError\";\n\n constructor(message: string, options?: ErrorOptions) {\n super(message, options);\n }\n}\n"],"mappings":"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","names":["CHAIN","VM","BLOCK_EXPLORER","TaskPhase"]}
|
package/dist/index.d.cts
ADDED
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,583 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __export = (target, all) => {
|
|
3
|
+
for (var name in all)
|
|
4
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
5
|
+
};
|
|
6
|
+
|
|
7
|
+
// src/types/chain.ts
|
|
8
|
+
var CHAIN = /* @__PURE__ */ ((CHAIN2) => {
|
|
9
|
+
CHAIN2[CHAIN2["SKATE"] = 5050] = "SKATE";
|
|
10
|
+
CHAIN2[CHAIN2["SOLANA"] = 901] = "SOLANA";
|
|
11
|
+
CHAIN2[CHAIN2["ECLIPSE"] = 902] = "ECLIPSE";
|
|
12
|
+
CHAIN2[CHAIN2["SUI"] = 1001] = "SUI";
|
|
13
|
+
CHAIN2[CHAIN2["BASE"] = 8453] = "BASE";
|
|
14
|
+
CHAIN2[CHAIN2["ARBITRUM"] = 42161] = "ARBITRUM";
|
|
15
|
+
CHAIN2[CHAIN2["BSC"] = 56] = "BSC";
|
|
16
|
+
CHAIN2[CHAIN2["MANTLE"] = 5e3] = "MANTLE";
|
|
17
|
+
CHAIN2[CHAIN2["OPTIMISM"] = 10] = "OPTIMISM";
|
|
18
|
+
CHAIN2[CHAIN2["ETHEREUM"] = 1] = "ETHEREUM";
|
|
19
|
+
CHAIN2[CHAIN2["HYPERLIQUID"] = 999] = "HYPERLIQUID";
|
|
20
|
+
CHAIN2[CHAIN2["PLUME"] = 98866] = "PLUME";
|
|
21
|
+
CHAIN2[CHAIN2["ZG"] = 16661] = "ZG";
|
|
22
|
+
CHAIN2[CHAIN2["MONAD"] = 143] = "MONAD";
|
|
23
|
+
CHAIN2[CHAIN2["MEGAETH"] = 4326] = "MEGAETH";
|
|
24
|
+
CHAIN2[CHAIN2["TEMPO"] = 4217] = "TEMPO";
|
|
25
|
+
return CHAIN2;
|
|
26
|
+
})(CHAIN || {});
|
|
27
|
+
var CHAIN_MAP = Object.entries(CHAIN).filter(([, value]) => typeof value === "number").reduce(
|
|
28
|
+
(map, [key, value]) => {
|
|
29
|
+
map[key] = value;
|
|
30
|
+
return map;
|
|
31
|
+
},
|
|
32
|
+
{}
|
|
33
|
+
);
|
|
34
|
+
|
|
35
|
+
// src/types/vm.ts
|
|
36
|
+
var VM = /* @__PURE__ */ ((VM2) => {
|
|
37
|
+
VM2[VM2["EVM"] = 1] = "EVM";
|
|
38
|
+
VM2[VM2["TVM"] = 2] = "TVM";
|
|
39
|
+
VM2[VM2["SVM"] = 3] = "SVM";
|
|
40
|
+
VM2[VM2["SuiVM"] = 4] = "SuiVM";
|
|
41
|
+
return VM2;
|
|
42
|
+
})(VM || {});
|
|
43
|
+
var BLOCK_EXPLORER = /* @__PURE__ */ ((BLOCK_EXPLORER2) => {
|
|
44
|
+
BLOCK_EXPLORER2["SKATE"] = "https://scan.skatechain.org";
|
|
45
|
+
BLOCK_EXPLORER2["ECLIPSE"] = "https://eclipsescan.xyz";
|
|
46
|
+
BLOCK_EXPLORER2["SOLANA"] = "https://solscan.io";
|
|
47
|
+
BLOCK_EXPLORER2["SUI"] = "https://suiscan.xyz/mainnet";
|
|
48
|
+
BLOCK_EXPLORER2["BASE"] = "https://basescan.org";
|
|
49
|
+
BLOCK_EXPLORER2["ARBITRUM"] = "https://arbiscan.io";
|
|
50
|
+
BLOCK_EXPLORER2["MANTLE"] = "https://mantlescan.xyz";
|
|
51
|
+
BLOCK_EXPLORER2["OPTIMISM"] = "https://optimistic.etherscan.io";
|
|
52
|
+
BLOCK_EXPLORER2["ETHEREUM"] = "https://etherscan.io";
|
|
53
|
+
BLOCK_EXPLORER2["BSC"] = "https://bscscan.com";
|
|
54
|
+
BLOCK_EXPLORER2["HYPERLIQUID"] = "https://hyperscan.com";
|
|
55
|
+
BLOCK_EXPLORER2["PLUME"] = "https://explorer.plume.org";
|
|
56
|
+
BLOCK_EXPLORER2["ZG"] = "https://chainscan.0g.ai";
|
|
57
|
+
BLOCK_EXPLORER2["MONAD"] = "https://monadvision.com";
|
|
58
|
+
BLOCK_EXPLORER2["MEGAETH"] = "https://megaeth.blockscout.com";
|
|
59
|
+
BLOCK_EXPLORER2["TEMPO"] = "https://explore.tempo.xyz";
|
|
60
|
+
return BLOCK_EXPLORER2;
|
|
61
|
+
})(BLOCK_EXPLORER || {});
|
|
62
|
+
function getBlockExplorer(chain) {
|
|
63
|
+
switch (chain) {
|
|
64
|
+
case 5050 /* SKATE */:
|
|
65
|
+
return "https://scan.skatechain.org" /* SKATE */;
|
|
66
|
+
case 901 /* SOLANA */:
|
|
67
|
+
return "https://solscan.io" /* SOLANA */;
|
|
68
|
+
case 902 /* ECLIPSE */:
|
|
69
|
+
return "https://eclipsescan.xyz" /* ECLIPSE */;
|
|
70
|
+
case 1001 /* SUI */:
|
|
71
|
+
return "https://suiscan.xyz/mainnet" /* SUI */;
|
|
72
|
+
case 8453 /* BASE */:
|
|
73
|
+
return "https://basescan.org" /* BASE */;
|
|
74
|
+
case 42161 /* ARBITRUM */:
|
|
75
|
+
return "https://arbiscan.io" /* ARBITRUM */;
|
|
76
|
+
case 5e3 /* MANTLE */:
|
|
77
|
+
return "https://mantlescan.xyz" /* MANTLE */;
|
|
78
|
+
case 10 /* OPTIMISM */:
|
|
79
|
+
return "https://optimistic.etherscan.io" /* OPTIMISM */;
|
|
80
|
+
case 1 /* ETHEREUM */:
|
|
81
|
+
return "https://etherscan.io" /* ETHEREUM */;
|
|
82
|
+
case 56 /* BSC */:
|
|
83
|
+
return "https://bscscan.com" /* BSC */;
|
|
84
|
+
case 999 /* HYPERLIQUID */:
|
|
85
|
+
return "https://hyperscan.com" /* HYPERLIQUID */;
|
|
86
|
+
case 98866 /* PLUME */:
|
|
87
|
+
return "https://explorer.plume.org" /* PLUME */;
|
|
88
|
+
case 16661 /* ZG */:
|
|
89
|
+
return "https://chainscan.0g.ai" /* ZG */;
|
|
90
|
+
case 143 /* MONAD */:
|
|
91
|
+
return "https://monadvision.com" /* MONAD */;
|
|
92
|
+
case 4326 /* MEGAETH */:
|
|
93
|
+
return "https://megaeth.blockscout.com" /* MEGAETH */;
|
|
94
|
+
case 4217 /* TEMPO */:
|
|
95
|
+
return "https://explore.tempo.xyz" /* TEMPO */;
|
|
96
|
+
default:
|
|
97
|
+
return null;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
function vmTypeFromChain(chainId) {
|
|
101
|
+
switch (chainId) {
|
|
102
|
+
case 5050 /* SKATE */:
|
|
103
|
+
case 8453 /* BASE */:
|
|
104
|
+
case 42161 /* ARBITRUM */:
|
|
105
|
+
case 5e3 /* MANTLE */:
|
|
106
|
+
case 10 /* OPTIMISM */:
|
|
107
|
+
case 1 /* ETHEREUM */:
|
|
108
|
+
case 56 /* BSC */:
|
|
109
|
+
case 999 /* HYPERLIQUID */:
|
|
110
|
+
case 98866 /* PLUME */:
|
|
111
|
+
case 16661 /* ZG */:
|
|
112
|
+
case 143 /* MONAD */:
|
|
113
|
+
case 4326 /* MEGAETH */:
|
|
114
|
+
case 4217 /* TEMPO */:
|
|
115
|
+
return 1 /* EVM */;
|
|
116
|
+
case 901 /* SOLANA */:
|
|
117
|
+
case 902 /* ECLIPSE */:
|
|
118
|
+
return 3 /* SVM */;
|
|
119
|
+
case 1001 /* SUI */:
|
|
120
|
+
return 4 /* SuiVM */;
|
|
121
|
+
default:
|
|
122
|
+
return null;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
// src/types/mode.ts
|
|
127
|
+
function normalizeMode(mode) {
|
|
128
|
+
if (typeof mode === "string") return { mode };
|
|
129
|
+
return { mode: mode.mode, config: mode.config };
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
// src/types/action.ts
|
|
133
|
+
var TaskPhase = /* @__PURE__ */ ((TaskPhase2) => {
|
|
134
|
+
TaskPhase2["INDEX_ACTION"] = "INDEX_ACTION";
|
|
135
|
+
TaskPhase2["SETTLE_KERNEL"] = "SETTLE_KERNEL";
|
|
136
|
+
TaskPhase2["SUBMIT_EXECUTION"] = "SUBMIT_EXECUTION";
|
|
137
|
+
TaskPhase2["SETTLE_GATEWAY"] = "SETTLE_GATEWAY";
|
|
138
|
+
TaskPhase2["SETTLE_REFUND"] = "SETTLE_REFUND";
|
|
139
|
+
return TaskPhase2;
|
|
140
|
+
})(TaskPhase || {});
|
|
141
|
+
|
|
142
|
+
// src/deployment/kernel.ts
|
|
143
|
+
var KERNEL_EXECUTOR_REGISTRY_Dev = "0x45F5e211B2CAeA14d5E5cB028923F8A5D7b1ab5d";
|
|
144
|
+
var KERNEL_MESSAGE_BOX_Dev = "0xe3aC86bF5D9Ab5d9705b5e9187437e978397528B";
|
|
145
|
+
var KERNEL_ACCOUNT_REGISTRY_Dev = "0xeD9e139CAcb439744277be5D7fbEe5aAF4DB8fA2";
|
|
146
|
+
var KERNEL_MANAGER_Dev = "0x17B7207837e8884f7f687f1f4057751BDAf70a01";
|
|
147
|
+
var KERNEL_EVENT_EMITTER_Dev = "0x8989b3ecb65f250ab7A0DC03589B0Cc8b8b04b81";
|
|
148
|
+
var KERNEL_POOL_IMPL_Dev = "0x9BffA944Df7914621A7Cc638C9104C106c5C6846";
|
|
149
|
+
var KERNEL_POOL_USDC_USDT_Dev = "0x2c23334eE3b030e6bacEDEDf7C511eEA08Cf7E7e";
|
|
150
|
+
var KERNEL_MANAGER_Staging = "0xB32841DD65316F672eb07c63508f4b6841b6Aee4";
|
|
151
|
+
var KERNEL_EVENT_EMITTER_Staging = "0x8f16B23A11378bE8573470e23f626b9a7e41B389";
|
|
152
|
+
var KERNEL_MANAGER_Prod = "0x46887a1f9885300f4185499Ba48C248445EEcAb1";
|
|
153
|
+
var KERNEL_EVENT_EMITTER_Prod = "0xC8615dcE472fD684D0FDcEC18013EaB402F61ba7";
|
|
154
|
+
function KernelManagerAddress(mode = "PRODUCTION") {
|
|
155
|
+
switch (mode) {
|
|
156
|
+
case "PRODUCTION":
|
|
157
|
+
return KERNEL_MANAGER_Prod;
|
|
158
|
+
case "STAGING":
|
|
159
|
+
return KERNEL_MANAGER_Staging;
|
|
160
|
+
case "DEV":
|
|
161
|
+
return KERNEL_MANAGER_Dev;
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
function KernelEventEmitterAddress(mode = "PRODUCTION") {
|
|
165
|
+
switch (mode) {
|
|
166
|
+
case "PRODUCTION":
|
|
167
|
+
return KERNEL_EVENT_EMITTER_Prod;
|
|
168
|
+
case "STAGING":
|
|
169
|
+
return KERNEL_EVENT_EMITTER_Staging;
|
|
170
|
+
case "DEV":
|
|
171
|
+
return KERNEL_EVENT_EMITTER_Dev;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
// src/deployment/periphery.ts
|
|
176
|
+
var PERIPHERY_DEV = {
|
|
177
|
+
[42161 /* ARBITRUM */]: {
|
|
178
|
+
multicall: "0x3dCD7A136F0A49f3EFcC5E215793Fa1ce5c400Bf",
|
|
179
|
+
executorRegistry: "0xE84a60d66543ef8E2E162f66a7669692b01Ee145",
|
|
180
|
+
actionBox: "0x4309d3aE98c8A751fAc34C91536Ee860d9B8DcE1",
|
|
181
|
+
skateGateway: "0x63Ca920425f683138B9407171b51b8172421Ba50",
|
|
182
|
+
peripheryManager: "0x1120d6B34c4EB0CD49200aE9fBD2e4fb002d949f",
|
|
183
|
+
peripheryManagerImpl: "0x26F01bc73cB7422DB67BBDfAcd9C987Ae66bF3D3",
|
|
184
|
+
eventEmitter: "0xB301150AFA170816Ae18EC21e2A830Ddc7bBA1De",
|
|
185
|
+
peripheryPoolImpl: "0x803ed7fa8934D4fe51A276cA02506b585cdb3eb4"
|
|
186
|
+
}
|
|
187
|
+
};
|
|
188
|
+
var PERIPHERY_STAGING = {};
|
|
189
|
+
var PERIPHERY_PROD = {};
|
|
190
|
+
function PeripheryDeploymentFor(chain, mode = "PRODUCTION") {
|
|
191
|
+
const table = mode === "DEV" ? PERIPHERY_DEV : mode === "STAGING" ? PERIPHERY_STAGING : PERIPHERY_PROD;
|
|
192
|
+
return table[chain] ?? null;
|
|
193
|
+
}
|
|
194
|
+
function PeripheryManagerAddress(chain, mode = "PRODUCTION") {
|
|
195
|
+
return PeripheryDeploymentFor(chain, mode)?.peripheryManager ?? null;
|
|
196
|
+
}
|
|
197
|
+
function PeripheryEventEmitterAddress(chain, mode = "PRODUCTION") {
|
|
198
|
+
return PeripheryDeploymentFor(chain, mode)?.eventEmitter ?? null;
|
|
199
|
+
}
|
|
200
|
+
function SkateGatewayAddress(chain, mode = "PRODUCTION") {
|
|
201
|
+
return PeripheryDeploymentFor(chain, mode)?.skateGateway ?? null;
|
|
202
|
+
}
|
|
203
|
+
function ActionBoxAddress(chain, mode = "PRODUCTION") {
|
|
204
|
+
return PeripheryDeploymentFor(chain, mode)?.actionBox ?? null;
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
// src/deployment/aggregated/dev.ts
|
|
208
|
+
var POOL_INFO_Dev = {
|
|
209
|
+
USDC_USDT: {
|
|
210
|
+
kernelPool: KERNEL_POOL_USDC_USDT_Dev,
|
|
211
|
+
token0: "USDC",
|
|
212
|
+
token1: "USDT",
|
|
213
|
+
feeBps: 1,
|
|
214
|
+
peripheryInfo: {
|
|
215
|
+
[42161 /* ARBITRUM */]: {
|
|
216
|
+
token0: {
|
|
217
|
+
address: "0xaf88d065e77c8cC2239327C5EDb3A432268e5831",
|
|
218
|
+
symbol: "USDC",
|
|
219
|
+
isNative: false,
|
|
220
|
+
decimal: 6,
|
|
221
|
+
chainId: 42161 /* ARBITRUM */
|
|
222
|
+
},
|
|
223
|
+
token1: {
|
|
224
|
+
address: "0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9",
|
|
225
|
+
symbol: "USDT",
|
|
226
|
+
isNative: false,
|
|
227
|
+
decimal: 6,
|
|
228
|
+
chainId: 42161 /* ARBITRUM */
|
|
229
|
+
},
|
|
230
|
+
address: "0x0433CCB013a590eA4231aAC9ddf05bb753c14127",
|
|
231
|
+
chain: "ARBITRUM"
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
};
|
|
236
|
+
|
|
237
|
+
// src/deployment/aggregated/staging.ts
|
|
238
|
+
var POOL_INFO_Staging = {};
|
|
239
|
+
|
|
240
|
+
// src/deployment/aggregated/production.ts
|
|
241
|
+
var POOL_INFO_Production = {};
|
|
242
|
+
|
|
243
|
+
// src/deployment/aggregated/retrieval.ts
|
|
244
|
+
function getAllPoolInfo(mode = "PRODUCTION") {
|
|
245
|
+
switch (mode) {
|
|
246
|
+
case "PRODUCTION":
|
|
247
|
+
return POOL_INFO_Production;
|
|
248
|
+
case "STAGING":
|
|
249
|
+
return POOL_INFO_Staging;
|
|
250
|
+
case "DEV":
|
|
251
|
+
return POOL_INFO_Dev;
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
function getAllPoolKeys(mode = "PRODUCTION") {
|
|
255
|
+
return Object.keys(getAllPoolInfo(mode));
|
|
256
|
+
}
|
|
257
|
+
function getPoolInfoByKey(key, mode = "PRODUCTION") {
|
|
258
|
+
return getAllPoolInfo(mode)[key] ?? null;
|
|
259
|
+
}
|
|
260
|
+
function getSupportedChains(mode = "PRODUCTION") {
|
|
261
|
+
const poolInfo = getAllPoolInfo(mode);
|
|
262
|
+
const supportedChains = /* @__PURE__ */ new Set();
|
|
263
|
+
for (const poolData of Object.values(poolInfo)) {
|
|
264
|
+
for (const chainId of Object.keys(poolData.peripheryInfo)) {
|
|
265
|
+
supportedChains.add(Number(chainId));
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
return Array.from(supportedChains).sort((a, b) => a - b);
|
|
269
|
+
}
|
|
270
|
+
function getSupportedPairs(chainId, mode = "PRODUCTION") {
|
|
271
|
+
const poolInfo = getAllPoolInfo(mode);
|
|
272
|
+
const supportedPairs = [];
|
|
273
|
+
for (const [poolKey, poolData] of Object.entries(poolInfo)) {
|
|
274
|
+
const peripheryData = poolData.peripheryInfo[chainId];
|
|
275
|
+
if (peripheryData) {
|
|
276
|
+
supportedPairs.push({
|
|
277
|
+
token0: peripheryData.token0,
|
|
278
|
+
token1: peripheryData.token1,
|
|
279
|
+
poolKey
|
|
280
|
+
});
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
return supportedPairs;
|
|
284
|
+
}
|
|
285
|
+
function getSupportedTokens(chainId, mode = "PRODUCTION") {
|
|
286
|
+
const supportedPairs = getSupportedPairs(chainId, mode);
|
|
287
|
+
const tokens = [];
|
|
288
|
+
const seen = /* @__PURE__ */ new Set();
|
|
289
|
+
for (const { token0, token1 } of supportedPairs) {
|
|
290
|
+
for (const t of [token0, token1]) {
|
|
291
|
+
const key = t.address.toLowerCase();
|
|
292
|
+
if (!seen.has(key)) {
|
|
293
|
+
seen.add(key);
|
|
294
|
+
tokens.push(t);
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
return tokens;
|
|
299
|
+
}
|
|
300
|
+
function getOtherTokensInPairs(chainId, tokenAddress, mode = "PRODUCTION") {
|
|
301
|
+
const supportedPairs = getSupportedPairs(chainId, mode);
|
|
302
|
+
const result = [];
|
|
303
|
+
const seen = /* @__PURE__ */ new Set();
|
|
304
|
+
const needle = tokenAddress.toLowerCase();
|
|
305
|
+
for (const { token0, token1 } of supportedPairs) {
|
|
306
|
+
let other = null;
|
|
307
|
+
if (token0.address.toLowerCase() === needle) other = token1;
|
|
308
|
+
else if (token1.address.toLowerCase() === needle) other = token0;
|
|
309
|
+
if (other && !seen.has(other.address.toLowerCase())) {
|
|
310
|
+
seen.add(other.address.toLowerCase());
|
|
311
|
+
result.push(other);
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
return result;
|
|
315
|
+
}
|
|
316
|
+
function kernelPoolToPoolKey(kernelPool, mode = "PRODUCTION") {
|
|
317
|
+
const info = getAllPoolInfo(mode);
|
|
318
|
+
const lower = kernelPool.toLowerCase();
|
|
319
|
+
for (const [key, poolData] of Object.entries(info)) {
|
|
320
|
+
if (poolData.kernelPool.toLowerCase() === lower) return key;
|
|
321
|
+
}
|
|
322
|
+
throw new Error(`${mode} kernelPoolToPoolKey()::Unknown kernelPool ${kernelPool}`);
|
|
323
|
+
}
|
|
324
|
+
function getPeripheryDetailsByKernelPoolAndChainId(kernelPool, chainId, mode = "PRODUCTION") {
|
|
325
|
+
const poolKey = kernelPoolToPoolKey(kernelPool, mode);
|
|
326
|
+
const info = getAllPoolInfo(mode);
|
|
327
|
+
return info[poolKey]?.peripheryInfo[chainId] ?? null;
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
// src/adapter/skate.ts
|
|
331
|
+
var skate_exports = {};
|
|
332
|
+
__export(skate_exports, {
|
|
333
|
+
base58ToBytes32: () => base58ToBytes32,
|
|
334
|
+
base58ToHex: () => base58ToHex,
|
|
335
|
+
bufferFromBase58: () => bufferFromBase58,
|
|
336
|
+
bytes32HexRegex: () => bytes32HexRegex,
|
|
337
|
+
bytes32ToBase58: () => bytes32ToBase58,
|
|
338
|
+
bytes32ToEvmAddress: () => bytes32ToEvmAddress,
|
|
339
|
+
evmAddressToBytes32: () => evmAddressToBytes32,
|
|
340
|
+
fromBytes32Address: () => fromBytes32Address,
|
|
341
|
+
hexToBase58: () => hexToBase58,
|
|
342
|
+
isHexString: () => isHexString,
|
|
343
|
+
isHexStringLoose: () => isHexStringLoose,
|
|
344
|
+
toBase58: () => toBase58,
|
|
345
|
+
toBytes32Address: () => toBytes32Address
|
|
346
|
+
});
|
|
347
|
+
|
|
348
|
+
// src/utils/bs58.ts
|
|
349
|
+
var BASE58_ALPHABET = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";
|
|
350
|
+
function base(ALPHABET) {
|
|
351
|
+
if (ALPHABET.length >= 255) throw new TypeError("Alphabet too long");
|
|
352
|
+
const BASE_MAP = new Uint8Array(256).fill(255);
|
|
353
|
+
for (let i = 0; i < ALPHABET.length; i++) {
|
|
354
|
+
const xc = ALPHABET.charCodeAt(i);
|
|
355
|
+
if (BASE_MAP[xc] !== 255) throw new TypeError(ALPHABET.charAt(i) + " is ambiguous");
|
|
356
|
+
BASE_MAP[xc] = i;
|
|
357
|
+
}
|
|
358
|
+
const BASE = ALPHABET.length;
|
|
359
|
+
const LEADER = ALPHABET.charAt(0);
|
|
360
|
+
const FACTOR = Math.log(BASE) / Math.log(256);
|
|
361
|
+
const iFACTOR = Math.log(256) / Math.log(BASE);
|
|
362
|
+
function encode(source) {
|
|
363
|
+
if (source instanceof Uint8Array) {
|
|
364
|
+
} else if (ArrayBuffer.isView(source)) {
|
|
365
|
+
source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength);
|
|
366
|
+
} else if (Array.isArray(source)) {
|
|
367
|
+
source = Uint8Array.from(source);
|
|
368
|
+
}
|
|
369
|
+
if (!(source instanceof Uint8Array)) throw new TypeError("Expected Uint8Array");
|
|
370
|
+
if (source.length === 0) return "";
|
|
371
|
+
let zeroes = 0;
|
|
372
|
+
let length = 0;
|
|
373
|
+
let pbegin = 0;
|
|
374
|
+
const pend = source.length;
|
|
375
|
+
while (pbegin !== pend && source[pbegin] === 0) {
|
|
376
|
+
pbegin++;
|
|
377
|
+
zeroes++;
|
|
378
|
+
}
|
|
379
|
+
const size = (pend - pbegin) * iFACTOR + 1 >>> 0;
|
|
380
|
+
const b58 = new Uint8Array(size);
|
|
381
|
+
while (pbegin !== pend) {
|
|
382
|
+
let carry = source[pbegin];
|
|
383
|
+
let i = 0;
|
|
384
|
+
for (let it1 = size - 1; (carry !== 0 || i < length) && it1 !== -1; it1--, i++) {
|
|
385
|
+
carry += 256 * b58[it1] >>> 0;
|
|
386
|
+
b58[it1] = carry % BASE >>> 0;
|
|
387
|
+
carry = carry / BASE >>> 0;
|
|
388
|
+
}
|
|
389
|
+
if (carry !== 0) throw new Error("Non-zero carry");
|
|
390
|
+
length = i;
|
|
391
|
+
pbegin++;
|
|
392
|
+
}
|
|
393
|
+
let it2 = size - length;
|
|
394
|
+
while (it2 !== size && b58[it2] === 0) it2++;
|
|
395
|
+
let str = LEADER.repeat(zeroes);
|
|
396
|
+
for (; it2 < size; ++it2) str += ALPHABET.charAt(b58[it2]);
|
|
397
|
+
return str;
|
|
398
|
+
}
|
|
399
|
+
function decodeUnsafe(source) {
|
|
400
|
+
if (typeof source !== "string") throw new TypeError("Expected String");
|
|
401
|
+
if (source.length === 0) return new Uint8Array();
|
|
402
|
+
let psz = 0;
|
|
403
|
+
let zeroes = 0;
|
|
404
|
+
let length = 0;
|
|
405
|
+
while (source[psz] === LEADER) {
|
|
406
|
+
zeroes++;
|
|
407
|
+
psz++;
|
|
408
|
+
}
|
|
409
|
+
const size = (source.length - psz) * FACTOR + 1 >>> 0;
|
|
410
|
+
const b256 = new Uint8Array(size);
|
|
411
|
+
while (psz < source.length) {
|
|
412
|
+
const charCode = source.charCodeAt(psz);
|
|
413
|
+
if (charCode > 255) return;
|
|
414
|
+
let carry = BASE_MAP[charCode];
|
|
415
|
+
if (carry === 255) return;
|
|
416
|
+
let i = 0;
|
|
417
|
+
for (let it3 = size - 1; (carry !== 0 || i < length) && it3 !== -1; it3--, i++) {
|
|
418
|
+
carry += BASE * b256[it3] >>> 0;
|
|
419
|
+
b256[it3] = carry % 256 >>> 0;
|
|
420
|
+
carry = carry / 256 >>> 0;
|
|
421
|
+
}
|
|
422
|
+
if (carry !== 0) throw new Error("Non-zero carry");
|
|
423
|
+
length = i;
|
|
424
|
+
psz++;
|
|
425
|
+
}
|
|
426
|
+
let it4 = size - length;
|
|
427
|
+
while (it4 !== size && b256[it4] === 0) it4++;
|
|
428
|
+
const vch = new Uint8Array(zeroes + (size - it4));
|
|
429
|
+
let j = zeroes;
|
|
430
|
+
while (it4 !== size) vch[j++] = b256[it4++];
|
|
431
|
+
return vch;
|
|
432
|
+
}
|
|
433
|
+
function decode(source) {
|
|
434
|
+
const buffer = decodeUnsafe(source);
|
|
435
|
+
if (buffer) return buffer;
|
|
436
|
+
throw new Error("Non-base" + BASE + " character");
|
|
437
|
+
}
|
|
438
|
+
return { encode, decode, decodeUnsafe };
|
|
439
|
+
}
|
|
440
|
+
var codec = base(BASE58_ALPHABET);
|
|
441
|
+
var bs58Encode = codec.encode;
|
|
442
|
+
var bs58Decode = codec.decode;
|
|
443
|
+
|
|
444
|
+
// src/adapter/skate.ts
|
|
445
|
+
function base58ToBytes32(base58Str) {
|
|
446
|
+
const decoded = bs58Decode(base58Str);
|
|
447
|
+
const addressBytes = new Uint8Array(32);
|
|
448
|
+
const startPos = Math.max(0, 32 - decoded.length);
|
|
449
|
+
addressBytes.set(decoded.slice(-32), startPos);
|
|
450
|
+
return "0x" + Buffer.from(addressBytes).toString("hex").toLowerCase();
|
|
451
|
+
}
|
|
452
|
+
function base58ToHex(base58Str) {
|
|
453
|
+
const decoded = bs58Decode(base58Str);
|
|
454
|
+
return `0x${Buffer.from(decoded).toString("hex").toLowerCase()}`;
|
|
455
|
+
}
|
|
456
|
+
function hexToBase58(hexString) {
|
|
457
|
+
return bs58Encode(Buffer.from(hexString.slice(2), "hex"));
|
|
458
|
+
}
|
|
459
|
+
function bytes32ToBase58(hexStr) {
|
|
460
|
+
const hexWithoutPrefix = hexStr.startsWith("0x") ? hexStr.slice(2) : hexStr;
|
|
461
|
+
const addressBytes = Buffer.from(hexWithoutPrefix, "hex");
|
|
462
|
+
const firstNonZero = addressBytes.findIndex((byte) => byte !== 0);
|
|
463
|
+
const trimmed = firstNonZero < 0 ? addressBytes : addressBytes.subarray(firstNonZero);
|
|
464
|
+
return bs58Encode(trimmed);
|
|
465
|
+
}
|
|
466
|
+
var bytes32HexRegex = /^(?:0x)?[0-9a-fA-F]{64}$/;
|
|
467
|
+
function isHexString(str) {
|
|
468
|
+
return typeof str === "string" && /^0x[0-9a-fA-F]+$/.test(str);
|
|
469
|
+
}
|
|
470
|
+
function isHexStringLoose(str) {
|
|
471
|
+
return typeof str === "string" && /^(?:0x)?[0-9a-fA-F]+$/.test(str);
|
|
472
|
+
}
|
|
473
|
+
function evmAddressToBytes32(address) {
|
|
474
|
+
if (!address.startsWith("0x") && !address.startsWith("0X")) {
|
|
475
|
+
throw new TypeError(`evmAddressToBytes32: expected 0x-prefixed address, got "${address}"`);
|
|
476
|
+
}
|
|
477
|
+
return `0x${BigInt(address).toString(16).padStart(64, "0")}`.toLowerCase();
|
|
478
|
+
}
|
|
479
|
+
function bytes32ToEvmAddress(bytes32) {
|
|
480
|
+
const userBigInt = BigInt(bytes32);
|
|
481
|
+
const addressBigInt = userBigInt & BigInt("0xffffffffffffffffffffffffffffffffffffffff");
|
|
482
|
+
return `0x${addressBigInt.toString(16).padStart(40, "0")}`.toLowerCase();
|
|
483
|
+
}
|
|
484
|
+
function toBase58(buffer) {
|
|
485
|
+
return bs58Encode(buffer);
|
|
486
|
+
}
|
|
487
|
+
function bufferFromBase58(base58String) {
|
|
488
|
+
return Buffer.from(bs58Decode(base58String));
|
|
489
|
+
}
|
|
490
|
+
function toBytes32Address(rawAddress, vmType) {
|
|
491
|
+
switch (vmType) {
|
|
492
|
+
case 1 /* EVM */:
|
|
493
|
+
return evmAddressToBytes32(rawAddress);
|
|
494
|
+
case 3 /* SVM */:
|
|
495
|
+
return base58ToBytes32(rawAddress);
|
|
496
|
+
case 4 /* SuiVM */:
|
|
497
|
+
if (!bytes32HexRegex.test(rawAddress)) {
|
|
498
|
+
throw new TypeError(`toBytes32Address(SuiVM): expected 64-hex-char address, got "${rawAddress}"`);
|
|
499
|
+
}
|
|
500
|
+
return rawAddress;
|
|
501
|
+
default:
|
|
502
|
+
throw new Error(`toBytes32Address():Unsupported vmType=${vmType}`);
|
|
503
|
+
}
|
|
504
|
+
}
|
|
505
|
+
function fromBytes32Address(bytes32Address, vmType) {
|
|
506
|
+
switch (vmType) {
|
|
507
|
+
case 1 /* EVM */:
|
|
508
|
+
return bytes32ToEvmAddress(bytes32Address);
|
|
509
|
+
case 3 /* SVM */:
|
|
510
|
+
return bytes32ToBase58(bytes32Address);
|
|
511
|
+
case 4 /* SuiVM */:
|
|
512
|
+
return bytes32Address;
|
|
513
|
+
default:
|
|
514
|
+
throw new Error(`fromBytes32Address():Unsupported vmType=${vmType}`);
|
|
515
|
+
}
|
|
516
|
+
}
|
|
517
|
+
|
|
518
|
+
// src/errors.ts
|
|
519
|
+
var SdkError = class extends Error {
|
|
520
|
+
name = "SdkError";
|
|
521
|
+
constructor(message, options) {
|
|
522
|
+
super(message, options);
|
|
523
|
+
}
|
|
524
|
+
};
|
|
525
|
+
export {
|
|
526
|
+
ActionBoxAddress,
|
|
527
|
+
BLOCK_EXPLORER,
|
|
528
|
+
CHAIN,
|
|
529
|
+
CHAIN_MAP,
|
|
530
|
+
KERNEL_ACCOUNT_REGISTRY_Dev,
|
|
531
|
+
KERNEL_EVENT_EMITTER_Dev,
|
|
532
|
+
KERNEL_EVENT_EMITTER_Prod,
|
|
533
|
+
KERNEL_EVENT_EMITTER_Staging,
|
|
534
|
+
KERNEL_EXECUTOR_REGISTRY_Dev,
|
|
535
|
+
KERNEL_MANAGER_Dev,
|
|
536
|
+
KERNEL_MANAGER_Prod,
|
|
537
|
+
KERNEL_MANAGER_Staging,
|
|
538
|
+
KERNEL_MESSAGE_BOX_Dev,
|
|
539
|
+
KERNEL_POOL_IMPL_Dev,
|
|
540
|
+
KERNEL_POOL_USDC_USDT_Dev,
|
|
541
|
+
KernelEventEmitterAddress,
|
|
542
|
+
KernelManagerAddress,
|
|
543
|
+
PERIPHERY_DEV,
|
|
544
|
+
PERIPHERY_PROD,
|
|
545
|
+
PERIPHERY_STAGING,
|
|
546
|
+
POOL_INFO_Dev,
|
|
547
|
+
POOL_INFO_Production,
|
|
548
|
+
POOL_INFO_Staging,
|
|
549
|
+
PeripheryDeploymentFor,
|
|
550
|
+
PeripheryEventEmitterAddress,
|
|
551
|
+
PeripheryManagerAddress,
|
|
552
|
+
SdkError,
|
|
553
|
+
SkateGatewayAddress,
|
|
554
|
+
TaskPhase,
|
|
555
|
+
VM,
|
|
556
|
+
base58ToBytes32,
|
|
557
|
+
base58ToHex,
|
|
558
|
+
bufferFromBase58,
|
|
559
|
+
bytes32HexRegex,
|
|
560
|
+
bytes32ToBase58,
|
|
561
|
+
bytes32ToEvmAddress,
|
|
562
|
+
evmAddressToBytes32,
|
|
563
|
+
fromBytes32Address,
|
|
564
|
+
getAllPoolInfo,
|
|
565
|
+
getAllPoolKeys,
|
|
566
|
+
getBlockExplorer,
|
|
567
|
+
getOtherTokensInPairs,
|
|
568
|
+
getPeripheryDetailsByKernelPoolAndChainId,
|
|
569
|
+
getPoolInfoByKey,
|
|
570
|
+
getSupportedChains,
|
|
571
|
+
getSupportedPairs,
|
|
572
|
+
getSupportedTokens,
|
|
573
|
+
hexToBase58,
|
|
574
|
+
isHexString,
|
|
575
|
+
isHexStringLoose,
|
|
576
|
+
kernelPoolToPoolKey,
|
|
577
|
+
normalizeMode,
|
|
578
|
+
skate_exports as skateAdapter,
|
|
579
|
+
toBase58,
|
|
580
|
+
toBytes32Address,
|
|
581
|
+
vmTypeFromChain
|
|
582
|
+
};
|
|
583
|
+
//# sourceMappingURL=index.js.map
|