@avalabs/fusion-sdk 0.28.0 → 0.28.2

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,2 +1,2 @@
1
- const e=require(`../../../errors.cjs`),t=require(`../../_utils.cjs`),n=require(`../_utils.cjs`);function r(t,r){switch(r){case`C`:return e=>n.getAvalancheProvider(t,r).getAtomicTxStatus(e);case`P`:return e=>n.getAvalancheProvider(t,r).getTxStatus({txID:e});case`X`:return e=>n.getAvalancheProvider(t,r).getTxStatus({txID:e});default:throw new e.InvalidParamsError(`Unsupported chain alias: ${r}`,`Can not get transaction status function for unsupported chain alias.`)}}async function i({chainAlias:n,count:a=13,environment:o,signal:s,txId:c}){if(a<0)return!1;try{let{status:e}=await r(o,n)(c);switch(e){case`Accepted`:case`Committed`:return!0;case`Dropped`:case`Rejected`:return!1;default:break}return await t.wait(1500*1.2**(13-a),s),await i({chainAlias:n,count:a-1,environment:o,signal:s,txId:c})}catch(t){throw new e.SdkError(`Failed to poll transaction status from Avalanche.`,e.ErrorCode.UNKNOWN,{cause:t})}}exports.pollPrimaryNetworkTxStatus=i;
1
+ const e=require(`../../../errors.cjs`),t=require(`../../_utils.cjs`),n=require(`../_utils.cjs`);function r(t,r){switch(r){case`C`:return async e=>{try{let{blockHeight:i}=await n.getAvalancheProvider(t,r).getAtomicTx({txID:e});return{status:i===void 0?`Unknown`:`Accepted`}}catch(e){if(e instanceof Error&&e.message.includes(`tx: not found`))return{status:`Unknown`};throw e}};case`P`:return e=>n.getAvalancheProvider(t,r).getTxStatus({txID:e});case`X`:return e=>n.getAvalancheProvider(t,r).getTxStatus({txID:e});default:throw new e.InvalidParamsError(`Unsupported chain alias: ${r}`,`Can not get transaction status function for unsupported chain alias.`)}}async function i({chainAlias:n,count:a=13,environment:o,signal:s,txId:c}){if(a<0)return!1;try{let{status:e}=await r(o,n)(c);switch(e){case`Accepted`:case`Committed`:return!0;case`Dropped`:case`Rejected`:return!1;default:break}return await t.wait(1500*1.2**(13-a),s),await i({chainAlias:n,count:a-1,environment:o,signal:s,txId:c})}catch(t){throw new e.SdkError(`Failed to poll transaction status from Avalanche.`,e.ErrorCode.UNKNOWN,{cause:t})}}exports.pollPrimaryNetworkTxStatus=i;
2
2
  //# sourceMappingURL=polling.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"polling.cjs","names":["getAvalancheProvider","InvalidParamsError","wait","SdkError","ErrorCode"],"sources":["../../../../src/transfer-service/avalanche-cct/_utils/polling.ts"],"sourcesContent":["import type { evm, pvm } from '@avalabs/avalanchejs';\nimport type { AvalancheBlockchainAlias, Environment } from '../../../constants';\nimport { ErrorCode, InvalidParamsError, SdkError } from '../../../errors';\nimport { wait } from '../../_utils';\nimport { getAvalancheProvider } from '../_utils';\n\nconst POLL_START_COUNT = 13;\nconst BASE_WAIT_PERIOD_MS = 1500;\nconst MULTIPLIER = 1.2;\n\nexport type GetTxStatusFunction<T extends evm.GetAtomicTxStatusResponse | pvm.GetTxStatusResponse> = (\n txId: string,\n) => Promise<T>;\n\nexport function getChainAliasTxStatusFunction(\n environment: Environment,\n chainAlias: 'C',\n): GetTxStatusFunction<evm.GetAtomicTxStatusResponse>;\nexport function getChainAliasTxStatusFunction(\n environment: Environment,\n chainAlias: 'P',\n): GetTxStatusFunction<pvm.GetTxStatusResponse>;\nexport function getChainAliasTxStatusFunction(\n environment: Environment,\n chainAlias: 'X',\n): GetTxStatusFunction<pvm.GetTxStatusResponse>;\nexport function getChainAliasTxStatusFunction(\n environment: Environment,\n chainAlias: AvalancheBlockchainAlias,\n): GetTxStatusFunction<evm.GetAtomicTxStatusResponse | pvm.GetTxStatusResponse>;\nexport function getChainAliasTxStatusFunction(\n environment: Environment,\n chainAlias: AvalancheBlockchainAlias,\n): GetTxStatusFunction<evm.GetAtomicTxStatusResponse | pvm.GetTxStatusResponse> {\n switch (chainAlias) {\n case 'C': {\n return (txId: string) => getAvalancheProvider(environment, chainAlias).getAtomicTxStatus(txId);\n }\n case 'P': {\n return (txId: string) => getAvalancheProvider(environment, chainAlias).getTxStatus({ txID: txId });\n }\n case 'X': {\n return (txId: string) => getAvalancheProvider(environment, chainAlias).getTxStatus({ txID: txId });\n }\n default: {\n throw new InvalidParamsError(\n `Unsupported chain alias: ${chainAlias}`,\n 'Can not get transaction status function for unsupported chain alias.',\n );\n }\n }\n}\n\nexport async function pollPrimaryNetworkTxStatus({\n chainAlias,\n count = POLL_START_COUNT,\n environment,\n signal,\n txId,\n}: {\n chainAlias: AvalancheBlockchainAlias;\n count?: number;\n environment: Environment;\n signal?: AbortSignal;\n txId: string;\n}): Promise<boolean> {\n if (count < 0) {\n return false;\n }\n\n try {\n const pollFunction = getChainAliasTxStatusFunction(environment, chainAlias);\n\n const { status } = await pollFunction(txId);\n\n switch (status) {\n case 'Accepted':\n case 'Committed': {\n return true;\n }\n\n case 'Dropped':\n case 'Rejected': {\n return false;\n }\n\n default: {\n // Fall through to retry logic.\n break;\n }\n }\n\n const failures = POLL_START_COUNT - count;\n\n const waitPeriod = BASE_WAIT_PERIOD_MS * MULTIPLIER ** failures;\n\n await wait(waitPeriod, signal);\n\n return await pollPrimaryNetworkTxStatus({ chainAlias, count: count - 1, environment, signal, txId });\n } catch (error) {\n throw new SdkError('Failed to poll transaction status from Avalanche.', ErrorCode.UNKNOWN, { cause: error });\n }\n}\n"],"mappings":"gGA8BA,SAAgB,EACd,EACA,EAC8E,CAC9E,OAAQ,EAAR,CACE,IAAK,IACH,MAAQ,IAAiBA,EAAAA,qBAAqB,EAAa,EAAW,CAAC,kBAAkB,EAAK,CAEhG,IAAK,IACH,MAAQ,IAAiBA,EAAAA,qBAAqB,EAAa,EAAW,CAAC,YAAY,CAAE,KAAM,EAAM,CAAC,CAEpG,IAAK,IACH,MAAQ,IAAiBA,EAAAA,qBAAqB,EAAa,EAAW,CAAC,YAAY,CAAE,KAAM,EAAM,CAAC,CAEpG,QACE,MAAM,IAAIC,EAAAA,mBACR,4BAA4B,IAC5B,uEACD,EAKP,eAAsB,EAA2B,CAC/C,aACA,QAAQ,GACR,cACA,SACA,QAOmB,CACnB,GAAI,EAAQ,EACV,MAAO,GAGT,GAAI,CAGF,GAAM,CAAE,UAAW,MAFE,EAA8B,EAAa,EAAW,CAErC,EAAK,CAE3C,OAAQ,EAAR,CACE,IAAK,WACL,IAAK,YACH,MAAO,GAGT,IAAK,UACL,IAAK,WACH,MAAO,GAGT,QAEE,MAUJ,OAFA,MAAMC,EAAAA,KAFa,KAAsB,MAFxB,GAAmB,GAIb,EAAO,CAEvB,MAAM,EAA2B,CAAE,aAAY,MAAO,EAAQ,EAAG,cAAa,SAAQ,OAAM,CAAC,OAC7F,EAAO,CACd,MAAM,IAAIC,EAAAA,SAAS,oDAAqDC,EAAAA,UAAU,QAAS,CAAE,MAAO,EAAO,CAAC"}
1
+ {"version":3,"file":"polling.cjs","names":["getAvalancheProvider","InvalidParamsError","wait","SdkError","ErrorCode"],"sources":["../../../../src/transfer-service/avalanche-cct/_utils/polling.ts"],"sourcesContent":["import type { pvm } from '@avalabs/avalanchejs';\nimport type { AvalancheBlockchainAlias, Environment } from '../../../constants';\nimport { ErrorCode, InvalidParamsError, SdkError } from '../../../errors';\nimport { wait } from '../../_utils';\nimport { getAvalancheProvider } from '../_utils';\n\nconst POLL_START_COUNT = 13;\nconst BASE_WAIT_PERIOD_MS = 1500;\nconst MULTIPLIER = 1.2;\n\ntype AtomicTxStatusResponse = { status: 'Accepted' | 'Unknown' };\n\nexport type GetTxStatusFunction<T extends AtomicTxStatusResponse | pvm.GetTxStatusResponse> = (\n txId: string,\n) => Promise<T>;\n\nexport function getChainAliasTxStatusFunction(\n environment: Environment,\n chainAlias: 'C',\n): GetTxStatusFunction<AtomicTxStatusResponse>;\nexport function getChainAliasTxStatusFunction(\n environment: Environment,\n chainAlias: 'P',\n): GetTxStatusFunction<pvm.GetTxStatusResponse>;\nexport function getChainAliasTxStatusFunction(\n environment: Environment,\n chainAlias: 'X',\n): GetTxStatusFunction<pvm.GetTxStatusResponse>;\nexport function getChainAliasTxStatusFunction(\n environment: Environment,\n chainAlias: AvalancheBlockchainAlias,\n): GetTxStatusFunction<AtomicTxStatusResponse | pvm.GetTxStatusResponse>;\nexport function getChainAliasTxStatusFunction(\n environment: Environment,\n chainAlias: AvalancheBlockchainAlias,\n): GetTxStatusFunction<AtomicTxStatusResponse | pvm.GetTxStatusResponse> {\n switch (chainAlias) {\n case 'C': {\n // The node only sets blockHeight once the tx is accepted; Processing and Dropped txs are returned without it,\n // and unknown txs reject with \"fetching tx: reading tx: not found\".\n return async (txId: string) => {\n try {\n const { blockHeight } = await getAvalancheProvider(environment, chainAlias).getAtomicTx({ txID: txId });\n return { status: blockHeight === undefined ? 'Unknown' : 'Accepted' };\n } catch (error) {\n if (error instanceof Error && error.message.includes('tx: not found')) {\n return { status: 'Unknown' };\n }\n throw error;\n }\n };\n }\n case 'P': {\n return (txId: string) => getAvalancheProvider(environment, chainAlias).getTxStatus({ txID: txId });\n }\n case 'X': {\n return (txId: string) => getAvalancheProvider(environment, chainAlias).getTxStatus({ txID: txId });\n }\n default: {\n throw new InvalidParamsError(\n `Unsupported chain alias: ${chainAlias}`,\n 'Can not get transaction status function for unsupported chain alias.',\n );\n }\n }\n}\n\nexport async function pollPrimaryNetworkTxStatus({\n chainAlias,\n count = POLL_START_COUNT,\n environment,\n signal,\n txId,\n}: {\n chainAlias: AvalancheBlockchainAlias;\n count?: number;\n environment: Environment;\n signal?: AbortSignal;\n txId: string;\n}): Promise<boolean> {\n if (count < 0) {\n return false;\n }\n\n try {\n const pollFunction = getChainAliasTxStatusFunction(environment, chainAlias);\n\n const { status } = await pollFunction(txId);\n\n switch (status) {\n case 'Accepted':\n case 'Committed': {\n return true;\n }\n\n case 'Dropped':\n case 'Rejected': {\n return false;\n }\n\n default: {\n // Fall through to retry logic.\n break;\n }\n }\n\n const failures = POLL_START_COUNT - count;\n\n const waitPeriod = BASE_WAIT_PERIOD_MS * MULTIPLIER ** failures;\n\n await wait(waitPeriod, signal);\n\n return await pollPrimaryNetworkTxStatus({ chainAlias, count: count - 1, environment, signal, txId });\n } catch (error) {\n throw new SdkError('Failed to poll transaction status from Avalanche.', ErrorCode.UNKNOWN, { cause: error });\n }\n}\n"],"mappings":"gGAgCA,SAAgB,EACd,EACA,EACuE,CACvE,OAAQ,EAAR,CACE,IAAK,IAGH,OAAO,KAAO,IAAiB,CAC7B,GAAI,CACF,GAAM,CAAE,eAAgB,MAAMA,EAAAA,qBAAqB,EAAa,EAAW,CAAC,YAAY,CAAE,KAAM,EAAM,CAAC,CACvG,MAAO,CAAE,OAAQ,IAAgB,IAAA,GAAY,UAAY,WAAY,OAC9D,EAAO,CACd,GAAI,aAAiB,OAAS,EAAM,QAAQ,SAAS,gBAAgB,CACnE,MAAO,CAAE,OAAQ,UAAW,CAE9B,MAAM,IAIZ,IAAK,IACH,MAAQ,IAAiBA,EAAAA,qBAAqB,EAAa,EAAW,CAAC,YAAY,CAAE,KAAM,EAAM,CAAC,CAEpG,IAAK,IACH,MAAQ,IAAiBA,EAAAA,qBAAqB,EAAa,EAAW,CAAC,YAAY,CAAE,KAAM,EAAM,CAAC,CAEpG,QACE,MAAM,IAAIC,EAAAA,mBACR,4BAA4B,IAC5B,uEACD,EAKP,eAAsB,EAA2B,CAC/C,aACA,QAAQ,GACR,cACA,SACA,QAOmB,CACnB,GAAI,EAAQ,EACV,MAAO,GAGT,GAAI,CAGF,GAAM,CAAE,UAAW,MAFE,EAA8B,EAAa,EAAW,CAErC,EAAK,CAE3C,OAAQ,EAAR,CACE,IAAK,WACL,IAAK,YACH,MAAO,GAGT,IAAK,UACL,IAAK,WACH,MAAO,GAGT,QAEE,MAUJ,OAFA,MAAMC,EAAAA,KAFa,KAAsB,MAFxB,GAAmB,GAIb,EAAO,CAEvB,MAAM,EAA2B,CAAE,aAAY,MAAO,EAAQ,EAAG,cAAa,SAAQ,OAAM,CAAC,OAC7F,EAAO,CACd,MAAM,IAAIC,EAAAA,SAAS,oDAAqDC,EAAAA,UAAU,QAAS,CAAE,MAAO,EAAO,CAAC"}
@@ -1,2 +1,2 @@
1
- import{ErrorCode as e,InvalidParamsError as t,SdkError as n}from"../../../errors.js";import{wait as r}from"../../_utils.js";import{getAvalancheProvider as i}from"../_utils.js";function a(e,n){switch(n){case`C`:return t=>i(e,n).getAtomicTxStatus(t);case`P`:return t=>i(e,n).getTxStatus({txID:t});case`X`:return t=>i(e,n).getTxStatus({txID:t});default:throw new t(`Unsupported chain alias: ${n}`,`Can not get transaction status function for unsupported chain alias.`)}}async function o({chainAlias:t,count:i=13,environment:s,signal:c,txId:l}){if(i<0)return!1;try{let{status:e}=await a(s,t)(l);switch(e){case`Accepted`:case`Committed`:return!0;case`Dropped`:case`Rejected`:return!1;default:break}return await r(1500*1.2**(13-i),c),await o({chainAlias:t,count:i-1,environment:s,signal:c,txId:l})}catch(t){throw new n(`Failed to poll transaction status from Avalanche.`,e.UNKNOWN,{cause:t})}}export{o as pollPrimaryNetworkTxStatus};
1
+ import{ErrorCode as e,InvalidParamsError as t,SdkError as n}from"../../../errors.js";import{wait as r}from"../../_utils.js";import{getAvalancheProvider as i}from"../_utils.js";function a(e,n){switch(n){case`C`:return async t=>{try{let{blockHeight:r}=await i(e,n).getAtomicTx({txID:t});return{status:r===void 0?`Unknown`:`Accepted`}}catch(e){if(e instanceof Error&&e.message.includes(`tx: not found`))return{status:`Unknown`};throw e}};case`P`:return t=>i(e,n).getTxStatus({txID:t});case`X`:return t=>i(e,n).getTxStatus({txID:t});default:throw new t(`Unsupported chain alias: ${n}`,`Can not get transaction status function for unsupported chain alias.`)}}async function o({chainAlias:t,count:i=13,environment:s,signal:c,txId:l}){if(i<0)return!1;try{let{status:e}=await a(s,t)(l);switch(e){case`Accepted`:case`Committed`:return!0;case`Dropped`:case`Rejected`:return!1;default:break}return await r(1500*1.2**(13-i),c),await o({chainAlias:t,count:i-1,environment:s,signal:c,txId:l})}catch(t){throw new n(`Failed to poll transaction status from Avalanche.`,e.UNKNOWN,{cause:t})}}export{o as pollPrimaryNetworkTxStatus};
2
2
  //# sourceMappingURL=polling.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"polling.js","names":[],"sources":["../../../../src/transfer-service/avalanche-cct/_utils/polling.ts"],"sourcesContent":["import type { evm, pvm } from '@avalabs/avalanchejs';\nimport type { AvalancheBlockchainAlias, Environment } from '../../../constants';\nimport { ErrorCode, InvalidParamsError, SdkError } from '../../../errors';\nimport { wait } from '../../_utils';\nimport { getAvalancheProvider } from '../_utils';\n\nconst POLL_START_COUNT = 13;\nconst BASE_WAIT_PERIOD_MS = 1500;\nconst MULTIPLIER = 1.2;\n\nexport type GetTxStatusFunction<T extends evm.GetAtomicTxStatusResponse | pvm.GetTxStatusResponse> = (\n txId: string,\n) => Promise<T>;\n\nexport function getChainAliasTxStatusFunction(\n environment: Environment,\n chainAlias: 'C',\n): GetTxStatusFunction<evm.GetAtomicTxStatusResponse>;\nexport function getChainAliasTxStatusFunction(\n environment: Environment,\n chainAlias: 'P',\n): GetTxStatusFunction<pvm.GetTxStatusResponse>;\nexport function getChainAliasTxStatusFunction(\n environment: Environment,\n chainAlias: 'X',\n): GetTxStatusFunction<pvm.GetTxStatusResponse>;\nexport function getChainAliasTxStatusFunction(\n environment: Environment,\n chainAlias: AvalancheBlockchainAlias,\n): GetTxStatusFunction<evm.GetAtomicTxStatusResponse | pvm.GetTxStatusResponse>;\nexport function getChainAliasTxStatusFunction(\n environment: Environment,\n chainAlias: AvalancheBlockchainAlias,\n): GetTxStatusFunction<evm.GetAtomicTxStatusResponse | pvm.GetTxStatusResponse> {\n switch (chainAlias) {\n case 'C': {\n return (txId: string) => getAvalancheProvider(environment, chainAlias).getAtomicTxStatus(txId);\n }\n case 'P': {\n return (txId: string) => getAvalancheProvider(environment, chainAlias).getTxStatus({ txID: txId });\n }\n case 'X': {\n return (txId: string) => getAvalancheProvider(environment, chainAlias).getTxStatus({ txID: txId });\n }\n default: {\n throw new InvalidParamsError(\n `Unsupported chain alias: ${chainAlias}`,\n 'Can not get transaction status function for unsupported chain alias.',\n );\n }\n }\n}\n\nexport async function pollPrimaryNetworkTxStatus({\n chainAlias,\n count = POLL_START_COUNT,\n environment,\n signal,\n txId,\n}: {\n chainAlias: AvalancheBlockchainAlias;\n count?: number;\n environment: Environment;\n signal?: AbortSignal;\n txId: string;\n}): Promise<boolean> {\n if (count < 0) {\n return false;\n }\n\n try {\n const pollFunction = getChainAliasTxStatusFunction(environment, chainAlias);\n\n const { status } = await pollFunction(txId);\n\n switch (status) {\n case 'Accepted':\n case 'Committed': {\n return true;\n }\n\n case 'Dropped':\n case 'Rejected': {\n return false;\n }\n\n default: {\n // Fall through to retry logic.\n break;\n }\n }\n\n const failures = POLL_START_COUNT - count;\n\n const waitPeriod = BASE_WAIT_PERIOD_MS * MULTIPLIER ** failures;\n\n await wait(waitPeriod, signal);\n\n return await pollPrimaryNetworkTxStatus({ chainAlias, count: count - 1, environment, signal, txId });\n } catch (error) {\n throw new SdkError('Failed to poll transaction status from Avalanche.', ErrorCode.UNKNOWN, { cause: error });\n }\n}\n"],"mappings":"gLA8BA,SAAgB,EACd,EACA,EAC8E,CAC9E,OAAQ,EAAR,CACE,IAAK,IACH,MAAQ,IAAiB,EAAqB,EAAa,EAAW,CAAC,kBAAkB,EAAK,CAEhG,IAAK,IACH,MAAQ,IAAiB,EAAqB,EAAa,EAAW,CAAC,YAAY,CAAE,KAAM,EAAM,CAAC,CAEpG,IAAK,IACH,MAAQ,IAAiB,EAAqB,EAAa,EAAW,CAAC,YAAY,CAAE,KAAM,EAAM,CAAC,CAEpG,QACE,MAAM,IAAI,EACR,4BAA4B,IAC5B,uEACD,EAKP,eAAsB,EAA2B,CAC/C,aACA,QAAQ,GACR,cACA,SACA,QAOmB,CACnB,GAAI,EAAQ,EACV,MAAO,GAGT,GAAI,CAGF,GAAM,CAAE,UAAW,MAFE,EAA8B,EAAa,EAAW,CAErC,EAAK,CAE3C,OAAQ,EAAR,CACE,IAAK,WACL,IAAK,YACH,MAAO,GAGT,IAAK,UACL,IAAK,WACH,MAAO,GAGT,QAEE,MAUJ,OAFA,MAAM,EAFa,KAAsB,MAFxB,GAAmB,GAIb,EAAO,CAEvB,MAAM,EAA2B,CAAE,aAAY,MAAO,EAAQ,EAAG,cAAa,SAAQ,OAAM,CAAC,OAC7F,EAAO,CACd,MAAM,IAAI,EAAS,oDAAqD,EAAU,QAAS,CAAE,MAAO,EAAO,CAAC"}
1
+ {"version":3,"file":"polling.js","names":[],"sources":["../../../../src/transfer-service/avalanche-cct/_utils/polling.ts"],"sourcesContent":["import type { pvm } from '@avalabs/avalanchejs';\nimport type { AvalancheBlockchainAlias, Environment } from '../../../constants';\nimport { ErrorCode, InvalidParamsError, SdkError } from '../../../errors';\nimport { wait } from '../../_utils';\nimport { getAvalancheProvider } from '../_utils';\n\nconst POLL_START_COUNT = 13;\nconst BASE_WAIT_PERIOD_MS = 1500;\nconst MULTIPLIER = 1.2;\n\ntype AtomicTxStatusResponse = { status: 'Accepted' | 'Unknown' };\n\nexport type GetTxStatusFunction<T extends AtomicTxStatusResponse | pvm.GetTxStatusResponse> = (\n txId: string,\n) => Promise<T>;\n\nexport function getChainAliasTxStatusFunction(\n environment: Environment,\n chainAlias: 'C',\n): GetTxStatusFunction<AtomicTxStatusResponse>;\nexport function getChainAliasTxStatusFunction(\n environment: Environment,\n chainAlias: 'P',\n): GetTxStatusFunction<pvm.GetTxStatusResponse>;\nexport function getChainAliasTxStatusFunction(\n environment: Environment,\n chainAlias: 'X',\n): GetTxStatusFunction<pvm.GetTxStatusResponse>;\nexport function getChainAliasTxStatusFunction(\n environment: Environment,\n chainAlias: AvalancheBlockchainAlias,\n): GetTxStatusFunction<AtomicTxStatusResponse | pvm.GetTxStatusResponse>;\nexport function getChainAliasTxStatusFunction(\n environment: Environment,\n chainAlias: AvalancheBlockchainAlias,\n): GetTxStatusFunction<AtomicTxStatusResponse | pvm.GetTxStatusResponse> {\n switch (chainAlias) {\n case 'C': {\n // The node only sets blockHeight once the tx is accepted; Processing and Dropped txs are returned without it,\n // and unknown txs reject with \"fetching tx: reading tx: not found\".\n return async (txId: string) => {\n try {\n const { blockHeight } = await getAvalancheProvider(environment, chainAlias).getAtomicTx({ txID: txId });\n return { status: blockHeight === undefined ? 'Unknown' : 'Accepted' };\n } catch (error) {\n if (error instanceof Error && error.message.includes('tx: not found')) {\n return { status: 'Unknown' };\n }\n throw error;\n }\n };\n }\n case 'P': {\n return (txId: string) => getAvalancheProvider(environment, chainAlias).getTxStatus({ txID: txId });\n }\n case 'X': {\n return (txId: string) => getAvalancheProvider(environment, chainAlias).getTxStatus({ txID: txId });\n }\n default: {\n throw new InvalidParamsError(\n `Unsupported chain alias: ${chainAlias}`,\n 'Can not get transaction status function for unsupported chain alias.',\n );\n }\n }\n}\n\nexport async function pollPrimaryNetworkTxStatus({\n chainAlias,\n count = POLL_START_COUNT,\n environment,\n signal,\n txId,\n}: {\n chainAlias: AvalancheBlockchainAlias;\n count?: number;\n environment: Environment;\n signal?: AbortSignal;\n txId: string;\n}): Promise<boolean> {\n if (count < 0) {\n return false;\n }\n\n try {\n const pollFunction = getChainAliasTxStatusFunction(environment, chainAlias);\n\n const { status } = await pollFunction(txId);\n\n switch (status) {\n case 'Accepted':\n case 'Committed': {\n return true;\n }\n\n case 'Dropped':\n case 'Rejected': {\n return false;\n }\n\n default: {\n // Fall through to retry logic.\n break;\n }\n }\n\n const failures = POLL_START_COUNT - count;\n\n const waitPeriod = BASE_WAIT_PERIOD_MS * MULTIPLIER ** failures;\n\n await wait(waitPeriod, signal);\n\n return await pollPrimaryNetworkTxStatus({ chainAlias, count: count - 1, environment, signal, txId });\n } catch (error) {\n throw new SdkError('Failed to poll transaction status from Avalanche.', ErrorCode.UNKNOWN, { cause: error });\n }\n}\n"],"mappings":"gLAgCA,SAAgB,EACd,EACA,EACuE,CACvE,OAAQ,EAAR,CACE,IAAK,IAGH,OAAO,KAAO,IAAiB,CAC7B,GAAI,CACF,GAAM,CAAE,eAAgB,MAAM,EAAqB,EAAa,EAAW,CAAC,YAAY,CAAE,KAAM,EAAM,CAAC,CACvG,MAAO,CAAE,OAAQ,IAAgB,IAAA,GAAY,UAAY,WAAY,OAC9D,EAAO,CACd,GAAI,aAAiB,OAAS,EAAM,QAAQ,SAAS,gBAAgB,CACnE,MAAO,CAAE,OAAQ,UAAW,CAE9B,MAAM,IAIZ,IAAK,IACH,MAAQ,IAAiB,EAAqB,EAAa,EAAW,CAAC,YAAY,CAAE,KAAM,EAAM,CAAC,CAEpG,IAAK,IACH,MAAQ,IAAiB,EAAqB,EAAa,EAAW,CAAC,YAAY,CAAE,KAAM,EAAM,CAAC,CAEpG,QACE,MAAM,IAAI,EACR,4BAA4B,IAC5B,uEACD,EAKP,eAAsB,EAA2B,CAC/C,aACA,QAAQ,GACR,cACA,SACA,QAOmB,CACnB,GAAI,EAAQ,EACV,MAAO,GAGT,GAAI,CAGF,GAAM,CAAE,UAAW,MAFE,EAA8B,EAAa,EAAW,CAErC,EAAK,CAE3C,OAAQ,EAAR,CACE,IAAK,WACL,IAAK,YACH,MAAO,GAGT,IAAK,UACL,IAAK,WACH,MAAO,GAGT,QAEE,MAUJ,OAFA,MAAM,EAFa,KAAsB,MAFxB,GAAmB,GAIb,EAAO,CAEvB,MAAM,EAA2B,CAAE,aAAY,MAAO,EAAQ,EAAG,cAAa,SAAQ,OAAM,CAAC,OAC7F,EAAO,CACd,MAAM,IAAI,EAAS,oDAAqD,EAAU,QAAS,CAAE,MAAO,EAAO,CAAC"}
@@ -1,2 +1,2 @@
1
- const e=require(`../../../constants.cjs`),t=require(`../_constants.cjs`);function n({avalancheTokens:n,ethereumTokens:r,nativeTokenConfig:i}){return async()=>{let a=Object.values(r).reduce((t,n)=>{if(n.token.symbol===`USDC`)return t;let r=n.chainId,i=n.target.chainId,a={...n.token,destinations:{[i]:{address:n.target.tokenAddress,bridgeProviders:[e.ServiceType.AVALANCHE_EVM]}},swapProviders:[]},o=t[r]??[];return o.push(a),t[r]=o,t},{}),o=Object.values(n).reduce((t,n)=>{if(n.token.symbol===`USDC.e`)return t;let r=n.chainId,i=n.target.chainId,a={...n.token,destinations:{[i]:{address:n.target.tokenAddress,bridgeProviders:[e.ServiceType.AVALANCHE_EVM]}},swapProviders:[]},o=t[r]??[];return o.push(a),t[r]=o,t},a),s=e.EthereumChainIds.MAINNET;o[s]&&o[s].push({...t.ETH_TOKEN,destinations:{[e.AvalancheChainIds.MAINNET]:{address:i.avalancheToken.token.address,bridgeProviders:[e.ServiceType.AVALANCHE_EVM]}},swapProviders:[]});let c=e.EthereumChainIds.SEPOLIA;return o[c]&&o[c].push({...t.ETH_TOKEN,destinations:{[e.AvalancheChainIds.FUJI]:{address:i.avalancheToken.token.address,bridgeProviders:[e.ServiceType.AVALANCHE_EVM]}},swapProviders:[]}),o}}exports.getAssetsFactory=n;
1
+ const e=require(`../../../constants.cjs`),t=require(`../_constants.cjs`);function n({avalancheTokens:n,ethereumTokens:r,nativeTokenConfig:i}){return async()=>{let a=Object.values(r).reduce((t,n)=>{let r=n.chainId,i=n.target.chainId,a={...n.token,destinations:n.token.symbol===`USDC`?{}:{[i]:{address:n.target.tokenAddress,bridgeProviders:[e.ServiceType.AVALANCHE_EVM]}},swapProviders:[]},o=t[r]??[];return o.push(a),t[r]=o,t},{}),o=Object.values(n).reduce((t,n)=>{let r=n.chainId,i=n.target.chainId,a={...n.token,destinations:{[i]:{address:n.target.tokenAddress,bridgeProviders:[e.ServiceType.AVALANCHE_EVM]}},swapProviders:[]},o=t[r]??[];return o.push(a),t[r]=o,t},a),s=e.EthereumChainIds.MAINNET;o[s]&&o[s].push({...t.ETH_TOKEN,destinations:{[e.AvalancheChainIds.MAINNET]:{address:i.avalancheToken.token.address,bridgeProviders:[e.ServiceType.AVALANCHE_EVM]}},swapProviders:[]});let c=e.EthereumChainIds.SEPOLIA;return o[c]&&o[c].push({...t.ETH_TOKEN,destinations:{[e.AvalancheChainIds.FUJI]:{address:i.avalancheToken.token.address,bridgeProviders:[e.ServiceType.AVALANCHE_EVM]}},swapProviders:[]}),o}}exports.getAssetsFactory=n;
2
2
  //# sourceMappingURL=get-assets.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"get-assets.cjs","names":["ServiceType","EthereumChainIds","ETH_TOKEN","AvalancheChainIds"],"sources":["../../../../src/transfer-service/avalanche-evm/_handlers/get-assets.ts"],"sourcesContent":["import { AvalancheChainIds, EthereumChainIds, ServiceType } from '../../../constants';\nimport type { ChainAssetMap } from '../../../types/asset';\nimport type { TransferService } from '../../../types/service';\nimport type { DeepMutable } from '../../../types/utility-types';\nimport { ETH_TOKEN } from '../_constants';\nimport type { AvalancheTokens, EthereumTokens } from '../_types';\n\nexport interface GetAssetsFactoryConfig {\n avalancheTokens: AvalancheTokens;\n ethereumTokens: EthereumTokens;\n nativeTokenConfig: {\n ethereumToken: EthereumTokens[keyof EthereumTokens];\n avalancheToken: AvalancheTokens[keyof AvalancheTokens];\n };\n}\n\nexport function getAssetsFactory({\n avalancheTokens,\n ethereumTokens,\n nativeTokenConfig,\n}: GetAssetsFactoryConfig): TransferService['getAssets'] {\n return async () => {\n const assetsWithEthTokens = Object.values(ethereumTokens).reduce((list, tokenConfig) => {\n // USDC is supported by CCTP; skip adding from Ethereum side\n if (tokenConfig.token.symbol === 'USDC') {\n return list;\n }\n const ethChainId = tokenConfig.chainId;\n const avaChainId = tokenConfig.target.chainId;\n\n const bridgeAsset = {\n ...tokenConfig.token,\n destinations: {\n [avaChainId]: {\n address: tokenConfig.target.tokenAddress,\n bridgeProviders: [ServiceType.AVALANCHE_EVM],\n },\n },\n swapProviders: [],\n };\n\n const currentList = list[ethChainId] ?? [];\n currentList.push(bridgeAsset);\n list[ethChainId] = currentList;\n\n return list;\n }, {} as DeepMutable<ChainAssetMap>);\n\n const allAssets = Object.values(avalancheTokens).reduce((list, tokenConfig) => {\n // USDC.e is supported elsewhere; skip adding from Avalanche side\n if (tokenConfig.token.symbol === 'USDC.e') {\n return list;\n }\n const avaChainId = tokenConfig.chainId;\n const ethChainId = tokenConfig.target.chainId;\n\n const bridgeAsset = {\n ...tokenConfig.token,\n destinations: {\n [ethChainId]: {\n address: tokenConfig.target.tokenAddress,\n bridgeProviders: [ServiceType.AVALANCHE_EVM],\n },\n },\n swapProviders: [],\n };\n\n const currentList = list[avaChainId] ?? [];\n currentList.push(bridgeAsset);\n list[avaChainId] = currentList;\n\n return list;\n }, assetsWithEthTokens);\n\n const homesteadKey = EthereumChainIds.MAINNET;\n if (allAssets[homesteadKey]) {\n allAssets[homesteadKey].push({\n ...ETH_TOKEN,\n destinations: {\n [AvalancheChainIds.MAINNET]: {\n // Native ETH on Ethereum maps to WETH.e on Avalanche\n address: nativeTokenConfig.avalancheToken.token.address,\n bridgeProviders: [ServiceType.AVALANCHE_EVM],\n },\n },\n swapProviders: [],\n });\n }\n\n const sepoliaKey = EthereumChainIds.SEPOLIA;\n if (allAssets[sepoliaKey]) {\n allAssets[sepoliaKey].push({\n ...ETH_TOKEN,\n destinations: {\n [AvalancheChainIds.FUJI]: {\n address: nativeTokenConfig.avalancheToken.token.address,\n bridgeProviders: [ServiceType.AVALANCHE_EVM],\n },\n },\n swapProviders: [],\n });\n }\n\n return allAssets as ChainAssetMap;\n };\n}\n"],"mappings":"yEAgBA,SAAgB,EAAiB,CAC/B,kBACA,iBACA,qBACuD,CACvD,OAAO,SAAY,CACjB,IAAM,EAAsB,OAAO,OAAO,EAAe,CAAC,QAAQ,EAAM,IAAgB,CAEtF,GAAI,EAAY,MAAM,SAAW,OAC/B,OAAO,EAET,IAAM,EAAa,EAAY,QACzB,EAAa,EAAY,OAAO,QAEhC,EAAc,CAClB,GAAG,EAAY,MACf,aAAc,EACX,GAAa,CACZ,QAAS,EAAY,OAAO,aAC5B,gBAAiB,CAACA,EAAAA,YAAY,cAAc,CAC7C,CACF,CACD,cAAe,EAAE,CAClB,CAEK,EAAc,EAAK,IAAe,EAAE,CAI1C,OAHA,EAAY,KAAK,EAAY,CAC7B,EAAK,GAAc,EAEZ,GACN,EAAE,CAA+B,CAE9B,EAAY,OAAO,OAAO,EAAgB,CAAC,QAAQ,EAAM,IAAgB,CAE7E,GAAI,EAAY,MAAM,SAAW,SAC/B,OAAO,EAET,IAAM,EAAa,EAAY,QACzB,EAAa,EAAY,OAAO,QAEhC,EAAc,CAClB,GAAG,EAAY,MACf,aAAc,EACX,GAAa,CACZ,QAAS,EAAY,OAAO,aAC5B,gBAAiB,CAACA,EAAAA,YAAY,cAAc,CAC7C,CACF,CACD,cAAe,EAAE,CAClB,CAEK,EAAc,EAAK,IAAe,EAAE,CAI1C,OAHA,EAAY,KAAK,EAAY,CAC7B,EAAK,GAAc,EAEZ,GACN,EAAoB,CAEjB,EAAeC,EAAAA,iBAAiB,QAClC,EAAU,IACZ,EAAU,GAAc,KAAK,CAC3B,GAAGC,EAAAA,UACH,aAAc,EACXC,EAAAA,kBAAkB,SAAU,CAE3B,QAAS,EAAkB,eAAe,MAAM,QAChD,gBAAiB,CAACH,EAAAA,YAAY,cAAc,CAC7C,CACF,CACD,cAAe,EAAE,CAClB,CAAC,CAGJ,IAAM,EAAaC,EAAAA,iBAAiB,QAcpC,OAbI,EAAU,IACZ,EAAU,GAAY,KAAK,CACzB,GAAGC,EAAAA,UACH,aAAc,EACXC,EAAAA,kBAAkB,MAAO,CACxB,QAAS,EAAkB,eAAe,MAAM,QAChD,gBAAiB,CAACH,EAAAA,YAAY,cAAc,CAC7C,CACF,CACD,cAAe,EAAE,CAClB,CAAC,CAGG"}
1
+ {"version":3,"file":"get-assets.cjs","names":["ServiceType","EthereumChainIds","ETH_TOKEN","AvalancheChainIds"],"sources":["../../../../src/transfer-service/avalanche-evm/_handlers/get-assets.ts"],"sourcesContent":["import { AvalancheChainIds, EthereumChainIds, ServiceType } from '../../../constants';\nimport type { ChainAssetMap } from '../../../types/asset';\nimport type { TransferService } from '../../../types/service';\nimport type { DeepMutable } from '../../../types/utility-types';\nimport { ETH_TOKEN } from '../_constants';\nimport type { AvalancheTokens, EthereumTokens } from '../_types';\n\nexport interface GetAssetsFactoryConfig {\n avalancheTokens: AvalancheTokens;\n ethereumTokens: EthereumTokens;\n nativeTokenConfig: {\n ethereumToken: EthereumTokens[keyof EthereumTokens];\n avalancheToken: AvalancheTokens[keyof AvalancheTokens];\n };\n}\n\nexport function getAssetsFactory({\n avalancheTokens,\n ethereumTokens,\n nativeTokenConfig,\n}: GetAssetsFactoryConfig): TransferService['getAssets'] {\n return async () => {\n const assetsWithEthTokens = Object.values(ethereumTokens).reduce((list, tokenConfig) => {\n const ethChainId = tokenConfig.chainId;\n const avaChainId = tokenConfig.target.chainId;\n\n // USDC onboarding goes through CCTP (to native USDC), so it gets no USDC.e destination.\n // It is still listed so that USDC.e -> USDC can resolve its target asset.\n const bridgeAsset = {\n ...tokenConfig.token,\n destinations:\n tokenConfig.token.symbol === 'USDC'\n ? {}\n : {\n [avaChainId]: {\n address: tokenConfig.target.tokenAddress,\n bridgeProviders: [ServiceType.AVALANCHE_EVM],\n },\n },\n swapProviders: [],\n };\n\n const currentList = list[ethChainId] ?? [];\n currentList.push(bridgeAsset);\n list[ethChainId] = currentList;\n\n return list;\n }, {} as DeepMutable<ChainAssetMap>);\n\n const allAssets = Object.values(avalancheTokens).reduce((list, tokenConfig) => {\n const avaChainId = tokenConfig.chainId;\n const ethChainId = tokenConfig.target.chainId;\n\n const bridgeAsset = {\n ...tokenConfig.token,\n destinations: {\n [ethChainId]: {\n address: tokenConfig.target.tokenAddress,\n bridgeProviders: [ServiceType.AVALANCHE_EVM],\n },\n },\n swapProviders: [],\n };\n\n const currentList = list[avaChainId] ?? [];\n currentList.push(bridgeAsset);\n list[avaChainId] = currentList;\n\n return list;\n }, assetsWithEthTokens);\n\n const homesteadKey = EthereumChainIds.MAINNET;\n if (allAssets[homesteadKey]) {\n allAssets[homesteadKey].push({\n ...ETH_TOKEN,\n destinations: {\n [AvalancheChainIds.MAINNET]: {\n // Native ETH on Ethereum maps to WETH.e on Avalanche\n address: nativeTokenConfig.avalancheToken.token.address,\n bridgeProviders: [ServiceType.AVALANCHE_EVM],\n },\n },\n swapProviders: [],\n });\n }\n\n const sepoliaKey = EthereumChainIds.SEPOLIA;\n if (allAssets[sepoliaKey]) {\n allAssets[sepoliaKey].push({\n ...ETH_TOKEN,\n destinations: {\n [AvalancheChainIds.FUJI]: {\n address: nativeTokenConfig.avalancheToken.token.address,\n bridgeProviders: [ServiceType.AVALANCHE_EVM],\n },\n },\n swapProviders: [],\n });\n }\n\n return allAssets as ChainAssetMap;\n };\n}\n"],"mappings":"yEAgBA,SAAgB,EAAiB,CAC/B,kBACA,iBACA,qBACuD,CACvD,OAAO,SAAY,CACjB,IAAM,EAAsB,OAAO,OAAO,EAAe,CAAC,QAAQ,EAAM,IAAgB,CACtF,IAAM,EAAa,EAAY,QACzB,EAAa,EAAY,OAAO,QAIhC,EAAc,CAClB,GAAG,EAAY,MACf,aACE,EAAY,MAAM,SAAW,OACzB,EAAE,CACF,EACG,GAAa,CACZ,QAAS,EAAY,OAAO,aAC5B,gBAAiB,CAACA,EAAAA,YAAY,cAAc,CAC7C,CACF,CACP,cAAe,EAAE,CAClB,CAEK,EAAc,EAAK,IAAe,EAAE,CAI1C,OAHA,EAAY,KAAK,EAAY,CAC7B,EAAK,GAAc,EAEZ,GACN,EAAE,CAA+B,CAE9B,EAAY,OAAO,OAAO,EAAgB,CAAC,QAAQ,EAAM,IAAgB,CAC7E,IAAM,EAAa,EAAY,QACzB,EAAa,EAAY,OAAO,QAEhC,EAAc,CAClB,GAAG,EAAY,MACf,aAAc,EACX,GAAa,CACZ,QAAS,EAAY,OAAO,aAC5B,gBAAiB,CAACA,EAAAA,YAAY,cAAc,CAC7C,CACF,CACD,cAAe,EAAE,CAClB,CAEK,EAAc,EAAK,IAAe,EAAE,CAI1C,OAHA,EAAY,KAAK,EAAY,CAC7B,EAAK,GAAc,EAEZ,GACN,EAAoB,CAEjB,EAAeC,EAAAA,iBAAiB,QAClC,EAAU,IACZ,EAAU,GAAc,KAAK,CAC3B,GAAGC,EAAAA,UACH,aAAc,EACXC,EAAAA,kBAAkB,SAAU,CAE3B,QAAS,EAAkB,eAAe,MAAM,QAChD,gBAAiB,CAACH,EAAAA,YAAY,cAAc,CAC7C,CACF,CACD,cAAe,EAAE,CAClB,CAAC,CAGJ,IAAM,EAAaC,EAAAA,iBAAiB,QAcpC,OAbI,EAAU,IACZ,EAAU,GAAY,KAAK,CACzB,GAAGC,EAAAA,UACH,aAAc,EACXC,EAAAA,kBAAkB,MAAO,CACxB,QAAS,EAAkB,eAAe,MAAM,QAChD,gBAAiB,CAACH,EAAAA,YAAY,cAAc,CAC7C,CACF,CACD,cAAe,EAAE,CAClB,CAAC,CAGG"}
@@ -1,2 +1,2 @@
1
- import{AvalancheChainIds as e,EthereumChainIds as t,ServiceType as n}from"../../../constants.js";import{ETH_TOKEN as r}from"../_constants.js";function i({avalancheTokens:i,ethereumTokens:a,nativeTokenConfig:o}){return async()=>{let s=Object.values(a).reduce((e,t)=>{if(t.token.symbol===`USDC`)return e;let r=t.chainId,i=t.target.chainId,a={...t.token,destinations:{[i]:{address:t.target.tokenAddress,bridgeProviders:[n.AVALANCHE_EVM]}},swapProviders:[]},o=e[r]??[];return o.push(a),e[r]=o,e},{}),c=Object.values(i).reduce((e,t)=>{if(t.token.symbol===`USDC.e`)return e;let r=t.chainId,i=t.target.chainId,a={...t.token,destinations:{[i]:{address:t.target.tokenAddress,bridgeProviders:[n.AVALANCHE_EVM]}},swapProviders:[]},o=e[r]??[];return o.push(a),e[r]=o,e},s),l=t.MAINNET;c[l]&&c[l].push({...r,destinations:{[e.MAINNET]:{address:o.avalancheToken.token.address,bridgeProviders:[n.AVALANCHE_EVM]}},swapProviders:[]});let u=t.SEPOLIA;return c[u]&&c[u].push({...r,destinations:{[e.FUJI]:{address:o.avalancheToken.token.address,bridgeProviders:[n.AVALANCHE_EVM]}},swapProviders:[]}),c}}export{i as getAssetsFactory};
1
+ import{AvalancheChainIds as e,EthereumChainIds as t,ServiceType as n}from"../../../constants.js";import{ETH_TOKEN as r}from"../_constants.js";function i({avalancheTokens:i,ethereumTokens:a,nativeTokenConfig:o}){return async()=>{let s=Object.values(a).reduce((e,t)=>{let r=t.chainId,i=t.target.chainId,a={...t.token,destinations:t.token.symbol===`USDC`?{}:{[i]:{address:t.target.tokenAddress,bridgeProviders:[n.AVALANCHE_EVM]}},swapProviders:[]},o=e[r]??[];return o.push(a),e[r]=o,e},{}),c=Object.values(i).reduce((e,t)=>{let r=t.chainId,i=t.target.chainId,a={...t.token,destinations:{[i]:{address:t.target.tokenAddress,bridgeProviders:[n.AVALANCHE_EVM]}},swapProviders:[]},o=e[r]??[];return o.push(a),e[r]=o,e},s),l=t.MAINNET;c[l]&&c[l].push({...r,destinations:{[e.MAINNET]:{address:o.avalancheToken.token.address,bridgeProviders:[n.AVALANCHE_EVM]}},swapProviders:[]});let u=t.SEPOLIA;return c[u]&&c[u].push({...r,destinations:{[e.FUJI]:{address:o.avalancheToken.token.address,bridgeProviders:[n.AVALANCHE_EVM]}},swapProviders:[]}),c}}export{i as getAssetsFactory};
2
2
  //# sourceMappingURL=get-assets.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"get-assets.js","names":[],"sources":["../../../../src/transfer-service/avalanche-evm/_handlers/get-assets.ts"],"sourcesContent":["import { AvalancheChainIds, EthereumChainIds, ServiceType } from '../../../constants';\nimport type { ChainAssetMap } from '../../../types/asset';\nimport type { TransferService } from '../../../types/service';\nimport type { DeepMutable } from '../../../types/utility-types';\nimport { ETH_TOKEN } from '../_constants';\nimport type { AvalancheTokens, EthereumTokens } from '../_types';\n\nexport interface GetAssetsFactoryConfig {\n avalancheTokens: AvalancheTokens;\n ethereumTokens: EthereumTokens;\n nativeTokenConfig: {\n ethereumToken: EthereumTokens[keyof EthereumTokens];\n avalancheToken: AvalancheTokens[keyof AvalancheTokens];\n };\n}\n\nexport function getAssetsFactory({\n avalancheTokens,\n ethereumTokens,\n nativeTokenConfig,\n}: GetAssetsFactoryConfig): TransferService['getAssets'] {\n return async () => {\n const assetsWithEthTokens = Object.values(ethereumTokens).reduce((list, tokenConfig) => {\n // USDC is supported by CCTP; skip adding from Ethereum side\n if (tokenConfig.token.symbol === 'USDC') {\n return list;\n }\n const ethChainId = tokenConfig.chainId;\n const avaChainId = tokenConfig.target.chainId;\n\n const bridgeAsset = {\n ...tokenConfig.token,\n destinations: {\n [avaChainId]: {\n address: tokenConfig.target.tokenAddress,\n bridgeProviders: [ServiceType.AVALANCHE_EVM],\n },\n },\n swapProviders: [],\n };\n\n const currentList = list[ethChainId] ?? [];\n currentList.push(bridgeAsset);\n list[ethChainId] = currentList;\n\n return list;\n }, {} as DeepMutable<ChainAssetMap>);\n\n const allAssets = Object.values(avalancheTokens).reduce((list, tokenConfig) => {\n // USDC.e is supported elsewhere; skip adding from Avalanche side\n if (tokenConfig.token.symbol === 'USDC.e') {\n return list;\n }\n const avaChainId = tokenConfig.chainId;\n const ethChainId = tokenConfig.target.chainId;\n\n const bridgeAsset = {\n ...tokenConfig.token,\n destinations: {\n [ethChainId]: {\n address: tokenConfig.target.tokenAddress,\n bridgeProviders: [ServiceType.AVALANCHE_EVM],\n },\n },\n swapProviders: [],\n };\n\n const currentList = list[avaChainId] ?? [];\n currentList.push(bridgeAsset);\n list[avaChainId] = currentList;\n\n return list;\n }, assetsWithEthTokens);\n\n const homesteadKey = EthereumChainIds.MAINNET;\n if (allAssets[homesteadKey]) {\n allAssets[homesteadKey].push({\n ...ETH_TOKEN,\n destinations: {\n [AvalancheChainIds.MAINNET]: {\n // Native ETH on Ethereum maps to WETH.e on Avalanche\n address: nativeTokenConfig.avalancheToken.token.address,\n bridgeProviders: [ServiceType.AVALANCHE_EVM],\n },\n },\n swapProviders: [],\n });\n }\n\n const sepoliaKey = EthereumChainIds.SEPOLIA;\n if (allAssets[sepoliaKey]) {\n allAssets[sepoliaKey].push({\n ...ETH_TOKEN,\n destinations: {\n [AvalancheChainIds.FUJI]: {\n address: nativeTokenConfig.avalancheToken.token.address,\n bridgeProviders: [ServiceType.AVALANCHE_EVM],\n },\n },\n swapProviders: [],\n });\n }\n\n return allAssets as ChainAssetMap;\n };\n}\n"],"mappings":"8IAgBA,SAAgB,EAAiB,CAC/B,kBACA,iBACA,qBACuD,CACvD,OAAO,SAAY,CACjB,IAAM,EAAsB,OAAO,OAAO,EAAe,CAAC,QAAQ,EAAM,IAAgB,CAEtF,GAAI,EAAY,MAAM,SAAW,OAC/B,OAAO,EAET,IAAM,EAAa,EAAY,QACzB,EAAa,EAAY,OAAO,QAEhC,EAAc,CAClB,GAAG,EAAY,MACf,aAAc,EACX,GAAa,CACZ,QAAS,EAAY,OAAO,aAC5B,gBAAiB,CAAC,EAAY,cAAc,CAC7C,CACF,CACD,cAAe,EAAE,CAClB,CAEK,EAAc,EAAK,IAAe,EAAE,CAI1C,OAHA,EAAY,KAAK,EAAY,CAC7B,EAAK,GAAc,EAEZ,GACN,EAAE,CAA+B,CAE9B,EAAY,OAAO,OAAO,EAAgB,CAAC,QAAQ,EAAM,IAAgB,CAE7E,GAAI,EAAY,MAAM,SAAW,SAC/B,OAAO,EAET,IAAM,EAAa,EAAY,QACzB,EAAa,EAAY,OAAO,QAEhC,EAAc,CAClB,GAAG,EAAY,MACf,aAAc,EACX,GAAa,CACZ,QAAS,EAAY,OAAO,aAC5B,gBAAiB,CAAC,EAAY,cAAc,CAC7C,CACF,CACD,cAAe,EAAE,CAClB,CAEK,EAAc,EAAK,IAAe,EAAE,CAI1C,OAHA,EAAY,KAAK,EAAY,CAC7B,EAAK,GAAc,EAEZ,GACN,EAAoB,CAEjB,EAAe,EAAiB,QAClC,EAAU,IACZ,EAAU,GAAc,KAAK,CAC3B,GAAG,EACH,aAAc,EACX,EAAkB,SAAU,CAE3B,QAAS,EAAkB,eAAe,MAAM,QAChD,gBAAiB,CAAC,EAAY,cAAc,CAC7C,CACF,CACD,cAAe,EAAE,CAClB,CAAC,CAGJ,IAAM,EAAa,EAAiB,QAcpC,OAbI,EAAU,IACZ,EAAU,GAAY,KAAK,CACzB,GAAG,EACH,aAAc,EACX,EAAkB,MAAO,CACxB,QAAS,EAAkB,eAAe,MAAM,QAChD,gBAAiB,CAAC,EAAY,cAAc,CAC7C,CACF,CACD,cAAe,EAAE,CAClB,CAAC,CAGG"}
1
+ {"version":3,"file":"get-assets.js","names":[],"sources":["../../../../src/transfer-service/avalanche-evm/_handlers/get-assets.ts"],"sourcesContent":["import { AvalancheChainIds, EthereumChainIds, ServiceType } from '../../../constants';\nimport type { ChainAssetMap } from '../../../types/asset';\nimport type { TransferService } from '../../../types/service';\nimport type { DeepMutable } from '../../../types/utility-types';\nimport { ETH_TOKEN } from '../_constants';\nimport type { AvalancheTokens, EthereumTokens } from '../_types';\n\nexport interface GetAssetsFactoryConfig {\n avalancheTokens: AvalancheTokens;\n ethereumTokens: EthereumTokens;\n nativeTokenConfig: {\n ethereumToken: EthereumTokens[keyof EthereumTokens];\n avalancheToken: AvalancheTokens[keyof AvalancheTokens];\n };\n}\n\nexport function getAssetsFactory({\n avalancheTokens,\n ethereumTokens,\n nativeTokenConfig,\n}: GetAssetsFactoryConfig): TransferService['getAssets'] {\n return async () => {\n const assetsWithEthTokens = Object.values(ethereumTokens).reduce((list, tokenConfig) => {\n const ethChainId = tokenConfig.chainId;\n const avaChainId = tokenConfig.target.chainId;\n\n // USDC onboarding goes through CCTP (to native USDC), so it gets no USDC.e destination.\n // It is still listed so that USDC.e -> USDC can resolve its target asset.\n const bridgeAsset = {\n ...tokenConfig.token,\n destinations:\n tokenConfig.token.symbol === 'USDC'\n ? {}\n : {\n [avaChainId]: {\n address: tokenConfig.target.tokenAddress,\n bridgeProviders: [ServiceType.AVALANCHE_EVM],\n },\n },\n swapProviders: [],\n };\n\n const currentList = list[ethChainId] ?? [];\n currentList.push(bridgeAsset);\n list[ethChainId] = currentList;\n\n return list;\n }, {} as DeepMutable<ChainAssetMap>);\n\n const allAssets = Object.values(avalancheTokens).reduce((list, tokenConfig) => {\n const avaChainId = tokenConfig.chainId;\n const ethChainId = tokenConfig.target.chainId;\n\n const bridgeAsset = {\n ...tokenConfig.token,\n destinations: {\n [ethChainId]: {\n address: tokenConfig.target.tokenAddress,\n bridgeProviders: [ServiceType.AVALANCHE_EVM],\n },\n },\n swapProviders: [],\n };\n\n const currentList = list[avaChainId] ?? [];\n currentList.push(bridgeAsset);\n list[avaChainId] = currentList;\n\n return list;\n }, assetsWithEthTokens);\n\n const homesteadKey = EthereumChainIds.MAINNET;\n if (allAssets[homesteadKey]) {\n allAssets[homesteadKey].push({\n ...ETH_TOKEN,\n destinations: {\n [AvalancheChainIds.MAINNET]: {\n // Native ETH on Ethereum maps to WETH.e on Avalanche\n address: nativeTokenConfig.avalancheToken.token.address,\n bridgeProviders: [ServiceType.AVALANCHE_EVM],\n },\n },\n swapProviders: [],\n });\n }\n\n const sepoliaKey = EthereumChainIds.SEPOLIA;\n if (allAssets[sepoliaKey]) {\n allAssets[sepoliaKey].push({\n ...ETH_TOKEN,\n destinations: {\n [AvalancheChainIds.FUJI]: {\n address: nativeTokenConfig.avalancheToken.token.address,\n bridgeProviders: [ServiceType.AVALANCHE_EVM],\n },\n },\n swapProviders: [],\n });\n }\n\n return allAssets as ChainAssetMap;\n };\n}\n"],"mappings":"8IAgBA,SAAgB,EAAiB,CAC/B,kBACA,iBACA,qBACuD,CACvD,OAAO,SAAY,CACjB,IAAM,EAAsB,OAAO,OAAO,EAAe,CAAC,QAAQ,EAAM,IAAgB,CACtF,IAAM,EAAa,EAAY,QACzB,EAAa,EAAY,OAAO,QAIhC,EAAc,CAClB,GAAG,EAAY,MACf,aACE,EAAY,MAAM,SAAW,OACzB,EAAE,CACF,EACG,GAAa,CACZ,QAAS,EAAY,OAAO,aAC5B,gBAAiB,CAAC,EAAY,cAAc,CAC7C,CACF,CACP,cAAe,EAAE,CAClB,CAEK,EAAc,EAAK,IAAe,EAAE,CAI1C,OAHA,EAAY,KAAK,EAAY,CAC7B,EAAK,GAAc,EAEZ,GACN,EAAE,CAA+B,CAE9B,EAAY,OAAO,OAAO,EAAgB,CAAC,QAAQ,EAAM,IAAgB,CAC7E,IAAM,EAAa,EAAY,QACzB,EAAa,EAAY,OAAO,QAEhC,EAAc,CAClB,GAAG,EAAY,MACf,aAAc,EACX,GAAa,CACZ,QAAS,EAAY,OAAO,aAC5B,gBAAiB,CAAC,EAAY,cAAc,CAC7C,CACF,CACD,cAAe,EAAE,CAClB,CAEK,EAAc,EAAK,IAAe,EAAE,CAI1C,OAHA,EAAY,KAAK,EAAY,CAC7B,EAAK,GAAc,EAEZ,GACN,EAAoB,CAEjB,EAAe,EAAiB,QAClC,EAAU,IACZ,EAAU,GAAc,KAAK,CAC3B,GAAG,EACH,aAAc,EACX,EAAkB,SAAU,CAE3B,QAAS,EAAkB,eAAe,MAAM,QAChD,gBAAiB,CAAC,EAAY,cAAc,CAC7C,CACF,CACD,cAAe,EAAE,CAClB,CAAC,CAGJ,IAAM,EAAa,EAAiB,QAcpC,OAbI,EAAU,IACZ,EAAU,GAAY,KAAK,CACzB,GAAG,EACH,aAAc,EACX,EAAkB,MAAO,CACxB,QAAS,EAAkB,eAAe,MAAM,QAChD,gBAAiB,CAAC,EAAY,cAAc,CAC7C,CACF,CACD,cAAe,EAAE,CAClB,CAAC,CAGG"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@avalabs/fusion-sdk",
3
3
  "license": "Limited Ecosystem License",
4
- "version": "0.28.0",
4
+ "version": "0.28.2",
5
5
  "type": "module",
6
6
  "main": "./dist/mod.cjs",
7
7
  "module": "./dist/mod.js",
@@ -36,13 +36,13 @@
36
36
  "es-toolkit": "^1.42.0"
37
37
  },
38
38
  "peerDependencies": {
39
- "@avalabs/avalanchejs": "^5.0.0",
39
+ "@avalabs/avalanchejs": "^5.2.0",
40
40
  "@solana/kit": "^5.0.0 || ^6.0.0",
41
41
  "viem": "^2.38.0",
42
42
  "zod": "^4.1.0"
43
43
  },
44
44
  "devDependencies": {
45
- "@avalabs/avalanchejs": "5.0.0",
45
+ "@avalabs/avalanchejs": "5.2.0",
46
46
  "@solana/kit": "6.5.0",
47
47
  "@vitest/coverage-v8": "4.0.6",
48
48
  "publint": "0.3.17",