@avalabs/fusion-sdk 0.15.0 → 0.15.1
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
|
-
require(`../_virtual/_rolldown/runtime.cjs`);let e=require(`viem`);
|
|
1
|
+
require(`../_virtual/_rolldown/runtime.cjs`);let e=require(`viem`);async function t({amountIn:t,amountOut:n,assetIn:r,assetOut:i,fees:a,sourceChain:o,targetChain:s},c){let l=a.filter(t=>t.fundingModel!==`included`||t.chainId!==o.chainId||t.token.type!==r.type?!1:`address`in t.token&&`address`in r?t.token.type===`erc20`&&r.type===`erc20`?(0,e.isAddressEqual)(t.token.address,r.address):t.token.address===r.address:!0).reduce((e,t)=>e-t.amount,t),u=a.filter(t=>t.fundingModel!==`included`||t.chainId!==s.chainId||t.token.type!==i.type?!1:`address`in t.token&&`address`in i?t.token.type===`erc20`&&i.type===`erc20`?(0,e.isAddressEqual)(t.token.address,i.address):t.token.address===i.address:!0).reduce((e,t)=>e+t.amount,n),[d,f]=await c({asset:r,amount:l},{asset:i,amount:u});return d===null||f===null?null:(d-f)/d*1e4}exports.calculatePriceImpactFromQuote=t;
|
|
2
2
|
//# sourceMappingURL=price-impact.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"price-impact.cjs","names":[],"sources":["../../src/utils/price-impact.ts"],"sourcesContent":["import { isAddressEqual } from 'viem';\nimport type { Quote
|
|
1
|
+
{"version":3,"file":"price-impact.cjs","names":[],"sources":["../../src/utils/price-impact.ts"],"sourcesContent":["import { isAddressEqual } from 'viem';\nimport type { Quote } from '../types/quote';\nimport type { Asset } from '../types/asset';\n\n/**\n * Calculates quote price impact in basis points using USD valuations for the input and output assets.\n *\n * Included fees that are deducted from the output asset are added back to `amountOut` so the comparison\n * reflects the pre-deduction output value.\n *\n * @param quote - Quote to evaluate.\n * @param getTokenUsdValues - Resolver that returns USD values for the input and adjusted output amounts.\n * @returns Price impact in basis points, or `null` when either USD value is unavailable.\n */\nexport async function calculatePriceImpactFromQuote(\n { amountIn, amountOut, assetIn, assetOut, fees, sourceChain, targetChain }: Quote,\n getTokenUsdValues: (\n input: { asset: Asset; amount: bigint },\n output: { asset: Asset; amount: bigint },\n ) => Promise<[inputUsd: number | null, outputUsd: number | null]>,\n): Promise<number | null> {\n const adjustedAmountIn: bigint = fees\n .filter((fee) => {\n if (fee.fundingModel !== 'included' || fee.chainId !== sourceChain.chainId || fee.token.type !== assetIn.type) {\n return false;\n }\n\n if ('address' in fee.token && 'address' in assetIn) {\n if (fee.token.type === 'erc20' && assetIn.type === 'erc20') {\n return isAddressEqual(fee.token.address, assetIn.address);\n }\n\n return fee.token.address === assetIn.address;\n }\n\n return true;\n })\n .reduce((acc, fee) => acc - fee.amount, amountIn);\n\n const adjustedAmountOut: bigint = fees\n .filter((fee) => {\n if (fee.fundingModel !== 'included' || fee.chainId !== targetChain.chainId || fee.token.type !== assetOut.type) {\n return false;\n }\n\n if ('address' in fee.token && 'address' in assetOut) {\n if (fee.token.type === 'erc20' && assetOut.type === 'erc20') {\n return isAddressEqual(fee.token.address, assetOut.address);\n }\n\n return fee.token.address === assetOut.address;\n }\n\n return true;\n })\n .reduce((acc, fee) => acc + fee.amount, amountOut);\n\n const [inputUsd, outputUsd] = await getTokenUsdValues(\n { asset: assetIn, amount: adjustedAmountIn },\n { asset: assetOut, amount: adjustedAmountOut },\n );\n\n if (inputUsd === null || outputUsd === null) {\n return null;\n }\n\n const priceImpactBps = ((inputUsd - outputUsd) / inputUsd) * 10_000;\n\n return priceImpactBps;\n}\n"],"mappings":"mEAcA,eAAsB,EACpB,CAAE,WAAU,YAAW,UAAS,WAAU,OAAM,cAAa,eAC7D,EAIwB,CACxB,IAAM,EAA2B,EAC9B,OAAQ,GACH,EAAI,eAAiB,YAAc,EAAI,UAAY,EAAY,SAAW,EAAI,MAAM,OAAS,EAAQ,KAChG,GAGL,YAAa,EAAI,OAAS,YAAa,EACrC,EAAI,MAAM,OAAS,SAAW,EAAQ,OAAS,SACjD,EAAA,EAAA,gBAAsB,EAAI,MAAM,QAAS,EAAQ,QAAQ,CAGpD,EAAI,MAAM,UAAY,EAAQ,QAGhC,GACP,CACD,QAAQ,EAAK,IAAQ,EAAM,EAAI,OAAQ,EAAS,CAE7C,EAA4B,EAC/B,OAAQ,GACH,EAAI,eAAiB,YAAc,EAAI,UAAY,EAAY,SAAW,EAAI,MAAM,OAAS,EAAS,KACjG,GAGL,YAAa,EAAI,OAAS,YAAa,EACrC,EAAI,MAAM,OAAS,SAAW,EAAS,OAAS,SAClD,EAAA,EAAA,gBAAsB,EAAI,MAAM,QAAS,EAAS,QAAQ,CAGrD,EAAI,MAAM,UAAY,EAAS,QAGjC,GACP,CACD,QAAQ,EAAK,IAAQ,EAAM,EAAI,OAAQ,EAAU,CAE9C,CAAC,EAAU,GAAa,MAAM,EAClC,CAAE,MAAO,EAAS,OAAQ,EAAkB,CAC5C,CAAE,MAAO,EAAU,OAAQ,EAAmB,CAC/C,CAQD,OANI,IAAa,MAAQ,IAAc,KAC9B,MAGgB,EAAW,GAAa,EAAY"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{isAddressEqual as e}from"viem";
|
|
1
|
+
import{isAddressEqual as e}from"viem";async function t({amountIn:t,amountOut:n,assetIn:r,assetOut:i,fees:a,sourceChain:o,targetChain:s},c){let l=a.filter(t=>t.fundingModel!==`included`||t.chainId!==o.chainId||t.token.type!==r.type?!1:`address`in t.token&&`address`in r?t.token.type===`erc20`&&r.type===`erc20`?e(t.token.address,r.address):t.token.address===r.address:!0).reduce((e,t)=>e-t.amount,t),u=a.filter(t=>t.fundingModel!==`included`||t.chainId!==s.chainId||t.token.type!==i.type?!1:`address`in t.token&&`address`in i?t.token.type===`erc20`&&i.type===`erc20`?e(t.token.address,i.address):t.token.address===i.address:!0).reduce((e,t)=>e+t.amount,n),[d,f]=await c({asset:r,amount:l},{asset:i,amount:u});return d===null||f===null?null:(d-f)/d*1e4}export{t as calculatePriceImpactFromQuote};
|
|
2
2
|
//# sourceMappingURL=price-impact.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"price-impact.js","names":[],"sources":["../../src/utils/price-impact.ts"],"sourcesContent":["import { isAddressEqual } from 'viem';\nimport type { Quote
|
|
1
|
+
{"version":3,"file":"price-impact.js","names":[],"sources":["../../src/utils/price-impact.ts"],"sourcesContent":["import { isAddressEqual } from 'viem';\nimport type { Quote } from '../types/quote';\nimport type { Asset } from '../types/asset';\n\n/**\n * Calculates quote price impact in basis points using USD valuations for the input and output assets.\n *\n * Included fees that are deducted from the output asset are added back to `amountOut` so the comparison\n * reflects the pre-deduction output value.\n *\n * @param quote - Quote to evaluate.\n * @param getTokenUsdValues - Resolver that returns USD values for the input and adjusted output amounts.\n * @returns Price impact in basis points, or `null` when either USD value is unavailable.\n */\nexport async function calculatePriceImpactFromQuote(\n { amountIn, amountOut, assetIn, assetOut, fees, sourceChain, targetChain }: Quote,\n getTokenUsdValues: (\n input: { asset: Asset; amount: bigint },\n output: { asset: Asset; amount: bigint },\n ) => Promise<[inputUsd: number | null, outputUsd: number | null]>,\n): Promise<number | null> {\n const adjustedAmountIn: bigint = fees\n .filter((fee) => {\n if (fee.fundingModel !== 'included' || fee.chainId !== sourceChain.chainId || fee.token.type !== assetIn.type) {\n return false;\n }\n\n if ('address' in fee.token && 'address' in assetIn) {\n if (fee.token.type === 'erc20' && assetIn.type === 'erc20') {\n return isAddressEqual(fee.token.address, assetIn.address);\n }\n\n return fee.token.address === assetIn.address;\n }\n\n return true;\n })\n .reduce((acc, fee) => acc - fee.amount, amountIn);\n\n const adjustedAmountOut: bigint = fees\n .filter((fee) => {\n if (fee.fundingModel !== 'included' || fee.chainId !== targetChain.chainId || fee.token.type !== assetOut.type) {\n return false;\n }\n\n if ('address' in fee.token && 'address' in assetOut) {\n if (fee.token.type === 'erc20' && assetOut.type === 'erc20') {\n return isAddressEqual(fee.token.address, assetOut.address);\n }\n\n return fee.token.address === assetOut.address;\n }\n\n return true;\n })\n .reduce((acc, fee) => acc + fee.amount, amountOut);\n\n const [inputUsd, outputUsd] = await getTokenUsdValues(\n { asset: assetIn, amount: adjustedAmountIn },\n { asset: assetOut, amount: adjustedAmountOut },\n );\n\n if (inputUsd === null || outputUsd === null) {\n return null;\n }\n\n const priceImpactBps = ((inputUsd - outputUsd) / inputUsd) * 10_000;\n\n return priceImpactBps;\n}\n"],"mappings":"sCAcA,eAAsB,EACpB,CAAE,WAAU,YAAW,UAAS,WAAU,OAAM,cAAa,eAC7D,EAIwB,CACxB,IAAM,EAA2B,EAC9B,OAAQ,GACH,EAAI,eAAiB,YAAc,EAAI,UAAY,EAAY,SAAW,EAAI,MAAM,OAAS,EAAQ,KAChG,GAGL,YAAa,EAAI,OAAS,YAAa,EACrC,EAAI,MAAM,OAAS,SAAW,EAAQ,OAAS,QAC1C,EAAe,EAAI,MAAM,QAAS,EAAQ,QAAQ,CAGpD,EAAI,MAAM,UAAY,EAAQ,QAGhC,GACP,CACD,QAAQ,EAAK,IAAQ,EAAM,EAAI,OAAQ,EAAS,CAE7C,EAA4B,EAC/B,OAAQ,GACH,EAAI,eAAiB,YAAc,EAAI,UAAY,EAAY,SAAW,EAAI,MAAM,OAAS,EAAS,KACjG,GAGL,YAAa,EAAI,OAAS,YAAa,EACrC,EAAI,MAAM,OAAS,SAAW,EAAS,OAAS,QAC3C,EAAe,EAAI,MAAM,QAAS,EAAS,QAAQ,CAGrD,EAAI,MAAM,UAAY,EAAS,QAGjC,GACP,CACD,QAAQ,EAAK,IAAQ,EAAM,EAAI,OAAQ,EAAU,CAE9C,CAAC,EAAU,GAAa,MAAM,EAClC,CAAE,MAAO,EAAS,OAAQ,EAAkB,CAC5C,CAAE,MAAO,EAAU,OAAQ,EAAmB,CAC/C,CAQD,OANI,IAAa,MAAQ,IAAc,KAC9B,MAGgB,EAAW,GAAa,EAAY"}
|
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.15.
|
|
4
|
+
"version": "0.15.1",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/mod.cjs",
|
|
7
7
|
"module": "./dist/mod.js",
|
|
@@ -47,8 +47,8 @@
|
|
|
47
47
|
"vitest": "4.0.6",
|
|
48
48
|
"tsdown": "0.21.4",
|
|
49
49
|
"zod": "4.1.12",
|
|
50
|
-
"
|
|
51
|
-
"
|
|
50
|
+
"eslint-config-custom": "0.1.0",
|
|
51
|
+
"@internal/tsdown-config": "0.0.1"
|
|
52
52
|
},
|
|
53
53
|
"sideEffects": false,
|
|
54
54
|
"scripts": {
|