@lifi/sdk-provider-sui 4.0.0-beta.8 → 4.0.0-beta.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"SuiProvider.js","names":[],"sources":["../../src/SuiProvider.ts"],"sourcesContent":["import {\n ChainType,\n LiFiErrorCode,\n ProviderError,\n type StepExecutorOptions,\n} from '@lifi/sdk'\nimport { isValidSuiAddress } from '@mysten/sui/utils'\nimport { getSuiBalance } from './actions/getSuiBalance.js'\nimport { resolveSuiAddress } from './actions/resolveSuiAddress.js'\nimport { SuiStepExecutor } from './core/SuiStepExecutor.js'\nimport type { SuiProviderOptions, SuiSDKProvider } from './types.js'\n\nexport function SuiProvider(options?: SuiProviderOptions): SuiSDKProvider {\n const _options: SuiProviderOptions = options ?? {}\n return {\n get type() {\n return ChainType.MVM\n },\n isAddress: isValidSuiAddress,\n resolveAddress: resolveSuiAddress,\n getBalance: getSuiBalance,\n async getStepExecutor(\n options: StepExecutorOptions\n ): Promise<SuiStepExecutor> {\n if (!_options.getClient) {\n throw new ProviderError(\n LiFiErrorCode.ProviderUnavailable,\n 'getClient is not provided.'\n )\n }\n if (!_options.getSigner) {\n throw new ProviderError(\n LiFiErrorCode.ProviderUnavailable,\n 'getSigner is not provided.'\n )\n }\n\n const client = await _options.getClient()\n const signer = await _options.getSigner()\n\n const executor = new SuiStepExecutor({\n client,\n signer,\n routeId: options.routeId,\n executionOptions: {\n ...options.executionOptions,\n },\n })\n\n return executor\n },\n setOptions(options: SuiProviderOptions) {\n Object.assign(_options, options)\n },\n }\n}\n"],"mappings":";;;;;;AAYA,SAAgB,YAAY,SAA8C;CACxE,MAAM,WAA+B,WAAW,EAAE;AAClD,QAAO;EACL,IAAI,OAAO;AACT,UAAO,UAAU;;EAEnB,WAAW;EACX,gBAAgB;EAChB,YAAY;EACZ,MAAM,gBACJ,SAC0B;AAC1B,OAAI,CAAC,SAAS,UACZ,OAAM,IAAI,cACR,cAAc,qBACd,6BACD;AAEH,OAAI,CAAC,SAAS,UACZ,OAAM,IAAI,cACR,cAAc,qBACd,6BACD;AAeH,UAAO,IATc,gBAAgB;IACnC,QAAA,MAJmB,SAAS,WAAW;IAKvC,QAAA,MAJmB,SAAS,WAAW;IAKvC,SAAS,QAAQ;IACjB,kBAAkB,EAChB,GAAG,QAAQ,kBACZ;IACF,CAEc;;EAEjB,WAAW,SAA6B;AACtC,UAAO,OAAO,UAAU,QAAQ;;EAEnC"}
1
+ {"version":3,"file":"SuiProvider.js","names":[],"sources":["../../src/SuiProvider.ts"],"sourcesContent":["import {\n ChainType,\n LiFiErrorCode,\n ProviderError,\n type StepExecutorOptions,\n} from '@lifi/sdk'\nimport { isValidSuiAddress } from '@mysten/sui/utils'\nimport { getSuiBalance } from './actions/getSuiBalance.js'\nimport { resolveSuiAddress } from './actions/resolveSuiAddress.js'\nimport { SuiStepExecutor } from './core/SuiStepExecutor.js'\nimport type { SuiProviderOptions, SuiSDKProvider } from './types.js'\n\nexport function SuiProvider(options?: SuiProviderOptions): SuiSDKProvider {\n const _options: SuiProviderOptions = options ?? {}\n return {\n get type() {\n return ChainType.MVM\n },\n isAddress: isValidSuiAddress,\n resolveAddress: resolveSuiAddress,\n getBalance: getSuiBalance,\n async getStepExecutor(\n options: StepExecutorOptions\n ): Promise<SuiStepExecutor> {\n if (!_options.getClient) {\n throw new ProviderError(\n LiFiErrorCode.ProviderUnavailable,\n 'getClient is not provided.'\n )\n }\n if (!_options.getSigner) {\n throw new ProviderError(\n LiFiErrorCode.ProviderUnavailable,\n 'getSigner is not provided.'\n )\n }\n\n const client = await _options.getClient()\n const signer = await _options.getSigner()\n\n const executor = new SuiStepExecutor({\n client,\n signer,\n routeId: options.routeId,\n executionOptions: {\n ...options.executionOptions,\n },\n })\n\n return executor\n },\n setOptions(options: SuiProviderOptions) {\n Object.assign(_options, options)\n },\n }\n}\n"],"mappings":";;;;;;AAYA,SAAgB,YAAY,SAA8C;CACxE,MAAM,WAA+B,WAAW,EAAE;CAClD,OAAO;EACL,IAAI,OAAO;GACT,OAAO,UAAU;;EAEnB,WAAW;EACX,gBAAgB;EAChB,YAAY;EACZ,MAAM,gBACJ,SAC0B;GAC1B,IAAI,CAAC,SAAS,WACZ,MAAM,IAAI,cACR,cAAc,qBACd,6BACD;GAEH,IAAI,CAAC,SAAS,WACZ,MAAM,IAAI,cACR,cAAc,qBACd,6BACD;GAeH,OAAO,IATc,gBAAgB;IACnC,QAAA,MAJmB,SAAS,WAAW;IAKvC,QAAA,MAJmB,SAAS,WAAW;IAKvC,SAAS,QAAQ;IACjB,kBAAkB,EAChB,GAAG,QAAQ,kBACZ;IACF,CAEc;;EAEjB,WAAW,SAA6B;GACtC,OAAO,OAAO,UAAU,QAAQ;;EAEnC"}
@@ -1 +1 @@
1
- {"version":3,"file":"getSuiBalance.js","names":[],"sources":["../../../src/actions/getSuiBalance.ts"],"sourcesContent":["import {\n type SDKClient,\n type Token,\n type TokenAmount,\n withDedupe,\n} from '@lifi/sdk'\nimport { callSuiWithRetry } from '../client/suiClient.js'\nimport { SuiTokenLongAddress, SuiTokenShortAddress } from '../types.js'\n\nexport async function getSuiBalance(\n client: SDKClient,\n walletAddress: string,\n tokens: Token[]\n): Promise<TokenAmount[]> {\n if (tokens.length === 0) {\n return []\n }\n\n const { chainId } = tokens[0]\n for (const token of tokens) {\n if (token.chainId !== chainId) {\n console.warn('Requested tokens have to be on the same chain.')\n }\n }\n\n return getSuiBalanceDefault(client, chainId, tokens, walletAddress)\n}\n\nconst getSuiBalanceDefault = async (\n client: SDKClient,\n _chainId: number,\n tokens: Token[],\n walletAddress: string\n): Promise<TokenAmount[]> => {\n const [coins, checkpoint] = await Promise.allSettled([\n withDedupe(\n () =>\n callSuiWithRetry(client, (client) =>\n client.getAllBalances({\n owner: walletAddress,\n })\n ),\n { id: `${getSuiBalanceDefault.name}.getAllBalances` }\n ),\n withDedupe(\n () =>\n callSuiWithRetry(client, (client) =>\n client.getLatestCheckpointSequenceNumber()\n ),\n { id: `${getSuiBalanceDefault.name}.getLatestCheckpointSequenceNumber` }\n ),\n ])\n\n const coinsOk = coins.status === 'fulfilled'\n const coinsResult = coinsOk ? coins.value : []\n const blockNumber =\n checkpoint.status === 'fulfilled' ? BigInt(checkpoint.value) : 0n\n\n const walletTokenAmounts = coinsResult.reduce(\n (tokenAmounts, coin) => {\n const amount = BigInt(coin.totalBalance)\n if (amount > 0n) {\n tokenAmounts[coin.coinType] = amount\n }\n return tokenAmounts\n },\n {} as Record<string, bigint>\n )\n\n const suiTokenBalance = coinsResult.find(\n (coin) => coin.coinType === SuiTokenShortAddress\n )\n if (suiTokenBalance?.totalBalance) {\n walletTokenAmounts[SuiTokenLongAddress] = BigInt(\n suiTokenBalance.totalBalance\n )\n }\n\n const tokenAmounts: TokenAmount[] = tokens.map((token) => {\n const found = walletTokenAmounts[token.address]\n if (found !== undefined) {\n return { ...token, amount: found, blockNumber }\n }\n if (coinsOk) {\n // Wallet genuinely has no coins of this type.\n return { ...token, amount: 0n, blockNumber }\n }\n // RPC failed — leave amount undefined.\n return { ...token, blockNumber }\n })\n return tokenAmounts\n}\n"],"mappings":";;;;AASA,eAAsB,cACpB,QACA,eACA,QACwB;AACxB,KAAI,OAAO,WAAW,EACpB,QAAO,EAAE;CAGX,MAAM,EAAE,YAAY,OAAO;AAC3B,MAAK,MAAM,SAAS,OAClB,KAAI,MAAM,YAAY,QACpB,SAAQ,KAAK,iDAAiD;AAIlE,QAAO,qBAAqB,QAAQ,SAAS,QAAQ,cAAc;;AAGrE,MAAM,uBAAuB,OAC3B,QACA,UACA,QACA,kBAC2B;CAC3B,MAAM,CAAC,OAAO,cAAc,MAAM,QAAQ,WAAW,CACnD,iBAEI,iBAAiB,SAAS,WACxB,OAAO,eAAe,EACpB,OAAO,eACR,CAAC,CACH,EACH,EAAE,IAAI,GAAG,qBAAqB,KAAK,kBAAkB,CACtD,EACD,iBAEI,iBAAiB,SAAS,WACxB,OAAO,mCAAmC,CAC3C,EACH,EAAE,IAAI,GAAG,qBAAqB,KAAK,qCAAqC,CACzE,CACF,CAAC;CAEF,MAAM,UAAU,MAAM,WAAW;CACjC,MAAM,cAAc,UAAU,MAAM,QAAQ,EAAE;CAC9C,MAAM,cACJ,WAAW,WAAW,cAAc,OAAO,WAAW,MAAM,GAAG;CAEjE,MAAM,qBAAqB,YAAY,QACpC,cAAc,SAAS;EACtB,MAAM,SAAS,OAAO,KAAK,aAAa;AACxC,MAAI,SAAS,GACX,cAAa,KAAK,YAAY;AAEhC,SAAO;IAET,EAAE,CACH;CAED,MAAM,kBAAkB,YAAY,MACjC,SAAS,KAAK,aAAa,qBAC7B;AACD,KAAI,iBAAiB,aACnB,oBAAmB,uBAAuB,OACxC,gBAAgB,aACjB;AAeH,QAZoC,OAAO,KAAK,UAAU;EACxD,MAAM,QAAQ,mBAAmB,MAAM;AACvC,MAAI,UAAU,KAAA,EACZ,QAAO;GAAE,GAAG;GAAO,QAAQ;GAAO;GAAa;AAEjD,MAAI,QAEF,QAAO;GAAE,GAAG;GAAO,QAAQ;GAAI;GAAa;AAG9C,SAAO;GAAE,GAAG;GAAO;GAAa;GAEf"}
1
+ {"version":3,"file":"getSuiBalance.js","names":[],"sources":["../../../src/actions/getSuiBalance.ts"],"sourcesContent":["import {\n type SDKClient,\n type Token,\n type TokenAmount,\n withDedupe,\n} from '@lifi/sdk'\nimport { callSuiWithRetry } from '../client/suiClient.js'\nimport { SuiTokenLongAddress, SuiTokenShortAddress } from '../types.js'\n\nexport async function getSuiBalance(\n client: SDKClient,\n walletAddress: string,\n tokens: Token[]\n): Promise<TokenAmount[]> {\n if (tokens.length === 0) {\n return []\n }\n\n const { chainId } = tokens[0]\n for (const token of tokens) {\n if (token.chainId !== chainId) {\n console.warn('Requested tokens have to be on the same chain.')\n }\n }\n\n return getSuiBalanceDefault(client, chainId, tokens, walletAddress)\n}\n\nconst getSuiBalanceDefault = async (\n client: SDKClient,\n _chainId: number,\n tokens: Token[],\n walletAddress: string\n): Promise<TokenAmount[]> => {\n const [coins, checkpoint] = await Promise.allSettled([\n withDedupe(\n () =>\n callSuiWithRetry(client, (client) =>\n client.getAllBalances({\n owner: walletAddress,\n })\n ),\n { id: `${getSuiBalanceDefault.name}.getAllBalances` }\n ),\n withDedupe(\n () =>\n callSuiWithRetry(client, (client) =>\n client.getLatestCheckpointSequenceNumber()\n ),\n { id: `${getSuiBalanceDefault.name}.getLatestCheckpointSequenceNumber` }\n ),\n ])\n\n const coinsOk = coins.status === 'fulfilled'\n const coinsResult = coinsOk ? coins.value : []\n const blockNumber =\n checkpoint.status === 'fulfilled' ? BigInt(checkpoint.value) : 0n\n\n const walletTokenAmounts = coinsResult.reduce(\n (tokenAmounts, coin) => {\n const amount = BigInt(coin.totalBalance)\n if (amount > 0n) {\n tokenAmounts[coin.coinType] = amount\n }\n return tokenAmounts\n },\n {} as Record<string, bigint>\n )\n\n const suiTokenBalance = coinsResult.find(\n (coin) => coin.coinType === SuiTokenShortAddress\n )\n if (suiTokenBalance?.totalBalance) {\n walletTokenAmounts[SuiTokenLongAddress] = BigInt(\n suiTokenBalance.totalBalance\n )\n }\n\n const tokenAmounts: TokenAmount[] = tokens.map((token) => {\n const found = walletTokenAmounts[token.address]\n if (found !== undefined) {\n return { ...token, amount: found, blockNumber }\n }\n if (coinsOk) {\n // Wallet genuinely has no coins of this type.\n return { ...token, amount: 0n, blockNumber }\n }\n // RPC failed — leave amount undefined.\n return { ...token, blockNumber }\n })\n return tokenAmounts\n}\n"],"mappings":";;;;AASA,eAAsB,cACpB,QACA,eACA,QACwB;CACxB,IAAI,OAAO,WAAW,GACpB,OAAO,EAAE;CAGX,MAAM,EAAE,YAAY,OAAO;CAC3B,KAAK,MAAM,SAAS,QAClB,IAAI,MAAM,YAAY,SACpB,QAAQ,KAAK,iDAAiD;CAIlE,OAAO,qBAAqB,QAAQ,SAAS,QAAQ,cAAc;;AAGrE,MAAM,uBAAuB,OAC3B,QACA,UACA,QACA,kBAC2B;CAC3B,MAAM,CAAC,OAAO,cAAc,MAAM,QAAQ,WAAW,CACnD,iBAEI,iBAAiB,SAAS,WACxB,OAAO,eAAe,EACpB,OAAO,eACR,CAAC,CACH,EACH,EAAE,IAAI,GAAG,qBAAqB,KAAK,kBAAkB,CACtD,EACD,iBAEI,iBAAiB,SAAS,WACxB,OAAO,mCAAmC,CAC3C,EACH,EAAE,IAAI,GAAG,qBAAqB,KAAK,qCAAqC,CACzE,CACF,CAAC;CAEF,MAAM,UAAU,MAAM,WAAW;CACjC,MAAM,cAAc,UAAU,MAAM,QAAQ,EAAE;CAC9C,MAAM,cACJ,WAAW,WAAW,cAAc,OAAO,WAAW,MAAM,GAAG;CAEjE,MAAM,qBAAqB,YAAY,QACpC,cAAc,SAAS;EACtB,MAAM,SAAS,OAAO,KAAK,aAAa;EACxC,IAAI,SAAS,IACX,aAAa,KAAK,YAAY;EAEhC,OAAO;IAET,EAAE,CACH;CAED,MAAM,kBAAkB,YAAY,MACjC,SAAS,KAAK,aAAa,qBAC7B;CACD,IAAI,iBAAiB,cACnB,mBAAmB,uBAAuB,OACxC,gBAAgB,aACjB;CAeH,OAZoC,OAAO,KAAK,UAAU;EACxD,MAAM,QAAQ,mBAAmB,MAAM;EACvC,IAAI,UAAU,KAAA,GACZ,OAAO;GAAE,GAAG;GAAO,QAAQ;GAAO;GAAa;EAEjD,IAAI,SAEF,OAAO;GAAE,GAAG;GAAO,QAAQ;GAAI;GAAa;EAG9C,OAAO;GAAE,GAAG;GAAO;GAAa;GAEf"}
@@ -1 +1 @@
1
- {"version":3,"file":"getSuiNSAddress.js","names":[],"sources":["../../../src/actions/getSuiNSAddress.ts"],"sourcesContent":["import type { SuiClientTypes } from '@mysten/sui/client'\nimport { SuiJsonRpcClient } from '@mysten/sui/jsonRpc'\n\nconst SNS_REGISTRY_ID =\n '0x6e0ddefc0ad3ed64f53f5f91b7023077b2f7c131d7e6d5e0d1a0e4e6f1a2c3b4'\n\nexport async function getSuiNSAddress(\n name: string,\n rpcUrl?: string,\n network?: SuiClientTypes.Network\n): Promise<string | undefined> {\n const client = new SuiJsonRpcClient({\n url: rpcUrl || 'https://fullnode.mainnet.sui.io:443',\n network: network || 'mainnet',\n })\n\n try {\n const result = await client.getObject({\n id: SNS_REGISTRY_ID,\n options: {\n showContent: true,\n },\n })\n\n if (!result.data?.content) {\n return\n }\n\n const registry = result.data.content as any\n const nameRecord = registry.fields.records.find(\n (record: any) => record.fields.name === name\n )\n\n if (!nameRecord) {\n return\n }\n\n return nameRecord.fields.address\n } catch (error) {\n console.error('Error resolving SuiNS address:', error)\n return\n }\n}\n"],"mappings":";;AAGA,MAAM,kBACJ;AAEF,eAAsB,gBACpB,MACA,QACA,SAC6B;CAC7B,MAAM,SAAS,IAAI,iBAAiB;EAClC,KAAK,UAAU;EACf,SAAS,WAAW;EACrB,CAAC;AAEF,KAAI;EACF,MAAM,SAAS,MAAM,OAAO,UAAU;GACpC,IAAI;GACJ,SAAS,EACP,aAAa,MACd;GACF,CAAC;AAEF,MAAI,CAAC,OAAO,MAAM,QAChB;EAIF,MAAM,aADW,OAAO,KAAK,QACD,OAAO,QAAQ,MACxC,WAAgB,OAAO,OAAO,SAAS,KACzC;AAED,MAAI,CAAC,WACH;AAGF,SAAO,WAAW,OAAO;UAClB,OAAO;AACd,UAAQ,MAAM,kCAAkC,MAAM;AACtD"}
1
+ {"version":3,"file":"getSuiNSAddress.js","names":[],"sources":["../../../src/actions/getSuiNSAddress.ts"],"sourcesContent":["import type { SuiClientTypes } from '@mysten/sui/client'\nimport { SuiJsonRpcClient } from '@mysten/sui/jsonRpc'\n\nconst SNS_REGISTRY_ID =\n '0x6e0ddefc0ad3ed64f53f5f91b7023077b2f7c131d7e6d5e0d1a0e4e6f1a2c3b4'\n\nexport async function getSuiNSAddress(\n name: string,\n rpcUrl?: string,\n network?: SuiClientTypes.Network\n): Promise<string | undefined> {\n const client = new SuiJsonRpcClient({\n url: rpcUrl || 'https://fullnode.mainnet.sui.io:443',\n network: network || 'mainnet',\n })\n\n try {\n const result = await client.getObject({\n id: SNS_REGISTRY_ID,\n options: {\n showContent: true,\n },\n })\n\n if (!result.data?.content) {\n return\n }\n\n const registry = result.data.content as any\n const nameRecord = registry.fields.records.find(\n (record: any) => record.fields.name === name\n )\n\n if (!nameRecord) {\n return\n }\n\n return nameRecord.fields.address\n } catch (error) {\n console.error('Error resolving SuiNS address:', error)\n return\n }\n}\n"],"mappings":";;AAGA,MAAM,kBACJ;AAEF,eAAsB,gBACpB,MACA,QACA,SAC6B;CAC7B,MAAM,SAAS,IAAI,iBAAiB;EAClC,KAAK,UAAU;EACf,SAAS,WAAW;EACrB,CAAC;CAEF,IAAI;EACF,MAAM,SAAS,MAAM,OAAO,UAAU;GACpC,IAAI;GACJ,SAAS,EACP,aAAa,MACd;GACF,CAAC;EAEF,IAAI,CAAC,OAAO,MAAM,SAChB;EAIF,MAAM,aADW,OAAO,KAAK,QACD,OAAO,QAAQ,MACxC,WAAgB,OAAO,OAAO,SAAS,KACzC;EAED,IAAI,CAAC,YACH;EAGF,OAAO,WAAW,OAAO;UAClB,OAAO;EACd,QAAQ,MAAM,kCAAkC,MAAM;EACtD"}
@@ -1 +1 @@
1
- {"version":3,"file":"resolveSuiAddress.js","names":[],"sources":["../../../src/actions/resolveSuiAddress.ts"],"sourcesContent":["import { getSuiNSAddress } from './getSuiNSAddress.js'\n\nexport async function resolveSuiAddress(\n name: string\n): Promise<string | undefined> {\n return await getSuiNSAddress(name)\n}\n"],"mappings":";;AAEA,eAAsB,kBACpB,MAC6B;AAC7B,QAAO,MAAM,gBAAgB,KAAK"}
1
+ {"version":3,"file":"resolveSuiAddress.js","names":[],"sources":["../../../src/actions/resolveSuiAddress.ts"],"sourcesContent":["import { getSuiNSAddress } from './getSuiNSAddress.js'\n\nexport async function resolveSuiAddress(\n name: string\n): Promise<string | undefined> {\n return await getSuiNSAddress(name)\n}\n"],"mappings":";;AAEA,eAAsB,kBACpB,MAC6B;CAC7B,OAAO,MAAM,gBAAgB,KAAK"}
@@ -1 +1 @@
1
- {"version":3,"file":"suiClient.js","names":[],"sources":["../../../src/client/suiClient.ts"],"sourcesContent":["import { ChainId, type SDKClient } from '@lifi/sdk'\nimport { SuiJsonRpcClient } from '@mysten/sui/jsonRpc'\n\nconst clients = new Map<string, SuiJsonRpcClient>()\n\n/**\n * Initializes the Sui clients if they haven't been initialized yet.\n * @returns - Promise that resolves when clients are initialized.\n */\nconst ensureClients = async (client: SDKClient): Promise<void> => {\n const rpcUrls = await client.getRpcUrlsByChainId(ChainId.SUI)\n for (const rpcUrl of rpcUrls) {\n if (!clients.get(rpcUrl)) {\n const client = new SuiJsonRpcClient({ url: rpcUrl, network: 'mainnet' })\n clients.set(rpcUrl, client)\n }\n }\n}\n\n/**\n * Calls a function on the SuiJsonRpcClient instances with retry logic.\n * @param client - The SDK client\n * @param fn - The function to call, which receives a SuiJsonRpcClient instance.\n * @returns - The result of the function call.\n */\nexport async function callSuiWithRetry<R>(\n client: SDKClient,\n fn: (client: SuiJsonRpcClient) => Promise<R>\n): Promise<R> {\n // Ensure clients are initialized\n await ensureClients(client)\n let lastError: any = null\n for (const client of clients.values()) {\n try {\n const result = await fn(client)\n return result\n } catch (error) {\n lastError = error\n }\n }\n // Throw the last encountered error\n throw lastError\n}\n"],"mappings":";;;AAGA,MAAM,0BAAU,IAAI,KAA+B;;;;;AAMnD,MAAM,gBAAgB,OAAO,WAAqC;CAChE,MAAM,UAAU,MAAM,OAAO,oBAAoB,QAAQ,IAAI;AAC7D,MAAK,MAAM,UAAU,QACnB,KAAI,CAAC,QAAQ,IAAI,OAAO,EAAE;EACxB,MAAM,SAAS,IAAI,iBAAiB;GAAE,KAAK;GAAQ,SAAS;GAAW,CAAC;AACxE,UAAQ,IAAI,QAAQ,OAAO;;;;;;;;;AAWjC,eAAsB,iBACpB,QACA,IACY;AAEZ,OAAM,cAAc,OAAO;CAC3B,IAAI,YAAiB;AACrB,MAAK,MAAM,UAAU,QAAQ,QAAQ,CACnC,KAAI;AAEF,SAAO,MADc,GAAG,OAAO;UAExB,OAAO;AACd,cAAY;;AAIhB,OAAM"}
1
+ {"version":3,"file":"suiClient.js","names":[],"sources":["../../../src/client/suiClient.ts"],"sourcesContent":["import { ChainId, type SDKClient } from '@lifi/sdk'\nimport { SuiJsonRpcClient } from '@mysten/sui/jsonRpc'\n\nconst clients = new Map<string, SuiJsonRpcClient>()\n\n/**\n * Initializes the Sui clients if they haven't been initialized yet.\n * @returns - Promise that resolves when clients are initialized.\n */\nconst ensureClients = async (client: SDKClient): Promise<void> => {\n const rpcUrls = await client.getRpcUrlsByChainId(ChainId.SUI)\n for (const rpcUrl of rpcUrls) {\n if (!clients.get(rpcUrl)) {\n const client = new SuiJsonRpcClient({ url: rpcUrl, network: 'mainnet' })\n clients.set(rpcUrl, client)\n }\n }\n}\n\n/**\n * Calls a function on the SuiJsonRpcClient instances with retry logic.\n * @param client - The SDK client\n * @param fn - The function to call, which receives a SuiJsonRpcClient instance.\n * @returns - The result of the function call.\n */\nexport async function callSuiWithRetry<R>(\n client: SDKClient,\n fn: (client: SuiJsonRpcClient) => Promise<R>\n): Promise<R> {\n // Ensure clients are initialized\n await ensureClients(client)\n let lastError: any = null\n for (const client of clients.values()) {\n try {\n const result = await fn(client)\n return result\n } catch (error) {\n lastError = error\n }\n }\n // Throw the last encountered error\n throw lastError\n}\n"],"mappings":";;;AAGA,MAAM,0BAAU,IAAI,KAA+B;;;;;AAMnD,MAAM,gBAAgB,OAAO,WAAqC;CAChE,MAAM,UAAU,MAAM,OAAO,oBAAoB,QAAQ,IAAI;CAC7D,KAAK,MAAM,UAAU,SACnB,IAAI,CAAC,QAAQ,IAAI,OAAO,EAAE;EACxB,MAAM,SAAS,IAAI,iBAAiB;GAAE,KAAK;GAAQ,SAAS;GAAW,CAAC;EACxE,QAAQ,IAAI,QAAQ,OAAO;;;;;;;;;AAWjC,eAAsB,iBACpB,QACA,IACY;CAEZ,MAAM,cAAc,OAAO;CAC3B,IAAI,YAAiB;CACrB,KAAK,MAAM,UAAU,QAAQ,QAAQ,EACnC,IAAI;EAEF,OAAO,MADc,GAAG,OAAO;UAExB,OAAO;EACd,YAAY;;CAIhB,MAAM"}
@@ -1 +1 @@
1
- {"version":3,"file":"SuiStepExecutor.js","names":[],"sources":["../../../src/core/SuiStepExecutor.ts"],"sourcesContent":["import {\n BaseStepExecutor,\n CheckBalanceTask,\n type ExecutionAction,\n LiFiErrorCode,\n type LiFiStepExtended,\n PrepareTransactionTask,\n type SDKError,\n type StepExecutorBaseContext,\n TaskPipeline,\n TransactionError,\n WaitForTransactionStatusTask,\n} from '@lifi/sdk'\nimport type { ClientWithCoreApi } from '@mysten/sui/client'\nimport type { Signer } from '@mysten/sui/cryptography'\nimport { parseSuiErrors } from '../errors/parseSuiErrors.js'\nimport type {\n SuiStepExecutorContext,\n SuiStepExecutorOptions,\n} from '../types.js'\nimport { SuiSignAndExecuteTask } from './tasks/SuiSignAndExecuteTask.js'\nimport { SuiWaitForTransactionTask } from './tasks/SuiWaitForTransactionTask.js'\n\nexport class SuiStepExecutor extends BaseStepExecutor {\n private client: ClientWithCoreApi\n private signer: Signer\n\n constructor(options: SuiStepExecutorOptions) {\n super(options)\n this.client = options.client\n this.signer = options.signer\n }\n\n checkWallet = (step: LiFiStepExtended): void => {\n // Prevent execution of the quote by wallet different from the one which requested the quote\n const address = this.signer.toSuiAddress()\n if (address !== step.action.fromAddress) {\n throw new TransactionError(\n LiFiErrorCode.WalletChangedDuringExecution,\n 'The wallet address that requested the quote does not match the wallet address attempting to sign the transaction.'\n )\n }\n }\n\n override parseErrors = (\n error: Error,\n step?: LiFiStepExtended,\n action?: ExecutionAction\n ): Promise<SDKError> => parseSuiErrors(error, step, action)\n\n override createContext = async (\n baseContext: StepExecutorBaseContext\n ): Promise<SuiStepExecutorContext> => {\n return {\n ...baseContext,\n suiClient: this.client,\n signer: this.signer,\n checkWallet: this.checkWallet,\n }\n }\n\n override createPipeline = (context: SuiStepExecutorContext): TaskPipeline => {\n const { step, isBridgeExecution } = context\n\n const tasks = [\n new CheckBalanceTask(),\n new PrepareTransactionTask(),\n new SuiSignAndExecuteTask(),\n new SuiWaitForTransactionTask(),\n new WaitForTransactionStatusTask(\n isBridgeExecution ? 'RECEIVING_CHAIN' : 'SWAP'\n ),\n ]\n\n const swapOrBridgeAction = this.statusManager.findAction(\n step,\n isBridgeExecution ? 'CROSS_CHAIN' : 'SWAP'\n )\n\n const taskName =\n swapOrBridgeAction?.txHash && swapOrBridgeAction?.status === 'DONE'\n ? WaitForTransactionStatusTask.name\n : CheckBalanceTask.name\n\n const firstTaskIndex = tasks.findIndex(\n (task) => task.constructor.name === taskName\n )\n\n const tasksToRun = tasks.slice(firstTaskIndex)\n\n return new TaskPipeline(tasksToRun)\n }\n}\n"],"mappings":";;;;;AAuBA,IAAa,kBAAb,cAAqC,iBAAiB;CACpD;CACA;CAEA,YAAY,SAAiC;AAC3C,QAAM,QAAQ;AACd,OAAK,SAAS,QAAQ;AACtB,OAAK,SAAS,QAAQ;;CAGxB,eAAe,SAAiC;AAG9C,MADgB,KAAK,OAAO,cACjB,KAAK,KAAK,OAAO,YAC1B,OAAM,IAAI,iBACR,cAAc,8BACd,oHACD;;CAIL,eACE,OACA,MACA,WACsB,eAAe,OAAO,MAAM,OAAO;CAE3D,gBAAyB,OACvB,gBACoC;AACpC,SAAO;GACL,GAAG;GACH,WAAW,KAAK;GAChB,QAAQ,KAAK;GACb,aAAa,KAAK;GACnB;;CAGH,kBAA2B,YAAkD;EAC3E,MAAM,EAAE,MAAM,sBAAsB;EAEpC,MAAM,QAAQ;GACZ,IAAI,kBAAkB;GACtB,IAAI,wBAAwB;GAC5B,IAAI,uBAAuB;GAC3B,IAAI,2BAA2B;GAC/B,IAAI,6BACF,oBAAoB,oBAAoB,OACzC;GACF;EAED,MAAM,qBAAqB,KAAK,cAAc,WAC5C,MACA,oBAAoB,gBAAgB,OACrC;EAED,MAAM,WACJ,oBAAoB,UAAU,oBAAoB,WAAW,SACzD,6BAA6B,OAC7B,iBAAiB;EAEvB,MAAM,iBAAiB,MAAM,WAC1B,SAAS,KAAK,YAAY,SAAS,SACrC;AAID,SAAO,IAAI,aAFQ,MAAM,MAAM,eAEG,CAAC"}
1
+ {"version":3,"file":"SuiStepExecutor.js","names":[],"sources":["../../../src/core/SuiStepExecutor.ts"],"sourcesContent":["import {\n BaseStepExecutor,\n CheckBalanceTask,\n type ExecutionAction,\n LiFiErrorCode,\n type LiFiStepExtended,\n PrepareTransactionTask,\n type SDKError,\n type StepExecutorBaseContext,\n TaskPipeline,\n TransactionError,\n WaitForTransactionStatusTask,\n} from '@lifi/sdk'\nimport type { ClientWithCoreApi } from '@mysten/sui/client'\nimport type { Signer } from '@mysten/sui/cryptography'\nimport { parseSuiErrors } from '../errors/parseSuiErrors.js'\nimport type {\n SuiStepExecutorContext,\n SuiStepExecutorOptions,\n} from '../types.js'\nimport { SuiSignAndExecuteTask } from './tasks/SuiSignAndExecuteTask.js'\nimport { SuiWaitForTransactionTask } from './tasks/SuiWaitForTransactionTask.js'\n\nexport class SuiStepExecutor extends BaseStepExecutor {\n private client: ClientWithCoreApi\n private signer: Signer\n\n constructor(options: SuiStepExecutorOptions) {\n super(options)\n this.client = options.client\n this.signer = options.signer\n }\n\n checkWallet = (step: LiFiStepExtended): void => {\n // Prevent execution of the quote by wallet different from the one which requested the quote\n const address = this.signer.toSuiAddress()\n if (address !== step.action.fromAddress) {\n throw new TransactionError(\n LiFiErrorCode.WalletChangedDuringExecution,\n 'The wallet address that requested the quote does not match the wallet address attempting to sign the transaction.'\n )\n }\n }\n\n override parseErrors = (\n error: Error,\n step?: LiFiStepExtended,\n action?: ExecutionAction\n ): Promise<SDKError> => parseSuiErrors(error, step, action)\n\n override createContext = async (\n baseContext: StepExecutorBaseContext\n ): Promise<SuiStepExecutorContext> => {\n return {\n ...baseContext,\n suiClient: this.client,\n signer: this.signer,\n checkWallet: this.checkWallet,\n }\n }\n\n override createPipeline = (context: SuiStepExecutorContext): TaskPipeline => {\n const { step, isBridgeExecution } = context\n\n const tasks = [\n new CheckBalanceTask(),\n new PrepareTransactionTask(),\n new SuiSignAndExecuteTask(),\n new SuiWaitForTransactionTask(),\n new WaitForTransactionStatusTask(\n isBridgeExecution ? 'RECEIVING_CHAIN' : 'SWAP'\n ),\n ]\n\n const swapOrBridgeAction = this.statusManager.findAction(\n step,\n isBridgeExecution ? 'CROSS_CHAIN' : 'SWAP'\n )\n\n const taskName =\n swapOrBridgeAction?.txHash && swapOrBridgeAction?.status === 'DONE'\n ? WaitForTransactionStatusTask.name\n : CheckBalanceTask.name\n\n const firstTaskIndex = tasks.findIndex(\n (task) => task.constructor.name === taskName\n )\n\n const tasksToRun = tasks.slice(firstTaskIndex)\n\n return new TaskPipeline(tasksToRun)\n }\n}\n"],"mappings":";;;;;AAuBA,IAAa,kBAAb,cAAqC,iBAAiB;CACpD;CACA;CAEA,YAAY,SAAiC;EAC3C,MAAM,QAAQ;EACd,KAAK,SAAS,QAAQ;EACtB,KAAK,SAAS,QAAQ;;CAGxB,eAAe,SAAiC;EAG9C,IADgB,KAAK,OAAO,cACjB,KAAK,KAAK,OAAO,aAC1B,MAAM,IAAI,iBACR,cAAc,8BACd,oHACD;;CAIL,eACE,OACA,MACA,WACsB,eAAe,OAAO,MAAM,OAAO;CAE3D,gBAAyB,OACvB,gBACoC;EACpC,OAAO;GACL,GAAG;GACH,WAAW,KAAK;GAChB,QAAQ,KAAK;GACb,aAAa,KAAK;GACnB;;CAGH,kBAA2B,YAAkD;EAC3E,MAAM,EAAE,MAAM,sBAAsB;EAEpC,MAAM,QAAQ;GACZ,IAAI,kBAAkB;GACtB,IAAI,wBAAwB;GAC5B,IAAI,uBAAuB;GAC3B,IAAI,2BAA2B;GAC/B,IAAI,6BACF,oBAAoB,oBAAoB,OACzC;GACF;EAED,MAAM,qBAAqB,KAAK,cAAc,WAC5C,MACA,oBAAoB,gBAAgB,OACrC;EAED,MAAM,WACJ,oBAAoB,UAAU,oBAAoB,WAAW,SACzD,6BAA6B,OAC7B,iBAAiB;EAEvB,MAAM,iBAAiB,MAAM,WAC1B,SAAS,KAAK,YAAY,SAAS,SACrC;EAID,OAAO,IAAI,aAFQ,MAAM,MAAM,eAEG,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"SuiSignAndExecuteTask.js","names":[],"sources":["../../../../src/core/tasks/SuiSignAndExecuteTask.ts"],"sourcesContent":["import {\n BaseStepExecutionTask,\n getTransactionRequestData,\n LiFiErrorCode,\n type TaskResult,\n TransactionError,\n} from '@lifi/sdk'\nimport { Transaction } from '@mysten/sui/transactions'\nimport type { SuiStepExecutorContext } from '../../types.js'\n\nexport class SuiSignAndExecuteTask extends BaseStepExecutionTask {\n async run(context: SuiStepExecutorContext): Promise<TaskResult> {\n const {\n step,\n suiClient,\n signer,\n statusManager,\n executionOptions,\n isBridgeExecution,\n checkWallet,\n } = context\n\n const action = statusManager.findAction(\n step,\n isBridgeExecution ? 'CROSS_CHAIN' : 'SWAP'\n )\n\n if (!action) {\n throw new TransactionError(\n LiFiErrorCode.TransactionUnprepared,\n 'Unable to prepare transaction. Action not found.'\n )\n }\n\n const transactionRequestData = await getTransactionRequestData(\n step,\n executionOptions\n )\n\n checkWallet(step)\n\n // We give users 2 minutes to sign the transaction\n const {\n $kind,\n FailedTransaction,\n Transaction: TransactionResult,\n } = await suiClient.core.signAndExecuteTransaction({\n signer,\n transaction: Transaction.from(transactionRequestData),\n })\n\n statusManager.updateAction(step, action.type, 'PENDING', {\n signedAt: Date.now(),\n })\n\n if ($kind !== 'Transaction' || !TransactionResult) {\n throw new TransactionError(\n LiFiErrorCode.TransactionFailed,\n `Transaction failed: ${FailedTransaction?.status.error ?? `Unexpected transaction result: ${$kind}`}`\n )\n }\n\n return {\n status: 'COMPLETED',\n context: { signedTransaction: TransactionResult },\n }\n }\n}\n"],"mappings":";;;AAUA,IAAa,wBAAb,cAA2C,sBAAsB;CAC/D,MAAM,IAAI,SAAsD;EAC9D,MAAM,EACJ,MACA,WACA,QACA,eACA,kBACA,mBACA,gBACE;EAEJ,MAAM,SAAS,cAAc,WAC3B,MACA,oBAAoB,gBAAgB,OACrC;AAED,MAAI,CAAC,OACH,OAAM,IAAI,iBACR,cAAc,uBACd,mDACD;EAGH,MAAM,yBAAyB,MAAM,0BACnC,MACA,iBACD;AAED,cAAY,KAAK;EAGjB,MAAM,EACJ,OACA,mBACA,aAAa,sBACX,MAAM,UAAU,KAAK,0BAA0B;GACjD;GACA,aAAa,YAAY,KAAK,uBAAuB;GACtD,CAAC;AAEF,gBAAc,aAAa,MAAM,OAAO,MAAM,WAAW,EACvD,UAAU,KAAK,KAAK,EACrB,CAAC;AAEF,MAAI,UAAU,iBAAiB,CAAC,kBAC9B,OAAM,IAAI,iBACR,cAAc,mBACd,uBAAuB,mBAAmB,OAAO,SAAS,kCAAkC,UAC7F;AAGH,SAAO;GACL,QAAQ;GACR,SAAS,EAAE,mBAAmB,mBAAmB;GAClD"}
1
+ {"version":3,"file":"SuiSignAndExecuteTask.js","names":[],"sources":["../../../../src/core/tasks/SuiSignAndExecuteTask.ts"],"sourcesContent":["import {\n BaseStepExecutionTask,\n getTransactionRequestData,\n LiFiErrorCode,\n type TaskResult,\n TransactionError,\n} from '@lifi/sdk'\nimport { Transaction } from '@mysten/sui/transactions'\nimport type { SuiStepExecutorContext } from '../../types.js'\n\nexport class SuiSignAndExecuteTask extends BaseStepExecutionTask {\n async run(context: SuiStepExecutorContext): Promise<TaskResult> {\n const {\n step,\n suiClient,\n signer,\n statusManager,\n executionOptions,\n isBridgeExecution,\n checkWallet,\n } = context\n\n const action = statusManager.findAction(\n step,\n isBridgeExecution ? 'CROSS_CHAIN' : 'SWAP'\n )\n\n if (!action) {\n throw new TransactionError(\n LiFiErrorCode.TransactionUnprepared,\n 'Unable to prepare transaction. Action not found.'\n )\n }\n\n const transactionRequestData = await getTransactionRequestData(\n step,\n executionOptions\n )\n\n checkWallet(step)\n\n // We give users 2 minutes to sign the transaction\n const {\n $kind,\n FailedTransaction,\n Transaction: TransactionResult,\n } = await suiClient.core.signAndExecuteTransaction({\n signer,\n transaction: Transaction.from(transactionRequestData),\n })\n\n statusManager.updateAction(step, action.type, 'PENDING', {\n signedAt: Date.now(),\n })\n\n if ($kind !== 'Transaction' || !TransactionResult) {\n throw new TransactionError(\n LiFiErrorCode.TransactionFailed,\n `Transaction failed: ${FailedTransaction?.status.error ?? `Unexpected transaction result: ${$kind}`}`\n )\n }\n\n return {\n status: 'COMPLETED',\n context: { signedTransaction: TransactionResult },\n }\n }\n}\n"],"mappings":";;;AAUA,IAAa,wBAAb,cAA2C,sBAAsB;CAC/D,MAAM,IAAI,SAAsD;EAC9D,MAAM,EACJ,MACA,WACA,QACA,eACA,kBACA,mBACA,gBACE;EAEJ,MAAM,SAAS,cAAc,WAC3B,MACA,oBAAoB,gBAAgB,OACrC;EAED,IAAI,CAAC,QACH,MAAM,IAAI,iBACR,cAAc,uBACd,mDACD;EAGH,MAAM,yBAAyB,MAAM,0BACnC,MACA,iBACD;EAED,YAAY,KAAK;EAGjB,MAAM,EACJ,OACA,mBACA,aAAa,sBACX,MAAM,UAAU,KAAK,0BAA0B;GACjD;GACA,aAAa,YAAY,KAAK,uBAAuB;GACtD,CAAC;EAEF,cAAc,aAAa,MAAM,OAAO,MAAM,WAAW,EACvD,UAAU,KAAK,KAAK,EACrB,CAAC;EAEF,IAAI,UAAU,iBAAiB,CAAC,mBAC9B,MAAM,IAAI,iBACR,cAAc,mBACd,uBAAuB,mBAAmB,OAAO,SAAS,kCAAkC,UAC7F;EAGH,OAAO;GACL,QAAQ;GACR,SAAS,EAAE,mBAAmB,mBAAmB;GAClD"}
@@ -1 +1 @@
1
- {"version":3,"file":"SuiWaitForTransactionTask.js","names":[],"sources":["../../../../src/core/tasks/SuiWaitForTransactionTask.ts"],"sourcesContent":["import {\n BaseStepExecutionTask,\n LiFiErrorCode,\n type TaskResult,\n TransactionError,\n} from '@lifi/sdk'\nimport { callSuiWithRetry } from '../../client/suiClient.js'\nimport type { SuiStepExecutorContext } from '../../types.js'\n\nexport class SuiWaitForTransactionTask extends BaseStepExecutionTask {\n async run(context: SuiStepExecutorContext): Promise<TaskResult> {\n const {\n client,\n step,\n statusManager,\n fromChain,\n isBridgeExecution,\n signedTransaction,\n } = context\n\n if (!signedTransaction) {\n throw new TransactionError(\n LiFiErrorCode.TransactionUnprepared,\n 'Unable to prepare transaction. Signed transaction is not found.'\n )\n }\n\n const action = statusManager.findAction(\n step,\n isBridgeExecution ? 'CROSS_CHAIN' : 'SWAP'\n )\n if (!action) {\n throw new TransactionError(\n LiFiErrorCode.TransactionUnprepared,\n 'Unable to prepare transaction. Action not found.'\n )\n }\n\n const result = await callSuiWithRetry(client, (client) =>\n client.waitForTransaction({\n digest: signedTransaction.digest,\n options: {\n showEffects: true,\n },\n })\n )\n\n if (result.effects?.status.status !== 'success') {\n throw new TransactionError(\n LiFiErrorCode.TransactionFailed,\n `Transaction failed: ${result.effects?.status.error}`\n )\n }\n\n // Transaction has been confirmed and we can update the action\n statusManager.updateAction(step, action.type, 'PENDING', {\n txHash: result.digest,\n txLink: `${fromChain.metamask.blockExplorerUrls[0]}txblock/${result.digest}`,\n })\n\n if (isBridgeExecution) {\n statusManager.updateAction(step, action.type, 'DONE')\n }\n\n return { status: 'COMPLETED' }\n }\n}\n"],"mappings":";;;AASA,IAAa,4BAAb,cAA+C,sBAAsB;CACnE,MAAM,IAAI,SAAsD;EAC9D,MAAM,EACJ,QACA,MACA,eACA,WACA,mBACA,sBACE;AAEJ,MAAI,CAAC,kBACH,OAAM,IAAI,iBACR,cAAc,uBACd,kEACD;EAGH,MAAM,SAAS,cAAc,WAC3B,MACA,oBAAoB,gBAAgB,OACrC;AACD,MAAI,CAAC,OACH,OAAM,IAAI,iBACR,cAAc,uBACd,mDACD;EAGH,MAAM,SAAS,MAAM,iBAAiB,SAAS,WAC7C,OAAO,mBAAmB;GACxB,QAAQ,kBAAkB;GAC1B,SAAS,EACP,aAAa,MACd;GACF,CAAC,CACH;AAED,MAAI,OAAO,SAAS,OAAO,WAAW,UACpC,OAAM,IAAI,iBACR,cAAc,mBACd,uBAAuB,OAAO,SAAS,OAAO,QAC/C;AAIH,gBAAc,aAAa,MAAM,OAAO,MAAM,WAAW;GACvD,QAAQ,OAAO;GACf,QAAQ,GAAG,UAAU,SAAS,kBAAkB,GAAG,UAAU,OAAO;GACrE,CAAC;AAEF,MAAI,kBACF,eAAc,aAAa,MAAM,OAAO,MAAM,OAAO;AAGvD,SAAO,EAAE,QAAQ,aAAa"}
1
+ {"version":3,"file":"SuiWaitForTransactionTask.js","names":[],"sources":["../../../../src/core/tasks/SuiWaitForTransactionTask.ts"],"sourcesContent":["import {\n BaseStepExecutionTask,\n LiFiErrorCode,\n type TaskResult,\n TransactionError,\n} from '@lifi/sdk'\nimport { callSuiWithRetry } from '../../client/suiClient.js'\nimport type { SuiStepExecutorContext } from '../../types.js'\n\nexport class SuiWaitForTransactionTask extends BaseStepExecutionTask {\n async run(context: SuiStepExecutorContext): Promise<TaskResult> {\n const {\n client,\n step,\n statusManager,\n fromChain,\n isBridgeExecution,\n signedTransaction,\n } = context\n\n if (!signedTransaction) {\n throw new TransactionError(\n LiFiErrorCode.TransactionUnprepared,\n 'Unable to prepare transaction. Signed transaction is not found.'\n )\n }\n\n const action = statusManager.findAction(\n step,\n isBridgeExecution ? 'CROSS_CHAIN' : 'SWAP'\n )\n if (!action) {\n throw new TransactionError(\n LiFiErrorCode.TransactionUnprepared,\n 'Unable to prepare transaction. Action not found.'\n )\n }\n\n const result = await callSuiWithRetry(client, (client) =>\n client.waitForTransaction({\n digest: signedTransaction.digest,\n options: {\n showEffects: true,\n },\n })\n )\n\n if (result.effects?.status.status !== 'success') {\n throw new TransactionError(\n LiFiErrorCode.TransactionFailed,\n `Transaction failed: ${result.effects?.status.error}`\n )\n }\n\n // Transaction has been confirmed and we can update the action\n statusManager.updateAction(step, action.type, 'PENDING', {\n txHash: result.digest,\n txLink: `${fromChain.metamask.blockExplorerUrls[0]}txblock/${result.digest}`,\n })\n\n if (isBridgeExecution) {\n statusManager.updateAction(step, action.type, 'DONE')\n }\n\n return { status: 'COMPLETED' }\n }\n}\n"],"mappings":";;;AASA,IAAa,4BAAb,cAA+C,sBAAsB;CACnE,MAAM,IAAI,SAAsD;EAC9D,MAAM,EACJ,QACA,MACA,eACA,WACA,mBACA,sBACE;EAEJ,IAAI,CAAC,mBACH,MAAM,IAAI,iBACR,cAAc,uBACd,kEACD;EAGH,MAAM,SAAS,cAAc,WAC3B,MACA,oBAAoB,gBAAgB,OACrC;EACD,IAAI,CAAC,QACH,MAAM,IAAI,iBACR,cAAc,uBACd,mDACD;EAGH,MAAM,SAAS,MAAM,iBAAiB,SAAS,WAC7C,OAAO,mBAAmB;GACxB,QAAQ,kBAAkB;GAC1B,SAAS,EACP,aAAa,MACd;GACF,CAAC,CACH;EAED,IAAI,OAAO,SAAS,OAAO,WAAW,WACpC,MAAM,IAAI,iBACR,cAAc,mBACd,uBAAuB,OAAO,SAAS,OAAO,QAC/C;EAIH,cAAc,aAAa,MAAM,OAAO,MAAM,WAAW;GACvD,QAAQ,OAAO;GACf,QAAQ,GAAG,UAAU,SAAS,kBAAkB,GAAG,UAAU,OAAO;GACrE,CAAC;EAEF,IAAI,mBACF,cAAc,aAAa,MAAM,OAAO,MAAM,OAAO;EAGvD,OAAO,EAAE,QAAQ,aAAa"}
@@ -1 +1 @@
1
- {"version":3,"file":"parseSuiErrors.js","names":[],"sources":["../../../src/errors/parseSuiErrors.ts"],"sourcesContent":["import {\n BaseError,\n ErrorMessage,\n type ExecutionAction,\n LiFiErrorCode,\n type LiFiStep,\n SDKError,\n TransactionError,\n UnknownError,\n} from '@lifi/sdk'\n\nexport const parseSuiErrors = async (\n e: Error,\n step?: LiFiStep,\n action?: ExecutionAction\n): Promise<SDKError> => {\n if (e instanceof SDKError) {\n e.step = e.step ?? step\n e.action = e.action ?? action\n return e\n }\n\n const baseError = handleSpecificErrors(e)\n\n return new SDKError(baseError, step, action)\n}\n\nconst handleSpecificErrors = (e: any) => {\n const isRejection =\n typeof e === 'string'\n ? e.toLowerCase().includes('reject')\n : e.message?.toLowerCase().includes('reject')\n\n if (isRejection) {\n return new TransactionError(LiFiErrorCode.SignatureRejected, e.message, e)\n }\n\n if (\n e.message?.toLowerCase().includes('transaction') &&\n (e.message?.toLowerCase().includes('failed') ||\n e.message?.toLowerCase().includes('error'))\n ) {\n return new TransactionError(LiFiErrorCode.TransactionFailed, e.message, e)\n }\n\n if (e.message?.includes('simulate') || e.message?.includes('simulation')) {\n return new TransactionError(\n LiFiErrorCode.TransactionSimulationFailed,\n e.message,\n e\n )\n }\n\n if (e instanceof BaseError) {\n return e\n }\n\n return new UnknownError(e.message || ErrorMessage.UnknownError, e)\n}\n"],"mappings":";;AAWA,MAAa,iBAAiB,OAC5B,GACA,MACA,WACsB;AACtB,KAAI,aAAa,UAAU;AACzB,IAAE,OAAO,EAAE,QAAQ;AACnB,IAAE,SAAS,EAAE,UAAU;AACvB,SAAO;;AAKT,QAAO,IAAI,SAFO,qBAAqB,EAEV,EAAE,MAAM,OAAO;;AAG9C,MAAM,wBAAwB,MAAW;AAMvC,KAJE,OAAO,MAAM,WACT,EAAE,aAAa,CAAC,SAAS,SAAS,GAClC,EAAE,SAAS,aAAa,CAAC,SAAS,SAAS,CAG/C,QAAO,IAAI,iBAAiB,cAAc,mBAAmB,EAAE,SAAS,EAAE;AAG5E,KACE,EAAE,SAAS,aAAa,CAAC,SAAS,cAAc,KAC/C,EAAE,SAAS,aAAa,CAAC,SAAS,SAAS,IAC1C,EAAE,SAAS,aAAa,CAAC,SAAS,QAAQ,EAE5C,QAAO,IAAI,iBAAiB,cAAc,mBAAmB,EAAE,SAAS,EAAE;AAG5E,KAAI,EAAE,SAAS,SAAS,WAAW,IAAI,EAAE,SAAS,SAAS,aAAa,CACtE,QAAO,IAAI,iBACT,cAAc,6BACd,EAAE,SACF,EACD;AAGH,KAAI,aAAa,UACf,QAAO;AAGT,QAAO,IAAI,aAAa,EAAE,WAAW,aAAa,cAAc,EAAE"}
1
+ {"version":3,"file":"parseSuiErrors.js","names":[],"sources":["../../../src/errors/parseSuiErrors.ts"],"sourcesContent":["import {\n BaseError,\n ErrorMessage,\n type ExecutionAction,\n LiFiErrorCode,\n type LiFiStep,\n SDKError,\n TransactionError,\n UnknownError,\n} from '@lifi/sdk'\n\nexport const parseSuiErrors = async (\n e: Error,\n step?: LiFiStep,\n action?: ExecutionAction\n): Promise<SDKError> => {\n if (e instanceof SDKError) {\n e.step = e.step ?? step\n e.action = e.action ?? action\n return e\n }\n\n const baseError = handleSpecificErrors(e)\n\n return new SDKError(baseError, step, action)\n}\n\nconst handleSpecificErrors = (e: any) => {\n const isRejection =\n typeof e === 'string'\n ? e.toLowerCase().includes('reject')\n : e.message?.toLowerCase().includes('reject')\n\n if (isRejection) {\n return new TransactionError(LiFiErrorCode.SignatureRejected, e.message, e)\n }\n\n if (\n e.message?.toLowerCase().includes('transaction') &&\n (e.message?.toLowerCase().includes('failed') ||\n e.message?.toLowerCase().includes('error'))\n ) {\n return new TransactionError(LiFiErrorCode.TransactionFailed, e.message, e)\n }\n\n if (e.message?.includes('simulate') || e.message?.includes('simulation')) {\n return new TransactionError(\n LiFiErrorCode.TransactionSimulationFailed,\n e.message,\n e\n )\n }\n\n if (e instanceof BaseError) {\n return e\n }\n\n return new UnknownError(e.message || ErrorMessage.UnknownError, e)\n}\n"],"mappings":";;AAWA,MAAa,iBAAiB,OAC5B,GACA,MACA,WACsB;CACtB,IAAI,aAAa,UAAU;EACzB,EAAE,OAAO,EAAE,QAAQ;EACnB,EAAE,SAAS,EAAE,UAAU;EACvB,OAAO;;CAKT,OAAO,IAAI,SAFO,qBAAqB,EAEV,EAAE,MAAM,OAAO;;AAG9C,MAAM,wBAAwB,MAAW;CAMvC,IAJE,OAAO,MAAM,WACT,EAAE,aAAa,CAAC,SAAS,SAAS,GAClC,EAAE,SAAS,aAAa,CAAC,SAAS,SAAS,EAG/C,OAAO,IAAI,iBAAiB,cAAc,mBAAmB,EAAE,SAAS,EAAE;CAG5E,IACE,EAAE,SAAS,aAAa,CAAC,SAAS,cAAc,KAC/C,EAAE,SAAS,aAAa,CAAC,SAAS,SAAS,IAC1C,EAAE,SAAS,aAAa,CAAC,SAAS,QAAQ,GAE5C,OAAO,IAAI,iBAAiB,cAAc,mBAAmB,EAAE,SAAS,EAAE;CAG5E,IAAI,EAAE,SAAS,SAAS,WAAW,IAAI,EAAE,SAAS,SAAS,aAAa,EACtE,OAAO,IAAI,iBACT,cAAc,6BACd,EAAE,SACF,EACD;CAGH,IAAI,aAAa,WACf,OAAO;CAGT,OAAO,IAAI,aAAa,EAAE,WAAW,aAAa,cAAc,EAAE"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","names":[],"sources":["../../src/types.ts"],"sourcesContent":["import {\n ChainType,\n type LiFiStepExtended,\n type SDKProvider,\n type StepExecutorContext,\n type StepExecutorOptions,\n} from '@lifi/sdk'\nimport type { ClientWithCoreApi, SuiClientTypes } from '@mysten/sui/client'\nimport type { Signer } from '@mysten/sui/cryptography'\n\nexport interface SuiProviderOptions {\n getClient?: () => Promise<ClientWithCoreApi>\n getSigner?: () => Promise<Signer>\n}\n\nexport interface SuiTaskContext {\n signedTransaction?: SuiClientTypes.Transaction\n}\n\nexport interface SuiStepExecutorContext\n extends StepExecutorContext,\n SuiTaskContext {\n suiClient: ClientWithCoreApi\n signer: Signer\n checkWallet: (step: LiFiStepExtended) => void\n}\n\nexport interface SuiSDKProvider extends SDKProvider {\n setOptions(options: SuiProviderOptions): void\n}\n\nexport function isSuiProvider(\n provider: SDKProvider\n): provider is SuiSDKProvider {\n return provider.type === ChainType.MVM\n}\n\nexport interface SuiStepExecutorOptions extends StepExecutorOptions {\n client: ClientWithCoreApi\n signer: Signer\n}\n\nexport const SuiTokenShortAddress = '0x2::sui::SUI'\nexport const SuiTokenLongAddress =\n '0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI'\n"],"mappings":";;AA+BA,SAAgB,cACd,UAC4B;AAC5B,QAAO,SAAS,SAAS,UAAU;;AAQrC,MAAa,uBAAuB;AACpC,MAAa,sBACX"}
1
+ {"version":3,"file":"types.js","names":[],"sources":["../../src/types.ts"],"sourcesContent":["import {\n ChainType,\n type LiFiStepExtended,\n type SDKProvider,\n type StepExecutorContext,\n type StepExecutorOptions,\n} from '@lifi/sdk'\nimport type { ClientWithCoreApi, SuiClientTypes } from '@mysten/sui/client'\nimport type { Signer } from '@mysten/sui/cryptography'\n\nexport interface SuiProviderOptions {\n getClient?: () => Promise<ClientWithCoreApi>\n getSigner?: () => Promise<Signer>\n}\n\nexport interface SuiTaskContext {\n signedTransaction?: SuiClientTypes.Transaction\n}\n\nexport interface SuiStepExecutorContext\n extends StepExecutorContext,\n SuiTaskContext {\n suiClient: ClientWithCoreApi\n signer: Signer\n checkWallet: (step: LiFiStepExtended) => void\n}\n\nexport interface SuiSDKProvider extends SDKProvider {\n setOptions(options: SuiProviderOptions): void\n}\n\nexport function isSuiProvider(\n provider: SDKProvider\n): provider is SuiSDKProvider {\n return provider.type === ChainType.MVM\n}\n\nexport interface SuiStepExecutorOptions extends StepExecutorOptions {\n client: ClientWithCoreApi\n signer: Signer\n}\n\nexport const SuiTokenShortAddress = '0x2::sui::SUI'\nexport const SuiTokenLongAddress =\n '0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI'\n"],"mappings":";;AA+BA,SAAgB,cACd,UAC4B;CAC5B,OAAO,SAAS,SAAS,UAAU;;AAQrC,MAAa,uBAAuB;AACpC,MAAa,sBACX"}
@@ -1,6 +1,6 @@
1
1
  //#region src/version.d.ts
2
2
  declare const name = "@lifi/sdk-provider-sui";
3
- declare const version = "4.0.0-beta.8";
3
+ declare const version = "4.0.0-beta.9";
4
4
  //#endregion
5
5
  export { name, version };
6
6
  //# sourceMappingURL=version.d.ts.map
@@ -1,6 +1,6 @@
1
1
  //#region src/version.ts
2
2
  const name = "@lifi/sdk-provider-sui";
3
- const version = "4.0.0-beta.8";
3
+ const version = "4.0.0-beta.9";
4
4
  //#endregion
5
5
  export { name, version };
6
6
 
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","names":[],"sources":["../../src/version.ts"],"sourcesContent":["export const name = '@lifi/sdk-provider-sui'\nexport const version = '4.0.0-beta.8'\n"],"mappings":";AAAA,MAAa,OAAO;AACpB,MAAa,UAAU"}
1
+ {"version":3,"file":"version.js","names":[],"sources":["../../src/version.ts"],"sourcesContent":["export const name = '@lifi/sdk-provider-sui'\nexport const version = '4.0.0-beta.9'\n"],"mappings":";AAAA,MAAa,OAAO;AACpB,MAAa,UAAU"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lifi/sdk-provider-sui",
3
- "version": "4.0.0-beta.8",
3
+ "version": "4.0.0-beta.9",
4
4
  "description": "LI.FI Sui SDK Provider for Any-to-Any Cross-Chain-Swap",
5
5
  "homepage": "https://github.com/lifinance/sdk",
6
6
  "bugs": {
@@ -28,8 +28,8 @@
28
28
  "./package.json": "./package.json"
29
29
  },
30
30
  "dependencies": {
31
- "@mysten/sui": "^2.16.0",
32
- "@lifi/sdk": "4.0.0-beta.8"
31
+ "@mysten/sui": "^2.16.2",
32
+ "@lifi/sdk": "4.0.0-beta.9"
33
33
  },
34
34
  "publishConfig": {
35
35
  "access": "public"
package/src/version.ts CHANGED
@@ -1,2 +1,2 @@
1
1
  export const name = '@lifi/sdk-provider-sui'
2
- export const version = '4.0.0-beta.8'
2
+ export const version = '4.0.0-beta.9'