@avalabs/fusion-sdk 0.18.0 → 0.19.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/dist/transfer-service/avalanche-cct/_handlers/get-minimum-transfer-amount.cjs +1 -1
- package/dist/transfer-service/avalanche-cct/_handlers/get-minimum-transfer-amount.cjs.map +1 -1
- package/dist/transfer-service/avalanche-cct/_handlers/get-minimum-transfer-amount.js +1 -1
- package/dist/transfer-service/avalanche-cct/_handlers/get-minimum-transfer-amount.js.map +1 -1
- package/dist/transfer-service/avalanche-cct/_handlers/stream-quotes.cjs +1 -1
- package/dist/transfer-service/avalanche-cct/_handlers/stream-quotes.cjs.map +1 -1
- package/dist/transfer-service/avalanche-cct/_handlers/stream-quotes.js +1 -1
- package/dist/transfer-service/avalanche-cct/_handlers/stream-quotes.js.map +1 -1
- package/dist/transfer-service/avalanche-cct/_utils.cjs +1 -1
- package/dist/transfer-service/avalanche-cct/_utils.cjs.map +1 -1
- package/dist/transfer-service/avalanche-cct/_utils.js +1 -1
- package/dist/transfer-service/avalanche-cct/_utils.js.map +1 -1
- package/dist/transfer-service/avalanche-cct/avalanche-cct-service.cjs +1 -1
- package/dist/transfer-service/avalanche-cct/avalanche-cct-service.cjs.map +1 -1
- package/dist/transfer-service/avalanche-cct/avalanche-cct-service.js +1 -1
- package/dist/transfer-service/avalanche-cct/avalanche-cct-service.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const e=require(`../../../constants.cjs`);function
|
|
1
|
+
const e=require(`../../../constants.cjs`),t=require(`../_utils.cjs`);function n({environment:n,getAtomicUtxos:r}){return async({sourceChainId:i,targetChainId:a})=>{let o=n===e.Environment.TEST,s=t.getChainAlias(i,o);if(t.getUtxosTotalAmount((await r(t.getChainAlias(a,o),s)).getUTXOs())>0n)return 0n;switch(i){case e.AvalancheChainIds.MAINNET:case e.AvalancheChainIds.FUJI:return 1000000000n;default:return 1n}}}exports.getMinimumTransferAmountFactory=n;
|
|
2
2
|
//# sourceMappingURL=get-minimum-transfer-amount.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-minimum-transfer-amount.cjs","names":["AvalancheChainIds"],"sources":["../../../../src/transfer-service/avalanche-cct/_handlers/get-minimum-transfer-amount.ts"],"sourcesContent":["import { AvalancheChainIds } from '../../../constants';\nimport type { TransferService } from '../../../types/service';\n\nconst ONE_NANO_AVAX = 1n;\nconst ONE_NANO_AVAX_IN_WEI = 1_000_000_000n;\n\nexport function getMinimumTransferAmountFactory(): TransferService['getMinimumTransferAmount'] {\n return async ({ sourceChainId }) => {\n switch (sourceChainId) {\n case AvalancheChainIds.MAINNET:\n case AvalancheChainIds.FUJI: {\n return ONE_NANO_AVAX_IN_WEI;\n }\n\n default: {\n return ONE_NANO_AVAX;\n }\n }\n };\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"get-minimum-transfer-amount.cjs","names":["Environment","getChainAlias","getUtxosTotalAmount","AvalancheChainIds"],"sources":["../../../../src/transfer-service/avalanche-cct/_handlers/get-minimum-transfer-amount.ts"],"sourcesContent":["import { AvalancheChainIds } from '../../../constants';\nimport { Environment } from '../../../constants';\nimport type { TransferService } from '../../../types/service';\nimport { getChainAlias, getUtxosTotalAmount } from '../_utils';\nimport type { GetAtomicUtxosCallback } from '../types';\n\nconst ONE_NANO_AVAX = 1n;\nconst ONE_NANO_AVAX_IN_WEI = 1_000_000_000n;\n\ninterface GetMinimumTransferAmountFactoryOptions {\n environment: Environment;\n getAtomicUtxos: GetAtomicUtxosCallback;\n}\n\nexport function getMinimumTransferAmountFactory({\n environment,\n getAtomicUtxos,\n}: GetMinimumTransferAmountFactoryOptions): TransferService['getMinimumTransferAmount'] {\n return async ({ sourceChainId, targetChainId }) => {\n const isTestnet = environment === Environment.TEST;\n const sourceChainAlias = getChainAlias(sourceChainId, isTestnet);\n const targetChainAlias = getChainAlias(targetChainId, isTestnet);\n const atomicUtxoSet = await getAtomicUtxos(targetChainAlias, sourceChainAlias);\n const atomicUtxosTotalAmount = getUtxosTotalAmount(atomicUtxoSet.getUTXOs());\n\n if (atomicUtxosTotalAmount > 0n) {\n return 0n;\n }\n\n switch (sourceChainId) {\n case AvalancheChainIds.MAINNET:\n case AvalancheChainIds.FUJI: {\n return ONE_NANO_AVAX_IN_WEI;\n }\n\n default: {\n return ONE_NANO_AVAX;\n }\n }\n };\n}\n"],"mappings":"qEAcA,SAAgB,EAAgC,CAC9C,cACA,kBACsF,CACtF,OAAO,MAAO,CAAE,gBAAe,mBAAoB,CACjD,IAAM,EAAY,IAAgBA,EAAAA,YAAY,KACxC,EAAmBC,EAAAA,cAAc,EAAe,EAAU,CAKhE,GAF+BC,EAAAA,qBADT,MAAM,EADHD,EAAAA,cAAc,EAAe,EAAU,CACH,EAAiB,EACb,UAAU,CAAC,CAE/C,GAC3B,OAAO,GAGT,OAAQ,EAAR,CACE,KAAKE,EAAAA,kBAAkB,QACvB,KAAKA,EAAAA,kBAAkB,KACrB,OAAO,YAGT,QACE,OAAO"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{AvalancheChainIds as e}from"../../../constants.js";function
|
|
1
|
+
import{AvalancheChainIds as e,Environment as t}from"../../../constants.js";import{getChainAlias as n,getUtxosTotalAmount as r}from"../_utils.js";function i({environment:i,getAtomicUtxos:a}){return async({sourceChainId:o,targetChainId:s})=>{let c=i===t.TEST,l=n(o,c);if(r((await a(n(s,c),l)).getUTXOs())>0n)return 0n;switch(o){case e.MAINNET:case e.FUJI:return 1000000000n;default:return 1n}}}export{i as getMinimumTransferAmountFactory};
|
|
2
2
|
//# sourceMappingURL=get-minimum-transfer-amount.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-minimum-transfer-amount.js","names":[],"sources":["../../../../src/transfer-service/avalanche-cct/_handlers/get-minimum-transfer-amount.ts"],"sourcesContent":["import { AvalancheChainIds } from '../../../constants';\nimport type { TransferService } from '../../../types/service';\n\nconst ONE_NANO_AVAX = 1n;\nconst ONE_NANO_AVAX_IN_WEI = 1_000_000_000n;\n\nexport function getMinimumTransferAmountFactory(): TransferService['getMinimumTransferAmount'] {\n return async ({ sourceChainId }) => {\n switch (sourceChainId) {\n case AvalancheChainIds.MAINNET:\n case AvalancheChainIds.FUJI: {\n return ONE_NANO_AVAX_IN_WEI;\n }\n\n default: {\n return ONE_NANO_AVAX;\n }\n }\n };\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"get-minimum-transfer-amount.js","names":[],"sources":["../../../../src/transfer-service/avalanche-cct/_handlers/get-minimum-transfer-amount.ts"],"sourcesContent":["import { AvalancheChainIds } from '../../../constants';\nimport { Environment } from '../../../constants';\nimport type { TransferService } from '../../../types/service';\nimport { getChainAlias, getUtxosTotalAmount } from '../_utils';\nimport type { GetAtomicUtxosCallback } from '../types';\n\nconst ONE_NANO_AVAX = 1n;\nconst ONE_NANO_AVAX_IN_WEI = 1_000_000_000n;\n\ninterface GetMinimumTransferAmountFactoryOptions {\n environment: Environment;\n getAtomicUtxos: GetAtomicUtxosCallback;\n}\n\nexport function getMinimumTransferAmountFactory({\n environment,\n getAtomicUtxos,\n}: GetMinimumTransferAmountFactoryOptions): TransferService['getMinimumTransferAmount'] {\n return async ({ sourceChainId, targetChainId }) => {\n const isTestnet = environment === Environment.TEST;\n const sourceChainAlias = getChainAlias(sourceChainId, isTestnet);\n const targetChainAlias = getChainAlias(targetChainId, isTestnet);\n const atomicUtxoSet = await getAtomicUtxos(targetChainAlias, sourceChainAlias);\n const atomicUtxosTotalAmount = getUtxosTotalAmount(atomicUtxoSet.getUTXOs());\n\n if (atomicUtxosTotalAmount > 0n) {\n return 0n;\n }\n\n switch (sourceChainId) {\n case AvalancheChainIds.MAINNET:\n case AvalancheChainIds.FUJI: {\n return ONE_NANO_AVAX_IN_WEI;\n }\n\n default: {\n return ONE_NANO_AVAX;\n }\n }\n };\n}\n"],"mappings":"iJAcA,SAAgB,EAAgC,CAC9C,cACA,kBACsF,CACtF,OAAO,MAAO,CAAE,gBAAe,mBAAoB,CACjD,IAAM,EAAY,IAAgB,EAAY,KACxC,EAAmB,EAAc,EAAe,EAAU,CAKhE,GAF+B,GADT,MAAM,EADH,EAAc,EAAe,EAAU,CACH,EAAiB,EACb,UAAU,CAAC,CAE/C,GAC3B,OAAO,GAGT,OAAQ,EAAR,CACE,KAAK,EAAkB,QACvB,KAAK,EAAkB,KACrB,OAAO,YAGT,QACE,OAAO"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
require(`../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../../constants.cjs`),t=require(`../../../errors.cjs`),n=require(`../_utils.cjs`),r=require(`../_type-guards.cjs`);let i=require(`viem`)
|
|
1
|
+
require(`../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../../constants.cjs`),t=require(`../../../errors.cjs`),n=require(`../_utils.cjs`),r=require(`../_type-guards.cjs`);let i=require(`viem`);function a({clock:a=()=>Math.floor(Date.now()/1e3),environment:o,getAtomicUtxos:s}){return(c,l)=>{let u=new AbortController,d=()=>u.abort();if(o!==e.Environment.PROD&&o!==e.Environment.TEST)return u.signal.aborted||(l(`error`,new t.InvalidParamsError(`Unsupported environment for Avalanche CCT service.`)),l(`done`)),{cancel:d};let f=o===e.Environment.TEST,p=c.fromAddress,m=c.toAddress,h=f?e.AvalancheFujiBlockchainChainIds.C:e.AvalancheMainnetBlockchainChainIds.C,g=c.sourceChain.chainId===h,_=c.targetChain.chainId===h,v=g?(0,i.isAddress)(p):r.isXpAddressFullyValid(p)&&n.xpAddressMatchesNetwork(p,f),y=_?(0,i.isAddress)(m):r.isXpAddressFullyValid(m)&&n.xpAddressMatchesNetwork(m,f);if(!v||!y)return u.signal.aborted||(l(`error`,new t.InvalidParamsError(`Invalid fromAddress or toAddress for the specified environment.`,`Address types must match chain type: C-Chain uses EVM addresses, P/X chains use XP bech32 addresses for the selected environment.`)),l(`done`)),{cancel:d};let b=g||_;return b&&p===m?(u.signal.aborted||(l(`error`,new t.InvalidParamsError(`fromAddress and toAddress must be different when C-Chain is involved.`)),l(`done`)),{cancel:d}):!b&&n.stripAddressPrefix(p)!==n.stripAddressPrefix(m)?(u.signal.aborted||(l(`error`,new t.InvalidParamsError(`fromAddress and toAddress must be the same for P↔X transfers.`)),l(`done`)),{cancel:d}):((async()=>{let t=n.getChainAlias(c.sourceChain.chainId,f),r=n.getChainAlias(c.targetChain.chainId,f),i=n.getUtxosTotalAmount((await s(r,t)).getUTXOs());if(t===`C`&&c.amount!==0n&&c.amount<1000000000n){u.signal.aborted||l(`done`);return}if(c.amount===0n&&i===0n){u.signal.aborted||l(`done`);return}let o=n.getNativeTokenForChainAlias(t),d=n.getNativeTokenForChainAlias(r),p=n.getOutputAmountForAvalancheCct({amountIn:c.amount,sourceAsset:o,targetAsset:d});if(p===0n){u.signal.aborted||l(`done`);return}let m=n.getOutputAmountForAvalancheCct({amountIn:i,sourceAsset:n.getNativeTokenForChainAlias(`P`),targetAsset:d}),h={aggregator:{id:`avalanche-cct`,name:`Avalanche CCT`},amountIn:c.amount,amountOut:p+m,assetIn:o,assetOut:d,expiresAt:a()+60,fees:[],fromAddress:c.fromAddress,id:crypto.randomUUID(),partnerFeeBps:null,serviceType:e.ServiceType.AVALANCHE_CCT,slippageBps:0,sourceChain:c.sourceChain,targetChain:c.targetChain,toAddress:c.toAddress};u.signal.aborted||(l(`quote`,h),l(`done`))})().catch(e=>{u.signal.aborted||(l(`error`,new t.SdkError(t.ErrorReason.UNKNOWN,t.ErrorCode.UNKNOWN,{cause:e,details:`Failed to stream quotes`})),l(`done`))}),{cancel:d})}}exports.streamQuotesFactory=a;
|
|
2
2
|
//# sourceMappingURL=stream-quotes.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream-quotes.cjs","names":["Environment","InvalidParamsError","AvalancheFujiBlockchainChainIds","AvalancheMainnetBlockchainChainIds","isXpAddressFullyValid","xpAddressMatchesNetwork","stripAddressPrefix","getChainAlias","
|
|
1
|
+
{"version":3,"file":"stream-quotes.cjs","names":["Environment","InvalidParamsError","AvalancheFujiBlockchainChainIds","AvalancheMainnetBlockchainChainIds","isXpAddressFullyValid","xpAddressMatchesNetwork","stripAddressPrefix","getChainAlias","getUtxosTotalAmount","getNativeTokenForChainAlias","getOutputAmountForAvalancheCct","ServiceType","SdkError","ErrorReason","ErrorCode"],"sources":["../../../../src/transfer-service/avalanche-cct/_handlers/stream-quotes.ts"],"sourcesContent":["import { isAddress } from 'viem';\nimport {\n AvalancheFujiBlockchainChainIds,\n AvalancheMainnetBlockchainChainIds,\n Environment,\n ServiceType,\n type AvalancheBlockchainAlias,\n} from '../../../constants';\nimport { ErrorCode, ErrorReason, InvalidParamsError, SdkError } from '../../../errors';\nimport type { TransferService } from '../../../types/service';\nimport type { Quote } from '../../../types/quote';\nimport { isXpAddressFullyValid } from '../_type-guards';\nimport {\n getChainAlias,\n getNativeTokenForChainAlias,\n getOutputAmountForAvalancheCct,\n getUtxosTotalAmount,\n stripAddressPrefix,\n xpAddressMatchesNetwork,\n} from '../_utils';\nimport type { GetAtomicUtxosCallback } from '../types';\n\nexport interface StreamQuotesOptions {\n clock?: () => number;\n environment: Environment;\n getAtomicUtxos: GetAtomicUtxosCallback;\n}\n\nexport function streamQuotesFactory({\n clock = () => Math.floor(Date.now() / 1000),\n environment,\n getAtomicUtxos,\n}: StreamQuotesOptions): TransferService['streamQuotes'] {\n return (props, handler) => {\n const ac = new AbortController();\n const cancel = () => ac.abort();\n\n if (environment !== Environment.PROD && environment !== Environment.TEST) {\n if (!ac.signal.aborted) {\n handler('error', new InvalidParamsError('Unsupported environment for Avalanche CCT service.'));\n handler('done');\n }\n\n return { cancel };\n }\n\n const isTestnet = environment === Environment.TEST;\n\n const fromAddress = props.fromAddress;\n const toAddress = props.toAddress;\n const cChainId = isTestnet ? AvalancheFujiBlockchainChainIds.C : AvalancheMainnetBlockchainChainIds.C;\n const isSourceChainC = props.sourceChain.chainId === cChainId;\n const isTargetChainC = props.targetChain.chainId === cChainId;\n\n const isFromAddressValid = isSourceChainC\n ? isAddress(fromAddress)\n : isXpAddressFullyValid(fromAddress) && xpAddressMatchesNetwork(fromAddress, isTestnet);\n\n const isToAddressValid = isTargetChainC\n ? isAddress(toAddress)\n : isXpAddressFullyValid(toAddress) && xpAddressMatchesNetwork(toAddress, isTestnet);\n\n if (!isFromAddressValid || !isToAddressValid) {\n if (!ac.signal.aborted) {\n handler(\n 'error',\n new InvalidParamsError(\n 'Invalid fromAddress or toAddress for the specified environment.',\n 'Address types must match chain type: C-Chain uses EVM addresses, P/X chains use XP bech32 addresses for the selected environment.',\n ),\n );\n handler('done');\n }\n\n return {\n cancel,\n };\n }\n\n // Validate addresses equal if both chains are P/X and different if either chain is C.\n const isEitherChainC = isSourceChainC || isTargetChainC;\n\n if (isEitherChainC && fromAddress === toAddress) {\n if (!ac.signal.aborted) {\n handler(\n 'error',\n new InvalidParamsError('fromAddress and toAddress must be different when C-Chain is involved.'),\n );\n handler('done');\n }\n\n return { cancel };\n }\n\n if (!isEitherChainC && stripAddressPrefix(fromAddress) !== stripAddressPrefix(toAddress)) {\n if (!ac.signal.aborted) {\n handler('error', new InvalidParamsError('fromAddress and toAddress must be the same for P↔X transfers.'));\n handler('done');\n }\n\n return { cancel };\n }\n\n (async () => {\n const sourceChainAlias: AvalancheBlockchainAlias = getChainAlias(props.sourceChain.chainId, isTestnet);\n const destinationChainAlias: AvalancheBlockchainAlias = getChainAlias(props.targetChain.chainId, isTestnet);\n const atomicUtxoSet = await getAtomicUtxos(destinationChainAlias, sourceChainAlias);\n const atomicUtxos = atomicUtxoSet.getUTXOs();\n const atomicUtxosTotalAmount = getUtxosTotalAmount(atomicUtxos);\n\n // If source is C-Chain, the props amount must be either `0n` or _at least_ one nano AVAX.\n // Otherwise, we should just emit a \"done\" event.\n if (sourceChainAlias === 'C' && props.amount !== 0n && props.amount < 1_000_000_000n) {\n if (!ac.signal.aborted) {\n handler('done');\n }\n\n return;\n }\n\n // Special case for 0 amount transfers where user intends to finish stuck atomic imports.\n if (props.amount === 0n && atomicUtxosTotalAmount === 0n) {\n if (!ac.signal.aborted) {\n handler('done');\n }\n\n return;\n }\n\n const assetIn = getNativeTokenForChainAlias(sourceChainAlias);\n const assetOut = getNativeTokenForChainAlias(destinationChainAlias);\n const amountIn = getOutputAmountForAvalancheCct({\n amountIn: props.amount,\n sourceAsset: assetIn,\n targetAsset: assetOut,\n });\n\n // Emit no quotes if `amountIn` is 0\n // This can happen if the user tries to transfer an amount below 1 nano AVAX from the C-Chain.\n if (amountIn === 0n) {\n if (!ac.signal.aborted) {\n handler('done');\n }\n\n return;\n }\n\n // TODO: Do we need to account for subtracting import fees from these UTXOs\n // in order to give an accurate picture of how much the user will receive on the other side?\n const amountOutFromAtomicUtxos = getOutputAmountForAvalancheCct({\n amountIn: atomicUtxosTotalAmount,\n sourceAsset: getNativeTokenForChainAlias('P'),\n targetAsset: assetOut,\n });\n\n const quote: Quote = {\n aggregator: {\n id: 'avalanche-cct',\n name: 'Avalanche CCT',\n },\n amountIn: props.amount,\n amountOut: amountIn + amountOutFromAtomicUtxos,\n assetIn,\n assetOut,\n expiresAt: clock() + 60, // Expire in 1 minute.\n fees: [],\n fromAddress: props.fromAddress,\n id: crypto.randomUUID(),\n partnerFeeBps: null,\n serviceType: ServiceType.AVALANCHE_CCT,\n slippageBps: 0,\n sourceChain: props.sourceChain,\n targetChain: props.targetChain,\n toAddress: props.toAddress,\n };\n\n if (!ac.signal.aborted) {\n handler('quote', quote);\n handler('done');\n }\n })().catch((error) => {\n if (!ac.signal.aborted) {\n handler(\n 'error',\n new SdkError(ErrorReason.UNKNOWN, ErrorCode.UNKNOWN, { cause: error, details: 'Failed to stream quotes' }),\n );\n handler('done');\n }\n });\n\n return {\n cancel,\n };\n };\n}\n"],"mappings":"gNA4BA,SAAgB,EAAoB,CAClC,YAAc,KAAK,MAAM,KAAK,KAAK,CAAG,IAAK,CAC3C,cACA,kBACuD,CACvD,OAAQ,EAAO,IAAY,CACzB,IAAM,EAAK,IAAI,gBACT,MAAe,EAAG,OAAO,CAE/B,GAAI,IAAgBA,EAAAA,YAAY,MAAQ,IAAgBA,EAAAA,YAAY,KAMlE,OALK,EAAG,OAAO,UACb,EAAQ,QAAS,IAAIC,EAAAA,mBAAmB,qDAAqD,CAAC,CAC9F,EAAQ,OAAO,EAGV,CAAE,SAAQ,CAGnB,IAAM,EAAY,IAAgBD,EAAAA,YAAY,KAExC,EAAc,EAAM,YACpB,EAAY,EAAM,UAClB,EAAW,EAAYE,EAAAA,gCAAgC,EAAIC,EAAAA,mCAAmC,EAC9F,EAAiB,EAAM,YAAY,UAAY,EAC/C,EAAiB,EAAM,YAAY,UAAY,EAE/C,EAAqB,GAAA,EAAA,EAAA,WACb,EAAY,CACtBC,EAAAA,sBAAsB,EAAY,EAAIC,EAAAA,wBAAwB,EAAa,EAAU,CAEnF,EAAmB,GAAA,EAAA,EAAA,WACX,EAAU,CACpBD,EAAAA,sBAAsB,EAAU,EAAIC,EAAAA,wBAAwB,EAAW,EAAU,CAErF,GAAI,CAAC,GAAsB,CAAC,EAY1B,OAXK,EAAG,OAAO,UACb,EACE,QACA,IAAIJ,EAAAA,mBACF,kEACA,oIACD,CACF,CACD,EAAQ,OAAO,EAGV,CACL,SACD,CAIH,IAAM,EAAiB,GAAkB,EA8GzC,OA5GI,GAAkB,IAAgB,GAC/B,EAAG,OAAO,UACb,EACE,QACA,IAAIA,EAAAA,mBAAmB,wEAAwE,CAChG,CACD,EAAQ,OAAO,EAGV,CAAE,SAAQ,EAGf,CAAC,GAAkBK,EAAAA,mBAAmB,EAAY,GAAKA,EAAAA,mBAAmB,EAAU,EACjF,EAAG,OAAO,UACb,EAAQ,QAAS,IAAIL,EAAAA,mBAAmB,gEAAgE,CAAC,CACzG,EAAQ,OAAO,EAGV,CAAE,SAAQ,IAGlB,SAAY,CACX,IAAM,EAA6CM,EAAAA,cAAc,EAAM,YAAY,QAAS,EAAU,CAChG,EAAkDA,EAAAA,cAAc,EAAM,YAAY,QAAS,EAAU,CAGrG,EAAyBC,EAAAA,qBAFT,MAAM,EAAe,EAAuB,EAAiB,EACjD,UAAU,CACmB,CAI/D,GAAI,IAAqB,KAAO,EAAM,SAAW,IAAM,EAAM,OAAS,YAAgB,CAC/E,EAAG,OAAO,SACb,EAAQ,OAAO,CAGjB,OAIF,GAAI,EAAM,SAAW,IAAM,IAA2B,GAAI,CACnD,EAAG,OAAO,SACb,EAAQ,OAAO,CAGjB,OAGF,IAAM,EAAUC,EAAAA,4BAA4B,EAAiB,CACvD,EAAWA,EAAAA,4BAA4B,EAAsB,CAC7D,EAAWC,EAAAA,+BAA+B,CAC9C,SAAU,EAAM,OAChB,YAAa,EACb,YAAa,EACd,CAAC,CAIF,GAAI,IAAa,GAAI,CACd,EAAG,OAAO,SACb,EAAQ,OAAO,CAGjB,OAKF,IAAM,EAA2BA,EAAAA,+BAA+B,CAC9D,SAAU,EACV,YAAaD,EAAAA,4BAA4B,IAAI,CAC7C,YAAa,EACd,CAAC,CAEI,EAAe,CACnB,WAAY,CACV,GAAI,gBACJ,KAAM,gBACP,CACD,SAAU,EAAM,OAChB,UAAW,EAAW,EACtB,UACA,WACA,UAAW,GAAO,CAAG,GACrB,KAAM,EAAE,CACR,YAAa,EAAM,YACnB,GAAI,OAAO,YAAY,CACvB,cAAe,KACf,YAAaE,EAAAA,YAAY,cACzB,YAAa,EACb,YAAa,EAAM,YACnB,YAAa,EAAM,YACnB,UAAW,EAAM,UAClB,CAEI,EAAG,OAAO,UACb,EAAQ,QAAS,EAAM,CACvB,EAAQ,OAAO,KAEf,CAAC,MAAO,GAAU,CACf,EAAG,OAAO,UACb,EACE,QACA,IAAIC,EAAAA,SAASC,EAAAA,YAAY,QAASC,EAAAA,UAAU,QAAS,CAAE,MAAO,EAAO,QAAS,0BAA2B,CAAC,CAC3G,CACD,EAAQ,OAAO,GAEjB,CAEK,CACL,SACD"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{AvalancheFujiBlockchainChainIds as e,AvalancheMainnetBlockchainChainIds as t,Environment as n,ServiceType as r}from"../../../constants.js";import{ErrorCode as i,ErrorReason as a,InvalidParamsError as o,SdkError as s}from"../../../errors.js";import{getChainAlias as c,getNativeTokenForChainAlias as l,getOutputAmountForAvalancheCct as u,
|
|
1
|
+
import{AvalancheFujiBlockchainChainIds as e,AvalancheMainnetBlockchainChainIds as t,Environment as n,ServiceType as r}from"../../../constants.js";import{ErrorCode as i,ErrorReason as a,InvalidParamsError as o,SdkError as s}from"../../../errors.js";import{getChainAlias as c,getNativeTokenForChainAlias as l,getOutputAmountForAvalancheCct as u,getUtxosTotalAmount as d,stripAddressPrefix as f,xpAddressMatchesNetwork as p}from"../_utils.js";import{isXpAddressFullyValid as m}from"../_type-guards.js";import{isAddress as h}from"viem";function g({clock:g=()=>Math.floor(Date.now()/1e3),environment:_,getAtomicUtxos:v}){return(y,b)=>{let x=new AbortController,S=()=>x.abort();if(_!==n.PROD&&_!==n.TEST)return x.signal.aborted||(b(`error`,new o(`Unsupported environment for Avalanche CCT service.`)),b(`done`)),{cancel:S};let C=_===n.TEST,w=y.fromAddress,T=y.toAddress,E=C?e.C:t.C,D=y.sourceChain.chainId===E,O=y.targetChain.chainId===E,k=D?h(w):m(w)&&p(w,C),A=O?h(T):m(T)&&p(T,C);if(!k||!A)return x.signal.aborted||(b(`error`,new o(`Invalid fromAddress or toAddress for the specified environment.`,`Address types must match chain type: C-Chain uses EVM addresses, P/X chains use XP bech32 addresses for the selected environment.`)),b(`done`)),{cancel:S};let j=D||O;return j&&w===T?(x.signal.aborted||(b(`error`,new o(`fromAddress and toAddress must be different when C-Chain is involved.`)),b(`done`)),{cancel:S}):!j&&f(w)!==f(T)?(x.signal.aborted||(b(`error`,new o(`fromAddress and toAddress must be the same for P↔X transfers.`)),b(`done`)),{cancel:S}):((async()=>{let e=c(y.sourceChain.chainId,C),t=c(y.targetChain.chainId,C),n=d((await v(t,e)).getUTXOs());if(e===`C`&&y.amount!==0n&&y.amount<1000000000n){x.signal.aborted||b(`done`);return}if(y.amount===0n&&n===0n){x.signal.aborted||b(`done`);return}let i=l(e),a=l(t),o=u({amountIn:y.amount,sourceAsset:i,targetAsset:a});if(o===0n){x.signal.aborted||b(`done`);return}let s=u({amountIn:n,sourceAsset:l(`P`),targetAsset:a}),f={aggregator:{id:`avalanche-cct`,name:`Avalanche CCT`},amountIn:y.amount,amountOut:o+s,assetIn:i,assetOut:a,expiresAt:g()+60,fees:[],fromAddress:y.fromAddress,id:crypto.randomUUID(),partnerFeeBps:null,serviceType:r.AVALANCHE_CCT,slippageBps:0,sourceChain:y.sourceChain,targetChain:y.targetChain,toAddress:y.toAddress};x.signal.aborted||(b(`quote`,f),b(`done`))})().catch(e=>{x.signal.aborted||(b(`error`,new s(a.UNKNOWN,i.UNKNOWN,{cause:e,details:`Failed to stream quotes`})),b(`done`))}),{cancel:S})}}export{g as streamQuotesFactory};
|
|
2
2
|
//# sourceMappingURL=stream-quotes.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream-quotes.js","names":[],"sources":["../../../../src/transfer-service/avalanche-cct/_handlers/stream-quotes.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"stream-quotes.js","names":[],"sources":["../../../../src/transfer-service/avalanche-cct/_handlers/stream-quotes.ts"],"sourcesContent":["import { isAddress } from 'viem';\nimport {\n AvalancheFujiBlockchainChainIds,\n AvalancheMainnetBlockchainChainIds,\n Environment,\n ServiceType,\n type AvalancheBlockchainAlias,\n} from '../../../constants';\nimport { ErrorCode, ErrorReason, InvalidParamsError, SdkError } from '../../../errors';\nimport type { TransferService } from '../../../types/service';\nimport type { Quote } from '../../../types/quote';\nimport { isXpAddressFullyValid } from '../_type-guards';\nimport {\n getChainAlias,\n getNativeTokenForChainAlias,\n getOutputAmountForAvalancheCct,\n getUtxosTotalAmount,\n stripAddressPrefix,\n xpAddressMatchesNetwork,\n} from '../_utils';\nimport type { GetAtomicUtxosCallback } from '../types';\n\nexport interface StreamQuotesOptions {\n clock?: () => number;\n environment: Environment;\n getAtomicUtxos: GetAtomicUtxosCallback;\n}\n\nexport function streamQuotesFactory({\n clock = () => Math.floor(Date.now() / 1000),\n environment,\n getAtomicUtxos,\n}: StreamQuotesOptions): TransferService['streamQuotes'] {\n return (props, handler) => {\n const ac = new AbortController();\n const cancel = () => ac.abort();\n\n if (environment !== Environment.PROD && environment !== Environment.TEST) {\n if (!ac.signal.aborted) {\n handler('error', new InvalidParamsError('Unsupported environment for Avalanche CCT service.'));\n handler('done');\n }\n\n return { cancel };\n }\n\n const isTestnet = environment === Environment.TEST;\n\n const fromAddress = props.fromAddress;\n const toAddress = props.toAddress;\n const cChainId = isTestnet ? AvalancheFujiBlockchainChainIds.C : AvalancheMainnetBlockchainChainIds.C;\n const isSourceChainC = props.sourceChain.chainId === cChainId;\n const isTargetChainC = props.targetChain.chainId === cChainId;\n\n const isFromAddressValid = isSourceChainC\n ? isAddress(fromAddress)\n : isXpAddressFullyValid(fromAddress) && xpAddressMatchesNetwork(fromAddress, isTestnet);\n\n const isToAddressValid = isTargetChainC\n ? isAddress(toAddress)\n : isXpAddressFullyValid(toAddress) && xpAddressMatchesNetwork(toAddress, isTestnet);\n\n if (!isFromAddressValid || !isToAddressValid) {\n if (!ac.signal.aborted) {\n handler(\n 'error',\n new InvalidParamsError(\n 'Invalid fromAddress or toAddress for the specified environment.',\n 'Address types must match chain type: C-Chain uses EVM addresses, P/X chains use XP bech32 addresses for the selected environment.',\n ),\n );\n handler('done');\n }\n\n return {\n cancel,\n };\n }\n\n // Validate addresses equal if both chains are P/X and different if either chain is C.\n const isEitherChainC = isSourceChainC || isTargetChainC;\n\n if (isEitherChainC && fromAddress === toAddress) {\n if (!ac.signal.aborted) {\n handler(\n 'error',\n new InvalidParamsError('fromAddress and toAddress must be different when C-Chain is involved.'),\n );\n handler('done');\n }\n\n return { cancel };\n }\n\n if (!isEitherChainC && stripAddressPrefix(fromAddress) !== stripAddressPrefix(toAddress)) {\n if (!ac.signal.aborted) {\n handler('error', new InvalidParamsError('fromAddress and toAddress must be the same for P↔X transfers.'));\n handler('done');\n }\n\n return { cancel };\n }\n\n (async () => {\n const sourceChainAlias: AvalancheBlockchainAlias = getChainAlias(props.sourceChain.chainId, isTestnet);\n const destinationChainAlias: AvalancheBlockchainAlias = getChainAlias(props.targetChain.chainId, isTestnet);\n const atomicUtxoSet = await getAtomicUtxos(destinationChainAlias, sourceChainAlias);\n const atomicUtxos = atomicUtxoSet.getUTXOs();\n const atomicUtxosTotalAmount = getUtxosTotalAmount(atomicUtxos);\n\n // If source is C-Chain, the props amount must be either `0n` or _at least_ one nano AVAX.\n // Otherwise, we should just emit a \"done\" event.\n if (sourceChainAlias === 'C' && props.amount !== 0n && props.amount < 1_000_000_000n) {\n if (!ac.signal.aborted) {\n handler('done');\n }\n\n return;\n }\n\n // Special case for 0 amount transfers where user intends to finish stuck atomic imports.\n if (props.amount === 0n && atomicUtxosTotalAmount === 0n) {\n if (!ac.signal.aborted) {\n handler('done');\n }\n\n return;\n }\n\n const assetIn = getNativeTokenForChainAlias(sourceChainAlias);\n const assetOut = getNativeTokenForChainAlias(destinationChainAlias);\n const amountIn = getOutputAmountForAvalancheCct({\n amountIn: props.amount,\n sourceAsset: assetIn,\n targetAsset: assetOut,\n });\n\n // Emit no quotes if `amountIn` is 0\n // This can happen if the user tries to transfer an amount below 1 nano AVAX from the C-Chain.\n if (amountIn === 0n) {\n if (!ac.signal.aborted) {\n handler('done');\n }\n\n return;\n }\n\n // TODO: Do we need to account for subtracting import fees from these UTXOs\n // in order to give an accurate picture of how much the user will receive on the other side?\n const amountOutFromAtomicUtxos = getOutputAmountForAvalancheCct({\n amountIn: atomicUtxosTotalAmount,\n sourceAsset: getNativeTokenForChainAlias('P'),\n targetAsset: assetOut,\n });\n\n const quote: Quote = {\n aggregator: {\n id: 'avalanche-cct',\n name: 'Avalanche CCT',\n },\n amountIn: props.amount,\n amountOut: amountIn + amountOutFromAtomicUtxos,\n assetIn,\n assetOut,\n expiresAt: clock() + 60, // Expire in 1 minute.\n fees: [],\n fromAddress: props.fromAddress,\n id: crypto.randomUUID(),\n partnerFeeBps: null,\n serviceType: ServiceType.AVALANCHE_CCT,\n slippageBps: 0,\n sourceChain: props.sourceChain,\n targetChain: props.targetChain,\n toAddress: props.toAddress,\n };\n\n if (!ac.signal.aborted) {\n handler('quote', quote);\n handler('done');\n }\n })().catch((error) => {\n if (!ac.signal.aborted) {\n handler(\n 'error',\n new SdkError(ErrorReason.UNKNOWN, ErrorCode.UNKNOWN, { cause: error, details: 'Failed to stream quotes' }),\n );\n handler('done');\n }\n });\n\n return {\n cancel,\n };\n };\n}\n"],"mappings":"ohBA4BA,SAAgB,EAAoB,CAClC,YAAc,KAAK,MAAM,KAAK,KAAK,CAAG,IAAK,CAC3C,cACA,kBACuD,CACvD,OAAQ,EAAO,IAAY,CACzB,IAAM,EAAK,IAAI,gBACT,MAAe,EAAG,OAAO,CAE/B,GAAI,IAAgB,EAAY,MAAQ,IAAgB,EAAY,KAMlE,OALK,EAAG,OAAO,UACb,EAAQ,QAAS,IAAI,EAAmB,qDAAqD,CAAC,CAC9F,EAAQ,OAAO,EAGV,CAAE,SAAQ,CAGnB,IAAM,EAAY,IAAgB,EAAY,KAExC,EAAc,EAAM,YACpB,EAAY,EAAM,UAClB,EAAW,EAAY,EAAgC,EAAI,EAAmC,EAC9F,EAAiB,EAAM,YAAY,UAAY,EAC/C,EAAiB,EAAM,YAAY,UAAY,EAE/C,EAAqB,EACvB,EAAU,EAAY,CACtB,EAAsB,EAAY,EAAI,EAAwB,EAAa,EAAU,CAEnF,EAAmB,EACrB,EAAU,EAAU,CACpB,EAAsB,EAAU,EAAI,EAAwB,EAAW,EAAU,CAErF,GAAI,CAAC,GAAsB,CAAC,EAY1B,OAXK,EAAG,OAAO,UACb,EACE,QACA,IAAI,EACF,kEACA,oIACD,CACF,CACD,EAAQ,OAAO,EAGV,CACL,SACD,CAIH,IAAM,EAAiB,GAAkB,EA8GzC,OA5GI,GAAkB,IAAgB,GAC/B,EAAG,OAAO,UACb,EACE,QACA,IAAI,EAAmB,wEAAwE,CAChG,CACD,EAAQ,OAAO,EAGV,CAAE,SAAQ,EAGf,CAAC,GAAkB,EAAmB,EAAY,GAAK,EAAmB,EAAU,EACjF,EAAG,OAAO,UACb,EAAQ,QAAS,IAAI,EAAmB,gEAAgE,CAAC,CACzG,EAAQ,OAAO,EAGV,CAAE,SAAQ,IAGlB,SAAY,CACX,IAAM,EAA6C,EAAc,EAAM,YAAY,QAAS,EAAU,CAChG,EAAkD,EAAc,EAAM,YAAY,QAAS,EAAU,CAGrG,EAAyB,GAFT,MAAM,EAAe,EAAuB,EAAiB,EACjD,UAAU,CACmB,CAI/D,GAAI,IAAqB,KAAO,EAAM,SAAW,IAAM,EAAM,OAAS,YAAgB,CAC/E,EAAG,OAAO,SACb,EAAQ,OAAO,CAGjB,OAIF,GAAI,EAAM,SAAW,IAAM,IAA2B,GAAI,CACnD,EAAG,OAAO,SACb,EAAQ,OAAO,CAGjB,OAGF,IAAM,EAAU,EAA4B,EAAiB,CACvD,EAAW,EAA4B,EAAsB,CAC7D,EAAW,EAA+B,CAC9C,SAAU,EAAM,OAChB,YAAa,EACb,YAAa,EACd,CAAC,CAIF,GAAI,IAAa,GAAI,CACd,EAAG,OAAO,SACb,EAAQ,OAAO,CAGjB,OAKF,IAAM,EAA2B,EAA+B,CAC9D,SAAU,EACV,YAAa,EAA4B,IAAI,CAC7C,YAAa,EACd,CAAC,CAEI,EAAe,CACnB,WAAY,CACV,GAAI,gBACJ,KAAM,gBACP,CACD,SAAU,EAAM,OAChB,UAAW,EAAW,EACtB,UACA,WACA,UAAW,GAAO,CAAG,GACrB,KAAM,EAAE,CACR,YAAa,EAAM,YACnB,GAAI,OAAO,YAAY,CACvB,cAAe,KACf,YAAa,EAAY,cACzB,YAAa,EACb,YAAa,EAAM,YACnB,YAAa,EAAM,YACnB,UAAW,EAAM,UAClB,CAEI,EAAG,OAAO,UACb,EAAQ,QAAS,EAAM,CACvB,EAAQ,OAAO,KAEf,CAAC,MAAO,GAAU,CACf,EAAG,OAAO,UACb,EACE,QACA,IAAI,EAAS,EAAY,QAAS,EAAU,QAAS,CAAE,MAAO,EAAO,QAAS,0BAA2B,CAAC,CAC3G,CACD,EAAQ,OAAO,GAEjB,CAEK,CACL,SACD"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
require(`../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants.cjs`),t=require(`../../errors.cjs`),n=require(`./constants.cjs`);let r=require(`@avalabs/avalanchejs`),i=require(`es-toolkit`);function a(e,t){try{return e()}catch(e){throw t(e)}}function o({amountIn:e,sourceAsset:{decimals:t},targetAsset:{decimals:n}}){return t<n?e*10n**BigInt(n-t):t>n?e/10n**BigInt(t-n):e}function s(e){return e&&e.replace(n.CHAIN_PREFIXES_REGEX,``)}function c(e,t){let n=t?`fuji`:`avax`;return s(e).startsWith(n)}function l(n,r){let i=r?e.AvalancheFujiBlockchainChainIds:e.AvalancheMainnetBlockchainChainIds;if(n===i.C)return`C`;if(n===i.P)return`P`;if(n===i.X)return`X`;throw new t.InvalidParamsError(`Unsupported Avalanche chainId for ${r?`testnet`:`mainnet`}: ${n}`,`Chain ID ${n} is not supported for ${r?`Fuji`:`Mainnet`}. Supported chain IDs are: ${Object.values(i).join(`, `)}.`)}function u(e){return e===`C`?n.AVALANCHE_C_CHAIN_NATIVE_ASSET:n.AVALANCHE_PX_CHAIN_NATIVE_ASSET}function d(r){switch(r){case e.Environment.TEST:return n.AVALANCHE_API_URIS.fuji;case e.Environment.PROD:return n.AVALANCHE_API_URIS.mainnet;default:throw new t.SdkError(`Unsupported environment for Avalanche CCT service.`,t.ErrorCode.INVALID_PARAMS)}}function f(e){return e*n.WEI_PER_NANO_AVAX_BIGINT}function p(e,n){switch(e){case`C`:return n.cBlockchainID;case`P`:return n.pBlockchainID;case`X`:return n.xBlockchainID;default:throw new t.InvalidParamsError(`Unsupported chain alias: ${e}`)}}function m(e,t){return(0,i.orderBy)(e.map(e=>({utxo:e,...r.utils.getUtxoInfo(e)})),[`amount`],[t?`desc`:`asc`]).map(({utxo:e})=>e)}function h(e){return e.map(e=>r.utils.parse(e)[2])}function
|
|
1
|
+
require(`../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants.cjs`),t=require(`../../errors.cjs`),n=require(`./constants.cjs`);let r=require(`@avalabs/avalanchejs`),i=require(`es-toolkit`);function a(e,t){try{return e()}catch(e){throw t(e)}}function o({amountIn:e,sourceAsset:{decimals:t},targetAsset:{decimals:n}}){return t<n?e*10n**BigInt(n-t):t>n?e/10n**BigInt(t-n):e}function s(e){return e&&e.replace(n.CHAIN_PREFIXES_REGEX,``)}function c(e,t){let n=t?`fuji`:`avax`;return s(e).startsWith(n)}function l(n,r){let i=r?e.AvalancheFujiBlockchainChainIds:e.AvalancheMainnetBlockchainChainIds;if(n===i.C)return`C`;if(n===i.P)return`P`;if(n===i.X)return`X`;throw new t.InvalidParamsError(`Unsupported Avalanche chainId for ${r?`testnet`:`mainnet`}: ${n}`,`Chain ID ${n} is not supported for ${r?`Fuji`:`Mainnet`}. Supported chain IDs are: ${Object.values(i).join(`, `)}.`)}function u(e){return e===`C`?n.AVALANCHE_C_CHAIN_NATIVE_ASSET:n.AVALANCHE_PX_CHAIN_NATIVE_ASSET}function d(r){switch(r){case e.Environment.TEST:return n.AVALANCHE_API_URIS.fuji;case e.Environment.PROD:return n.AVALANCHE_API_URIS.mainnet;default:throw new t.SdkError(`Unsupported environment for Avalanche CCT service.`,t.ErrorCode.INVALID_PARAMS)}}function f(e){return e*n.WEI_PER_NANO_AVAX_BIGINT}function p(e,n){switch(e){case`C`:return n.cBlockchainID;case`P`:return n.pBlockchainID;case`X`:return n.xBlockchainID;default:throw new t.InvalidParamsError(`Unsupported chain alias: ${e}`)}}function m(e,t){return(0,i.orderBy)(e.map(e=>({utxo:e,...r.utils.getUtxoInfo(e)})),[`amount`],[t?`desc`:`asc`]).map(({utxo:e})=>e)}function h(e){return e.reduce((e,t)=>e+r.utils.getUtxoInfo(t).amount,0n)}function g(e){return e.map(e=>r.utils.parse(e)[2])}function _(n){switch(n){case e.Environment.TEST:return!0;case e.Environment.PROD:return!1;default:throw new t.SdkError(`Unsupported environment for Avalanche CCT service.`,t.ErrorCode.INVALID_PARAMS)}}function v(e,n){let i=d(e);switch(n){case`C`:return new r.evm.EVMApi(i);case`P`:return new r.pvm.PVMApi(i);case`X`:return new r.avm.AVMApi(i);default:throw new t.InvalidParamsError(`Unsupported chain alias: ${n}`,`Can not get Avalanche provider for unsupported chain alias.`)}}exports.convertNanoAvaxToWei=f,exports.getAddressesAsBuffers=g,exports.getAvalancheApiUrl=d,exports.getAvalancheProvider=v,exports.getChainAlias=l,exports.getChainIdFromContext=p,exports.getEnvironmentIsTestnet=_,exports.getNativeTokenForChainAlias=u,exports.getOutputAmountForAvalancheCct=o,exports.getUtxosTotalAmount=h,exports.sortUTXOsByAmount=m,exports.stripAddressPrefix=s,exports.tryOrThrow=a,exports.xpAddressMatchesNetwork=c;
|
|
2
2
|
//# sourceMappingURL=_utils.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_utils.cjs","names":["CHAIN_PREFIXES_REGEX","AvalancheFujiBlockchainChainIds","AvalancheMainnetBlockchainChainIds","InvalidParamsError","AVALANCHE_C_CHAIN_NATIVE_ASSET","AVALANCHE_PX_CHAIN_NATIVE_ASSET","Environment","AVALANCHE_API_URIS","SdkError","ErrorCode","WEI_PER_NANO_AVAX_BIGINT","utils","evm","pvm","avm"],"sources":["../../../src/transfer-service/avalanche-cct/_utils.ts"],"sourcesContent":["import { avm, evm, pvm, utils, type Context, type Utxo } from '@avalabs/avalanchejs';\nimport { orderBy } from 'es-toolkit';\nimport {\n AvalancheChainIds,\n AvalancheFujiBlockchainChainIds,\n AvalancheMainnetBlockchainChainIds,\n Environment,\n type AvalancheBlockchainAlias,\n} from '../../constants';\nimport type { NativeAsset } from '../../types/asset';\nimport type { Caip2ChainId } from '../../types/caip';\nimport type { XpAddress } from './types';\nimport {\n AVALANCHE_API_URIS,\n AVALANCHE_C_CHAIN_NATIVE_ASSET,\n AVALANCHE_PX_CHAIN_NATIVE_ASSET,\n CHAIN_PREFIXES_REGEX,\n WEI_PER_NANO_AVAX_BIGINT,\n} from './constants';\nimport { ErrorCode, InvalidParamsError, SdkError } from '../../errors';\n\nexport function tryOrThrow<T>(fn: () => T, errorHandler: (error: unknown) => SdkError): T {\n try {\n return fn();\n } catch (error) {\n throw errorHandler(error);\n }\n}\n\n/**\n * Remaps Avalanche C-Chain CAIP2 chain IDs to their corresponding EIP-155 chain IDs.\n */\nexport function mapAvalancheBlockchainChainIdToEip155ChainId(caip2ChainId: Caip2ChainId): Caip2ChainId {\n switch (caip2ChainId) {\n case 'avax:8aDU0Kqh-5d23op-B-r-4YbQFRbsgF9a': {\n return AvalancheChainIds.MAINNET;\n }\n\n case 'avax:YRLfeDBJpfEqUWe2FYR1OpXsnDDZeKWd': {\n return AvalancheChainIds.FUJI;\n }\n\n default: {\n return caip2ChainId;\n }\n }\n}\n\nexport function getOutputAmountForAvalancheCct({\n amountIn,\n sourceAsset: { decimals: sourceDecimals },\n targetAsset: { decimals: targetDecimals },\n}: {\n amountIn: bigint;\n sourceAsset: NativeAsset;\n targetAsset: NativeAsset;\n}): bigint {\n if (sourceDecimals < targetDecimals) {\n return amountIn * 10n ** BigInt(targetDecimals - sourceDecimals);\n }\n\n if (sourceDecimals > targetDecimals) {\n return amountIn / 10n ** BigInt(sourceDecimals - targetDecimals);\n }\n\n return amountIn;\n}\n\nexport function stripAddressPrefix<T extends string>(address: T): T {\n return address ? (address.replace(CHAIN_PREFIXES_REGEX, '') as T) : address;\n}\n\nexport function xpAddressMatchesNetwork(xpAddress: XpAddress, isTestnet: boolean): boolean {\n const prefix = isTestnet ? 'fuji' : 'avax';\n return stripAddressPrefix(xpAddress).startsWith(prefix);\n}\n\nexport function getChainAlias(chainId: Caip2ChainId, isTestnet: boolean): AvalancheBlockchainAlias {\n const chainIds = isTestnet ? AvalancheFujiBlockchainChainIds : AvalancheMainnetBlockchainChainIds;\n\n if (chainId === chainIds.C) {\n return 'C';\n }\n\n if (chainId === chainIds.P) {\n return 'P';\n }\n\n if (chainId === chainIds.X) {\n return 'X';\n }\n throw new InvalidParamsError(\n `Unsupported Avalanche chainId for ${isTestnet ? 'testnet' : 'mainnet'}: ${chainId}`,\n `Chain ID ${chainId} is not supported for ${\n isTestnet ? 'Fuji' : 'Mainnet'\n }. Supported chain IDs are: ${Object.values(chainIds).join(', ')}.`,\n );\n}\n\nexport function getNativeTokenForChainAlias(chainAlias: AvalancheBlockchainAlias): NativeAsset {\n if (chainAlias === 'C') {\n return AVALANCHE_C_CHAIN_NATIVE_ASSET;\n }\n\n return AVALANCHE_PX_CHAIN_NATIVE_ASSET;\n}\n\nexport function getAvalancheApiUrl(environment: Environment): string {\n switch (environment) {\n case Environment.TEST: {\n return AVALANCHE_API_URIS.fuji;\n }\n\n case Environment.PROD: {\n return AVALANCHE_API_URIS.mainnet;\n }\n\n default: {\n throw new SdkError('Unsupported environment for Avalanche CCT service.', ErrorCode.INVALID_PARAMS);\n }\n }\n}\n\nexport function convertNanoAvaxToWei(nanoAvaxAmount: bigint): bigint {\n return nanoAvaxAmount * WEI_PER_NANO_AVAX_BIGINT;\n}\n\nexport function convertWeiToNanoAvax(weiAmount: bigint): bigint {\n return weiAmount / WEI_PER_NANO_AVAX_BIGINT;\n}\n\nexport function getChainIdFromContext(chainAlias: AvalancheBlockchainAlias, context: Context.Context): string {\n switch (chainAlias) {\n case 'C': {\n return context.cBlockchainID;\n }\n case 'P': {\n return context.pBlockchainID;\n }\n case 'X': {\n return context.xBlockchainID;\n }\n default: {\n throw new InvalidParamsError(`Unsupported chain alias: ${chainAlias}`);\n }\n }\n}\n\nexport function sortUTXOsByAmount(utxos: Utxo[], isDescending: boolean): Utxo[] {\n const utxosWithInfo = utxos.map((utxo) => ({\n utxo,\n ...utils.getUtxoInfo(utxo),\n }));\n\n return orderBy(utxosWithInfo, ['amount'], [isDescending ? 'desc' : 'asc']).map(({ utxo }) => utxo);\n}\n\nexport function getAddressesAsBuffers(addresses: string[]): Uint8Array[] {\n return addresses.map((address) => utils.parse(address)[2]);\n}\n\nexport function getEnvironmentIsTestnet(environment: Environment): boolean {\n switch (environment) {\n case Environment.TEST: {\n return true;\n }\n\n case Environment.PROD: {\n return false;\n }\n\n default: {\n throw new SdkError('Unsupported environment for Avalanche CCT service.', ErrorCode.INVALID_PARAMS);\n }\n }\n}\n\nexport function getAvalancheProvider(environment: Environment, chainAlias: 'C'): evm.EVMApi;\nexport function getAvalancheProvider(environment: Environment, chainAlias: 'P'): pvm.PVMApi;\nexport function getAvalancheProvider(environment: Environment, chainAlias: 'X'): avm.AVMApi;\nexport function getAvalancheProvider(\n environment: Environment,\n chainAlias: AvalancheBlockchainAlias,\n): avm.AVMApi | pvm.PVMApi | evm.EVMApi {\n const baseUrl = getAvalancheApiUrl(environment);\n\n switch (chainAlias) {\n case 'C': {\n return new evm.EVMApi(baseUrl);\n }\n case 'P': {\n return new pvm.PVMApi(baseUrl);\n }\n case 'X': {\n return new avm.AVMApi(baseUrl);\n }\n default: {\n throw new InvalidParamsError(\n `Unsupported chain alias: ${chainAlias}`,\n 'Can not get Avalanche provider for unsupported chain alias.',\n );\n }\n }\n}\n"],"mappings":"gNAqBA,SAAgB,EAAc,EAAa,EAA+C,CACxF,GAAI,CACF,OAAO,GAAI,OACJ,EAAO,CACd,MAAM,EAAa,EAAM,EAuB7B,SAAgB,EAA+B,CAC7C,WACA,YAAa,CAAE,SAAU,GACzB,YAAa,CAAE,SAAU,IAKhB,CAST,OARI,EAAiB,EACZ,EAAW,KAAO,OAAO,EAAiB,EAAe,CAG9D,EAAiB,EACZ,EAAW,KAAO,OAAO,EAAiB,EAAe,CAG3D,EAGT,SAAgB,EAAqC,EAAe,CAClE,OAAO,GAAW,EAAQ,QAAQA,EAAAA,qBAAsB,GAAG,CAG7D,SAAgB,EAAwB,EAAsB,EAA6B,CACzF,IAAM,EAAS,EAAY,OAAS,OACpC,OAAO,EAAmB,EAAU,CAAC,WAAW,EAAO,CAGzD,SAAgB,EAAc,EAAuB,EAA8C,CACjG,IAAM,EAAW,EAAYC,EAAAA,gCAAkCC,EAAAA,mCAE/D,GAAI,IAAY,EAAS,EACvB,MAAO,IAGT,GAAI,IAAY,EAAS,EACvB,MAAO,IAGT,GAAI,IAAY,EAAS,EACvB,MAAO,IAET,MAAM,IAAIC,EAAAA,mBACR,qCAAqC,EAAY,UAAY,UAAU,IAAI,IAC3E,YAAY,EAAQ,wBAClB,EAAY,OAAS,UACtB,6BAA6B,OAAO,OAAO,EAAS,CAAC,KAAK,KAAK,CAAC,GAClE,CAGH,SAAgB,EAA4B,EAAmD,CAK7F,OAJI,IAAe,IACVC,EAAAA,+BAGFC,EAAAA,gCAGT,SAAgB,EAAmB,EAAkC,CACnE,OAAQ,EAAR,CACE,KAAKC,EAAAA,YAAY,KACf,OAAOC,EAAAA,mBAAmB,KAG5B,KAAKD,EAAAA,YAAY,KACf,OAAOC,EAAAA,mBAAmB,QAG5B,QACE,MAAM,IAAIC,EAAAA,SAAS,qDAAsDC,EAAAA,UAAU,eAAe,EAKxG,SAAgB,EAAqB,EAAgC,CACnE,OAAO,EAAiBC,EAAAA,yBAO1B,SAAgB,EAAsB,EAAsC,EAAkC,CAC5G,OAAQ,EAAR,CACE,IAAK,IACH,OAAO,EAAQ,cAEjB,IAAK,IACH,OAAO,EAAQ,cAEjB,IAAK,IACH,OAAO,EAAQ,cAEjB,QACE,MAAM,IAAIP,EAAAA,mBAAmB,4BAA4B,IAAa,EAK5E,SAAgB,EAAkB,EAAe,EAA+B,CAM9E,OAAA,EAAA,EAAA,SALsB,EAAM,IAAK,IAAU,CACzC,OACA,GAAGQ,EAAAA,MAAM,YAAY,EAAK,CAC3B,EAAE,CAE2B,CAAC,SAAS,CAAE,CAAC,EAAe,OAAS,MAAM,CAAC,CAAC,KAAK,CAAE,UAAW,EAAK,CAGpG,SAAgB,EAAsB,EAAmC,CACvE,OAAO,EAAU,IAAK,GAAYA,EAAAA,MAAM,MAAM,EAAQ,CAAC,GAAG,CAG5D,SAAgB,EAAwB,EAAmC,CACzE,OAAQ,EAAR,CACE,KAAKL,EAAAA,YAAY,KACf,MAAO,GAGT,KAAKA,EAAAA,YAAY,KACf,MAAO,GAGT,QACE,MAAM,IAAIE,EAAAA,SAAS,qDAAsDC,EAAAA,UAAU,eAAe,EAQxG,SAAgB,EACd,EACA,EACsC,CACtC,IAAM,EAAU,EAAmB,EAAY,CAE/C,OAAQ,EAAR,CACE,IAAK,IACH,OAAO,IAAIG,EAAAA,IAAI,OAAO,EAAQ,CAEhC,IAAK,IACH,OAAO,IAAIC,EAAAA,IAAI,OAAO,EAAQ,CAEhC,IAAK,IACH,OAAO,IAAIC,EAAAA,IAAI,OAAO,EAAQ,CAEhC,QACE,MAAM,IAAIX,EAAAA,mBACR,4BAA4B,IAC5B,8DACD"}
|
|
1
|
+
{"version":3,"file":"_utils.cjs","names":["CHAIN_PREFIXES_REGEX","AvalancheFujiBlockchainChainIds","AvalancheMainnetBlockchainChainIds","InvalidParamsError","AVALANCHE_C_CHAIN_NATIVE_ASSET","AVALANCHE_PX_CHAIN_NATIVE_ASSET","Environment","AVALANCHE_API_URIS","SdkError","ErrorCode","WEI_PER_NANO_AVAX_BIGINT","utils","evm","pvm","avm"],"sources":["../../../src/transfer-service/avalanche-cct/_utils.ts"],"sourcesContent":["import { avm, evm, pvm, utils, type Context, type Utxo } from '@avalabs/avalanchejs';\nimport { orderBy } from 'es-toolkit';\nimport {\n AvalancheChainIds,\n AvalancheFujiBlockchainChainIds,\n AvalancheMainnetBlockchainChainIds,\n Environment,\n type AvalancheBlockchainAlias,\n} from '../../constants';\nimport type { NativeAsset } from '../../types/asset';\nimport type { Caip2ChainId } from '../../types/caip';\nimport type { XpAddress } from './types';\nimport {\n AVALANCHE_API_URIS,\n AVALANCHE_C_CHAIN_NATIVE_ASSET,\n AVALANCHE_PX_CHAIN_NATIVE_ASSET,\n CHAIN_PREFIXES_REGEX,\n WEI_PER_NANO_AVAX_BIGINT,\n} from './constants';\nimport { ErrorCode, InvalidParamsError, SdkError } from '../../errors';\n\nexport function tryOrThrow<T>(fn: () => T, errorHandler: (error: unknown) => SdkError): T {\n try {\n return fn();\n } catch (error) {\n throw errorHandler(error);\n }\n}\n\n/**\n * Remaps Avalanche C-Chain CAIP2 chain IDs to their corresponding EIP-155 chain IDs.\n */\nexport function mapAvalancheBlockchainChainIdToEip155ChainId(caip2ChainId: Caip2ChainId): Caip2ChainId {\n switch (caip2ChainId) {\n case 'avax:8aDU0Kqh-5d23op-B-r-4YbQFRbsgF9a': {\n return AvalancheChainIds.MAINNET;\n }\n\n case 'avax:YRLfeDBJpfEqUWe2FYR1OpXsnDDZeKWd': {\n return AvalancheChainIds.FUJI;\n }\n\n default: {\n return caip2ChainId;\n }\n }\n}\n\nexport function getOutputAmountForAvalancheCct({\n amountIn,\n sourceAsset: { decimals: sourceDecimals },\n targetAsset: { decimals: targetDecimals },\n}: {\n amountIn: bigint;\n sourceAsset: NativeAsset;\n targetAsset: NativeAsset;\n}): bigint {\n if (sourceDecimals < targetDecimals) {\n return amountIn * 10n ** BigInt(targetDecimals - sourceDecimals);\n }\n\n if (sourceDecimals > targetDecimals) {\n return amountIn / 10n ** BigInt(sourceDecimals - targetDecimals);\n }\n\n return amountIn;\n}\n\nexport function stripAddressPrefix<T extends string>(address: T): T {\n return address ? (address.replace(CHAIN_PREFIXES_REGEX, '') as T) : address;\n}\n\nexport function xpAddressMatchesNetwork(xpAddress: XpAddress, isTestnet: boolean): boolean {\n const prefix = isTestnet ? 'fuji' : 'avax';\n return stripAddressPrefix(xpAddress).startsWith(prefix);\n}\n\nexport function getChainAlias(chainId: Caip2ChainId, isTestnet: boolean): AvalancheBlockchainAlias {\n const chainIds = isTestnet ? AvalancheFujiBlockchainChainIds : AvalancheMainnetBlockchainChainIds;\n\n if (chainId === chainIds.C) {\n return 'C';\n }\n\n if (chainId === chainIds.P) {\n return 'P';\n }\n\n if (chainId === chainIds.X) {\n return 'X';\n }\n throw new InvalidParamsError(\n `Unsupported Avalanche chainId for ${isTestnet ? 'testnet' : 'mainnet'}: ${chainId}`,\n `Chain ID ${chainId} is not supported for ${\n isTestnet ? 'Fuji' : 'Mainnet'\n }. Supported chain IDs are: ${Object.values(chainIds).join(', ')}.`,\n );\n}\n\nexport function getNativeTokenForChainAlias(chainAlias: AvalancheBlockchainAlias): NativeAsset {\n if (chainAlias === 'C') {\n return AVALANCHE_C_CHAIN_NATIVE_ASSET;\n }\n\n return AVALANCHE_PX_CHAIN_NATIVE_ASSET;\n}\n\nexport function getAvalancheApiUrl(environment: Environment): string {\n switch (environment) {\n case Environment.TEST: {\n return AVALANCHE_API_URIS.fuji;\n }\n\n case Environment.PROD: {\n return AVALANCHE_API_URIS.mainnet;\n }\n\n default: {\n throw new SdkError('Unsupported environment for Avalanche CCT service.', ErrorCode.INVALID_PARAMS);\n }\n }\n}\n\nexport function convertNanoAvaxToWei(nanoAvaxAmount: bigint): bigint {\n return nanoAvaxAmount * WEI_PER_NANO_AVAX_BIGINT;\n}\n\nexport function convertWeiToNanoAvax(weiAmount: bigint): bigint {\n return weiAmount / WEI_PER_NANO_AVAX_BIGINT;\n}\n\nexport function getChainIdFromContext(chainAlias: AvalancheBlockchainAlias, context: Context.Context): string {\n switch (chainAlias) {\n case 'C': {\n return context.cBlockchainID;\n }\n case 'P': {\n return context.pBlockchainID;\n }\n case 'X': {\n return context.xBlockchainID;\n }\n default: {\n throw new InvalidParamsError(`Unsupported chain alias: ${chainAlias}`);\n }\n }\n}\n\nexport function sortUTXOsByAmount(utxos: Utxo[], isDescending: boolean): Utxo[] {\n const utxosWithInfo = utxos.map((utxo) => ({\n utxo,\n ...utils.getUtxoInfo(utxo),\n }));\n\n return orderBy(utxosWithInfo, ['amount'], [isDescending ? 'desc' : 'asc']).map(({ utxo }) => utxo);\n}\n\nexport function getUtxosTotalAmount(utxos: Utxo[]): bigint {\n return utxos.reduce((total, utxo) => {\n const utxoInfo = utils.getUtxoInfo(utxo);\n\n return total + utxoInfo.amount;\n }, 0n);\n}\n\nexport function getAddressesAsBuffers(addresses: string[]): Uint8Array[] {\n return addresses.map((address) => utils.parse(address)[2]);\n}\n\nexport function getEnvironmentIsTestnet(environment: Environment): boolean {\n switch (environment) {\n case Environment.TEST: {\n return true;\n }\n\n case Environment.PROD: {\n return false;\n }\n\n default: {\n throw new SdkError('Unsupported environment for Avalanche CCT service.', ErrorCode.INVALID_PARAMS);\n }\n }\n}\n\nexport function getAvalancheProvider(environment: Environment, chainAlias: 'C'): evm.EVMApi;\nexport function getAvalancheProvider(environment: Environment, chainAlias: 'P'): pvm.PVMApi;\nexport function getAvalancheProvider(environment: Environment, chainAlias: 'X'): avm.AVMApi;\nexport function getAvalancheProvider(\n environment: Environment,\n chainAlias: AvalancheBlockchainAlias,\n): avm.AVMApi | pvm.PVMApi | evm.EVMApi {\n const baseUrl = getAvalancheApiUrl(environment);\n\n switch (chainAlias) {\n case 'C': {\n return new evm.EVMApi(baseUrl);\n }\n case 'P': {\n return new pvm.PVMApi(baseUrl);\n }\n case 'X': {\n return new avm.AVMApi(baseUrl);\n }\n default: {\n throw new InvalidParamsError(\n `Unsupported chain alias: ${chainAlias}`,\n 'Can not get Avalanche provider for unsupported chain alias.',\n );\n }\n }\n}\n"],"mappings":"gNAqBA,SAAgB,EAAc,EAAa,EAA+C,CACxF,GAAI,CACF,OAAO,GAAI,OACJ,EAAO,CACd,MAAM,EAAa,EAAM,EAuB7B,SAAgB,EAA+B,CAC7C,WACA,YAAa,CAAE,SAAU,GACzB,YAAa,CAAE,SAAU,IAKhB,CAST,OARI,EAAiB,EACZ,EAAW,KAAO,OAAO,EAAiB,EAAe,CAG9D,EAAiB,EACZ,EAAW,KAAO,OAAO,EAAiB,EAAe,CAG3D,EAGT,SAAgB,EAAqC,EAAe,CAClE,OAAO,GAAW,EAAQ,QAAQA,EAAAA,qBAAsB,GAAG,CAG7D,SAAgB,EAAwB,EAAsB,EAA6B,CACzF,IAAM,EAAS,EAAY,OAAS,OACpC,OAAO,EAAmB,EAAU,CAAC,WAAW,EAAO,CAGzD,SAAgB,EAAc,EAAuB,EAA8C,CACjG,IAAM,EAAW,EAAYC,EAAAA,gCAAkCC,EAAAA,mCAE/D,GAAI,IAAY,EAAS,EACvB,MAAO,IAGT,GAAI,IAAY,EAAS,EACvB,MAAO,IAGT,GAAI,IAAY,EAAS,EACvB,MAAO,IAET,MAAM,IAAIC,EAAAA,mBACR,qCAAqC,EAAY,UAAY,UAAU,IAAI,IAC3E,YAAY,EAAQ,wBAClB,EAAY,OAAS,UACtB,6BAA6B,OAAO,OAAO,EAAS,CAAC,KAAK,KAAK,CAAC,GAClE,CAGH,SAAgB,EAA4B,EAAmD,CAK7F,OAJI,IAAe,IACVC,EAAAA,+BAGFC,EAAAA,gCAGT,SAAgB,EAAmB,EAAkC,CACnE,OAAQ,EAAR,CACE,KAAKC,EAAAA,YAAY,KACf,OAAOC,EAAAA,mBAAmB,KAG5B,KAAKD,EAAAA,YAAY,KACf,OAAOC,EAAAA,mBAAmB,QAG5B,QACE,MAAM,IAAIC,EAAAA,SAAS,qDAAsDC,EAAAA,UAAU,eAAe,EAKxG,SAAgB,EAAqB,EAAgC,CACnE,OAAO,EAAiBC,EAAAA,yBAO1B,SAAgB,EAAsB,EAAsC,EAAkC,CAC5G,OAAQ,EAAR,CACE,IAAK,IACH,OAAO,EAAQ,cAEjB,IAAK,IACH,OAAO,EAAQ,cAEjB,IAAK,IACH,OAAO,EAAQ,cAEjB,QACE,MAAM,IAAIP,EAAAA,mBAAmB,4BAA4B,IAAa,EAK5E,SAAgB,EAAkB,EAAe,EAA+B,CAM9E,OAAA,EAAA,EAAA,SALsB,EAAM,IAAK,IAAU,CACzC,OACA,GAAGQ,EAAAA,MAAM,YAAY,EAAK,CAC3B,EAAE,CAE2B,CAAC,SAAS,CAAE,CAAC,EAAe,OAAS,MAAM,CAAC,CAAC,KAAK,CAAE,UAAW,EAAK,CAGpG,SAAgB,EAAoB,EAAuB,CACzD,OAAO,EAAM,QAAQ,EAAO,IAGnB,EAFUA,EAAAA,MAAM,YAAY,EAAK,CAEhB,OACvB,GAAG,CAGR,SAAgB,EAAsB,EAAmC,CACvE,OAAO,EAAU,IAAK,GAAYA,EAAAA,MAAM,MAAM,EAAQ,CAAC,GAAG,CAG5D,SAAgB,EAAwB,EAAmC,CACzE,OAAQ,EAAR,CACE,KAAKL,EAAAA,YAAY,KACf,MAAO,GAGT,KAAKA,EAAAA,YAAY,KACf,MAAO,GAGT,QACE,MAAM,IAAIE,EAAAA,SAAS,qDAAsDC,EAAAA,UAAU,eAAe,EAQxG,SAAgB,EACd,EACA,EACsC,CACtC,IAAM,EAAU,EAAmB,EAAY,CAE/C,OAAQ,EAAR,CACE,IAAK,IACH,OAAO,IAAIG,EAAAA,IAAI,OAAO,EAAQ,CAEhC,IAAK,IACH,OAAO,IAAIC,EAAAA,IAAI,OAAO,EAAQ,CAEhC,IAAK,IACH,OAAO,IAAIC,EAAAA,IAAI,OAAO,EAAQ,CAEhC,QACE,MAAM,IAAIX,EAAAA,mBACR,4BAA4B,IAC5B,8DACD"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{AvalancheFujiBlockchainChainIds as e,AvalancheMainnetBlockchainChainIds as t,Environment as n}from"../../constants.js";import{ErrorCode as r,InvalidParamsError as i,SdkError as a}from"../../errors.js";import{AVALANCHE_API_URIS as o,AVALANCHE_C_CHAIN_NATIVE_ASSET as s,AVALANCHE_PX_CHAIN_NATIVE_ASSET as c,CHAIN_PREFIXES_REGEX as l,WEI_PER_NANO_AVAX_BIGINT as u}from"./constants.js";import{avm as d,evm as f,pvm as p,utils as m}from"@avalabs/avalanchejs";import{orderBy as h}from"es-toolkit";function g(e,t){try{return e()}catch(e){throw t(e)}}function _({amountIn:e,sourceAsset:{decimals:t},targetAsset:{decimals:n}}){return t<n?e*10n**BigInt(n-t):t>n?e/10n**BigInt(t-n):e}function v(e){return e&&e.replace(l,``)}function y(e,t){let n=t?`fuji`:`avax`;return v(e).startsWith(n)}function b(n,r){let a=r?e:t;if(n===a.C)return`C`;if(n===a.P)return`P`;if(n===a.X)return`X`;throw new i(`Unsupported Avalanche chainId for ${r?`testnet`:`mainnet`}: ${n}`,`Chain ID ${n} is not supported for ${r?`Fuji`:`Mainnet`}. Supported chain IDs are: ${Object.values(a).join(`, `)}.`)}function x(e){return e===`C`?s:c}function S(e){switch(e){case n.TEST:return o.fuji;case n.PROD:return o.mainnet;default:throw new a(`Unsupported environment for Avalanche CCT service.`,r.INVALID_PARAMS)}}function C(e){return e*u}function w(e,t){switch(e){case`C`:return t.cBlockchainID;case`P`:return t.pBlockchainID;case`X`:return t.xBlockchainID;default:throw new i(`Unsupported chain alias: ${e}`)}}function T(e,t){return h(e.map(e=>({utxo:e,...m.getUtxoInfo(e)})),[`amount`],[t?`desc`:`asc`]).map(({utxo:e})=>e)}function E(e){return e.map(e=>m.parse(e)[2])}function
|
|
1
|
+
import{AvalancheFujiBlockchainChainIds as e,AvalancheMainnetBlockchainChainIds as t,Environment as n}from"../../constants.js";import{ErrorCode as r,InvalidParamsError as i,SdkError as a}from"../../errors.js";import{AVALANCHE_API_URIS as o,AVALANCHE_C_CHAIN_NATIVE_ASSET as s,AVALANCHE_PX_CHAIN_NATIVE_ASSET as c,CHAIN_PREFIXES_REGEX as l,WEI_PER_NANO_AVAX_BIGINT as u}from"./constants.js";import{avm as d,evm as f,pvm as p,utils as m}from"@avalabs/avalanchejs";import{orderBy as h}from"es-toolkit";function g(e,t){try{return e()}catch(e){throw t(e)}}function _({amountIn:e,sourceAsset:{decimals:t},targetAsset:{decimals:n}}){return t<n?e*10n**BigInt(n-t):t>n?e/10n**BigInt(t-n):e}function v(e){return e&&e.replace(l,``)}function y(e,t){let n=t?`fuji`:`avax`;return v(e).startsWith(n)}function b(n,r){let a=r?e:t;if(n===a.C)return`C`;if(n===a.P)return`P`;if(n===a.X)return`X`;throw new i(`Unsupported Avalanche chainId for ${r?`testnet`:`mainnet`}: ${n}`,`Chain ID ${n} is not supported for ${r?`Fuji`:`Mainnet`}. Supported chain IDs are: ${Object.values(a).join(`, `)}.`)}function x(e){return e===`C`?s:c}function S(e){switch(e){case n.TEST:return o.fuji;case n.PROD:return o.mainnet;default:throw new a(`Unsupported environment for Avalanche CCT service.`,r.INVALID_PARAMS)}}function C(e){return e*u}function w(e,t){switch(e){case`C`:return t.cBlockchainID;case`P`:return t.pBlockchainID;case`X`:return t.xBlockchainID;default:throw new i(`Unsupported chain alias: ${e}`)}}function T(e,t){return h(e.map(e=>({utxo:e,...m.getUtxoInfo(e)})),[`amount`],[t?`desc`:`asc`]).map(({utxo:e})=>e)}function E(e){return e.reduce((e,t)=>e+m.getUtxoInfo(t).amount,0n)}function D(e){return e.map(e=>m.parse(e)[2])}function O(e){switch(e){case n.TEST:return!0;case n.PROD:return!1;default:throw new a(`Unsupported environment for Avalanche CCT service.`,r.INVALID_PARAMS)}}function k(e,t){let n=S(e);switch(t){case`C`:return new f.EVMApi(n);case`P`:return new p.PVMApi(n);case`X`:return new d.AVMApi(n);default:throw new i(`Unsupported chain alias: ${t}`,`Can not get Avalanche provider for unsupported chain alias.`)}}export{C as convertNanoAvaxToWei,D as getAddressesAsBuffers,S as getAvalancheApiUrl,k as getAvalancheProvider,b as getChainAlias,w as getChainIdFromContext,O as getEnvironmentIsTestnet,x as getNativeTokenForChainAlias,_ as getOutputAmountForAvalancheCct,E as getUtxosTotalAmount,T as sortUTXOsByAmount,v as stripAddressPrefix,g as tryOrThrow,y as xpAddressMatchesNetwork};
|
|
2
2
|
//# sourceMappingURL=_utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_utils.js","names":[],"sources":["../../../src/transfer-service/avalanche-cct/_utils.ts"],"sourcesContent":["import { avm, evm, pvm, utils, type Context, type Utxo } from '@avalabs/avalanchejs';\nimport { orderBy } from 'es-toolkit';\nimport {\n AvalancheChainIds,\n AvalancheFujiBlockchainChainIds,\n AvalancheMainnetBlockchainChainIds,\n Environment,\n type AvalancheBlockchainAlias,\n} from '../../constants';\nimport type { NativeAsset } from '../../types/asset';\nimport type { Caip2ChainId } from '../../types/caip';\nimport type { XpAddress } from './types';\nimport {\n AVALANCHE_API_URIS,\n AVALANCHE_C_CHAIN_NATIVE_ASSET,\n AVALANCHE_PX_CHAIN_NATIVE_ASSET,\n CHAIN_PREFIXES_REGEX,\n WEI_PER_NANO_AVAX_BIGINT,\n} from './constants';\nimport { ErrorCode, InvalidParamsError, SdkError } from '../../errors';\n\nexport function tryOrThrow<T>(fn: () => T, errorHandler: (error: unknown) => SdkError): T {\n try {\n return fn();\n } catch (error) {\n throw errorHandler(error);\n }\n}\n\n/**\n * Remaps Avalanche C-Chain CAIP2 chain IDs to their corresponding EIP-155 chain IDs.\n */\nexport function mapAvalancheBlockchainChainIdToEip155ChainId(caip2ChainId: Caip2ChainId): Caip2ChainId {\n switch (caip2ChainId) {\n case 'avax:8aDU0Kqh-5d23op-B-r-4YbQFRbsgF9a': {\n return AvalancheChainIds.MAINNET;\n }\n\n case 'avax:YRLfeDBJpfEqUWe2FYR1OpXsnDDZeKWd': {\n return AvalancheChainIds.FUJI;\n }\n\n default: {\n return caip2ChainId;\n }\n }\n}\n\nexport function getOutputAmountForAvalancheCct({\n amountIn,\n sourceAsset: { decimals: sourceDecimals },\n targetAsset: { decimals: targetDecimals },\n}: {\n amountIn: bigint;\n sourceAsset: NativeAsset;\n targetAsset: NativeAsset;\n}): bigint {\n if (sourceDecimals < targetDecimals) {\n return amountIn * 10n ** BigInt(targetDecimals - sourceDecimals);\n }\n\n if (sourceDecimals > targetDecimals) {\n return amountIn / 10n ** BigInt(sourceDecimals - targetDecimals);\n }\n\n return amountIn;\n}\n\nexport function stripAddressPrefix<T extends string>(address: T): T {\n return address ? (address.replace(CHAIN_PREFIXES_REGEX, '') as T) : address;\n}\n\nexport function xpAddressMatchesNetwork(xpAddress: XpAddress, isTestnet: boolean): boolean {\n const prefix = isTestnet ? 'fuji' : 'avax';\n return stripAddressPrefix(xpAddress).startsWith(prefix);\n}\n\nexport function getChainAlias(chainId: Caip2ChainId, isTestnet: boolean): AvalancheBlockchainAlias {\n const chainIds = isTestnet ? AvalancheFujiBlockchainChainIds : AvalancheMainnetBlockchainChainIds;\n\n if (chainId === chainIds.C) {\n return 'C';\n }\n\n if (chainId === chainIds.P) {\n return 'P';\n }\n\n if (chainId === chainIds.X) {\n return 'X';\n }\n throw new InvalidParamsError(\n `Unsupported Avalanche chainId for ${isTestnet ? 'testnet' : 'mainnet'}: ${chainId}`,\n `Chain ID ${chainId} is not supported for ${\n isTestnet ? 'Fuji' : 'Mainnet'\n }. Supported chain IDs are: ${Object.values(chainIds).join(', ')}.`,\n );\n}\n\nexport function getNativeTokenForChainAlias(chainAlias: AvalancheBlockchainAlias): NativeAsset {\n if (chainAlias === 'C') {\n return AVALANCHE_C_CHAIN_NATIVE_ASSET;\n }\n\n return AVALANCHE_PX_CHAIN_NATIVE_ASSET;\n}\n\nexport function getAvalancheApiUrl(environment: Environment): string {\n switch (environment) {\n case Environment.TEST: {\n return AVALANCHE_API_URIS.fuji;\n }\n\n case Environment.PROD: {\n return AVALANCHE_API_URIS.mainnet;\n }\n\n default: {\n throw new SdkError('Unsupported environment for Avalanche CCT service.', ErrorCode.INVALID_PARAMS);\n }\n }\n}\n\nexport function convertNanoAvaxToWei(nanoAvaxAmount: bigint): bigint {\n return nanoAvaxAmount * WEI_PER_NANO_AVAX_BIGINT;\n}\n\nexport function convertWeiToNanoAvax(weiAmount: bigint): bigint {\n return weiAmount / WEI_PER_NANO_AVAX_BIGINT;\n}\n\nexport function getChainIdFromContext(chainAlias: AvalancheBlockchainAlias, context: Context.Context): string {\n switch (chainAlias) {\n case 'C': {\n return context.cBlockchainID;\n }\n case 'P': {\n return context.pBlockchainID;\n }\n case 'X': {\n return context.xBlockchainID;\n }\n default: {\n throw new InvalidParamsError(`Unsupported chain alias: ${chainAlias}`);\n }\n }\n}\n\nexport function sortUTXOsByAmount(utxos: Utxo[], isDescending: boolean): Utxo[] {\n const utxosWithInfo = utxos.map((utxo) => ({\n utxo,\n ...utils.getUtxoInfo(utxo),\n }));\n\n return orderBy(utxosWithInfo, ['amount'], [isDescending ? 'desc' : 'asc']).map(({ utxo }) => utxo);\n}\n\nexport function getAddressesAsBuffers(addresses: string[]): Uint8Array[] {\n return addresses.map((address) => utils.parse(address)[2]);\n}\n\nexport function getEnvironmentIsTestnet(environment: Environment): boolean {\n switch (environment) {\n case Environment.TEST: {\n return true;\n }\n\n case Environment.PROD: {\n return false;\n }\n\n default: {\n throw new SdkError('Unsupported environment for Avalanche CCT service.', ErrorCode.INVALID_PARAMS);\n }\n }\n}\n\nexport function getAvalancheProvider(environment: Environment, chainAlias: 'C'): evm.EVMApi;\nexport function getAvalancheProvider(environment: Environment, chainAlias: 'P'): pvm.PVMApi;\nexport function getAvalancheProvider(environment: Environment, chainAlias: 'X'): avm.AVMApi;\nexport function getAvalancheProvider(\n environment: Environment,\n chainAlias: AvalancheBlockchainAlias,\n): avm.AVMApi | pvm.PVMApi | evm.EVMApi {\n const baseUrl = getAvalancheApiUrl(environment);\n\n switch (chainAlias) {\n case 'C': {\n return new evm.EVMApi(baseUrl);\n }\n case 'P': {\n return new pvm.PVMApi(baseUrl);\n }\n case 'X': {\n return new avm.AVMApi(baseUrl);\n }\n default: {\n throw new InvalidParamsError(\n `Unsupported chain alias: ${chainAlias}`,\n 'Can not get Avalanche provider for unsupported chain alias.',\n );\n }\n }\n}\n"],"mappings":"kfAqBA,SAAgB,EAAc,EAAa,EAA+C,CACxF,GAAI,CACF,OAAO,GAAI,OACJ,EAAO,CACd,MAAM,EAAa,EAAM,EAuB7B,SAAgB,EAA+B,CAC7C,WACA,YAAa,CAAE,SAAU,GACzB,YAAa,CAAE,SAAU,IAKhB,CAST,OARI,EAAiB,EACZ,EAAW,KAAO,OAAO,EAAiB,EAAe,CAG9D,EAAiB,EACZ,EAAW,KAAO,OAAO,EAAiB,EAAe,CAG3D,EAGT,SAAgB,EAAqC,EAAe,CAClE,OAAO,GAAW,EAAQ,QAAQ,EAAsB,GAAG,CAG7D,SAAgB,EAAwB,EAAsB,EAA6B,CACzF,IAAM,EAAS,EAAY,OAAS,OACpC,OAAO,EAAmB,EAAU,CAAC,WAAW,EAAO,CAGzD,SAAgB,EAAc,EAAuB,EAA8C,CACjG,IAAM,EAAW,EAAY,EAAkC,EAE/D,GAAI,IAAY,EAAS,EACvB,MAAO,IAGT,GAAI,IAAY,EAAS,EACvB,MAAO,IAGT,GAAI,IAAY,EAAS,EACvB,MAAO,IAET,MAAM,IAAI,EACR,qCAAqC,EAAY,UAAY,UAAU,IAAI,IAC3E,YAAY,EAAQ,wBAClB,EAAY,OAAS,UACtB,6BAA6B,OAAO,OAAO,EAAS,CAAC,KAAK,KAAK,CAAC,GAClE,CAGH,SAAgB,EAA4B,EAAmD,CAK7F,OAJI,IAAe,IACV,EAGF,EAGT,SAAgB,EAAmB,EAAkC,CACnE,OAAQ,EAAR,CACE,KAAK,EAAY,KACf,OAAO,EAAmB,KAG5B,KAAK,EAAY,KACf,OAAO,EAAmB,QAG5B,QACE,MAAM,IAAI,EAAS,qDAAsD,EAAU,eAAe,EAKxG,SAAgB,EAAqB,EAAgC,CACnE,OAAO,EAAiB,EAO1B,SAAgB,EAAsB,EAAsC,EAAkC,CAC5G,OAAQ,EAAR,CACE,IAAK,IACH,OAAO,EAAQ,cAEjB,IAAK,IACH,OAAO,EAAQ,cAEjB,IAAK,IACH,OAAO,EAAQ,cAEjB,QACE,MAAM,IAAI,EAAmB,4BAA4B,IAAa,EAK5E,SAAgB,EAAkB,EAAe,EAA+B,CAM9E,OAAO,EALe,EAAM,IAAK,IAAU,CACzC,OACA,GAAG,EAAM,YAAY,EAAK,CAC3B,EAAE,CAE2B,CAAC,SAAS,CAAE,CAAC,EAAe,OAAS,MAAM,CAAC,CAAC,KAAK,CAAE,UAAW,EAAK,CAGpG,SAAgB,EAAsB,EAAmC,CACvE,OAAO,EAAU,IAAK,GAAY,EAAM,MAAM,EAAQ,CAAC,GAAG,CAG5D,SAAgB,EAAwB,EAAmC,CACzE,OAAQ,EAAR,CACE,KAAK,EAAY,KACf,MAAO,GAGT,KAAK,EAAY,KACf,MAAO,GAGT,QACE,MAAM,IAAI,EAAS,qDAAsD,EAAU,eAAe,EAQxG,SAAgB,EACd,EACA,EACsC,CACtC,IAAM,EAAU,EAAmB,EAAY,CAE/C,OAAQ,EAAR,CACE,IAAK,IACH,OAAO,IAAI,EAAI,OAAO,EAAQ,CAEhC,IAAK,IACH,OAAO,IAAI,EAAI,OAAO,EAAQ,CAEhC,IAAK,IACH,OAAO,IAAI,EAAI,OAAO,EAAQ,CAEhC,QACE,MAAM,IAAI,EACR,4BAA4B,IAC5B,8DACD"}
|
|
1
|
+
{"version":3,"file":"_utils.js","names":[],"sources":["../../../src/transfer-service/avalanche-cct/_utils.ts"],"sourcesContent":["import { avm, evm, pvm, utils, type Context, type Utxo } from '@avalabs/avalanchejs';\nimport { orderBy } from 'es-toolkit';\nimport {\n AvalancheChainIds,\n AvalancheFujiBlockchainChainIds,\n AvalancheMainnetBlockchainChainIds,\n Environment,\n type AvalancheBlockchainAlias,\n} from '../../constants';\nimport type { NativeAsset } from '../../types/asset';\nimport type { Caip2ChainId } from '../../types/caip';\nimport type { XpAddress } from './types';\nimport {\n AVALANCHE_API_URIS,\n AVALANCHE_C_CHAIN_NATIVE_ASSET,\n AVALANCHE_PX_CHAIN_NATIVE_ASSET,\n CHAIN_PREFIXES_REGEX,\n WEI_PER_NANO_AVAX_BIGINT,\n} from './constants';\nimport { ErrorCode, InvalidParamsError, SdkError } from '../../errors';\n\nexport function tryOrThrow<T>(fn: () => T, errorHandler: (error: unknown) => SdkError): T {\n try {\n return fn();\n } catch (error) {\n throw errorHandler(error);\n }\n}\n\n/**\n * Remaps Avalanche C-Chain CAIP2 chain IDs to their corresponding EIP-155 chain IDs.\n */\nexport function mapAvalancheBlockchainChainIdToEip155ChainId(caip2ChainId: Caip2ChainId): Caip2ChainId {\n switch (caip2ChainId) {\n case 'avax:8aDU0Kqh-5d23op-B-r-4YbQFRbsgF9a': {\n return AvalancheChainIds.MAINNET;\n }\n\n case 'avax:YRLfeDBJpfEqUWe2FYR1OpXsnDDZeKWd': {\n return AvalancheChainIds.FUJI;\n }\n\n default: {\n return caip2ChainId;\n }\n }\n}\n\nexport function getOutputAmountForAvalancheCct({\n amountIn,\n sourceAsset: { decimals: sourceDecimals },\n targetAsset: { decimals: targetDecimals },\n}: {\n amountIn: bigint;\n sourceAsset: NativeAsset;\n targetAsset: NativeAsset;\n}): bigint {\n if (sourceDecimals < targetDecimals) {\n return amountIn * 10n ** BigInt(targetDecimals - sourceDecimals);\n }\n\n if (sourceDecimals > targetDecimals) {\n return amountIn / 10n ** BigInt(sourceDecimals - targetDecimals);\n }\n\n return amountIn;\n}\n\nexport function stripAddressPrefix<T extends string>(address: T): T {\n return address ? (address.replace(CHAIN_PREFIXES_REGEX, '') as T) : address;\n}\n\nexport function xpAddressMatchesNetwork(xpAddress: XpAddress, isTestnet: boolean): boolean {\n const prefix = isTestnet ? 'fuji' : 'avax';\n return stripAddressPrefix(xpAddress).startsWith(prefix);\n}\n\nexport function getChainAlias(chainId: Caip2ChainId, isTestnet: boolean): AvalancheBlockchainAlias {\n const chainIds = isTestnet ? AvalancheFujiBlockchainChainIds : AvalancheMainnetBlockchainChainIds;\n\n if (chainId === chainIds.C) {\n return 'C';\n }\n\n if (chainId === chainIds.P) {\n return 'P';\n }\n\n if (chainId === chainIds.X) {\n return 'X';\n }\n throw new InvalidParamsError(\n `Unsupported Avalanche chainId for ${isTestnet ? 'testnet' : 'mainnet'}: ${chainId}`,\n `Chain ID ${chainId} is not supported for ${\n isTestnet ? 'Fuji' : 'Mainnet'\n }. Supported chain IDs are: ${Object.values(chainIds).join(', ')}.`,\n );\n}\n\nexport function getNativeTokenForChainAlias(chainAlias: AvalancheBlockchainAlias): NativeAsset {\n if (chainAlias === 'C') {\n return AVALANCHE_C_CHAIN_NATIVE_ASSET;\n }\n\n return AVALANCHE_PX_CHAIN_NATIVE_ASSET;\n}\n\nexport function getAvalancheApiUrl(environment: Environment): string {\n switch (environment) {\n case Environment.TEST: {\n return AVALANCHE_API_URIS.fuji;\n }\n\n case Environment.PROD: {\n return AVALANCHE_API_URIS.mainnet;\n }\n\n default: {\n throw new SdkError('Unsupported environment for Avalanche CCT service.', ErrorCode.INVALID_PARAMS);\n }\n }\n}\n\nexport function convertNanoAvaxToWei(nanoAvaxAmount: bigint): bigint {\n return nanoAvaxAmount * WEI_PER_NANO_AVAX_BIGINT;\n}\n\nexport function convertWeiToNanoAvax(weiAmount: bigint): bigint {\n return weiAmount / WEI_PER_NANO_AVAX_BIGINT;\n}\n\nexport function getChainIdFromContext(chainAlias: AvalancheBlockchainAlias, context: Context.Context): string {\n switch (chainAlias) {\n case 'C': {\n return context.cBlockchainID;\n }\n case 'P': {\n return context.pBlockchainID;\n }\n case 'X': {\n return context.xBlockchainID;\n }\n default: {\n throw new InvalidParamsError(`Unsupported chain alias: ${chainAlias}`);\n }\n }\n}\n\nexport function sortUTXOsByAmount(utxos: Utxo[], isDescending: boolean): Utxo[] {\n const utxosWithInfo = utxos.map((utxo) => ({\n utxo,\n ...utils.getUtxoInfo(utxo),\n }));\n\n return orderBy(utxosWithInfo, ['amount'], [isDescending ? 'desc' : 'asc']).map(({ utxo }) => utxo);\n}\n\nexport function getUtxosTotalAmount(utxos: Utxo[]): bigint {\n return utxos.reduce((total, utxo) => {\n const utxoInfo = utils.getUtxoInfo(utxo);\n\n return total + utxoInfo.amount;\n }, 0n);\n}\n\nexport function getAddressesAsBuffers(addresses: string[]): Uint8Array[] {\n return addresses.map((address) => utils.parse(address)[2]);\n}\n\nexport function getEnvironmentIsTestnet(environment: Environment): boolean {\n switch (environment) {\n case Environment.TEST: {\n return true;\n }\n\n case Environment.PROD: {\n return false;\n }\n\n default: {\n throw new SdkError('Unsupported environment for Avalanche CCT service.', ErrorCode.INVALID_PARAMS);\n }\n }\n}\n\nexport function getAvalancheProvider(environment: Environment, chainAlias: 'C'): evm.EVMApi;\nexport function getAvalancheProvider(environment: Environment, chainAlias: 'P'): pvm.PVMApi;\nexport function getAvalancheProvider(environment: Environment, chainAlias: 'X'): avm.AVMApi;\nexport function getAvalancheProvider(\n environment: Environment,\n chainAlias: AvalancheBlockchainAlias,\n): avm.AVMApi | pvm.PVMApi | evm.EVMApi {\n const baseUrl = getAvalancheApiUrl(environment);\n\n switch (chainAlias) {\n case 'C': {\n return new evm.EVMApi(baseUrl);\n }\n case 'P': {\n return new pvm.PVMApi(baseUrl);\n }\n case 'X': {\n return new avm.AVMApi(baseUrl);\n }\n default: {\n throw new InvalidParamsError(\n `Unsupported chain alias: ${chainAlias}`,\n 'Can not get Avalanche provider for unsupported chain alias.',\n );\n }\n }\n}\n"],"mappings":"kfAqBA,SAAgB,EAAc,EAAa,EAA+C,CACxF,GAAI,CACF,OAAO,GAAI,OACJ,EAAO,CACd,MAAM,EAAa,EAAM,EAuB7B,SAAgB,EAA+B,CAC7C,WACA,YAAa,CAAE,SAAU,GACzB,YAAa,CAAE,SAAU,IAKhB,CAST,OARI,EAAiB,EACZ,EAAW,KAAO,OAAO,EAAiB,EAAe,CAG9D,EAAiB,EACZ,EAAW,KAAO,OAAO,EAAiB,EAAe,CAG3D,EAGT,SAAgB,EAAqC,EAAe,CAClE,OAAO,GAAW,EAAQ,QAAQ,EAAsB,GAAG,CAG7D,SAAgB,EAAwB,EAAsB,EAA6B,CACzF,IAAM,EAAS,EAAY,OAAS,OACpC,OAAO,EAAmB,EAAU,CAAC,WAAW,EAAO,CAGzD,SAAgB,EAAc,EAAuB,EAA8C,CACjG,IAAM,EAAW,EAAY,EAAkC,EAE/D,GAAI,IAAY,EAAS,EACvB,MAAO,IAGT,GAAI,IAAY,EAAS,EACvB,MAAO,IAGT,GAAI,IAAY,EAAS,EACvB,MAAO,IAET,MAAM,IAAI,EACR,qCAAqC,EAAY,UAAY,UAAU,IAAI,IAC3E,YAAY,EAAQ,wBAClB,EAAY,OAAS,UACtB,6BAA6B,OAAO,OAAO,EAAS,CAAC,KAAK,KAAK,CAAC,GAClE,CAGH,SAAgB,EAA4B,EAAmD,CAK7F,OAJI,IAAe,IACV,EAGF,EAGT,SAAgB,EAAmB,EAAkC,CACnE,OAAQ,EAAR,CACE,KAAK,EAAY,KACf,OAAO,EAAmB,KAG5B,KAAK,EAAY,KACf,OAAO,EAAmB,QAG5B,QACE,MAAM,IAAI,EAAS,qDAAsD,EAAU,eAAe,EAKxG,SAAgB,EAAqB,EAAgC,CACnE,OAAO,EAAiB,EAO1B,SAAgB,EAAsB,EAAsC,EAAkC,CAC5G,OAAQ,EAAR,CACE,IAAK,IACH,OAAO,EAAQ,cAEjB,IAAK,IACH,OAAO,EAAQ,cAEjB,IAAK,IACH,OAAO,EAAQ,cAEjB,QACE,MAAM,IAAI,EAAmB,4BAA4B,IAAa,EAK5E,SAAgB,EAAkB,EAAe,EAA+B,CAM9E,OAAO,EALe,EAAM,IAAK,IAAU,CACzC,OACA,GAAG,EAAM,YAAY,EAAK,CAC3B,EAAE,CAE2B,CAAC,SAAS,CAAE,CAAC,EAAe,OAAS,MAAM,CAAC,CAAC,KAAK,CAAE,UAAW,EAAK,CAGpG,SAAgB,EAAoB,EAAuB,CACzD,OAAO,EAAM,QAAQ,EAAO,IAGnB,EAFU,EAAM,YAAY,EAAK,CAEhB,OACvB,GAAG,CAGR,SAAgB,EAAsB,EAAmC,CACvE,OAAO,EAAU,IAAK,GAAY,EAAM,MAAM,EAAQ,CAAC,GAAG,CAG5D,SAAgB,EAAwB,EAAmC,CACzE,OAAQ,EAAR,CACE,KAAK,EAAY,KACf,MAAO,GAGT,KAAK,EAAY,KACf,MAAO,GAGT,QACE,MAAM,IAAI,EAAS,qDAAsD,EAAU,eAAe,EAQxG,SAAgB,EACd,EACA,EACsC,CACtC,IAAM,EAAU,EAAmB,EAAY,CAE/C,OAAQ,EAAR,CACE,IAAK,IACH,OAAO,IAAI,EAAI,OAAO,EAAQ,CAEhC,IAAK,IACH,OAAO,IAAI,EAAI,OAAO,EAAQ,CAEhC,IAAK,IACH,OAAO,IAAI,EAAI,OAAO,EAAQ,CAEhC,QACE,MAAM,IAAI,EACR,4BAA4B,IAC5B,8DACD"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
require(`../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants.cjs`),t=require(`../../errors.cjs`),n=require(`./_handlers/analyze-support.cjs`),r=require(`./_handlers/get-bridgeable-assets.cjs`),i=require(`./_handlers/get-minimum-transfer-amount.cjs`),
|
|
1
|
+
require(`../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants.cjs`),t=require(`../../errors.cjs`),n=require(`./_handlers/analyze-support.cjs`),r=require(`./_handlers/get-bridgeable-assets.cjs`),i=require(`./_utils.cjs`),a=require(`./_handlers/get-minimum-transfer-amount.cjs`),o=require(`./_handlers/get-supported-chains.cjs`),s=require(`./_handlers/stream-quotes.cjs`),c=require(`./_handlers/transfer-asset.cjs`),l=require(`./_handlers/estimate-native-fee.cjs`),u=require(`./_handlers/track-transfer.cjs`);let d=require(`@avalabs/avalanchejs`);async function f({avalancheSendTx:f,environment:p,getCoreEthAddress:m,getAtomicUtxos:h,getUtxos:g,getWalletAddressesForChainAlias:_,getWalletChangeAddressForChainAlias:v}){let y,b;try{y=i.getAvalancheApiUrl(p),b=await d.Context.getContextFromURI(y)}catch(e){throw new t.ServiceInitializationError(`Failed to initialize Avalanche CCT context.`,void 0,e)}return{analyzeSupport:n.analyzeSupportFactory({environment:p}),estimateNativeFee:l.estimateNativeFeeFactory({ajsContext:b,environment:p,getAtomicUtxos:h,getUtxos:g}),getAssets:async()=>{throw new t.NotImplementedError},getBridgeableAssets:r.getBridgeableAssetsFactory({environment:p}),getMinimumTransferAmount:a.getMinimumTransferAmountFactory({environment:p,getAtomicUtxos:h}),getSupportedChains:o.getSupportedChainsFactory({environment:p}),streamQuotes:s.streamQuotesFactory({environment:p,getAtomicUtxos:h}),trackTransfer:u.trackTransferFactory({environment:p}),transferAsset:c.transferAssetFactory({ajsContext:b,avalancheSendTx:f,environment:p,getCoreEthAddress:m,getAtomicUtxos:h,getUtxos:g,getWalletAddressesForChainAlias:_,getWalletChangeAddressForChainAlias:v}),type:e.ServiceType.AVALANCHE_CCT}}exports.createAvalancheCctService=f;
|
|
2
2
|
//# sourceMappingURL=avalanche-cct-service.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"avalanche-cct-service.cjs","names":["getAvalancheApiUrl","Context","ServiceInitializationError","analyzeSupportFactory","estimateNativeFeeFactory","NotImplementedError","getBridgeableAssetsFactory","getMinimumTransferAmountFactory","getSupportedChainsFactory","streamQuotesFactory","trackTransferFactory","transferAssetFactory","ServiceType"],"sources":["../../../src/transfer-service/avalanche-cct/avalanche-cct-service.ts"],"sourcesContent":["import { Context } from '@avalabs/avalanchejs';\nimport { ServiceType } from '../../constants';\nimport type { Environment } from '../../constants';\nimport { NotImplementedError, ServiceInitializationError } from '../../errors';\nimport type { AvalancheSendTxFunction, TransferService } from '../../types/service';\nimport { analyzeSupportFactory } from './_handlers/analyze-support';\nimport { getBridgeableAssetsFactory } from './_handlers/get-bridgeable-assets';\nimport { getMinimumTransferAmountFactory } from './_handlers/get-minimum-transfer-amount';\nimport { getSupportedChainsFactory } from './_handlers/get-supported-chains';\nimport { streamQuotesFactory } from './_handlers/stream-quotes';\nimport { transferAssetFactory } from './_handlers/transfer-asset';\nimport { estimateNativeFeeFactory } from './_handlers/estimate-native-fee';\nimport { trackTransferFactory } from './_handlers/track-transfer';\nimport type {\n GetAtomicUtxosCallback,\n GetCoreEthAddressCallback,\n GetUtxosCallback,\n GetWalletAddressesForChainAliasCallback,\n GetWalletChangeAddressForChainAliasCallback,\n} from './types';\nimport type { Fetch } from '../../types/utility-types';\nimport { getAvalancheApiUrl } from './_utils';\n\nexport interface AvalancheCctServiceOptions {\n avalancheSendTx: AvalancheSendTxFunction;\n environment: Environment;\n fetch?: Fetch;\n getCoreEthAddress: GetCoreEthAddressCallback;\n getAtomicUtxos: GetAtomicUtxosCallback;\n getUtxos: GetUtxosCallback;\n getWalletAddressesForChainAlias: GetWalletAddressesForChainAliasCallback;\n getWalletChangeAddressForChainAlias: GetWalletChangeAddressForChainAliasCallback;\n}\n\nexport async function createAvalancheCctService({\n avalancheSendTx,\n environment,\n getCoreEthAddress,\n getAtomicUtxos,\n getUtxos,\n getWalletAddressesForChainAlias,\n getWalletChangeAddressForChainAlias,\n}: AvalancheCctServiceOptions): Promise<TransferService> {\n let avaxApiUrl: string;\n let ajsContext: Context.Context;\n\n try {\n avaxApiUrl = getAvalancheApiUrl(environment);\n ajsContext = await Context.getContextFromURI(avaxApiUrl);\n } catch (error) {\n throw new ServiceInitializationError('Failed to initialize Avalanche CCT context.', undefined, error);\n }\n\n return {\n analyzeSupport: analyzeSupportFactory({ environment }),\n estimateNativeFee: estimateNativeFeeFactory({ ajsContext, environment, getAtomicUtxos, getUtxos }),\n getAssets: async () => {\n throw new NotImplementedError();\n },\n getBridgeableAssets: getBridgeableAssetsFactory({ environment }),\n getMinimumTransferAmount: getMinimumTransferAmountFactory(),\n getSupportedChains: getSupportedChainsFactory({ environment }),\n streamQuotes: streamQuotesFactory({ environment, getAtomicUtxos }),\n trackTransfer: trackTransferFactory({ environment }),\n transferAsset: transferAssetFactory({\n ajsContext,\n avalancheSendTx,\n environment,\n getCoreEthAddress,\n getAtomicUtxos,\n getUtxos,\n getWalletAddressesForChainAlias,\n getWalletChangeAddressForChainAlias,\n }),\n type: ServiceType.AVALANCHE_CCT,\n } satisfies TransferService;\n}\n"],"mappings":"ojBAkCA,eAAsB,EAA0B,CAC9C,kBACA,cACA,oBACA,iBACA,WACA,kCACA,uCACuD,CACvD,IAAI,EACA,EAEJ,GAAI,CACF,EAAaA,EAAAA,mBAAmB,EAAY,CAC5C,EAAa,MAAMC,EAAAA,QAAQ,kBAAkB,EAAW,OACjD,EAAO,CACd,MAAM,IAAIC,EAAAA,2BAA2B,8CAA+C,IAAA,GAAW,EAAM,CAGvG,MAAO,CACL,eAAgBC,EAAAA,sBAAsB,CAAE,cAAa,CAAC,CACtD,kBAAmBC,EAAAA,yBAAyB,CAAE,aAAY,cAAa,iBAAgB,WAAU,CAAC,CAClG,UAAW,SAAY,CACrB,MAAM,IAAIC,EAAAA,qBAEZ,oBAAqBC,EAAAA,2BAA2B,CAAE,cAAa,CAAC,CAChE,yBAA0BC,EAAAA,
|
|
1
|
+
{"version":3,"file":"avalanche-cct-service.cjs","names":["getAvalancheApiUrl","Context","ServiceInitializationError","analyzeSupportFactory","estimateNativeFeeFactory","NotImplementedError","getBridgeableAssetsFactory","getMinimumTransferAmountFactory","getSupportedChainsFactory","streamQuotesFactory","trackTransferFactory","transferAssetFactory","ServiceType"],"sources":["../../../src/transfer-service/avalanche-cct/avalanche-cct-service.ts"],"sourcesContent":["import { Context } from '@avalabs/avalanchejs';\nimport { ServiceType } from '../../constants';\nimport type { Environment } from '../../constants';\nimport { NotImplementedError, ServiceInitializationError } from '../../errors';\nimport type { AvalancheSendTxFunction, TransferService } from '../../types/service';\nimport { analyzeSupportFactory } from './_handlers/analyze-support';\nimport { getBridgeableAssetsFactory } from './_handlers/get-bridgeable-assets';\nimport { getMinimumTransferAmountFactory } from './_handlers/get-minimum-transfer-amount';\nimport { getSupportedChainsFactory } from './_handlers/get-supported-chains';\nimport { streamQuotesFactory } from './_handlers/stream-quotes';\nimport { transferAssetFactory } from './_handlers/transfer-asset';\nimport { estimateNativeFeeFactory } from './_handlers/estimate-native-fee';\nimport { trackTransferFactory } from './_handlers/track-transfer';\nimport type {\n GetAtomicUtxosCallback,\n GetCoreEthAddressCallback,\n GetUtxosCallback,\n GetWalletAddressesForChainAliasCallback,\n GetWalletChangeAddressForChainAliasCallback,\n} from './types';\nimport type { Fetch } from '../../types/utility-types';\nimport { getAvalancheApiUrl } from './_utils';\n\nexport interface AvalancheCctServiceOptions {\n avalancheSendTx: AvalancheSendTxFunction;\n environment: Environment;\n fetch?: Fetch;\n getCoreEthAddress: GetCoreEthAddressCallback;\n getAtomicUtxos: GetAtomicUtxosCallback;\n getUtxos: GetUtxosCallback;\n getWalletAddressesForChainAlias: GetWalletAddressesForChainAliasCallback;\n getWalletChangeAddressForChainAlias: GetWalletChangeAddressForChainAliasCallback;\n}\n\nexport async function createAvalancheCctService({\n avalancheSendTx,\n environment,\n getCoreEthAddress,\n getAtomicUtxos,\n getUtxos,\n getWalletAddressesForChainAlias,\n getWalletChangeAddressForChainAlias,\n}: AvalancheCctServiceOptions): Promise<TransferService> {\n let avaxApiUrl: string;\n let ajsContext: Context.Context;\n\n try {\n avaxApiUrl = getAvalancheApiUrl(environment);\n ajsContext = await Context.getContextFromURI(avaxApiUrl);\n } catch (error) {\n throw new ServiceInitializationError('Failed to initialize Avalanche CCT context.', undefined, error);\n }\n\n return {\n analyzeSupport: analyzeSupportFactory({ environment }),\n estimateNativeFee: estimateNativeFeeFactory({ ajsContext, environment, getAtomicUtxos, getUtxos }),\n getAssets: async () => {\n throw new NotImplementedError();\n },\n getBridgeableAssets: getBridgeableAssetsFactory({ environment }),\n getMinimumTransferAmount: getMinimumTransferAmountFactory({ environment, getAtomicUtxos }),\n getSupportedChains: getSupportedChainsFactory({ environment }),\n streamQuotes: streamQuotesFactory({ environment, getAtomicUtxos }),\n trackTransfer: trackTransferFactory({ environment }),\n transferAsset: transferAssetFactory({\n ajsContext,\n avalancheSendTx,\n environment,\n getCoreEthAddress,\n getAtomicUtxos,\n getUtxos,\n getWalletAddressesForChainAlias,\n getWalletChangeAddressForChainAlias,\n }),\n type: ServiceType.AVALANCHE_CCT,\n } satisfies TransferService;\n}\n"],"mappings":"ojBAkCA,eAAsB,EAA0B,CAC9C,kBACA,cACA,oBACA,iBACA,WACA,kCACA,uCACuD,CACvD,IAAI,EACA,EAEJ,GAAI,CACF,EAAaA,EAAAA,mBAAmB,EAAY,CAC5C,EAAa,MAAMC,EAAAA,QAAQ,kBAAkB,EAAW,OACjD,EAAO,CACd,MAAM,IAAIC,EAAAA,2BAA2B,8CAA+C,IAAA,GAAW,EAAM,CAGvG,MAAO,CACL,eAAgBC,EAAAA,sBAAsB,CAAE,cAAa,CAAC,CACtD,kBAAmBC,EAAAA,yBAAyB,CAAE,aAAY,cAAa,iBAAgB,WAAU,CAAC,CAClG,UAAW,SAAY,CACrB,MAAM,IAAIC,EAAAA,qBAEZ,oBAAqBC,EAAAA,2BAA2B,CAAE,cAAa,CAAC,CAChE,yBAA0BC,EAAAA,gCAAgC,CAAE,cAAa,iBAAgB,CAAC,CAC1F,mBAAoBC,EAAAA,0BAA0B,CAAE,cAAa,CAAC,CAC9D,aAAcC,EAAAA,oBAAoB,CAAE,cAAa,iBAAgB,CAAC,CAClE,cAAeC,EAAAA,qBAAqB,CAAE,cAAa,CAAC,CACpD,cAAeC,EAAAA,qBAAqB,CAClC,aACA,kBACA,cACA,oBACA,iBACA,WACA,kCACA,sCACD,CAAC,CACF,KAAMC,EAAAA,YAAY,cACnB"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{ServiceType as e}from"../../constants.js";import{NotImplementedError as t,ServiceInitializationError as n}from"../../errors.js";import{analyzeSupportFactory as r}from"./_handlers/analyze-support.js";import{getBridgeableAssetsFactory as i}from"./_handlers/get-bridgeable-assets.js";import{
|
|
1
|
+
import{ServiceType as e}from"../../constants.js";import{NotImplementedError as t,ServiceInitializationError as n}from"../../errors.js";import{analyzeSupportFactory as r}from"./_handlers/analyze-support.js";import{getBridgeableAssetsFactory as i}from"./_handlers/get-bridgeable-assets.js";import{getAvalancheApiUrl as a}from"./_utils.js";import{getMinimumTransferAmountFactory as o}from"./_handlers/get-minimum-transfer-amount.js";import{getSupportedChainsFactory as s}from"./_handlers/get-supported-chains.js";import{streamQuotesFactory as c}from"./_handlers/stream-quotes.js";import{transferAssetFactory as l}from"./_handlers/transfer-asset.js";import{estimateNativeFeeFactory as u}from"./_handlers/estimate-native-fee.js";import{trackTransferFactory as d}from"./_handlers/track-transfer.js";import{Context as f}from"@avalabs/avalanchejs";async function p({avalancheSendTx:p,environment:m,getCoreEthAddress:h,getAtomicUtxos:g,getUtxos:_,getWalletAddressesForChainAlias:v,getWalletChangeAddressForChainAlias:y}){let b,x;try{b=a(m),x=await f.getContextFromURI(b)}catch(e){throw new n(`Failed to initialize Avalanche CCT context.`,void 0,e)}return{analyzeSupport:r({environment:m}),estimateNativeFee:u({ajsContext:x,environment:m,getAtomicUtxos:g,getUtxos:_}),getAssets:async()=>{throw new t},getBridgeableAssets:i({environment:m}),getMinimumTransferAmount:o({environment:m,getAtomicUtxos:g}),getSupportedChains:s({environment:m}),streamQuotes:c({environment:m,getAtomicUtxos:g}),trackTransfer:d({environment:m}),transferAsset:l({ajsContext:x,avalancheSendTx:p,environment:m,getCoreEthAddress:h,getAtomicUtxos:g,getUtxos:_,getWalletAddressesForChainAlias:v,getWalletChangeAddressForChainAlias:y}),type:e.AVALANCHE_CCT}}export{p as createAvalancheCctService};
|
|
2
2
|
//# sourceMappingURL=avalanche-cct-service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"avalanche-cct-service.js","names":[],"sources":["../../../src/transfer-service/avalanche-cct/avalanche-cct-service.ts"],"sourcesContent":["import { Context } from '@avalabs/avalanchejs';\nimport { ServiceType } from '../../constants';\nimport type { Environment } from '../../constants';\nimport { NotImplementedError, ServiceInitializationError } from '../../errors';\nimport type { AvalancheSendTxFunction, TransferService } from '../../types/service';\nimport { analyzeSupportFactory } from './_handlers/analyze-support';\nimport { getBridgeableAssetsFactory } from './_handlers/get-bridgeable-assets';\nimport { getMinimumTransferAmountFactory } from './_handlers/get-minimum-transfer-amount';\nimport { getSupportedChainsFactory } from './_handlers/get-supported-chains';\nimport { streamQuotesFactory } from './_handlers/stream-quotes';\nimport { transferAssetFactory } from './_handlers/transfer-asset';\nimport { estimateNativeFeeFactory } from './_handlers/estimate-native-fee';\nimport { trackTransferFactory } from './_handlers/track-transfer';\nimport type {\n GetAtomicUtxosCallback,\n GetCoreEthAddressCallback,\n GetUtxosCallback,\n GetWalletAddressesForChainAliasCallback,\n GetWalletChangeAddressForChainAliasCallback,\n} from './types';\nimport type { Fetch } from '../../types/utility-types';\nimport { getAvalancheApiUrl } from './_utils';\n\nexport interface AvalancheCctServiceOptions {\n avalancheSendTx: AvalancheSendTxFunction;\n environment: Environment;\n fetch?: Fetch;\n getCoreEthAddress: GetCoreEthAddressCallback;\n getAtomicUtxos: GetAtomicUtxosCallback;\n getUtxos: GetUtxosCallback;\n getWalletAddressesForChainAlias: GetWalletAddressesForChainAliasCallback;\n getWalletChangeAddressForChainAlias: GetWalletChangeAddressForChainAliasCallback;\n}\n\nexport async function createAvalancheCctService({\n avalancheSendTx,\n environment,\n getCoreEthAddress,\n getAtomicUtxos,\n getUtxos,\n getWalletAddressesForChainAlias,\n getWalletChangeAddressForChainAlias,\n}: AvalancheCctServiceOptions): Promise<TransferService> {\n let avaxApiUrl: string;\n let ajsContext: Context.Context;\n\n try {\n avaxApiUrl = getAvalancheApiUrl(environment);\n ajsContext = await Context.getContextFromURI(avaxApiUrl);\n } catch (error) {\n throw new ServiceInitializationError('Failed to initialize Avalanche CCT context.', undefined, error);\n }\n\n return {\n analyzeSupport: analyzeSupportFactory({ environment }),\n estimateNativeFee: estimateNativeFeeFactory({ ajsContext, environment, getAtomicUtxos, getUtxos }),\n getAssets: async () => {\n throw new NotImplementedError();\n },\n getBridgeableAssets: getBridgeableAssetsFactory({ environment }),\n getMinimumTransferAmount: getMinimumTransferAmountFactory(),\n getSupportedChains: getSupportedChainsFactory({ environment }),\n streamQuotes: streamQuotesFactory({ environment, getAtomicUtxos }),\n trackTransfer: trackTransferFactory({ environment }),\n transferAsset: transferAssetFactory({\n ajsContext,\n avalancheSendTx,\n environment,\n getCoreEthAddress,\n getAtomicUtxos,\n getUtxos,\n getWalletAddressesForChainAlias,\n getWalletChangeAddressForChainAlias,\n }),\n type: ServiceType.AVALANCHE_CCT,\n } satisfies TransferService;\n}\n"],"mappings":"w0BAkCA,eAAsB,EAA0B,CAC9C,kBACA,cACA,oBACA,iBACA,WACA,kCACA,uCACuD,CACvD,IAAI,EACA,EAEJ,GAAI,CACF,EAAa,EAAmB,EAAY,CAC5C,EAAa,MAAM,EAAQ,kBAAkB,EAAW,OACjD,EAAO,CACd,MAAM,IAAI,EAA2B,8CAA+C,IAAA,GAAW,EAAM,CAGvG,MAAO,CACL,eAAgB,EAAsB,CAAE,cAAa,CAAC,CACtD,kBAAmB,EAAyB,CAAE,aAAY,cAAa,iBAAgB,WAAU,CAAC,CAClG,UAAW,SAAY,CACrB,MAAM,IAAI,GAEZ,oBAAqB,EAA2B,CAAE,cAAa,CAAC,CAChE,yBAA0B,
|
|
1
|
+
{"version":3,"file":"avalanche-cct-service.js","names":[],"sources":["../../../src/transfer-service/avalanche-cct/avalanche-cct-service.ts"],"sourcesContent":["import { Context } from '@avalabs/avalanchejs';\nimport { ServiceType } from '../../constants';\nimport type { Environment } from '../../constants';\nimport { NotImplementedError, ServiceInitializationError } from '../../errors';\nimport type { AvalancheSendTxFunction, TransferService } from '../../types/service';\nimport { analyzeSupportFactory } from './_handlers/analyze-support';\nimport { getBridgeableAssetsFactory } from './_handlers/get-bridgeable-assets';\nimport { getMinimumTransferAmountFactory } from './_handlers/get-minimum-transfer-amount';\nimport { getSupportedChainsFactory } from './_handlers/get-supported-chains';\nimport { streamQuotesFactory } from './_handlers/stream-quotes';\nimport { transferAssetFactory } from './_handlers/transfer-asset';\nimport { estimateNativeFeeFactory } from './_handlers/estimate-native-fee';\nimport { trackTransferFactory } from './_handlers/track-transfer';\nimport type {\n GetAtomicUtxosCallback,\n GetCoreEthAddressCallback,\n GetUtxosCallback,\n GetWalletAddressesForChainAliasCallback,\n GetWalletChangeAddressForChainAliasCallback,\n} from './types';\nimport type { Fetch } from '../../types/utility-types';\nimport { getAvalancheApiUrl } from './_utils';\n\nexport interface AvalancheCctServiceOptions {\n avalancheSendTx: AvalancheSendTxFunction;\n environment: Environment;\n fetch?: Fetch;\n getCoreEthAddress: GetCoreEthAddressCallback;\n getAtomicUtxos: GetAtomicUtxosCallback;\n getUtxos: GetUtxosCallback;\n getWalletAddressesForChainAlias: GetWalletAddressesForChainAliasCallback;\n getWalletChangeAddressForChainAlias: GetWalletChangeAddressForChainAliasCallback;\n}\n\nexport async function createAvalancheCctService({\n avalancheSendTx,\n environment,\n getCoreEthAddress,\n getAtomicUtxos,\n getUtxos,\n getWalletAddressesForChainAlias,\n getWalletChangeAddressForChainAlias,\n}: AvalancheCctServiceOptions): Promise<TransferService> {\n let avaxApiUrl: string;\n let ajsContext: Context.Context;\n\n try {\n avaxApiUrl = getAvalancheApiUrl(environment);\n ajsContext = await Context.getContextFromURI(avaxApiUrl);\n } catch (error) {\n throw new ServiceInitializationError('Failed to initialize Avalanche CCT context.', undefined, error);\n }\n\n return {\n analyzeSupport: analyzeSupportFactory({ environment }),\n estimateNativeFee: estimateNativeFeeFactory({ ajsContext, environment, getAtomicUtxos, getUtxos }),\n getAssets: async () => {\n throw new NotImplementedError();\n },\n getBridgeableAssets: getBridgeableAssetsFactory({ environment }),\n getMinimumTransferAmount: getMinimumTransferAmountFactory({ environment, getAtomicUtxos }),\n getSupportedChains: getSupportedChainsFactory({ environment }),\n streamQuotes: streamQuotesFactory({ environment, getAtomicUtxos }),\n trackTransfer: trackTransferFactory({ environment }),\n transferAsset: transferAssetFactory({\n ajsContext,\n avalancheSendTx,\n environment,\n getCoreEthAddress,\n getAtomicUtxos,\n getUtxos,\n getWalletAddressesForChainAlias,\n getWalletChangeAddressForChainAlias,\n }),\n type: ServiceType.AVALANCHE_CCT,\n } satisfies TransferService;\n}\n"],"mappings":"w0BAkCA,eAAsB,EAA0B,CAC9C,kBACA,cACA,oBACA,iBACA,WACA,kCACA,uCACuD,CACvD,IAAI,EACA,EAEJ,GAAI,CACF,EAAa,EAAmB,EAAY,CAC5C,EAAa,MAAM,EAAQ,kBAAkB,EAAW,OACjD,EAAO,CACd,MAAM,IAAI,EAA2B,8CAA+C,IAAA,GAAW,EAAM,CAGvG,MAAO,CACL,eAAgB,EAAsB,CAAE,cAAa,CAAC,CACtD,kBAAmB,EAAyB,CAAE,aAAY,cAAa,iBAAgB,WAAU,CAAC,CAClG,UAAW,SAAY,CACrB,MAAM,IAAI,GAEZ,oBAAqB,EAA2B,CAAE,cAAa,CAAC,CAChE,yBAA0B,EAAgC,CAAE,cAAa,iBAAgB,CAAC,CAC1F,mBAAoB,EAA0B,CAAE,cAAa,CAAC,CAC9D,aAAc,EAAoB,CAAE,cAAa,iBAAgB,CAAC,CAClE,cAAe,EAAqB,CAAE,cAAa,CAAC,CACpD,cAAe,EAAqB,CAClC,aACA,kBACA,cACA,oBACA,iBACA,WACA,kCACA,sCACD,CAAC,CACF,KAAM,EAAY,cACnB"}
|