@vultisig/core-chain 2.1.0 → 2.2.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.
Files changed (83) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/chains/cosmos/cosmosGasLimitRecord.d.ts.map +1 -1
  3. package/dist/chains/cosmos/cosmosGasLimitRecord.js.map +1 -1
  4. package/dist/swap/affiliate/station.d.ts +4 -0
  5. package/dist/swap/affiliate/station.d.ts.map +1 -0
  6. package/dist/swap/affiliate/station.js +4 -0
  7. package/dist/swap/affiliate/station.js.map +1 -0
  8. package/dist/swap/general/GeneralSwapProvider.d.ts +1 -1
  9. package/dist/swap/general/GeneralSwapProvider.d.ts.map +1 -1
  10. package/dist/swap/general/GeneralSwapProvider.js +2 -1
  11. package/dist/swap/general/GeneralSwapProvider.js.map +1 -1
  12. package/dist/swap/general/GeneralSwapQuote.d.ts +7 -0
  13. package/dist/swap/general/GeneralSwapQuote.d.ts.map +1 -1
  14. package/dist/swap/general/kyber/api/quote.d.ts +3 -1
  15. package/dist/swap/general/kyber/api/quote.d.ts.map +1 -1
  16. package/dist/swap/general/kyber/api/quote.js +4 -1
  17. package/dist/swap/general/kyber/api/quote.js.map +1 -1
  18. package/dist/swap/general/kyber/api/route.d.ts +3 -1
  19. package/dist/swap/general/kyber/api/route.d.ts.map +1 -1
  20. package/dist/swap/general/kyber/api/route.js +3 -3
  21. package/dist/swap/general/kyber/api/route.js.map +1 -1
  22. package/dist/swap/general/kyber/api/tx.d.ts +3 -1
  23. package/dist/swap/general/kyber/api/tx.d.ts.map +1 -1
  24. package/dist/swap/general/kyber/api/tx.js +4 -5
  25. package/dist/swap/general/kyber/api/tx.js.map +1 -1
  26. package/dist/swap/general/kyber/config.d.ts +3 -2
  27. package/dist/swap/general/kyber/config.d.ts.map +1 -1
  28. package/dist/swap/general/kyber/config.js +3 -3
  29. package/dist/swap/general/kyber/config.js.map +1 -1
  30. package/dist/swap/general/kyber/stationConfig.d.ts +5 -0
  31. package/dist/swap/general/kyber/stationConfig.d.ts.map +1 -0
  32. package/dist/swap/general/kyber/stationConfig.js +9 -0
  33. package/dist/swap/general/kyber/stationConfig.js.map +1 -0
  34. package/dist/swap/general/lifi/api/getLifiSwapQuote.d.ts.map +1 -1
  35. package/dist/swap/general/lifi/api/getLifiSwapQuote.js +60 -0
  36. package/dist/swap/general/lifi/api/getLifiSwapQuote.js.map +1 -1
  37. package/dist/swap/general/oneInch/api/getOneInchSwapQuote.d.ts +4 -1
  38. package/dist/swap/general/oneInch/api/getOneInchSwapQuote.d.ts.map +1 -1
  39. package/dist/swap/general/oneInch/api/getOneInchSwapQuote.js +2 -2
  40. package/dist/swap/general/oneInch/api/getOneInchSwapQuote.js.map +1 -1
  41. package/dist/swap/general/oneInch/stationOneInchAffiliateConfig.d.ts +4 -0
  42. package/dist/swap/general/oneInch/stationOneInchAffiliateConfig.d.ts.map +1 -0
  43. package/dist/swap/general/oneInch/stationOneInchAffiliateConfig.js +4 -0
  44. package/dist/swap/general/oneInch/stationOneInchAffiliateConfig.js.map +1 -0
  45. package/dist/swap/general/swapkit/SwapKitEnabledChains.d.ts +5 -0
  46. package/dist/swap/general/swapkit/SwapKitEnabledChains.d.ts.map +1 -0
  47. package/dist/swap/general/swapkit/SwapKitEnabledChains.js +30 -0
  48. package/dist/swap/general/swapkit/SwapKitEnabledChains.js.map +1 -0
  49. package/dist/swap/general/swapkit/api/getSwapKitQuote.d.ts +14 -0
  50. package/dist/swap/general/swapkit/api/getSwapKitQuote.d.ts.map +1 -0
  51. package/dist/swap/general/swapkit/api/getSwapKitQuote.js +347 -0
  52. package/dist/swap/general/swapkit/api/getSwapKitQuote.js.map +1 -0
  53. package/dist/swap/general/swapkit/config.d.ts +7 -0
  54. package/dist/swap/general/swapkit/config.d.ts.map +1 -0
  55. package/dist/swap/general/swapkit/config.js +48 -0
  56. package/dist/swap/general/swapkit/config.js.map +1 -0
  57. package/dist/swap/keysign/getSwapDestinationAddress.d.ts.map +1 -1
  58. package/dist/swap/keysign/getSwapDestinationAddress.js +1 -0
  59. package/dist/swap/keysign/getSwapDestinationAddress.js.map +1 -1
  60. package/dist/swap/native/api/affiliate.d.ts +4 -1
  61. package/dist/swap/native/api/affiliate.d.ts.map +1 -1
  62. package/dist/swap/native/api/affiliate.js +5 -5
  63. package/dist/swap/native/api/affiliate.js.map +1 -1
  64. package/dist/swap/native/api/getNativeSwapQuote.d.ts +3 -1
  65. package/dist/swap/native/api/getNativeSwapQuote.d.ts.map +1 -1
  66. package/dist/swap/native/api/getNativeSwapQuote.js +6 -2
  67. package/dist/swap/native/api/getNativeSwapQuote.js.map +1 -1
  68. package/dist/swap/native/stationNativeSwapAffiliateConfig.d.ts +6 -0
  69. package/dist/swap/native/stationNativeSwapAffiliateConfig.d.ts.map +1 -0
  70. package/dist/swap/native/stationNativeSwapAffiliateConfig.js +6 -0
  71. package/dist/swap/native/stationNativeSwapAffiliateConfig.js.map +1 -0
  72. package/dist/swap/quote/findSwapQuote.d.ts +13 -1
  73. package/dist/swap/quote/findSwapQuote.d.ts.map +1 -1
  74. package/dist/swap/quote/findSwapQuote.js +27 -2
  75. package/dist/swap/quote/findSwapQuote.js.map +1 -1
  76. package/dist/swap/quote/getSwapQuoteProviderName.d.ts.map +1 -1
  77. package/dist/swap/quote/getSwapQuoteProviderName.js +1 -1
  78. package/dist/swap/quote/getSwapQuoteProviderName.js.map +1 -1
  79. package/dist/swap/swapEnabledChains.d.ts +1 -1
  80. package/dist/swap/swapEnabledChains.d.ts.map +1 -1
  81. package/dist/swap/swapEnabledChains.js +2 -0
  82. package/dist/swap/swapEnabledChains.js.map +1 -1
  83. package/package.json +37 -2
@@ -0,0 +1,30 @@
1
+ import { Chain } from '@vultisig/core-chain/Chain';
2
+ export const swapKitSourceChains = [
3
+ Chain.Ethereum,
4
+ Chain.Arbitrum,
5
+ Chain.Avalanche,
6
+ Chain.Base,
7
+ Chain.BSC,
8
+ Chain.Optimism,
9
+ Chain.Polygon,
10
+ Chain.Solana,
11
+ Chain.Bitcoin,
12
+ Chain.BitcoinCash,
13
+ Chain.Dogecoin,
14
+ Chain.Litecoin,
15
+ Chain.Ripple,
16
+ Chain.Ton,
17
+ Chain.Tron,
18
+ Chain.Zcash,
19
+ ];
20
+ export const swapKitEnabledChains = [
21
+ ...swapKitSourceChains,
22
+ Chain.Cardano,
23
+ Chain.Cosmos,
24
+ Chain.Dash,
25
+ Chain.Kujira,
26
+ Chain.MayaChain,
27
+ Chain.Sui,
28
+ Chain.THORChain,
29
+ ];
30
+ //# sourceMappingURL=SwapKitEnabledChains.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SwapKitEnabledChains.js","sourceRoot":"","sources":["../../../../../../../packages/core/chain/swap/general/swapkit/SwapKitEnabledChains.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAElD,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,KAAK,CAAC,QAAQ;IACd,KAAK,CAAC,QAAQ;IACd,KAAK,CAAC,SAAS;IACf,KAAK,CAAC,IAAI;IACV,KAAK,CAAC,GAAG;IACT,KAAK,CAAC,QAAQ;IACd,KAAK,CAAC,OAAO;IACb,KAAK,CAAC,MAAM;IACZ,KAAK,CAAC,OAAO;IACb,KAAK,CAAC,WAAW;IACjB,KAAK,CAAC,QAAQ;IACd,KAAK,CAAC,QAAQ;IACd,KAAK,CAAC,MAAM;IACZ,KAAK,CAAC,GAAG;IACT,KAAK,CAAC,IAAI;IACV,KAAK,CAAC,KAAK;CACH,CAAA;AAIV,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,GAAG,mBAAmB;IACtB,KAAK,CAAC,OAAO;IACb,KAAK,CAAC,MAAM;IACZ,KAAK,CAAC,IAAI;IACV,KAAK,CAAC,MAAM;IACZ,KAAK,CAAC,SAAS;IACf,KAAK,CAAC,GAAG;IACT,KAAK,CAAC,SAAS;CACP,CAAA"}
@@ -0,0 +1,14 @@
1
+ import { AccountCoin } from '@vultisig/core-chain/coin/AccountCoin';
2
+ import { GeneralSwapQuote } from '@vultisig/core-chain/swap/general/GeneralSwapQuote';
3
+ import { SwapKitEnabledChain, SwapKitSourceChain } from '@vultisig/core-chain/swap/general/swapkit/SwapKitEnabledChains';
4
+ import { TransferDirection } from '@vultisig/lib-utils/TransferDirection';
5
+ type Input = Record<TransferDirection, AccountCoin<SwapKitEnabledChain>> & {
6
+ from: AccountCoin<SwapKitSourceChain>;
7
+ amount: bigint;
8
+ affiliateBps?: number;
9
+ /** Slippage tolerance in percent (e.g. 1 = 1%). Defaults to 3. */
10
+ slippage?: number;
11
+ };
12
+ export declare const getSwapKitQuote: ({ from, to, amount, affiliateBps, slippage, }: Input) => Promise<GeneralSwapQuote>;
13
+ export {};
14
+ //# sourceMappingURL=getSwapKitQuote.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getSwapKitQuote.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/chain/swap/general/swapkit/api/getSwapKitQuote.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,uCAAuC,CAAA;AAEnE,OAAO,EAAE,gBAAgB,EAAiB,MAAM,oDAAoD,CAAA;AAEpG,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,gEAAgE,CAAA;AAGxH,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAA;AAEzE,KAAK,KAAK,GAAG,MAAM,CAAC,iBAAiB,EAAE,WAAW,CAAC,mBAAmB,CAAC,CAAC,GAAG;IACzE,IAAI,EAAE,WAAW,CAAC,kBAAkB,CAAC,CAAA;IACrC,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,kEAAkE;IAClE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,CAAA;AA2dD,eAAO,MAAM,eAAe,GAAU,+CAMnC,KAAK,KAAG,OAAO,CAAC,gBAAgB,CA2BlC,CAAA"}
@@ -0,0 +1,347 @@
1
+ import { toChainAmount } from '@vultisig/core-chain/amount/toChainAmount';
2
+ import { Chain } from '@vultisig/core-chain/Chain';
3
+ import { chainFeeCoin } from '@vultisig/core-chain/coin/chainFeeCoin';
4
+ import { getSwapKitConfig } from '@vultisig/core-chain/swap/general/swapkit/config';
5
+ import { isOneOf } from '@vultisig/lib-utils/array/isOneOf';
6
+ import { withoutUndefinedFields } from '@vultisig/lib-utils/record/withoutUndefinedFields';
7
+ const swapKitAllowedProviders = [
8
+ 'CHAINFLIP',
9
+ 'CHAINFLIP_STREAMING',
10
+ 'NEAR',
11
+ 'GARDEN',
12
+ 'FLASHNET',
13
+ 'HARBOR',
14
+ 'ONEINCH',
15
+ 'UNISWAP_V2',
16
+ 'UNISWAP_V3',
17
+ 'JUPITER',
18
+ 'OKX',
19
+ 'PANCAKESWAP',
20
+ 'SUSHISWAP_V2',
21
+ 'TRADERJOE_V2',
22
+ 'PANGOLIN_V1',
23
+ 'CAMELOT_V3',
24
+ 'OPENOCEAN_V2',
25
+ ];
26
+ const swapKitProviderQuoteAttempts = [
27
+ swapKitAllowedProviders,
28
+ ['NEAR'],
29
+ ['CHAINFLIP', 'CHAINFLIP_STREAMING'],
30
+ ['GARDEN'],
31
+ ['FLASHNET'],
32
+ ['HARBOR'],
33
+ ['JUPITER'],
34
+ [
35
+ 'ONEINCH',
36
+ 'UNISWAP_V2',
37
+ 'UNISWAP_V3',
38
+ 'OKX',
39
+ 'PANCAKESWAP',
40
+ 'SUSHISWAP_V2',
41
+ 'TRADERJOE_V2',
42
+ 'PANGOLIN_V1',
43
+ 'CAMELOT_V3',
44
+ 'OPENOCEAN_V2',
45
+ ],
46
+ ];
47
+ const swapKitExcludedProviders = new Set(['THORCHAIN', 'THORCHAIN_STREAMING', 'MAYACHAIN', 'MAYACHAIN_STREAMING']);
48
+ const swapKitChainId = {
49
+ [Chain.Arbitrum]: 'ARB',
50
+ [Chain.Avalanche]: 'AVAX',
51
+ [Chain.Base]: 'BASE',
52
+ [Chain.Bitcoin]: 'BTC',
53
+ [Chain.BitcoinCash]: 'BCH',
54
+ [Chain.BSC]: 'BSC',
55
+ [Chain.Cardano]: 'ADA',
56
+ [Chain.Cosmos]: 'GAIA',
57
+ [Chain.Dash]: 'DASH',
58
+ [Chain.Dogecoin]: 'DOGE',
59
+ [Chain.Ethereum]: 'ETH',
60
+ [Chain.Kujira]: 'KUJI',
61
+ [Chain.Litecoin]: 'LTC',
62
+ [Chain.MayaChain]: 'MAYA',
63
+ [Chain.Optimism]: 'OP',
64
+ [Chain.Polygon]: 'POL',
65
+ [Chain.Ripple]: 'XRP',
66
+ [Chain.Solana]: 'SOL',
67
+ [Chain.Sui]: 'SUI',
68
+ [Chain.THORChain]: 'THOR',
69
+ [Chain.Ton]: 'TON',
70
+ [Chain.Tron]: 'TRON',
71
+ [Chain.Zcash]: 'ZEC',
72
+ };
73
+ const swapKitTransferSourceChains = [
74
+ Chain.Bitcoin,
75
+ Chain.BitcoinCash,
76
+ Chain.Dogecoin,
77
+ Chain.Litecoin,
78
+ Chain.Ripple,
79
+ Chain.Ton,
80
+ Chain.Tron,
81
+ Chain.Zcash,
82
+ ];
83
+ const isRecord = (value) => typeof value === 'object' && value !== null;
84
+ const formatBasicUnitAmount = (amount, decimals) => {
85
+ const sign = amount < 0n ? '-' : '';
86
+ const abs = amount < 0n ? -amount : amount;
87
+ if (decimals === 0) {
88
+ return `${sign}${abs.toString()}`;
89
+ }
90
+ const divisor = 10n ** BigInt(decimals);
91
+ const whole = abs / divisor;
92
+ const fraction = (abs % divisor).toString().padStart(decimals, '0').replace(/0+$/, '');
93
+ return fraction ? `${sign}${whole.toString()}.${fraction}` : `${sign}${whole.toString()}`;
94
+ };
95
+ const normalizeProvider = (provider) => provider.trim().toUpperCase().replace(/[-\s]/g, '_');
96
+ const routeProviderNames = ({ providers, legs }) => {
97
+ const names = [...(providers ?? []), ...(legs ?? []).map(({ provider }) => provider)].filter((provider) => !!provider);
98
+ return [...new Set(names.map(normalizeProvider))];
99
+ };
100
+ const isAllowedRoute = (route) => routeProviderNames(route).every(provider => !swapKitExcludedProviders.has(provider));
101
+ const isNoRouteError = (message) => {
102
+ const normalizedMessage = message.toLowerCase().replace(/[\s_-]/g, '');
103
+ return normalizedMessage.includes('noroutesfound') || normalizedMessage.includes('noroutes');
104
+ };
105
+ const getRouteProviderName = (route) => {
106
+ const [firstProvider] = routeProviderNames(route).filter(provider => !swapKitExcludedProviders.has(provider));
107
+ return firstProvider;
108
+ };
109
+ const parseExpectedBuyAmount = (amount, decimals) => {
110
+ if (!amount) {
111
+ throw new Error('SwapKit quote did not include an expected buy amount.');
112
+ }
113
+ return toChainAmount(amount, decimals).toString();
114
+ };
115
+ const postSwapKit = async (path, body) => {
116
+ const { apiKey, baseUrl } = getSwapKitConfig();
117
+ const trimmedApiKey = apiKey?.trim();
118
+ const response = await fetch(`${baseUrl.replace(/\/$/, '')}${path}`, {
119
+ method: 'POST',
120
+ headers: {
121
+ 'Content-Type': 'application/json',
122
+ ...(trimmedApiKey ? { 'x-api-key': trimmedApiKey } : {}),
123
+ },
124
+ body: JSON.stringify(body),
125
+ });
126
+ const data = await response.json().catch(() => undefined);
127
+ if (!response.ok) {
128
+ const message = isRecord(data)
129
+ ? typeof data.message === 'string'
130
+ ? data.message
131
+ : typeof data.error === 'string'
132
+ ? data.error
133
+ : response.statusText
134
+ : response.statusText;
135
+ throw new Error(`SwapKit request failed (${response.status}): ${message}`);
136
+ }
137
+ return data;
138
+ };
139
+ const toSwapKitAsset = ({ chain, id, ticker }) => {
140
+ const chainId = swapKitChainId[chain];
141
+ const symbol = id ? ticker : chainFeeCoin[chain].ticker;
142
+ return id ? `${chainId}.${symbol}-${id}` : `${chainId}.${symbol}`;
143
+ };
144
+ const bigintString = (value, fallback = '0') => {
145
+ if (value === undefined) {
146
+ return fallback;
147
+ }
148
+ // BigInt() throws on decimal strings (e.g. '21000.5') — truncate first.
149
+ if (typeof value === 'string' && value.includes('.')) {
150
+ return BigInt(Math.trunc(Number(value))).toString();
151
+ }
152
+ return BigInt(value).toString();
153
+ };
154
+ const safeBigInt = (value) => {
155
+ if (value === undefined) {
156
+ return undefined;
157
+ }
158
+ // BigInt() throws on decimal strings — truncate first.
159
+ if (typeof value === 'string' && value.includes('.')) {
160
+ return BigInt(Math.trunc(Number(value)));
161
+ }
162
+ return BigInt(value);
163
+ };
164
+ const buildEvmTx = (tx, fromAddress) => {
165
+ if (!isRecord(tx)) {
166
+ throw new Error('SwapKit EVM route did not return a transaction object.');
167
+ }
168
+ const evmTx = tx;
169
+ if (!evmTx.to) {
170
+ throw new Error('SwapKit EVM transaction is missing a required to field.');
171
+ }
172
+ const gas = evmTx.gasLimit ?? evmTx.gas;
173
+ return {
174
+ evm: {
175
+ from: evmTx.from ?? fromAddress,
176
+ to: evmTx.to,
177
+ data: evmTx.data ?? '0x',
178
+ value: bigintString(evmTx.value),
179
+ gasLimit: safeBigInt(gas),
180
+ },
181
+ };
182
+ };
183
+ const getSwapKitFeeAmount = (fees, type, decimals) => {
184
+ const fee = fees?.find(fee => fee.type?.toLowerCase() === type);
185
+ if (!fee?.amount) {
186
+ return 0n;
187
+ }
188
+ return toChainAmount(fee.amount, decimals);
189
+ };
190
+ const buildSolanaTx = (tx, fees) => {
191
+ if (typeof tx !== 'string') {
192
+ throw new Error('SwapKit Solana route did not return a serialized transaction string.');
193
+ }
194
+ const decimals = chainFeeCoin[Chain.Solana].decimals;
195
+ const networkFee = getSwapKitFeeAmount(fees, 'network', decimals);
196
+ const swapFee = getSwapKitFeeAmount(fees, 'affiliate', decimals) + getSwapKitFeeAmount(fees, 'service', decimals);
197
+ return {
198
+ solana: {
199
+ data: tx,
200
+ networkFee,
201
+ swapFee: {
202
+ amount: swapFee,
203
+ decimals,
204
+ chain: Chain.Solana,
205
+ },
206
+ },
207
+ };
208
+ };
209
+ const getTransferTargetAddress = ({ targetAddress, depositAddress, tx }) => {
210
+ if (targetAddress) {
211
+ return targetAddress;
212
+ }
213
+ if (depositAddress) {
214
+ return depositAddress;
215
+ }
216
+ if (Array.isArray(tx) && isRecord(tx[0]) && typeof tx[0].address === 'string') {
217
+ return tx[0].address;
218
+ }
219
+ return undefined;
220
+ };
221
+ const toTransferAmount = (value, decimals) => {
222
+ if (typeof value === 'bigint') {
223
+ return value;
224
+ }
225
+ if (typeof value === 'number') {
226
+ if (!Number.isFinite(value)) {
227
+ throw new Error('SwapKit transfer route returned an invalid amount.');
228
+ }
229
+ return Number.isInteger(value) ? BigInt(value) : toChainAmount(value.toString(), decimals);
230
+ }
231
+ return value.includes('.') ? toChainAmount(value, decimals) : BigInt(value);
232
+ };
233
+ const getTransferAmount = ({ depositAmount, tx }, amount, decimals) => {
234
+ if (depositAmount) {
235
+ return toChainAmount(depositAmount, decimals);
236
+ }
237
+ if (Array.isArray(tx) &&
238
+ isRecord(tx[0]) &&
239
+ (typeof tx[0].amount === 'string' || typeof tx[0].amount === 'number' || typeof tx[0].amount === 'bigint')) {
240
+ return toTransferAmount(tx[0].amount, decimals);
241
+ }
242
+ return amount;
243
+ };
244
+ const shouldUseTransferTx = (chain) => isOneOf(chain, swapKitTransferSourceChains);
245
+ const buildTransferTx = (response, from, amount) => {
246
+ const to = getTransferTargetAddress(response);
247
+ if (!to) {
248
+ throw new Error('SwapKit transfer route did not return a target address.');
249
+ }
250
+ const transfer = {
251
+ to,
252
+ amount: getTransferAmount(response, amount, from.decimals),
253
+ ...(response.memo ? { memo: response.memo } : {}),
254
+ };
255
+ return {
256
+ transfer,
257
+ };
258
+ };
259
+ const buildSwapKitTx = (response, from, amount) => {
260
+ if (from.chain === Chain.Solana) {
261
+ return buildSolanaTx(response.tx, response.fees);
262
+ }
263
+ if (shouldUseTransferTx(from.chain)) {
264
+ return buildTransferTx(response, from, amount);
265
+ }
266
+ return buildEvmTx(response.tx, from.address);
267
+ };
268
+ const routeExpectedBuyAmount = (route, decimals) => {
269
+ if (!route.expectedBuyAmount) {
270
+ return null;
271
+ }
272
+ try {
273
+ return BigInt(parseExpectedBuyAmount(route.expectedBuyAmount, decimals));
274
+ }
275
+ catch {
276
+ return null;
277
+ }
278
+ };
279
+ const sortRoutesByExpectedBuyAmount = (routes, decimals) => [...routes].sort((one, another) => {
280
+ const oneAmount = routeExpectedBuyAmount(one, decimals);
281
+ const anotherAmount = routeExpectedBuyAmount(another, decimals);
282
+ if (oneAmount === null) {
283
+ return anotherAmount === null ? 0 : 1;
284
+ }
285
+ if (anotherAmount === null) {
286
+ return -1;
287
+ }
288
+ if (oneAmount === anotherAmount) {
289
+ return 0;
290
+ }
291
+ return oneAmount > anotherAmount ? -1 : 1;
292
+ });
293
+ const getSwapKitRoutes = async (body, providers) => {
294
+ try {
295
+ const quoteResponse = await postSwapKit('/v3/quote', withoutUndefinedFields({
296
+ ...body,
297
+ providers,
298
+ }));
299
+ if (quoteResponse.error) {
300
+ const message = quoteResponse.message ?? quoteResponse.error;
301
+ if (isNoRouteError(message)) {
302
+ return [];
303
+ }
304
+ throw new Error(message);
305
+ }
306
+ return quoteResponse.routes?.filter(isAllowedRoute) ?? [];
307
+ }
308
+ catch (error) {
309
+ if (error instanceof Error && isNoRouteError(error.message)) {
310
+ return [];
311
+ }
312
+ throw error;
313
+ }
314
+ };
315
+ const getBestSwapKitRoute = async (body, decimals) => {
316
+ for (const providers of swapKitProviderQuoteAttempts) {
317
+ const routes = await getSwapKitRoutes(body, providers);
318
+ if (routes.length) {
319
+ return sortRoutesByExpectedBuyAmount(routes, decimals)[0];
320
+ }
321
+ }
322
+ throw new Error('SwapKit returned no eligible routes.');
323
+ };
324
+ export const getSwapKitQuote = async ({ from, to, amount, affiliateBps, slippage = 3, }) => {
325
+ const quoteBody = {
326
+ sellAsset: toSwapKitAsset(from),
327
+ buyAsset: toSwapKitAsset(to),
328
+ sellAmount: formatBasicUnitAmount(amount, from.decimals),
329
+ slippage,
330
+ affiliateFee: affiliateBps,
331
+ };
332
+ const route = await getBestSwapKitRoute(quoteBody, to.decimals);
333
+ const swapResponse = await postSwapKit('/v3/swap', withoutUndefinedFields({
334
+ routeId: route.routeId,
335
+ sourceAddress: from.address,
336
+ destinationAddress: to.address,
337
+ disableBalanceCheck: true,
338
+ disableBuildTx: shouldUseTransferTx(from.chain) ? true : undefined,
339
+ }));
340
+ return {
341
+ dstAmount: parseExpectedBuyAmount(swapResponse.expectedBuyAmount ?? route.expectedBuyAmount, to.decimals),
342
+ provider: 'swapkit',
343
+ routeProvider: getRouteProviderName(swapResponse) ?? getRouteProviderName(route),
344
+ tx: buildSwapKitTx(swapResponse, from, amount),
345
+ };
346
+ };
347
+ //# sourceMappingURL=getSwapKitQuote.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getSwapKitQuote.js","sourceRoot":"","sources":["../../../../../../../../packages/core/chain/swap/general/swapkit/api/getSwapKitQuote.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export type SwapKitConfig = {
2
+ apiKey?: string;
3
+ baseUrl: string;
4
+ };
5
+ export declare const configureSwapKit: (config: Partial<SwapKitConfig>) => void;
6
+ export declare const getSwapKitConfig: () => SwapKitConfig;
7
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/chain/swap/general/swapkit/config.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GAAG;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;CAChB,CAAA;AA6CD,eAAO,MAAM,gBAAgB,GAAI,QAAQ,OAAO,CAAC,aAAa,CAAC,SAM9D,CAAA;AAED,eAAO,MAAM,gBAAgB,QAAO,aASnC,CAAA"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Vultisig-proxy URLs per platform (paaao 2026-05-21).
3
+ * The proxy injects the SwapKit API key server-side — NO client-side key needed.
4
+ *
5
+ * iOS / macOS → https://api.vultisig.com/swapkit/
6
+ * Android → https://api.vultisig.com/swapkit-a/
7
+ * Windows/ext → https://api.vultisig.com/swapkit-win/ (default fallback)
8
+ *
9
+ * Callers may override via configureSwapKit({ baseUrl }) or
10
+ * env var SWAPKIT_BASE_URL / VULTISIG_SWAPKIT_BASE_URL.
11
+ */
12
+ const detectDefaultBaseUrl = () => {
13
+ const maybeGlobal = globalThis;
14
+ const platform = maybeGlobal.process?.platform;
15
+ // 'darwin' = Node.js on macOS; 'ios' = React Native iOS; 'macos' = React Native macOS / Mac Catalyst
16
+ if (platform === 'darwin' || platform === 'ios' || platform === 'macos') {
17
+ return 'https://api.vultisig.com/swapkit';
18
+ }
19
+ if (platform === 'android') {
20
+ return 'https://api.vultisig.com/swapkit-a';
21
+ }
22
+ // Windows, extension (electron/chromium), and unknown platforms
23
+ return 'https://api.vultisig.com/swapkit-win';
24
+ };
25
+ const readEnv = (key) => {
26
+ const maybeGlobal = globalThis;
27
+ return maybeGlobal.process?.env?.[key];
28
+ };
29
+ let swapKitConfig = {
30
+ baseUrl: detectDefaultBaseUrl(),
31
+ };
32
+ export const configureSwapKit = (config) => {
33
+ swapKitConfig = {
34
+ ...swapKitConfig,
35
+ ...(Object.prototype.hasOwnProperty.call(config, 'apiKey') ? { apiKey: config.apiKey } : {}),
36
+ ...(config.baseUrl !== undefined ? { baseUrl: config.baseUrl } : {}),
37
+ };
38
+ };
39
+ export const getSwapKitConfig = () => {
40
+ const apiKey = swapKitConfig.apiKey ?? readEnv('SWAPKIT_API_KEY') ?? readEnv('VULTISIG_SWAPKIT_API_KEY');
41
+ const baseUrl = readEnv('SWAPKIT_BASE_URL') ?? readEnv('VULTISIG_SWAPKIT_BASE_URL') ?? swapKitConfig.baseUrl;
42
+ return {
43
+ ...swapKitConfig,
44
+ baseUrl,
45
+ apiKey,
46
+ };
47
+ };
48
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../../../../../packages/core/chain/swap/general/swapkit/config.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;GAUG;AACH,MAAM,oBAAoB,GAAG,GAAW,EAAE;IACxC,MAAM,WAAW,GAAG,UAEnB,CAAA;IAED,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,EAAE,QAA8B,CAAA;IAEpE,qGAAqG;IACrG,IAAI,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,KAAK,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QACxE,OAAO,kCAAkC,CAAA;IAC3C,CAAC;IAED,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,OAAO,oCAAoC,CAAA;IAC7C,CAAC;IAED,gEAAgE;IAChE,OAAO,sCAAsC,CAAA;AAC/C,CAAC,CAAA;AAED,MAAM,OAAO,GAAG,CAAC,GAAW,EAAsB,EAAE;IAClD,MAAM,WAAW,GAAG,UAEnB,CAAA;IAED,OAAO,WAAW,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAA;AACxC,CAAC,CAAA;AAED,IAAI,aAAa,GAAkB;IACjC,OAAO,EAAE,oBAAoB,EAAE;CAChC,CAAA;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,MAA8B,EAAE,EAAE;IACjE,aAAa,GAAG;QACd,GAAG,aAAa;QAChB,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5F,GAAG,CAAC,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACrE,CAAA;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAkB,EAAE;IAClD,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,IAAI,OAAO,CAAC,iBAAiB,CAAC,IAAI,OAAO,CAAC,0BAA0B,CAAC,CAAA;IACxG,MAAM,OAAO,GAAG,OAAO,CAAC,kBAAkB,CAAC,IAAI,OAAO,CAAC,2BAA2B,CAAC,IAAI,aAAa,CAAC,OAAO,CAAA;IAE5G,OAAO;QACL,GAAG,aAAa;QAChB,OAAO;QACP,MAAM;KACP,CAAA;AACH,CAAC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"getSwapDestinationAddress.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/chain/swap/keysign/getSwapDestinationAddress.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,uCAAuC,CAAA;AAGnE,OAAO,EAAE,SAAS,EAAmB,MAAM,2CAA2C,CAAA;AAMtF,KAAK,8BAA8B,GAAG;IACpC,KAAK,EAAE,SAAS,CAAA;IAChB,QAAQ,EAAE,WAAW,CAAA;CACtB,CAAA;AAED,eAAO,MAAM,yBAAyB,GAAI,qBAAqB,8BAA8B,KAAG,MAY5F,CAAA"}
1
+ {"version":3,"file":"getSwapDestinationAddress.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/chain/swap/keysign/getSwapDestinationAddress.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,uCAAuC,CAAA;AAGnE,OAAO,EAAE,SAAS,EAAmB,MAAM,2CAA2C,CAAA;AAMtF,KAAK,8BAA8B,GAAG;IACpC,KAAK,EAAE,SAAS,CAAA;IAChB,QAAQ,EAAE,WAAW,CAAA;CACtB,CAAA;AAED,eAAO,MAAM,yBAAyB,GAAI,qBAAqB,8BAA8B,KAAG,MAa5F,CAAA"}
@@ -6,6 +6,7 @@ export const getSwapDestinationAddress = ({ quote, fromCoin }) => matchRecordUni
6
6
  general: quote => matchRecordUnion(quote.tx, {
7
7
  evm: ({ to }) => to,
8
8
  solana: () => '',
9
+ transfer: ({ to }) => to,
9
10
  }),
10
11
  native: quote => {
11
12
  const isErc20 = isOneOf(fromCoin.chain, Object.values(EvmChain)) && !isFeeCoin(fromCoin);
@@ -1 +1 @@
1
- {"version":3,"file":"getSwapDestinationAddress.js","sourceRoot":"","sources":["../../../../../../packages/core/chain/swap/keysign/getSwapDestinationAddress.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,2CAA2C,CAAA;AAGrE,OAAO,EAAE,OAAO,EAAE,MAAM,mCAAmC,CAAA;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAA;AAEvE,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAOtC,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAkC,EAAU,EAAE,CACvG,gBAAgB,CAA0B,KAAK,CAAC,KAAK,EAAE;IACrD,OAAO,EAAE,KAAK,CAAC,EAAE,CACf,gBAAgB,CAAwB,KAAK,CAAC,EAAE,EAAE;QAChD,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE;QACnB,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE;KACjB,CAAC;IACJ,MAAM,EAAE,KAAK,CAAC,EAAE;QACd,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;QAExF,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,QAAQ,CAAC,OAAO,CAAA;IAC7E,CAAC;CACF,CAAC,CAAA"}
1
+ {"version":3,"file":"getSwapDestinationAddress.js","sourceRoot":"","sources":["../../../../../../packages/core/chain/swap/keysign/getSwapDestinationAddress.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,2CAA2C,CAAA;AAGrE,OAAO,EAAE,OAAO,EAAE,MAAM,mCAAmC,CAAA;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAA;AAEvE,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAOtC,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAkC,EAAU,EAAE,CACvG,gBAAgB,CAA0B,KAAK,CAAC,KAAK,EAAE;IACrD,OAAO,EAAE,KAAK,CAAC,EAAE,CACf,gBAAgB,CAAwB,KAAK,CAAC,EAAE,EAAE;QAChD,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE;QACnB,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE;QAChB,QAAQ,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE;KACzB,CAAC;IACJ,MAAM,EAAE,KAAK,CAAC,EAAE;QACd,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;QAExF,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,QAAQ,CAAC,OAAO,CAAA;IAC7E,CAAC;CACF,CAAC,CAAA"}
@@ -1,13 +1,16 @@
1
+ import { nativeSwapAffiliateConfig } from '../nativeSwapAffiliateConfig.js';
1
2
  import { NativeSwapChain } from '../NativeSwapChain.js';
3
+ export type NativeSwapAffiliateConfig = typeof nativeSwapAffiliateConfig;
2
4
  type BuildAffiliateParamsInput = {
3
5
  swapChain: NativeSwapChain;
4
6
  referral?: string;
5
7
  affiliateBps: number;
8
+ config?: NativeSwapAffiliateConfig;
6
9
  };
7
10
  type AffiliateParams = {
8
11
  affiliate: string;
9
12
  affiliate_bps: string;
10
13
  };
11
- export declare const buildAffiliateParams: ({ swapChain, referral, affiliateBps, }: BuildAffiliateParamsInput) => AffiliateParams;
14
+ export declare const buildAffiliateParams: ({ swapChain, referral, affiliateBps, config, }: BuildAffiliateParamsInput) => AffiliateParams;
12
15
  export {};
13
16
  //# sourceMappingURL=affiliate.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"affiliate.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/chain/swap/native/api/affiliate.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAEpD,KAAK,yBAAyB,GAAG;IAC/B,SAAS,EAAE,eAAe,CAAA;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,YAAY,EAAE,MAAM,CAAA;CACrB,CAAA;AAED,KAAK,eAAe,GAAG;IACrB,SAAS,EAAE,MAAM,CAAA;IACjB,aAAa,EAAE,MAAM,CAAA;CACtB,CAAA;AAED,eAAO,MAAM,oBAAoB,GAAI,wCAIlC,yBAAyB,KAAG,eA0B9B,CAAA"}
1
+ {"version":3,"file":"affiliate.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/chain/swap/native/api/affiliate.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAA;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAEpD,MAAM,MAAM,yBAAyB,GAAG,OAAO,yBAAyB,CAAA;AAExE,KAAK,yBAAyB,GAAG;IAC/B,SAAS,EAAE,eAAe,CAAA;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,YAAY,EAAE,MAAM,CAAA;IACpB,MAAM,CAAC,EAAE,yBAAyB,CAAA;CACnC,CAAA;AAED,KAAK,eAAe,GAAG;IACrB,SAAS,EAAE,MAAM,CAAA;IACjB,aAAa,EAAE,MAAM,CAAA;CACtB,CAAA;AAED,eAAO,MAAM,oBAAoB,GAAI,gDAKlC,yBAAyB,KAAG,eAuB9B,CAAA"}
@@ -1,21 +1,21 @@
1
1
  import { Chain } from '../../../Chain.js';
2
2
  import { baseAffiliateBps } from '../../affiliate/config.js';
3
3
  import { nativeSwapAffiliateConfig } from '../nativeSwapAffiliateConfig.js';
4
- export const buildAffiliateParams = ({ swapChain, referral, affiliateBps, }) => {
4
+ export const buildAffiliateParams = ({ swapChain, referral, affiliateBps, config = nativeSwapAffiliateConfig, }) => {
5
5
  const affiliateParams = [];
6
6
  if (swapChain === Chain.THORChain && referral) {
7
7
  affiliateParams.push({
8
8
  affiliate: referral,
9
- bps: nativeSwapAffiliateConfig.referrerFeeRateBps,
9
+ bps: config.referrerFeeRateBps,
10
10
  });
11
11
  affiliateParams.push({
12
- affiliate: nativeSwapAffiliateConfig.affiliateFeeAddress,
13
- bps: Math.max(0, affiliateBps - (baseAffiliateBps - nativeSwapAffiliateConfig.referralDiscountAffiliateFeeRateBps)),
12
+ affiliate: config.affiliateFeeAddress,
13
+ bps: Math.max(0, affiliateBps - (baseAffiliateBps - config.referralDiscountAffiliateFeeRateBps)),
14
14
  });
15
15
  }
16
16
  else {
17
17
  affiliateParams.push({
18
- affiliate: nativeSwapAffiliateConfig.affiliateFeeAddress,
18
+ affiliate: config.affiliateFeeAddress,
19
19
  bps: affiliateBps,
20
20
  });
21
21
  }
@@ -1 +1 @@
1
- {"version":3,"file":"affiliate.js","sourceRoot":"","sources":["../../../../../../../packages/core/chain/swap/native/api/affiliate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AACtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AACzD,OAAO,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAA;AAcxE,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,EACnC,SAAS,EACT,QAAQ,EACR,YAAY,GACc,EAAmB,EAAE;IAC/C,MAAM,eAAe,GAA8C,EAAE,CAAA;IAErE,IAAI,SAAS,KAAK,KAAK,CAAC,SAAS,IAAI,QAAQ,EAAE,CAAC;QAC9C,eAAe,CAAC,IAAI,CAAC;YACnB,SAAS,EAAE,QAAQ;YACnB,GAAG,EAAE,yBAAyB,CAAC,kBAAkB;SAClD,CAAC,CAAA;QACF,eAAe,CAAC,IAAI,CAAC;YACnB,SAAS,EAAE,yBAAyB,CAAC,mBAAmB;YACxD,GAAG,EAAE,IAAI,CAAC,GAAG,CACX,CAAC,EACD,YAAY,GAAG,CAAC,gBAAgB,GAAG,yBAAyB,CAAC,mCAAmC,CAAC,CAClG;SACF,CAAC,CAAA;IACJ,CAAC;SAAM,CAAC;QACN,eAAe,CAAC,IAAI,CAAC;YACnB,SAAS,EAAE,yBAAyB,CAAC,mBAAmB;YACxD,GAAG,EAAE,YAAY;SAClB,CAAC,CAAA;IACJ,CAAC;IAED,OAAO;QACL,SAAS,EAAE,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QAClE,aAAa,EAAE,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;KACjE,CAAA;AACH,CAAC,CAAA"}
1
+ {"version":3,"file":"affiliate.js","sourceRoot":"","sources":["../../../../../../../packages/core/chain/swap/native/api/affiliate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AACtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AACzD,OAAO,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAA;AAiBxE,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,EACnC,SAAS,EACT,QAAQ,EACR,YAAY,EACZ,MAAM,GAAG,yBAAyB,GACR,EAAmB,EAAE;IAC/C,MAAM,eAAe,GAA8C,EAAE,CAAA;IAErE,IAAI,SAAS,KAAK,KAAK,CAAC,SAAS,IAAI,QAAQ,EAAE,CAAC;QAC9C,eAAe,CAAC,IAAI,CAAC;YACnB,SAAS,EAAE,QAAQ;YACnB,GAAG,EAAE,MAAM,CAAC,kBAAkB;SAC/B,CAAC,CAAA;QACF,eAAe,CAAC,IAAI,CAAC;YACnB,SAAS,EAAE,MAAM,CAAC,mBAAmB;YACrC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,GAAG,CAAC,gBAAgB,GAAG,MAAM,CAAC,mCAAmC,CAAC,CAAC;SACjG,CAAC,CAAA;IACJ,CAAC;SAAM,CAAC;QACN,eAAe,CAAC,IAAI,CAAC;YACnB,SAAS,EAAE,MAAM,CAAC,mBAAmB;YACrC,GAAG,EAAE,YAAY;SAClB,CAAC,CAAA;IACJ,CAAC;IAED,OAAO;QACL,SAAS,EAAE,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QAClE,aAAa,EAAE,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;KACjE,CAAA;AACH,CAAC,CAAA"}
@@ -2,13 +2,15 @@ import { AccountCoin } from '@vultisig/core-chain/coin/AccountCoin';
2
2
  import { TransferDirection } from '@vultisig/lib-utils/TransferDirection';
3
3
  import { NativeSwapChain } from '../NativeSwapChain.js';
4
4
  import { NativeSwapQuote } from '../NativeSwapQuote.js';
5
+ import { NativeSwapAffiliateConfig } from './affiliate.js';
5
6
  type GetNativeSwapQuoteInput = Record<TransferDirection, AccountCoin> & {
6
7
  swapChain: NativeSwapChain;
7
8
  destination: string;
8
9
  amount: number;
9
10
  referral?: string;
10
11
  affiliateBps?: number;
12
+ nativeAffiliateConfig?: NativeSwapAffiliateConfig;
11
13
  };
12
- export declare const getNativeSwapQuote: ({ swapChain, destination, from, to, amount, affiliateBps, referral, }: GetNativeSwapQuoteInput) => Promise<NativeSwapQuote>;
14
+ export declare const getNativeSwapQuote: ({ swapChain, destination, from, to, amount, affiliateBps, referral, nativeAffiliateConfig, }: GetNativeSwapQuoteInput) => Promise<NativeSwapQuote>;
13
15
  export {};
14
16
  //# sourceMappingURL=getNativeSwapQuote.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getNativeSwapQuote.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/chain/swap/native/api/getNativeSwapQuote.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,uCAAuC,CAAA;AAGnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAA;AAKzE,OAAO,EAEL,eAAe,EAGhB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAIpD,KAAK,uBAAuB,GAAG,MAAM,CAAC,iBAAiB,EAAE,WAAW,CAAC,GAAG;IACtE,SAAS,EAAE,eAAe,CAAA;IAC1B,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB,CAAA;AAoED,eAAO,MAAM,kBAAkB,GAAU,uEAQtC,uBAAuB,KAAG,OAAO,CAAC,eAAe,CAiFnD,CAAA"}
1
+ {"version":3,"file":"getNativeSwapQuote.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/chain/swap/native/api/getNativeSwapQuote.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,uCAAuC,CAAA;AAGnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAA;AAKzE,OAAO,EAEL,eAAe,EAGhB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAEpD,OAAO,EAAwB,yBAAyB,EAAE,MAAM,aAAa,CAAA;AAE7E,KAAK,uBAAuB,GAAG,MAAM,CAAC,iBAAiB,EAAE,WAAW,CAAC,GAAG;IACtE,SAAS,EAAE,eAAe,CAAA;IAC1B,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,qBAAqB,CAAC,EAAE,yBAAyB,CAAA;CAClD,CAAA;AAuED,eAAO,MAAM,kBAAkB,GAAU,8FAStC,uBAAuB,KAAG,OAAO,CAAC,eAAe,CAoFnD,CAAA"}