@avalabs/fusion-sdk 0.15.1 → 0.17.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/constants.cjs +1 -1
- package/dist/constants.cjs.map +1 -1
- package/dist/constants.d.cts +21 -1
- package/dist/constants.d.ts +21 -1
- package/dist/constants.js +1 -1
- package/dist/constants.js.map +1 -1
- package/dist/errors.cjs +1 -1
- package/dist/errors.cjs.map +1 -1
- package/dist/errors.js +1 -1
- package/dist/errors.js.map +1 -1
- package/dist/mod.cjs +1 -1
- package/dist/mod.d.cts +7 -5
- package/dist/mod.d.ts +7 -5
- package/dist/mod.js +1 -1
- package/dist/quoter/quoter.cjs +1 -1
- package/dist/quoter/quoter.cjs.map +1 -1
- package/dist/quoter/quoter.js +1 -1
- package/dist/quoter/quoter.js.map +1 -1
- package/dist/transfer-manager.cjs +1 -1
- package/dist/transfer-manager.cjs.map +1 -1
- package/dist/transfer-manager.js +1 -1
- package/dist/transfer-manager.js.map +1 -1
- package/dist/transfer-service/_evm-gas.cjs +1 -1
- package/dist/transfer-service/_evm-gas.js +1 -1
- package/dist/transfer-service/_utils.cjs +1 -1
- package/dist/transfer-service/_utils.cjs.map +1 -1
- package/dist/transfer-service/_utils.js +1 -1
- package/dist/transfer-service/_utils.js.map +1 -1
- package/dist/transfer-service/avalanche-cct/_handlers/analyze-support.cjs +2 -0
- package/dist/transfer-service/avalanche-cct/_handlers/analyze-support.cjs.map +1 -0
- package/dist/transfer-service/avalanche-cct/_handlers/analyze-support.js +2 -0
- package/dist/transfer-service/avalanche-cct/_handlers/analyze-support.js.map +1 -0
- package/dist/transfer-service/avalanche-cct/_handlers/estimate-native-fee.cjs +2 -0
- package/dist/transfer-service/avalanche-cct/_handlers/estimate-native-fee.cjs.map +1 -0
- package/dist/transfer-service/avalanche-cct/_handlers/estimate-native-fee.js +2 -0
- package/dist/transfer-service/avalanche-cct/_handlers/estimate-native-fee.js.map +1 -0
- package/dist/transfer-service/avalanche-cct/_handlers/get-bridgeable-assets.cjs +2 -0
- package/dist/transfer-service/avalanche-cct/_handlers/get-bridgeable-assets.cjs.map +1 -0
- package/dist/transfer-service/avalanche-cct/_handlers/get-bridgeable-assets.js +2 -0
- package/dist/transfer-service/avalanche-cct/_handlers/get-bridgeable-assets.js.map +1 -0
- package/dist/transfer-service/avalanche-cct/_handlers/get-minimum-transfer-amount.cjs +2 -0
- package/dist/transfer-service/avalanche-cct/_handlers/get-minimum-transfer-amount.cjs.map +1 -0
- package/dist/transfer-service/avalanche-cct/_handlers/get-minimum-transfer-amount.js +2 -0
- package/dist/transfer-service/avalanche-cct/_handlers/get-minimum-transfer-amount.js.map +1 -0
- package/dist/transfer-service/avalanche-cct/_handlers/get-supported-chains.cjs +2 -0
- package/dist/transfer-service/avalanche-cct/_handlers/get-supported-chains.cjs.map +1 -0
- package/dist/transfer-service/avalanche-cct/_handlers/get-supported-chains.js +2 -0
- package/dist/transfer-service/avalanche-cct/_handlers/get-supported-chains.js.map +1 -0
- package/dist/transfer-service/avalanche-cct/_handlers/stream-quotes.cjs +2 -0
- package/dist/transfer-service/avalanche-cct/_handlers/stream-quotes.cjs.map +1 -0
- package/dist/transfer-service/avalanche-cct/_handlers/stream-quotes.js +2 -0
- package/dist/transfer-service/avalanche-cct/_handlers/stream-quotes.js.map +1 -0
- package/dist/transfer-service/avalanche-cct/_handlers/track-transfer.cjs +2 -0
- package/dist/transfer-service/avalanche-cct/_handlers/track-transfer.cjs.map +1 -0
- package/dist/transfer-service/avalanche-cct/_handlers/track-transfer.js +2 -0
- package/dist/transfer-service/avalanche-cct/_handlers/track-transfer.js.map +1 -0
- package/dist/transfer-service/avalanche-cct/_handlers/transfer-asset.cjs +2 -0
- package/dist/transfer-service/avalanche-cct/_handlers/transfer-asset.cjs.map +1 -0
- package/dist/transfer-service/avalanche-cct/_handlers/transfer-asset.js +2 -0
- package/dist/transfer-service/avalanche-cct/_handlers/transfer-asset.js.map +1 -0
- package/dist/transfer-service/avalanche-cct/_type-guards.cjs +2 -0
- package/dist/transfer-service/avalanche-cct/_type-guards.cjs.map +1 -0
- package/dist/transfer-service/avalanche-cct/_type-guards.js +2 -0
- package/dist/transfer-service/avalanche-cct/_type-guards.js.map +1 -0
- package/dist/transfer-service/avalanche-cct/_utils/addresses.cjs +2 -0
- package/dist/transfer-service/avalanche-cct/_utils/addresses.cjs.map +1 -0
- package/dist/transfer-service/avalanche-cct/_utils/addresses.js +2 -0
- package/dist/transfer-service/avalanche-cct/_utils/addresses.js.map +1 -0
- package/dist/transfer-service/avalanche-cct/_utils/fees.cjs +2 -0
- package/dist/transfer-service/avalanche-cct/_utils/fees.cjs.map +1 -0
- package/dist/transfer-service/avalanche-cct/_utils/fees.js +2 -0
- package/dist/transfer-service/avalanche-cct/_utils/fees.js.map +1 -0
- package/dist/transfer-service/avalanche-cct/_utils/p-chain.cjs +2 -0
- package/dist/transfer-service/avalanche-cct/_utils/p-chain.cjs.map +1 -0
- package/dist/transfer-service/avalanche-cct/_utils/p-chain.js +2 -0
- package/dist/transfer-service/avalanche-cct/_utils/p-chain.js.map +1 -0
- package/dist/transfer-service/avalanche-cct/_utils/polling.cjs +2 -0
- package/dist/transfer-service/avalanche-cct/_utils/polling.cjs.map +1 -0
- package/dist/transfer-service/avalanche-cct/_utils/polling.js +2 -0
- package/dist/transfer-service/avalanche-cct/_utils/polling.js.map +1 -0
- package/dist/transfer-service/avalanche-cct/_utils/transactions.cjs +2 -0
- package/dist/transfer-service/avalanche-cct/_utils/transactions.cjs.map +1 -0
- package/dist/transfer-service/avalanche-cct/_utils/transactions.js +2 -0
- package/dist/transfer-service/avalanche-cct/_utils/transactions.js.map +1 -0
- package/dist/transfer-service/avalanche-cct/_utils.cjs +2 -0
- package/dist/transfer-service/avalanche-cct/_utils.cjs.map +1 -0
- package/dist/transfer-service/avalanche-cct/_utils.js +2 -0
- package/dist/transfer-service/avalanche-cct/_utils.js.map +1 -0
- package/dist/transfer-service/avalanche-cct/avalanche-cct-service.cjs +2 -0
- package/dist/transfer-service/avalanche-cct/avalanche-cct-service.cjs.map +1 -0
- package/dist/transfer-service/avalanche-cct/avalanche-cct-service.js +2 -0
- package/dist/transfer-service/avalanche-cct/avalanche-cct-service.js.map +1 -0
- package/dist/transfer-service/avalanche-cct/constants.cjs +2 -0
- package/dist/transfer-service/avalanche-cct/constants.cjs.map +1 -0
- package/dist/transfer-service/avalanche-cct/constants.js +2 -0
- package/dist/transfer-service/avalanche-cct/constants.js.map +1 -0
- package/dist/transfer-service/avalanche-cct/types.d.cts +33 -0
- package/dist/transfer-service/avalanche-cct/types.d.ts +33 -0
- package/dist/transfer-service/avalanche-evm/_handlers/get-bridgeable-assets.cjs +1 -1
- package/dist/transfer-service/avalanche-evm/_handlers/get-bridgeable-assets.cjs.map +1 -1
- package/dist/transfer-service/avalanche-evm/_handlers/get-bridgeable-assets.js +1 -1
- package/dist/transfer-service/avalanche-evm/_handlers/get-bridgeable-assets.js.map +1 -1
- package/dist/transfer-service/avalanche-evm/_handlers/transfer-asset.cjs +1 -1
- package/dist/transfer-service/avalanche-evm/_handlers/transfer-asset.js +1 -1
- package/dist/transfer-service/avalanche-evm/_utils/wrap.cjs +1 -1
- package/dist/transfer-service/avalanche-evm/_utils/wrap.js +1 -1
- package/dist/transfer-service/fetch-utilities.cjs +1 -1
- package/dist/transfer-service/fetch-utilities.cjs.map +1 -1
- package/dist/transfer-service/fetch-utilities.js +1 -1
- package/dist/transfer-service/fetch-utilities.js.map +1 -1
- package/dist/transfer-service/lombard/btc-to-btcb/_handlers/get-bridgeable-assets.cjs +1 -1
- package/dist/transfer-service/lombard/btc-to-btcb/_handlers/get-bridgeable-assets.cjs.map +1 -1
- package/dist/transfer-service/lombard/btc-to-btcb/_handlers/get-bridgeable-assets.js +1 -1
- package/dist/transfer-service/lombard/btc-to-btcb/_handlers/get-bridgeable-assets.js.map +1 -1
- package/dist/transfer-service/lombard/btcb-to-btc/_handlers/get-bridgeable-assets.cjs +1 -1
- package/dist/transfer-service/lombard/btcb-to-btc/_handlers/get-bridgeable-assets.cjs.map +1 -1
- package/dist/transfer-service/lombard/btcb-to-btc/_handlers/get-bridgeable-assets.js +1 -1
- package/dist/transfer-service/lombard/btcb-to-btc/_handlers/get-bridgeable-assets.js.map +1 -1
- package/dist/transfer-service/markr/_handlers/estimate-native-fee.cjs +1 -1
- package/dist/transfer-service/markr/_handlers/estimate-native-fee.js +1 -1
- package/dist/transfer-service/markr/_handlers/get-bridgeable-assets.cjs +1 -1
- package/dist/transfer-service/markr/_handlers/get-bridgeable-assets.cjs.map +1 -1
- package/dist/transfer-service/markr/_handlers/get-bridgeable-assets.js +1 -1
- package/dist/transfer-service/markr/_handlers/get-bridgeable-assets.js.map +1 -1
- package/dist/transfer-service/markr/_handlers/track-transfer.cjs +1 -1
- package/dist/transfer-service/markr/_handlers/track-transfer.js +1 -1
- package/dist/transfer-service/markr/_handlers/transfer-asset.cjs +1 -1
- package/dist/transfer-service/markr/_handlers/transfer-asset.js +1 -1
- package/dist/transfer-service/markr/_schema.cjs +1 -1
- package/dist/transfer-service/markr/_schema.cjs.map +1 -1
- package/dist/transfer-service/markr/_schema.js +1 -1
- package/dist/transfer-service/markr/_schema.js.map +1 -1
- package/dist/transfer-service/markr/markr-service.cjs.map +1 -1
- package/dist/transfer-service/markr/markr-service.js.map +1 -1
- package/dist/transfer-service/service-schemas.cjs +1 -1
- package/dist/transfer-service/service-schemas.cjs.map +1 -1
- package/dist/transfer-service/service-schemas.js +1 -1
- package/dist/transfer-service/service-schemas.js.map +1 -1
- package/dist/transfer-service/wrap-unwrap/_handlers/get-bridgeable-assets.cjs +1 -1
- package/dist/transfer-service/wrap-unwrap/_handlers/get-bridgeable-assets.cjs.map +1 -1
- package/dist/transfer-service/wrap-unwrap/_handlers/get-bridgeable-assets.js +1 -1
- package/dist/transfer-service/wrap-unwrap/_handlers/get-bridgeable-assets.js.map +1 -1
- package/dist/transfer-service/wrap-unwrap/_handlers/transfer-asset.cjs +1 -1
- package/dist/transfer-service/wrap-unwrap/_handlers/transfer-asset.js +1 -1
- package/dist/types/asset.d.cts +18 -2
- package/dist/types/asset.d.ts +18 -2
- package/dist/types/quote.d.cts +1 -1
- package/dist/types/quote.d.ts +1 -1
- package/dist/types/service.d.cts +95 -7
- package/dist/types/service.d.ts +95 -7
- package/dist/types/transfer-manager.d.cts +19 -10
- package/dist/types/transfer-manager.d.ts +19 -10
- package/dist/types/utility-types.d.cts +8 -1
- package/dist/types/utility-types.d.ts +8 -1
- package/dist/utils/asset-id.cjs +1 -1
- package/dist/utils/asset-id.cjs.map +1 -1
- package/dist/utils/asset-id.js +1 -1
- package/dist/utils/asset-id.js.map +1 -1
- package/dist/utils/bridgeable-assets.cjs +2 -0
- package/dist/utils/bridgeable-assets.cjs.map +1 -0
- package/dist/utils/bridgeable-assets.d.cts +16 -0
- package/dist/utils/bridgeable-assets.d.ts +16 -0
- package/dist/utils/bridgeable-assets.js +2 -0
- package/dist/utils/bridgeable-assets.js.map +1 -0
- package/dist/utils/transfer-utils.cjs +1 -1
- package/dist/utils/transfer-utils.cjs.map +1 -1
- package/dist/utils/transfer-utils.js +1 -1
- package/dist/utils/transfer-utils.js.map +1 -1
- package/package.json +5 -3
|
@@ -2,10 +2,10 @@ import { Caip2ChainId } from "./caip.js";
|
|
|
2
2
|
import { Environment, ServiceType } from "../constants.js";
|
|
3
3
|
import { Asset, BridgeableUiAsset } from "./asset.js";
|
|
4
4
|
import { Quote, QuoterInterface, QuoterProps } from "./quote.js";
|
|
5
|
+
import { Fetch } from "./utility-types.js";
|
|
5
6
|
import { SdkError } from "../errors.js";
|
|
6
7
|
import { Transfer } from "./transfer.js";
|
|
7
|
-
import {
|
|
8
|
-
import { EstimateNativeFeeOptions, GetMinimumTransferAmountProps, GetSupportedChainsResult, NativeFeeEstimate, ServiceInitializer, TrackTransferProps, TransferAssetProps } from "./service.js";
|
|
8
|
+
import { EstimateNativeFeeOptions, GetBridgeableAssetsProps, GetMinimumTransferAmountProps, GetSupportedChainsResult, NativeFeeEstimate, ServiceInitializer, TrackTransferProps, TransferAssetProps } from "./service.js";
|
|
9
9
|
import { QuoterOptions } from "../quoter/quoter.js";
|
|
10
10
|
|
|
11
11
|
//#region src/types/transfer-manager.d.ts
|
|
@@ -55,19 +55,28 @@ interface TransferManager {
|
|
|
55
55
|
/** Estimate the native fee for executing the provided quote. */
|
|
56
56
|
estimateNativeFee(quote: Quote, options?: EstimateNativeFeeOptions): Promise<NativeFeeEstimate>;
|
|
57
57
|
/**
|
|
58
|
-
* Returns
|
|
59
|
-
*
|
|
60
|
-
*
|
|
58
|
+
* Returns a single page of combined bridgeable assets for the given source/target route.
|
|
59
|
+
* This API is designed for React Query `useInfiniteQuery`:
|
|
60
|
+
*
|
|
61
|
+
* - pass `pageParam` to this method as `page`
|
|
62
|
+
* - use `result.assets` as the current page payload
|
|
63
|
+
* - use `result.meta.nextPage` in `getNextPageParam`
|
|
64
|
+
*
|
|
65
|
+
* `search` is forwarded to all configured services, but currently only Markr
|
|
66
|
+
* applies search filtering in service implementations.
|
|
61
67
|
*
|
|
62
68
|
* Note: inclusion in this list does not guarantee a quote will succeed — for some
|
|
63
69
|
* providers (e.g. Markr) routes are discovered at quote time and may not always be
|
|
64
70
|
* available.
|
|
65
71
|
*/
|
|
66
|
-
getBridgeableAssets(props: {
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
72
|
+
getBridgeableAssets(props: GetBridgeableAssetsProps): Promise<{
|
|
73
|
+
readonly assets: readonly BridgeableUiAsset[];
|
|
74
|
+
readonly meta: {
|
|
75
|
+
readonly currentPage: number;
|
|
76
|
+
readonly hasMore: boolean;
|
|
77
|
+
readonly nextPage?: number;
|
|
78
|
+
};
|
|
79
|
+
}>;
|
|
71
80
|
/**
|
|
72
81
|
* Minimum supported source amount for a given pair.
|
|
73
82
|
*
|
|
@@ -8,6 +8,13 @@
|
|
|
8
8
|
*/
|
|
9
9
|
type ArrayElement<A> = A extends readonly (infer T)[] ? T : never;
|
|
10
10
|
/**
|
|
11
|
+
* Utility type to create a branded type, which is a subtype of the original
|
|
12
|
+
* type but with an additional unique brand property to prevent accidental interchangeability.
|
|
13
|
+
*/
|
|
14
|
+
type Brand<K, T> = K & {
|
|
15
|
+
readonly __brand: T;
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
11
18
|
* Utility type to make all properties of a type mutable (non-readonly).
|
|
12
19
|
*/
|
|
13
20
|
type Mutable<T> = { -readonly [P in keyof T]: T[P] };
|
|
@@ -17,5 +24,5 @@ type Mutable<T> = { -readonly [P in keyof T]: T[P] };
|
|
|
17
24
|
type DeepMutable<T> = { -readonly [P in keyof T]: T[P] extends object ? DeepMutable<T[P]> : T[P] };
|
|
18
25
|
type Fetch = typeof globalThis.fetch;
|
|
19
26
|
//#endregion
|
|
20
|
-
export { ArrayElement, DeepMutable, Fetch, Mutable };
|
|
27
|
+
export { ArrayElement, Brand, DeepMutable, Fetch, Mutable };
|
|
21
28
|
//# sourceMappingURL=utility-types.d.cts.map
|
|
@@ -8,6 +8,13 @@
|
|
|
8
8
|
*/
|
|
9
9
|
type ArrayElement<A> = A extends readonly (infer T)[] ? T : never;
|
|
10
10
|
/**
|
|
11
|
+
* Utility type to create a branded type, which is a subtype of the original
|
|
12
|
+
* type but with an additional unique brand property to prevent accidental interchangeability.
|
|
13
|
+
*/
|
|
14
|
+
type Brand<K, T> = K & {
|
|
15
|
+
readonly __brand: T;
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
11
18
|
* Utility type to make all properties of a type mutable (non-readonly).
|
|
12
19
|
*/
|
|
13
20
|
type Mutable<T> = { -readonly [P in keyof T]: T[P] };
|
|
@@ -17,5 +24,5 @@ type Mutable<T> = { -readonly [P in keyof T]: T[P] };
|
|
|
17
24
|
type DeepMutable<T> = { -readonly [P in keyof T]: T[P] extends object ? DeepMutable<T[P]> : T[P] };
|
|
18
25
|
type Fetch = typeof globalThis.fetch;
|
|
19
26
|
//#endregion
|
|
20
|
-
export { ArrayElement, DeepMutable, Fetch, Mutable };
|
|
27
|
+
export { ArrayElement, Brand, DeepMutable, Fetch, Mutable };
|
|
21
28
|
//# sourceMappingURL=utility-types.d.ts.map
|
package/dist/utils/asset-id.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const e=require(`../constants.cjs`);function t(t,n){return n.type===e.TokenType.NATIVE?`${t}
|
|
1
|
+
const e=require(`../constants.cjs`);function t(t,n){return n.type===e.TokenType.NATIVE?`${t}::${n.type}`:`${t}::${n.type}::${n.address.toLowerCase()}`}exports.getAssetId=t;
|
|
2
2
|
//# sourceMappingURL=asset-id.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"asset-id.cjs","names":["TokenType"],"sources":["../../src/utils/asset-id.ts"],"sourcesContent":["import { TokenType } from '../constants';\nimport type { Asset } from '../types/asset';\nimport type { Caip2ChainId } from '../types/caip';\n\n/**\n * Returns a unique string identifier for an asset on a given chain.\n *\n * Format:\n * - Native assets: `{chainId}
|
|
1
|
+
{"version":3,"file":"asset-id.cjs","names":["TokenType"],"sources":["../../src/utils/asset-id.ts"],"sourcesContent":["import { TokenType } from '../constants';\nimport type { Asset } from '../types/asset';\nimport type { Caip2ChainId } from '../types/caip';\n\n/**\n * Returns a unique string identifier for an asset on a given chain.\n *\n * Format:\n * - Native assets: `{chainId}::native`\n * - Token assets: `{chainId}::{tokenType}::{lowercaseAddress}`\n */\nexport function getAssetId(chainId: Caip2ChainId, asset: Asset): string {\n if (asset.type === TokenType.NATIVE) {\n return `${chainId}::${asset.type}`;\n }\n\n return `${chainId}::${asset.type}::${asset.address.toLowerCase()}`;\n}\n"],"mappings":"oCAWA,SAAgB,EAAW,EAAuB,EAAsB,CAKtE,OAJI,EAAM,OAASA,EAAAA,UAAU,OACpB,GAAG,EAAQ,IAAI,EAAM,OAGvB,GAAG,EAAQ,IAAI,EAAM,KAAK,IAAI,EAAM,QAAQ,aAAa"}
|
package/dist/utils/asset-id.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{TokenType as e}from"../constants.js";function t(t,n){return n.type===e.NATIVE?`${t}
|
|
1
|
+
import{TokenType as e}from"../constants.js";function t(t,n){return n.type===e.NATIVE?`${t}::${n.type}`:`${t}::${n.type}::${n.address.toLowerCase()}`}export{t as getAssetId};
|
|
2
2
|
//# sourceMappingURL=asset-id.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"asset-id.js","names":[],"sources":["../../src/utils/asset-id.ts"],"sourcesContent":["import { TokenType } from '../constants';\nimport type { Asset } from '../types/asset';\nimport type { Caip2ChainId } from '../types/caip';\n\n/**\n * Returns a unique string identifier for an asset on a given chain.\n *\n * Format:\n * - Native assets: `{chainId}
|
|
1
|
+
{"version":3,"file":"asset-id.js","names":[],"sources":["../../src/utils/asset-id.ts"],"sourcesContent":["import { TokenType } from '../constants';\nimport type { Asset } from '../types/asset';\nimport type { Caip2ChainId } from '../types/caip';\n\n/**\n * Returns a unique string identifier for an asset on a given chain.\n *\n * Format:\n * - Native assets: `{chainId}::native`\n * - Token assets: `{chainId}::{tokenType}::{lowercaseAddress}`\n */\nexport function getAssetId(chainId: Caip2ChainId, asset: Asset): string {\n if (asset.type === TokenType.NATIVE) {\n return `${chainId}::${asset.type}`;\n }\n\n return `${chainId}::${asset.type}::${asset.address.toLowerCase()}`;\n}\n"],"mappings":"4CAWA,SAAgB,EAAW,EAAuB,EAAsB,CAKtE,OAJI,EAAM,OAAS,EAAU,OACpB,GAAG,EAAQ,IAAI,EAAM,OAGvB,GAAG,EAAQ,IAAI,EAAM,KAAK,IAAI,EAAM,QAAQ,aAAa"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const e=require(`../constants.cjs`),t=t=>{let n=new Map,r=[];for(let i of t){let t=n.get(i.id);if(!t){n.set(i.id,{...i,bridgeProviders:[...new Set(i.bridgeProviders)]}),r.push(i.id);continue}let a=t.extras!==void 0||i.extras!==void 0?{...t.extras??{},...i.extras??{}}:void 0,o=i.bridgeProviders.includes(e.ServiceType.MARKR)?i:t;n.set(i.id,{...o,bridgeProviders:[...new Set([...t.bridgeProviders,...i.bridgeProviders])],...a===void 0?{}:{extras:a}})}return r.map(e=>n.get(e)).filter(e=>e!==void 0)};exports.dedupeBridgeableAssets=t;
|
|
2
|
+
//# sourceMappingURL=bridgeable-assets.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bridgeable-assets.cjs","names":["ServiceType"],"sources":["../../src/utils/bridgeable-assets.ts"],"sourcesContent":["import { ServiceType } from '../constants';\nimport type { BridgeableUiAsset } from '../types/asset';\n\n/**\n * Deduplicates bridgeable assets by ID while preserving first-seen order.\n *\n * When duplicates are found:\n * - bridgeProviders are merged as a unique set (first-seen order)\n * - extras are shallow merged ({ ...existing.extras, ...incoming.extras })\n * - if the incoming duplicate includes MARKR, MARKR is treated as authoritative\n * for name/symbol/logoUri/address fields\n */\nexport const dedupeBridgeableAssets = (assets: readonly BridgeableUiAsset[]): readonly BridgeableUiAsset[] => {\n const merged = new Map<string, BridgeableUiAsset>();\n const orderedIds: string[] = [];\n\n for (const asset of assets) {\n const existing = merged.get(asset.id);\n\n if (!existing) {\n merged.set(asset.id, {\n ...asset,\n bridgeProviders: [...new Set(asset.bridgeProviders)],\n });\n orderedIds.push(asset.id);\n continue;\n }\n\n const mergedExtras =\n existing.extras !== undefined || asset.extras !== undefined\n ? {\n ...(existing.extras ?? {}),\n ...(asset.extras ?? {}),\n }\n : undefined;\n const incomingFromMarkr = asset.bridgeProviders.includes(ServiceType.MARKR);\n const canonicalAsset = incomingFromMarkr ? asset : existing;\n\n merged.set(asset.id, {\n ...canonicalAsset,\n bridgeProviders: [...new Set([...existing.bridgeProviders, ...asset.bridgeProviders])],\n ...(mergedExtras !== undefined ? { extras: mergedExtras } : {}),\n });\n }\n\n return orderedIds.map((id) => merged.get(id)).filter((asset): asset is BridgeableUiAsset => asset !== undefined);\n};\n"],"mappings":"oCAYa,EAA0B,GAAuE,CAC5G,IAAM,EAAS,IAAI,IACb,EAAuB,EAAE,CAE/B,IAAK,IAAM,KAAS,EAAQ,CAC1B,IAAM,EAAW,EAAO,IAAI,EAAM,GAAG,CAErC,GAAI,CAAC,EAAU,CACb,EAAO,IAAI,EAAM,GAAI,CACnB,GAAG,EACH,gBAAiB,CAAC,GAAG,IAAI,IAAI,EAAM,gBAAgB,CAAC,CACrD,CAAC,CACF,EAAW,KAAK,EAAM,GAAG,CACzB,SAGF,IAAM,EACJ,EAAS,SAAW,IAAA,IAAa,EAAM,SAAW,IAAA,GAC9C,CACE,GAAI,EAAS,QAAU,EAAE,CACzB,GAAI,EAAM,QAAU,EAAE,CACvB,CACD,IAAA,GAEA,EADoB,EAAM,gBAAgB,SAASA,EAAAA,YAAY,MAAM,CAChC,EAAQ,EAEnD,EAAO,IAAI,EAAM,GAAI,CACnB,GAAG,EACH,gBAAiB,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,EAAS,gBAAiB,GAAG,EAAM,gBAAgB,CAAC,CAAC,CACtF,GAAI,IAAiB,IAAA,GAAuC,EAAE,CAA7B,CAAE,OAAQ,EAAc,CAC1D,CAAC,CAGJ,OAAO,EAAW,IAAK,GAAO,EAAO,IAAI,EAAG,CAAC,CAAC,OAAQ,GAAsC,IAAU,IAAA,GAAU"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { BridgeableUiAsset } from "../types/asset.cjs";
|
|
2
|
+
|
|
3
|
+
//#region src/utils/bridgeable-assets.d.ts
|
|
4
|
+
/**
|
|
5
|
+
* Deduplicates bridgeable assets by ID while preserving first-seen order.
|
|
6
|
+
*
|
|
7
|
+
* When duplicates are found:
|
|
8
|
+
* - bridgeProviders are merged as a unique set (first-seen order)
|
|
9
|
+
* - extras are shallow merged ({ ...existing.extras, ...incoming.extras })
|
|
10
|
+
* - if the incoming duplicate includes MARKR, MARKR is treated as authoritative
|
|
11
|
+
* for name/symbol/logoUri/address fields
|
|
12
|
+
*/
|
|
13
|
+
declare const dedupeBridgeableAssets: (assets: readonly BridgeableUiAsset[]) => readonly BridgeableUiAsset[];
|
|
14
|
+
//#endregion
|
|
15
|
+
export { dedupeBridgeableAssets };
|
|
16
|
+
//# sourceMappingURL=bridgeable-assets.d.cts.map
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { BridgeableUiAsset } from "../types/asset.js";
|
|
2
|
+
|
|
3
|
+
//#region src/utils/bridgeable-assets.d.ts
|
|
4
|
+
/**
|
|
5
|
+
* Deduplicates bridgeable assets by ID while preserving first-seen order.
|
|
6
|
+
*
|
|
7
|
+
* When duplicates are found:
|
|
8
|
+
* - bridgeProviders are merged as a unique set (first-seen order)
|
|
9
|
+
* - extras are shallow merged ({ ...existing.extras, ...incoming.extras })
|
|
10
|
+
* - if the incoming duplicate includes MARKR, MARKR is treated as authoritative
|
|
11
|
+
* for name/symbol/logoUri/address fields
|
|
12
|
+
*/
|
|
13
|
+
declare const dedupeBridgeableAssets: (assets: readonly BridgeableUiAsset[]) => readonly BridgeableUiAsset[];
|
|
14
|
+
//#endregion
|
|
15
|
+
export { dedupeBridgeableAssets };
|
|
16
|
+
//# sourceMappingURL=bridgeable-assets.d.ts.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{ServiceType as e}from"../constants.js";const t=t=>{let n=new Map,r=[];for(let i of t){let t=n.get(i.id);if(!t){n.set(i.id,{...i,bridgeProviders:[...new Set(i.bridgeProviders)]}),r.push(i.id);continue}let a=t.extras!==void 0||i.extras!==void 0?{...t.extras??{},...i.extras??{}}:void 0,o=i.bridgeProviders.includes(e.MARKR)?i:t;n.set(i.id,{...o,bridgeProviders:[...new Set([...t.bridgeProviders,...i.bridgeProviders])],...a===void 0?{}:{extras:a}})}return r.map(e=>n.get(e)).filter(e=>e!==void 0)};export{t as dedupeBridgeableAssets};
|
|
2
|
+
//# sourceMappingURL=bridgeable-assets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bridgeable-assets.js","names":[],"sources":["../../src/utils/bridgeable-assets.ts"],"sourcesContent":["import { ServiceType } from '../constants';\nimport type { BridgeableUiAsset } from '../types/asset';\n\n/**\n * Deduplicates bridgeable assets by ID while preserving first-seen order.\n *\n * When duplicates are found:\n * - bridgeProviders are merged as a unique set (first-seen order)\n * - extras are shallow merged ({ ...existing.extras, ...incoming.extras })\n * - if the incoming duplicate includes MARKR, MARKR is treated as authoritative\n * for name/symbol/logoUri/address fields\n */\nexport const dedupeBridgeableAssets = (assets: readonly BridgeableUiAsset[]): readonly BridgeableUiAsset[] => {\n const merged = new Map<string, BridgeableUiAsset>();\n const orderedIds: string[] = [];\n\n for (const asset of assets) {\n const existing = merged.get(asset.id);\n\n if (!existing) {\n merged.set(asset.id, {\n ...asset,\n bridgeProviders: [...new Set(asset.bridgeProviders)],\n });\n orderedIds.push(asset.id);\n continue;\n }\n\n const mergedExtras =\n existing.extras !== undefined || asset.extras !== undefined\n ? {\n ...(existing.extras ?? {}),\n ...(asset.extras ?? {}),\n }\n : undefined;\n const incomingFromMarkr = asset.bridgeProviders.includes(ServiceType.MARKR);\n const canonicalAsset = incomingFromMarkr ? asset : existing;\n\n merged.set(asset.id, {\n ...canonicalAsset,\n bridgeProviders: [...new Set([...existing.bridgeProviders, ...asset.bridgeProviders])],\n ...(mergedExtras !== undefined ? { extras: mergedExtras } : {}),\n });\n }\n\n return orderedIds.map((id) => merged.get(id)).filter((asset): asset is BridgeableUiAsset => asset !== undefined);\n};\n"],"mappings":"8CAYA,MAAa,EAA0B,GAAuE,CAC5G,IAAM,EAAS,IAAI,IACb,EAAuB,EAAE,CAE/B,IAAK,IAAM,KAAS,EAAQ,CAC1B,IAAM,EAAW,EAAO,IAAI,EAAM,GAAG,CAErC,GAAI,CAAC,EAAU,CACb,EAAO,IAAI,EAAM,GAAI,CACnB,GAAG,EACH,gBAAiB,CAAC,GAAG,IAAI,IAAI,EAAM,gBAAgB,CAAC,CACrD,CAAC,CACF,EAAW,KAAK,EAAM,GAAG,CACzB,SAGF,IAAM,EACJ,EAAS,SAAW,IAAA,IAAa,EAAM,SAAW,IAAA,GAC9C,CACE,GAAI,EAAS,QAAU,EAAE,CACzB,GAAI,EAAM,QAAU,EAAE,CACvB,CACD,IAAA,GAEA,EADoB,EAAM,gBAAgB,SAAS,EAAY,MAAM,CAChC,EAAQ,EAEnD,EAAO,IAAI,EAAM,GAAI,CACnB,GAAG,EACH,gBAAiB,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,EAAS,gBAAiB,GAAG,EAAM,gBAAgB,CAAC,CAAC,CACtF,GAAI,IAAiB,IAAA,GAAuC,EAAE,CAA7B,CAAE,OAAQ,EAAc,CAC1D,CAAC,CAGJ,OAAO,EAAW,IAAK,GAAO,EAAO,IAAI,EAAG,CAAC,CAAC,OAAQ,GAAsC,IAAU,IAAA,GAAU"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
require(`../_virtual/_rolldown/runtime.cjs`);const e=require(`../constants.cjs`);let t=require(`zod`);const n=`__type`,r=`bigint`,i=`value`;function a(e){return JSON.stringify(e,(e,t)=>typeof t==`bigint`?{[n]:r,[i]:t.toString()}:t)}function o(e){let t=JSON.parse(e,(e,t)=>t&&typeof t==`object`&&t[n]===r&&typeof t[i]==`string`?BigInt(t[i]):t),a=p.safeParse(t);if(!a.success)throw Error(`Failed to parse transfer: ${a.error.message}`);return a.data}const s=t.z.object({name:t.z.string(),symbol:t.z.string(),decimals:t.z.int().nonnegative(),type:t.z.enum(e.TokenType)}),c=s.extend({type:t.z.literal(e.TokenType.NATIVE)}),l=s.extend({type:t.z.literal(e.TokenType.ERC20),address:t.z.string()}),u=s.extend({type:t.z.literal(e.TokenType.SPL),address:t.z.string()}),d=t.z.discriminatedUnion(`type`,[c,l,u]),f=t.z.object({chainId:t.z.string(),chainName:t.z.string(),networkToken:c,rpcUrl:t.z.string(),utilityAddresses:t.z.object({multicall:t.z.string()}).optional()}),p=t.z.object({amountIn:t.z.bigint().nonnegative(),amountOut:t.z.bigint().nonnegative(),completedAtMs:t.z.int().nonnegative().optional(),environment:t.z.enum(e.Environment),errorCode:t.z.number().optional(),errorReason:t.z.string().optional(),failedAtMs:t.z.int().nonnegative().optional(),fees:t.z.array(t.z.object({type:t.z.enum([`partner`,`protocol`,`gas`,`bridge`,`slippage`,`swap`,`other`]),fundingModel:t.z.enum([`included`,`additive`]).default(`included`),name:t.z.string(),amount:t.z.bigint().nonnegative(),chainId:t.z.string(),token:t.z.discriminatedUnion(`type`,[t.z.object({type:t.z.literal(e.TokenType.NATIVE)}),t.z.object({type:t.z.literal(e.TokenType.ERC20),address:t.z.string()}),t.z.object({type:t.z.literal(e.TokenType.SPL),address:t.z.string()})])})),fromAddress:t.z.string(),id:t.z.string(),metadata:t.z.record(t.z.string(),t.z.unknown()).optional(),partnerFeeBps:t.z.int().nonnegative().nullable(),refund:t.z.object({amount:t.z.bigint().nonnegative(),asset:d.nullable(),chainId:t.z.string(),txHash:t.z.string().nullable(),timestampMs:t.z.int().nonnegative()}).optional(),source:t.z.object({confirmationCount:t.z.int().nonnegative(),requiredConfirmationCount:t.z.int().nonnegative(),startedAtMs:t.z.int().nonnegative(),targetStartBlockNumber:t.z.bigint().nonnegative().optional(),txHash:t.z.string()}).optional(),target:t.z.object({confirmationCount:t.z.int().nonnegative(),requiredConfirmationCount:t.z.int().nonnegative(),startedAtMs:t.z.int().nonnegative(),txHash:t.z.string().optional()}).nullable().optional(),sourceAsset:d,sourceChain:f,status:t.z.enum([`created`,`source-pending`,`source-completed`,`target-pending`,`refunded`,`completed`,`failed`]),targetAsset:d,targetChain:f,toAddress:t.z.string(),type:t.z.enum(e.ServiceType)});exports.parseTransfer=o,exports.stringifyTransfer=a;
|
|
1
|
+
require(`../_virtual/_rolldown/runtime.cjs`);const e=require(`../constants.cjs`);let t=require(`zod`);const n=`__type`,r=`bigint`,i=`value`;function a(e){return JSON.stringify(e,(e,t)=>typeof t==`bigint`?{[n]:r,[i]:t.toString()}:t)}function o(e){let t=JSON.parse(e,(e,t)=>t&&typeof t==`object`&&t[n]===r&&typeof t[i]==`string`?BigInt(t[i]):t),a=p.safeParse(t);if(!a.success)throw Error(`Failed to parse transfer: ${a.error.message}`);return a.data}const s=t.z.object({name:t.z.string(),symbol:t.z.string(),decimals:t.z.int().nonnegative(),type:t.z.enum(e.TokenType)}),c=s.extend({type:t.z.literal(e.TokenType.NATIVE)}),l=s.extend({type:t.z.literal(e.TokenType.ERC20),address:t.z.string()}),u=s.extend({type:t.z.literal(e.TokenType.SPL),address:t.z.string()}),d=t.z.discriminatedUnion(`type`,[c,l,u]),f=t.z.object({chainId:t.z.string(),chainName:t.z.string(),networkToken:c,rpcUrl:t.z.string(),utilityAddresses:t.z.object({multicall:t.z.string()}).optional()}),p=t.z.object({amountIn:t.z.bigint().nonnegative(),amountOut:t.z.bigint().nonnegative(),completedAtMs:t.z.int().nonnegative().optional(),environment:t.z.enum(e.Environment),errorCode:t.z.number().optional(),errorReason:t.z.string().optional(),failedAtMs:t.z.int().nonnegative().optional(),fees:t.z.array(t.z.object({type:t.z.enum([`partner`,`protocol`,`gas`,`bridge`,`slippage`,`swap`,`other`,`relay`]),fundingModel:t.z.enum([`included`,`additive`]).default(`included`),name:t.z.string(),amount:t.z.bigint().nonnegative(),chainId:t.z.string(),token:t.z.discriminatedUnion(`type`,[t.z.object({type:t.z.literal(e.TokenType.NATIVE)}),t.z.object({type:t.z.literal(e.TokenType.ERC20),address:t.z.string()}),t.z.object({type:t.z.literal(e.TokenType.SPL),address:t.z.string()})])})),fromAddress:t.z.string(),id:t.z.string(),metadata:t.z.record(t.z.string(),t.z.unknown()).optional(),partnerFeeBps:t.z.int().nonnegative().nullable(),refund:t.z.object({amount:t.z.bigint().nonnegative(),asset:d.nullable(),chainId:t.z.string(),txHash:t.z.string().nullable(),timestampMs:t.z.int().nonnegative()}).optional(),source:t.z.object({confirmationCount:t.z.int().nonnegative(),requiredConfirmationCount:t.z.int().nonnegative(),startedAtMs:t.z.int().nonnegative(),targetStartBlockNumber:t.z.bigint().nonnegative().optional(),txHash:t.z.string()}).optional(),target:t.z.object({confirmationCount:t.z.int().nonnegative(),requiredConfirmationCount:t.z.int().nonnegative(),startedAtMs:t.z.int().nonnegative(),txHash:t.z.string().optional()}).nullable().optional(),sourceAsset:d,sourceChain:f,status:t.z.enum([`created`,`source-pending`,`source-completed`,`target-pending`,`refunded`,`completed`,`failed`]),targetAsset:d,targetChain:f,toAddress:t.z.string(),type:t.z.enum(e.ServiceType)});exports.parseTransfer=o,exports.stringifyTransfer=a;
|
|
2
2
|
//# sourceMappingURL=transfer-utils.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transfer-utils.cjs","names":["z","TokenType","Environment","ServiceType"],"sources":["../../src/utils/transfer-utils.ts"],"sourcesContent":["import { z } from 'zod';\nimport { Environment, ServiceType, TokenType } from '../constants';\nimport type { Transfer } from '../types/transfer';\n\nconst STRINGIFY_TYPE_TAG = '__type';\nconst BIGINT_TYPE = 'bigint';\nconst STRINGIFY_VALUE = 'value';\n\nexport function stringifyTransfer(transfer: Transfer): string {\n return JSON.stringify(transfer, (_key, value) => {\n if (typeof value === 'bigint') {\n return { [STRINGIFY_TYPE_TAG]: BIGINT_TYPE, [STRINGIFY_VALUE]: value.toString() };\n }\n\n return value;\n });\n}\n\nexport function parseTransfer(transferString: string): Transfer {\n const rawJSON = JSON.parse(transferString, (_key, value) => {\n if (\n value &&\n typeof value === 'object' &&\n value[STRINGIFY_TYPE_TAG] === BIGINT_TYPE &&\n typeof value[STRINGIFY_VALUE] === 'string'\n ) {\n return BigInt(value[STRINGIFY_VALUE]);\n }\n\n return value;\n });\n\n const parsed = LooseTransferSchema.safeParse(rawJSON);\n\n if (!parsed.success) {\n throw new Error(`Failed to parse transfer: ${parsed.error.message}`);\n }\n\n return parsed.data as Transfer;\n}\n\nconst AssetBaseSchema = z.object({\n name: z.string(),\n symbol: z.string(),\n decimals: z.int().nonnegative(),\n type: z.enum(TokenType),\n});\n\nconst NativeAssetSchema = AssetBaseSchema.extend({\n type: z.literal(TokenType.NATIVE),\n});\n\nconst LooseErc20AssetSchema = AssetBaseSchema.extend({\n type: z.literal(TokenType.ERC20),\n address: z.string(),\n});\n\nconst LooseSplAssetSchema = AssetBaseSchema.extend({\n type: z.literal(TokenType.SPL),\n address: z.string(),\n});\n\nconst LooseAssetSchema = z.discriminatedUnion('type', [NativeAssetSchema, LooseErc20AssetSchema, LooseSplAssetSchema]);\n\nconst ChainSchema = z.object({\n chainId: z.string(),\n chainName: z.string(),\n networkToken: NativeAssetSchema,\n rpcUrl: z.string(),\n utilityAddresses: z\n .object({\n multicall: z.string(),\n })\n .optional(),\n});\n\nconst LooseTransferSchema = z.object({\n amountIn: z.bigint().nonnegative(),\n amountOut: z.bigint().nonnegative(),\n completedAtMs: z.int().nonnegative().optional(),\n environment: z.enum(Environment),\n errorCode: z.number().optional(),\n errorReason: z.string().optional(),\n failedAtMs: z.int().nonnegative().optional(),\n fees: z.array(\n z.object({\n type: z.enum(['partner', 'protocol', 'gas', 'bridge', 'slippage', 'swap', 'other']),\n fundingModel: z.enum(['included', 'additive']).default('included'),\n name: z.string(),\n amount: z.bigint().nonnegative(),\n chainId: z.string(),\n token: z.discriminatedUnion('type', [\n z.object({\n type: z.literal(TokenType.NATIVE),\n }),\n z.object({\n type: z.literal(TokenType.ERC20),\n address: z.string(),\n }),\n z.object({\n type: z.literal(TokenType.SPL),\n address: z.string(),\n }),\n ]),\n }),\n ),\n fromAddress: z.string(),\n id: z.string(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n partnerFeeBps: z.int().nonnegative().nullable(),\n refund: z\n .object({\n amount: z.bigint().nonnegative(),\n asset: LooseAssetSchema.nullable(),\n chainId: z.string(),\n txHash: z.string().nullable(),\n timestampMs: z.int().nonnegative(),\n })\n .optional(),\n source: z\n .object({\n confirmationCount: z.int().nonnegative(),\n requiredConfirmationCount: z.int().nonnegative(),\n startedAtMs: z.int().nonnegative(),\n targetStartBlockNumber: z.bigint().nonnegative().optional(),\n txHash: z.string(),\n })\n .optional(),\n target: z\n .object({\n confirmationCount: z.int().nonnegative(),\n requiredConfirmationCount: z.int().nonnegative(),\n startedAtMs: z.int().nonnegative(),\n txHash: z.string().optional(),\n })\n .nullable()\n .optional(),\n sourceAsset: LooseAssetSchema,\n sourceChain: ChainSchema,\n status: z.enum([\n 'created',\n 'source-pending',\n 'source-completed',\n 'target-pending',\n 'refunded',\n 'completed',\n 'failed',\n ]),\n targetAsset: LooseAssetSchema,\n targetChain: ChainSchema,\n toAddress: z.string(),\n type: z.enum(ServiceType),\n});\n"],"mappings":"sGAIA,MAAM,EAAqB,SACrB,EAAc,SACd,EAAkB,QAExB,SAAgB,EAAkB,EAA4B,CAC5D,OAAO,KAAK,UAAU,GAAW,EAAM,IACjC,OAAO,GAAU,SACZ,EAAG,GAAqB,GAAc,GAAkB,EAAM,UAAU,CAAE,CAG5E,EACP,CAGJ,SAAgB,EAAc,EAAkC,CAC9D,IAAM,EAAU,KAAK,MAAM,GAAiB,EAAM,IAE9C,GACA,OAAO,GAAU,UACjB,EAAM,KAAwB,GAC9B,OAAO,EAAM,IAAqB,SAE3B,OAAO,EAAM,GAAiB,CAGhC,EACP,CAEI,EAAS,EAAoB,UAAU,EAAQ,CAErD,GAAI,CAAC,EAAO,QACV,MAAU,MAAM,6BAA6B,EAAO,MAAM,UAAU,CAGtE,OAAO,EAAO,KAGhB,MAAM,EAAkBA,EAAAA,EAAE,OAAO,CAC/B,KAAMA,EAAAA,EAAE,QAAQ,CAChB,OAAQA,EAAAA,EAAE,QAAQ,CAClB,SAAUA,EAAAA,EAAE,KAAK,CAAC,aAAa,CAC/B,KAAMA,EAAAA,EAAE,KAAKC,EAAAA,UAAU,CACxB,CAAC,CAEI,EAAoB,EAAgB,OAAO,CAC/C,KAAMD,EAAAA,EAAE,QAAQC,EAAAA,UAAU,OAAO,CAClC,CAAC,CAEI,EAAwB,EAAgB,OAAO,CACnD,KAAMD,EAAAA,EAAE,QAAQC,EAAAA,UAAU,MAAM,CAChC,QAASD,EAAAA,EAAE,QAAQ,CACpB,CAAC,CAEI,EAAsB,EAAgB,OAAO,CACjD,KAAMA,EAAAA,EAAE,QAAQC,EAAAA,UAAU,IAAI,CAC9B,QAASD,EAAAA,EAAE,QAAQ,CACpB,CAAC,CAEI,EAAmBA,EAAAA,EAAE,mBAAmB,OAAQ,CAAC,EAAmB,EAAuB,EAAoB,CAAC,CAEhH,EAAcA,EAAAA,EAAE,OAAO,CAC3B,QAASA,EAAAA,EAAE,QAAQ,CACnB,UAAWA,EAAAA,EAAE,QAAQ,CACrB,aAAc,EACd,OAAQA,EAAAA,EAAE,QAAQ,CAClB,iBAAkBA,EAAAA,EACf,OAAO,CACN,UAAWA,EAAAA,EAAE,QAAQ,CACtB,CAAC,CACD,UAAU,CACd,CAAC,CAEI,EAAsBA,EAAAA,EAAE,OAAO,CACnC,SAAUA,EAAAA,EAAE,QAAQ,CAAC,aAAa,CAClC,UAAWA,EAAAA,EAAE,QAAQ,CAAC,aAAa,CACnC,cAAeA,EAAAA,EAAE,KAAK,CAAC,aAAa,CAAC,UAAU,CAC/C,YAAaA,EAAAA,EAAE,KAAKE,EAAAA,YAAY,CAChC,UAAWF,EAAAA,EAAE,QAAQ,CAAC,UAAU,CAChC,YAAaA,EAAAA,EAAE,QAAQ,CAAC,UAAU,CAClC,WAAYA,EAAAA,EAAE,KAAK,CAAC,aAAa,CAAC,UAAU,CAC5C,KAAMA,EAAAA,EAAE,MACNA,EAAAA,EAAE,OAAO,CACP,KAAMA,EAAAA,EAAE,KAAK,CAAC,UAAW,WAAY,MAAO,SAAU,WAAY,OAAQ,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"transfer-utils.cjs","names":["z","TokenType","Environment","ServiceType"],"sources":["../../src/utils/transfer-utils.ts"],"sourcesContent":["import { z } from 'zod';\nimport { Environment, ServiceType, TokenType } from '../constants';\nimport type { Transfer } from '../types/transfer';\n\nconst STRINGIFY_TYPE_TAG = '__type';\nconst BIGINT_TYPE = 'bigint';\nconst STRINGIFY_VALUE = 'value';\n\nexport function stringifyTransfer(transfer: Transfer): string {\n return JSON.stringify(transfer, (_key, value) => {\n if (typeof value === 'bigint') {\n return { [STRINGIFY_TYPE_TAG]: BIGINT_TYPE, [STRINGIFY_VALUE]: value.toString() };\n }\n\n return value;\n });\n}\n\nexport function parseTransfer(transferString: string): Transfer {\n const rawJSON = JSON.parse(transferString, (_key, value) => {\n if (\n value &&\n typeof value === 'object' &&\n value[STRINGIFY_TYPE_TAG] === BIGINT_TYPE &&\n typeof value[STRINGIFY_VALUE] === 'string'\n ) {\n return BigInt(value[STRINGIFY_VALUE]);\n }\n\n return value;\n });\n\n const parsed = LooseTransferSchema.safeParse(rawJSON);\n\n if (!parsed.success) {\n throw new Error(`Failed to parse transfer: ${parsed.error.message}`);\n }\n\n return parsed.data as Transfer;\n}\n\nconst AssetBaseSchema = z.object({\n name: z.string(),\n symbol: z.string(),\n decimals: z.int().nonnegative(),\n type: z.enum(TokenType),\n});\n\nconst NativeAssetSchema = AssetBaseSchema.extend({\n type: z.literal(TokenType.NATIVE),\n});\n\nconst LooseErc20AssetSchema = AssetBaseSchema.extend({\n type: z.literal(TokenType.ERC20),\n address: z.string(),\n});\n\nconst LooseSplAssetSchema = AssetBaseSchema.extend({\n type: z.literal(TokenType.SPL),\n address: z.string(),\n});\n\nconst LooseAssetSchema = z.discriminatedUnion('type', [NativeAssetSchema, LooseErc20AssetSchema, LooseSplAssetSchema]);\n\nconst ChainSchema = z.object({\n chainId: z.string(),\n chainName: z.string(),\n networkToken: NativeAssetSchema,\n rpcUrl: z.string(),\n utilityAddresses: z\n .object({\n multicall: z.string(),\n })\n .optional(),\n});\n\nconst LooseTransferSchema = z.object({\n amountIn: z.bigint().nonnegative(),\n amountOut: z.bigint().nonnegative(),\n completedAtMs: z.int().nonnegative().optional(),\n environment: z.enum(Environment),\n errorCode: z.number().optional(),\n errorReason: z.string().optional(),\n failedAtMs: z.int().nonnegative().optional(),\n fees: z.array(\n z.object({\n type: z.enum(['partner', 'protocol', 'gas', 'bridge', 'slippage', 'swap', 'other', 'relay']),\n fundingModel: z.enum(['included', 'additive']).default('included'),\n name: z.string(),\n amount: z.bigint().nonnegative(),\n chainId: z.string(),\n token: z.discriminatedUnion('type', [\n z.object({\n type: z.literal(TokenType.NATIVE),\n }),\n z.object({\n type: z.literal(TokenType.ERC20),\n address: z.string(),\n }),\n z.object({\n type: z.literal(TokenType.SPL),\n address: z.string(),\n }),\n ]),\n }),\n ),\n fromAddress: z.string(),\n id: z.string(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n partnerFeeBps: z.int().nonnegative().nullable(),\n refund: z\n .object({\n amount: z.bigint().nonnegative(),\n asset: LooseAssetSchema.nullable(),\n chainId: z.string(),\n txHash: z.string().nullable(),\n timestampMs: z.int().nonnegative(),\n })\n .optional(),\n source: z\n .object({\n confirmationCount: z.int().nonnegative(),\n requiredConfirmationCount: z.int().nonnegative(),\n startedAtMs: z.int().nonnegative(),\n targetStartBlockNumber: z.bigint().nonnegative().optional(),\n txHash: z.string(),\n })\n .optional(),\n target: z\n .object({\n confirmationCount: z.int().nonnegative(),\n requiredConfirmationCount: z.int().nonnegative(),\n startedAtMs: z.int().nonnegative(),\n txHash: z.string().optional(),\n })\n .nullable()\n .optional(),\n sourceAsset: LooseAssetSchema,\n sourceChain: ChainSchema,\n status: z.enum([\n 'created',\n 'source-pending',\n 'source-completed',\n 'target-pending',\n 'refunded',\n 'completed',\n 'failed',\n ]),\n targetAsset: LooseAssetSchema,\n targetChain: ChainSchema,\n toAddress: z.string(),\n type: z.enum(ServiceType),\n});\n"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{Environment as e,ServiceType as t,TokenType as n}from"../constants.js";import{z as r}from"zod";const i=`__type`,a=`bigint`,o=`value`;function s(e){return JSON.stringify(e,(e,t)=>typeof t==`bigint`?{[i]:a,[o]:t.toString()}:t)}function c(e){let t=JSON.parse(e,(e,t)=>t&&typeof t==`object`&&t[i]===a&&typeof t[o]==`string`?BigInt(t[o]):t),n=h.safeParse(t);if(!n.success)throw Error(`Failed to parse transfer: ${n.error.message}`);return n.data}const l=r.object({name:r.string(),symbol:r.string(),decimals:r.int().nonnegative(),type:r.enum(n)}),u=l.extend({type:r.literal(n.NATIVE)}),d=l.extend({type:r.literal(n.ERC20),address:r.string()}),f=l.extend({type:r.literal(n.SPL),address:r.string()}),p=r.discriminatedUnion(`type`,[u,d,f]),m=r.object({chainId:r.string(),chainName:r.string(),networkToken:u,rpcUrl:r.string(),utilityAddresses:r.object({multicall:r.string()}).optional()}),h=r.object({amountIn:r.bigint().nonnegative(),amountOut:r.bigint().nonnegative(),completedAtMs:r.int().nonnegative().optional(),environment:r.enum(e),errorCode:r.number().optional(),errorReason:r.string().optional(),failedAtMs:r.int().nonnegative().optional(),fees:r.array(r.object({type:r.enum([`partner`,`protocol`,`gas`,`bridge`,`slippage`,`swap`,`other`]),fundingModel:r.enum([`included`,`additive`]).default(`included`),name:r.string(),amount:r.bigint().nonnegative(),chainId:r.string(),token:r.discriminatedUnion(`type`,[r.object({type:r.literal(n.NATIVE)}),r.object({type:r.literal(n.ERC20),address:r.string()}),r.object({type:r.literal(n.SPL),address:r.string()})])})),fromAddress:r.string(),id:r.string(),metadata:r.record(r.string(),r.unknown()).optional(),partnerFeeBps:r.int().nonnegative().nullable(),refund:r.object({amount:r.bigint().nonnegative(),asset:p.nullable(),chainId:r.string(),txHash:r.string().nullable(),timestampMs:r.int().nonnegative()}).optional(),source:r.object({confirmationCount:r.int().nonnegative(),requiredConfirmationCount:r.int().nonnegative(),startedAtMs:r.int().nonnegative(),targetStartBlockNumber:r.bigint().nonnegative().optional(),txHash:r.string()}).optional(),target:r.object({confirmationCount:r.int().nonnegative(),requiredConfirmationCount:r.int().nonnegative(),startedAtMs:r.int().nonnegative(),txHash:r.string().optional()}).nullable().optional(),sourceAsset:p,sourceChain:m,status:r.enum([`created`,`source-pending`,`source-completed`,`target-pending`,`refunded`,`completed`,`failed`]),targetAsset:p,targetChain:m,toAddress:r.string(),type:r.enum(t)});export{c as parseTransfer,s as stringifyTransfer};
|
|
1
|
+
import{Environment as e,ServiceType as t,TokenType as n}from"../constants.js";import{z as r}from"zod";const i=`__type`,a=`bigint`,o=`value`;function s(e){return JSON.stringify(e,(e,t)=>typeof t==`bigint`?{[i]:a,[o]:t.toString()}:t)}function c(e){let t=JSON.parse(e,(e,t)=>t&&typeof t==`object`&&t[i]===a&&typeof t[o]==`string`?BigInt(t[o]):t),n=h.safeParse(t);if(!n.success)throw Error(`Failed to parse transfer: ${n.error.message}`);return n.data}const l=r.object({name:r.string(),symbol:r.string(),decimals:r.int().nonnegative(),type:r.enum(n)}),u=l.extend({type:r.literal(n.NATIVE)}),d=l.extend({type:r.literal(n.ERC20),address:r.string()}),f=l.extend({type:r.literal(n.SPL),address:r.string()}),p=r.discriminatedUnion(`type`,[u,d,f]),m=r.object({chainId:r.string(),chainName:r.string(),networkToken:u,rpcUrl:r.string(),utilityAddresses:r.object({multicall:r.string()}).optional()}),h=r.object({amountIn:r.bigint().nonnegative(),amountOut:r.bigint().nonnegative(),completedAtMs:r.int().nonnegative().optional(),environment:r.enum(e),errorCode:r.number().optional(),errorReason:r.string().optional(),failedAtMs:r.int().nonnegative().optional(),fees:r.array(r.object({type:r.enum([`partner`,`protocol`,`gas`,`bridge`,`slippage`,`swap`,`other`,`relay`]),fundingModel:r.enum([`included`,`additive`]).default(`included`),name:r.string(),amount:r.bigint().nonnegative(),chainId:r.string(),token:r.discriminatedUnion(`type`,[r.object({type:r.literal(n.NATIVE)}),r.object({type:r.literal(n.ERC20),address:r.string()}),r.object({type:r.literal(n.SPL),address:r.string()})])})),fromAddress:r.string(),id:r.string(),metadata:r.record(r.string(),r.unknown()).optional(),partnerFeeBps:r.int().nonnegative().nullable(),refund:r.object({amount:r.bigint().nonnegative(),asset:p.nullable(),chainId:r.string(),txHash:r.string().nullable(),timestampMs:r.int().nonnegative()}).optional(),source:r.object({confirmationCount:r.int().nonnegative(),requiredConfirmationCount:r.int().nonnegative(),startedAtMs:r.int().nonnegative(),targetStartBlockNumber:r.bigint().nonnegative().optional(),txHash:r.string()}).optional(),target:r.object({confirmationCount:r.int().nonnegative(),requiredConfirmationCount:r.int().nonnegative(),startedAtMs:r.int().nonnegative(),txHash:r.string().optional()}).nullable().optional(),sourceAsset:p,sourceChain:m,status:r.enum([`created`,`source-pending`,`source-completed`,`target-pending`,`refunded`,`completed`,`failed`]),targetAsset:p,targetChain:m,toAddress:r.string(),type:r.enum(t)});export{c as parseTransfer,s as stringifyTransfer};
|
|
2
2
|
//# sourceMappingURL=transfer-utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transfer-utils.js","names":[],"sources":["../../src/utils/transfer-utils.ts"],"sourcesContent":["import { z } from 'zod';\nimport { Environment, ServiceType, TokenType } from '../constants';\nimport type { Transfer } from '../types/transfer';\n\nconst STRINGIFY_TYPE_TAG = '__type';\nconst BIGINT_TYPE = 'bigint';\nconst STRINGIFY_VALUE = 'value';\n\nexport function stringifyTransfer(transfer: Transfer): string {\n return JSON.stringify(transfer, (_key, value) => {\n if (typeof value === 'bigint') {\n return { [STRINGIFY_TYPE_TAG]: BIGINT_TYPE, [STRINGIFY_VALUE]: value.toString() };\n }\n\n return value;\n });\n}\n\nexport function parseTransfer(transferString: string): Transfer {\n const rawJSON = JSON.parse(transferString, (_key, value) => {\n if (\n value &&\n typeof value === 'object' &&\n value[STRINGIFY_TYPE_TAG] === BIGINT_TYPE &&\n typeof value[STRINGIFY_VALUE] === 'string'\n ) {\n return BigInt(value[STRINGIFY_VALUE]);\n }\n\n return value;\n });\n\n const parsed = LooseTransferSchema.safeParse(rawJSON);\n\n if (!parsed.success) {\n throw new Error(`Failed to parse transfer: ${parsed.error.message}`);\n }\n\n return parsed.data as Transfer;\n}\n\nconst AssetBaseSchema = z.object({\n name: z.string(),\n symbol: z.string(),\n decimals: z.int().nonnegative(),\n type: z.enum(TokenType),\n});\n\nconst NativeAssetSchema = AssetBaseSchema.extend({\n type: z.literal(TokenType.NATIVE),\n});\n\nconst LooseErc20AssetSchema = AssetBaseSchema.extend({\n type: z.literal(TokenType.ERC20),\n address: z.string(),\n});\n\nconst LooseSplAssetSchema = AssetBaseSchema.extend({\n type: z.literal(TokenType.SPL),\n address: z.string(),\n});\n\nconst LooseAssetSchema = z.discriminatedUnion('type', [NativeAssetSchema, LooseErc20AssetSchema, LooseSplAssetSchema]);\n\nconst ChainSchema = z.object({\n chainId: z.string(),\n chainName: z.string(),\n networkToken: NativeAssetSchema,\n rpcUrl: z.string(),\n utilityAddresses: z\n .object({\n multicall: z.string(),\n })\n .optional(),\n});\n\nconst LooseTransferSchema = z.object({\n amountIn: z.bigint().nonnegative(),\n amountOut: z.bigint().nonnegative(),\n completedAtMs: z.int().nonnegative().optional(),\n environment: z.enum(Environment),\n errorCode: z.number().optional(),\n errorReason: z.string().optional(),\n failedAtMs: z.int().nonnegative().optional(),\n fees: z.array(\n z.object({\n type: z.enum(['partner', 'protocol', 'gas', 'bridge', 'slippage', 'swap', 'other']),\n fundingModel: z.enum(['included', 'additive']).default('included'),\n name: z.string(),\n amount: z.bigint().nonnegative(),\n chainId: z.string(),\n token: z.discriminatedUnion('type', [\n z.object({\n type: z.literal(TokenType.NATIVE),\n }),\n z.object({\n type: z.literal(TokenType.ERC20),\n address: z.string(),\n }),\n z.object({\n type: z.literal(TokenType.SPL),\n address: z.string(),\n }),\n ]),\n }),\n ),\n fromAddress: z.string(),\n id: z.string(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n partnerFeeBps: z.int().nonnegative().nullable(),\n refund: z\n .object({\n amount: z.bigint().nonnegative(),\n asset: LooseAssetSchema.nullable(),\n chainId: z.string(),\n txHash: z.string().nullable(),\n timestampMs: z.int().nonnegative(),\n })\n .optional(),\n source: z\n .object({\n confirmationCount: z.int().nonnegative(),\n requiredConfirmationCount: z.int().nonnegative(),\n startedAtMs: z.int().nonnegative(),\n targetStartBlockNumber: z.bigint().nonnegative().optional(),\n txHash: z.string(),\n })\n .optional(),\n target: z\n .object({\n confirmationCount: z.int().nonnegative(),\n requiredConfirmationCount: z.int().nonnegative(),\n startedAtMs: z.int().nonnegative(),\n txHash: z.string().optional(),\n })\n .nullable()\n .optional(),\n sourceAsset: LooseAssetSchema,\n sourceChain: ChainSchema,\n status: z.enum([\n 'created',\n 'source-pending',\n 'source-completed',\n 'target-pending',\n 'refunded',\n 'completed',\n 'failed',\n ]),\n targetAsset: LooseAssetSchema,\n targetChain: ChainSchema,\n toAddress: z.string(),\n type: z.enum(ServiceType),\n});\n"],"mappings":"sGAIA,MAAM,EAAqB,SACrB,EAAc,SACd,EAAkB,QAExB,SAAgB,EAAkB,EAA4B,CAC5D,OAAO,KAAK,UAAU,GAAW,EAAM,IACjC,OAAO,GAAU,SACZ,EAAG,GAAqB,GAAc,GAAkB,EAAM,UAAU,CAAE,CAG5E,EACP,CAGJ,SAAgB,EAAc,EAAkC,CAC9D,IAAM,EAAU,KAAK,MAAM,GAAiB,EAAM,IAE9C,GACA,OAAO,GAAU,UACjB,EAAM,KAAwB,GAC9B,OAAO,EAAM,IAAqB,SAE3B,OAAO,EAAM,GAAiB,CAGhC,EACP,CAEI,EAAS,EAAoB,UAAU,EAAQ,CAErD,GAAI,CAAC,EAAO,QACV,MAAU,MAAM,6BAA6B,EAAO,MAAM,UAAU,CAGtE,OAAO,EAAO,KAGhB,MAAM,EAAkB,EAAE,OAAO,CAC/B,KAAM,EAAE,QAAQ,CAChB,OAAQ,EAAE,QAAQ,CAClB,SAAU,EAAE,KAAK,CAAC,aAAa,CAC/B,KAAM,EAAE,KAAK,EAAU,CACxB,CAAC,CAEI,EAAoB,EAAgB,OAAO,CAC/C,KAAM,EAAE,QAAQ,EAAU,OAAO,CAClC,CAAC,CAEI,EAAwB,EAAgB,OAAO,CACnD,KAAM,EAAE,QAAQ,EAAU,MAAM,CAChC,QAAS,EAAE,QAAQ,CACpB,CAAC,CAEI,EAAsB,EAAgB,OAAO,CACjD,KAAM,EAAE,QAAQ,EAAU,IAAI,CAC9B,QAAS,EAAE,QAAQ,CACpB,CAAC,CAEI,EAAmB,EAAE,mBAAmB,OAAQ,CAAC,EAAmB,EAAuB,EAAoB,CAAC,CAEhH,EAAc,EAAE,OAAO,CAC3B,QAAS,EAAE,QAAQ,CACnB,UAAW,EAAE,QAAQ,CACrB,aAAc,EACd,OAAQ,EAAE,QAAQ,CAClB,iBAAkB,EACf,OAAO,CACN,UAAW,EAAE,QAAQ,CACtB,CAAC,CACD,UAAU,CACd,CAAC,CAEI,EAAsB,EAAE,OAAO,CACnC,SAAU,EAAE,QAAQ,CAAC,aAAa,CAClC,UAAW,EAAE,QAAQ,CAAC,aAAa,CACnC,cAAe,EAAE,KAAK,CAAC,aAAa,CAAC,UAAU,CAC/C,YAAa,EAAE,KAAK,EAAY,CAChC,UAAW,EAAE,QAAQ,CAAC,UAAU,CAChC,YAAa,EAAE,QAAQ,CAAC,UAAU,CAClC,WAAY,EAAE,KAAK,CAAC,aAAa,CAAC,UAAU,CAC5C,KAAM,EAAE,MACN,EAAE,OAAO,CACP,KAAM,EAAE,KAAK,CAAC,UAAW,WAAY,MAAO,SAAU,WAAY,OAAQ,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"transfer-utils.js","names":[],"sources":["../../src/utils/transfer-utils.ts"],"sourcesContent":["import { z } from 'zod';\nimport { Environment, ServiceType, TokenType } from '../constants';\nimport type { Transfer } from '../types/transfer';\n\nconst STRINGIFY_TYPE_TAG = '__type';\nconst BIGINT_TYPE = 'bigint';\nconst STRINGIFY_VALUE = 'value';\n\nexport function stringifyTransfer(transfer: Transfer): string {\n return JSON.stringify(transfer, (_key, value) => {\n if (typeof value === 'bigint') {\n return { [STRINGIFY_TYPE_TAG]: BIGINT_TYPE, [STRINGIFY_VALUE]: value.toString() };\n }\n\n return value;\n });\n}\n\nexport function parseTransfer(transferString: string): Transfer {\n const rawJSON = JSON.parse(transferString, (_key, value) => {\n if (\n value &&\n typeof value === 'object' &&\n value[STRINGIFY_TYPE_TAG] === BIGINT_TYPE &&\n typeof value[STRINGIFY_VALUE] === 'string'\n ) {\n return BigInt(value[STRINGIFY_VALUE]);\n }\n\n return value;\n });\n\n const parsed = LooseTransferSchema.safeParse(rawJSON);\n\n if (!parsed.success) {\n throw new Error(`Failed to parse transfer: ${parsed.error.message}`);\n }\n\n return parsed.data as Transfer;\n}\n\nconst AssetBaseSchema = z.object({\n name: z.string(),\n symbol: z.string(),\n decimals: z.int().nonnegative(),\n type: z.enum(TokenType),\n});\n\nconst NativeAssetSchema = AssetBaseSchema.extend({\n type: z.literal(TokenType.NATIVE),\n});\n\nconst LooseErc20AssetSchema = AssetBaseSchema.extend({\n type: z.literal(TokenType.ERC20),\n address: z.string(),\n});\n\nconst LooseSplAssetSchema = AssetBaseSchema.extend({\n type: z.literal(TokenType.SPL),\n address: z.string(),\n});\n\nconst LooseAssetSchema = z.discriminatedUnion('type', [NativeAssetSchema, LooseErc20AssetSchema, LooseSplAssetSchema]);\n\nconst ChainSchema = z.object({\n chainId: z.string(),\n chainName: z.string(),\n networkToken: NativeAssetSchema,\n rpcUrl: z.string(),\n utilityAddresses: z\n .object({\n multicall: z.string(),\n })\n .optional(),\n});\n\nconst LooseTransferSchema = z.object({\n amountIn: z.bigint().nonnegative(),\n amountOut: z.bigint().nonnegative(),\n completedAtMs: z.int().nonnegative().optional(),\n environment: z.enum(Environment),\n errorCode: z.number().optional(),\n errorReason: z.string().optional(),\n failedAtMs: z.int().nonnegative().optional(),\n fees: z.array(\n z.object({\n type: z.enum(['partner', 'protocol', 'gas', 'bridge', 'slippage', 'swap', 'other', 'relay']),\n fundingModel: z.enum(['included', 'additive']).default('included'),\n name: z.string(),\n amount: z.bigint().nonnegative(),\n chainId: z.string(),\n token: z.discriminatedUnion('type', [\n z.object({\n type: z.literal(TokenType.NATIVE),\n }),\n z.object({\n type: z.literal(TokenType.ERC20),\n address: z.string(),\n }),\n z.object({\n type: z.literal(TokenType.SPL),\n address: z.string(),\n }),\n ]),\n }),\n ),\n fromAddress: z.string(),\n id: z.string(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n partnerFeeBps: z.int().nonnegative().nullable(),\n refund: z\n .object({\n amount: z.bigint().nonnegative(),\n asset: LooseAssetSchema.nullable(),\n chainId: z.string(),\n txHash: z.string().nullable(),\n timestampMs: z.int().nonnegative(),\n })\n .optional(),\n source: z\n .object({\n confirmationCount: z.int().nonnegative(),\n requiredConfirmationCount: z.int().nonnegative(),\n startedAtMs: z.int().nonnegative(),\n targetStartBlockNumber: z.bigint().nonnegative().optional(),\n txHash: z.string(),\n })\n .optional(),\n target: z\n .object({\n confirmationCount: z.int().nonnegative(),\n requiredConfirmationCount: z.int().nonnegative(),\n startedAtMs: z.int().nonnegative(),\n txHash: z.string().optional(),\n })\n .nullable()\n .optional(),\n sourceAsset: LooseAssetSchema,\n sourceChain: ChainSchema,\n status: z.enum([\n 'created',\n 'source-pending',\n 'source-completed',\n 'target-pending',\n 'refunded',\n 'completed',\n 'failed',\n ]),\n targetAsset: LooseAssetSchema,\n targetChain: ChainSchema,\n toAddress: z.string(),\n type: z.enum(ServiceType),\n});\n"],"mappings":"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"}
|
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.
|
|
4
|
+
"version": "0.17.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/mod.cjs",
|
|
7
7
|
"module": "./dist/mod.js",
|
|
@@ -35,11 +35,13 @@
|
|
|
35
35
|
"es-toolkit": "^1.42.0"
|
|
36
36
|
},
|
|
37
37
|
"peerDependencies": {
|
|
38
|
+
"@avalabs/avalanchejs": "^5.0.0",
|
|
38
39
|
"@solana/kit": "^5.0.0 || ^6.0.0",
|
|
39
40
|
"viem": "^2.38.0",
|
|
40
41
|
"zod": "^4.1.0"
|
|
41
42
|
},
|
|
42
43
|
"devDependencies": {
|
|
44
|
+
"@avalabs/avalanchejs": "5.0.0",
|
|
43
45
|
"@solana/kit": "6.5.0",
|
|
44
46
|
"@vitest/coverage-v8": "4.0.6",
|
|
45
47
|
"publint": "0.3.17",
|
|
@@ -47,8 +49,8 @@
|
|
|
47
49
|
"vitest": "4.0.6",
|
|
48
50
|
"tsdown": "0.21.4",
|
|
49
51
|
"zod": "4.1.12",
|
|
50
|
-
"
|
|
51
|
-
"
|
|
52
|
+
"@internal/tsdown-config": "0.0.1",
|
|
53
|
+
"eslint-config-custom": "0.1.0"
|
|
52
54
|
},
|
|
53
55
|
"sideEffects": false,
|
|
54
56
|
"scripts": {
|