@vultisig/core-chain 2.24.2 → 2.25.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/CHANGELOG.md +17 -0
- package/dist/amount/toChainAmount.d.ts.map +1 -1
- package/dist/amount/toChainAmount.js +5 -3
- package/dist/amount/toChainAmount.js.map +1 -1
- package/dist/chains/ripple/account/lines.d.ts +13 -0
- package/dist/chains/ripple/account/lines.d.ts.map +1 -0
- package/dist/chains/ripple/account/lines.js +28 -0
- package/dist/chains/ripple/account/lines.js.map +1 -0
- package/dist/chains/ripple/issuedCurrency.d.ts +17 -3
- package/dist/chains/ripple/issuedCurrency.d.ts.map +1 -1
- package/dist/chains/ripple/issuedCurrency.js +30 -3
- package/dist/chains/ripple/issuedCurrency.js.map +1 -1
- package/dist/chains/solana/assertSafeSolanaSwapInstructions.d.ts +96 -0
- package/dist/chains/solana/assertSafeSolanaSwapInstructions.d.ts.map +1 -0
- package/dist/chains/solana/assertSafeSolanaSwapInstructions.js +260 -0
- package/dist/chains/solana/assertSafeSolanaSwapInstructions.js.map +1 -0
- package/dist/coin/balance/resolvers/ripple.d.ts.map +1 -1
- package/dist/coin/balance/resolvers/ripple.js +40 -3
- package/dist/coin/balance/resolvers/ripple.js.map +1 -1
- package/dist/coin/find/CoinFinderChainKind.d.ts +1 -1
- package/dist/coin/find/CoinFinderChainKind.d.ts.map +1 -1
- package/dist/coin/find/CoinFinderChainKind.js +1 -1
- package/dist/coin/find/CoinFinderChainKind.js.map +1 -1
- package/dist/coin/find/index.d.ts.map +1 -1
- package/dist/coin/find/index.js +2 -0
- package/dist/coin/find/index.js.map +1 -1
- package/dist/coin/find/resolvers/ripple.d.ts +12 -0
- package/dist/coin/find/resolvers/ripple.d.ts.map +1 -0
- package/dist/coin/find/resolvers/ripple.js +50 -0
- package/dist/coin/find/resolvers/ripple.js.map +1 -0
- package/dist/coin/knownTokens/index.d.ts.map +1 -1
- package/dist/coin/knownTokens/index.js +2 -0
- package/dist/coin/knownTokens/index.js.map +1 -1
- package/dist/swap/general/jupiter/api/getJupiterSwapQuote.d.ts.map +1 -1
- package/dist/swap/general/jupiter/api/getJupiterSwapQuote.js +9 -0
- package/dist/swap/general/jupiter/api/getJupiterSwapQuote.js.map +1 -1
- package/dist/swap/general/jupiter/api/jupiterFeeAta.d.ts +2 -1
- package/dist/swap/general/jupiter/api/jupiterFeeAta.d.ts.map +1 -1
- package/dist/swap/general/jupiter/api/jupiterFeeAta.js +7 -35
- package/dist/swap/general/jupiter/api/jupiterFeeAta.js.map +1 -1
- package/fixtures/jupiter-swap-transactions.json +30 -0
- package/package.json +17 -1
|
@@ -1,15 +1,44 @@
|
|
|
1
1
|
import { getRippleAccountInfo } from '@vultisig/core-chain/chains/ripple/account/info';
|
|
2
|
+
import { getRippleAccountLines } from '@vultisig/core-chain/chains/ripple/account/lines';
|
|
3
|
+
import { parseIssuedCurrencyValue, parseRippleTokenId, toXrplCurrencyCode, } from '@vultisig/core-chain/chains/ripple/issuedCurrency';
|
|
2
4
|
import { getRippleNetworkInfo } from '@vultisig/core-chain/chains/ripple/network/info';
|
|
5
|
+
import { isFeeCoin } from '@vultisig/core-chain/coin/utils/isFeeCoin';
|
|
3
6
|
import { shouldBePresent } from '@vultisig/lib-utils/assert/shouldBePresent';
|
|
4
7
|
import { attempt } from '@vultisig/lib-utils/attempt';
|
|
5
8
|
import { isInError } from '@vultisig/lib-utils/error/isInError';
|
|
6
|
-
|
|
9
|
+
/**
|
|
10
|
+
* Balance of a single XRPL issued currency (trust-line token), in base units at
|
|
11
|
+
* `rippleIssuedCurrencyDecimals`.
|
|
12
|
+
*
|
|
13
|
+
* A line with a negative balance means this account is the token's issuer and owes
|
|
14
|
+
* the counterparty, so it is not a holding — it is reported as zero rather than as
|
|
15
|
+
* a negative asset. An account with no line for the token has a zero balance too.
|
|
16
|
+
*/
|
|
17
|
+
const getRippleIssuedCurrencyBalance = async ({ address, id }) => {
|
|
18
|
+
const { currency, issuer } = parseRippleTokenId(id);
|
|
19
|
+
const linesResult = await attempt(getRippleAccountLines(address));
|
|
20
|
+
if ('error' in linesResult) {
|
|
21
|
+
// An unfunded account holds no trust lines — it is not an error state.
|
|
22
|
+
if (isInError(linesResult.error, 'Account not found', 'actNotFound')) {
|
|
23
|
+
return BigInt(0);
|
|
24
|
+
}
|
|
25
|
+
throw linesResult.error;
|
|
26
|
+
}
|
|
27
|
+
const line = linesResult.data.find(({ account, currency: lineCurrency }) => account === issuer && toXrplCurrencyCode(lineCurrency) === toXrplCurrencyCode(currency));
|
|
28
|
+
if (!line) {
|
|
29
|
+
return BigInt(0);
|
|
30
|
+
}
|
|
31
|
+
const balance = parseIssuedCurrencyValue(line.balance);
|
|
32
|
+
return balance > 0 ? balance : BigInt(0);
|
|
33
|
+
};
|
|
34
|
+
/** Spendable native XRP: total balance minus the base and owner reserves. */
|
|
35
|
+
const getRippleNativeBalance = async (address) => {
|
|
7
36
|
const [accountResult, networkResult] = await Promise.all([
|
|
8
|
-
attempt(getRippleAccountInfo(
|
|
37
|
+
attempt(getRippleAccountInfo(address)),
|
|
9
38
|
attempt(getRippleNetworkInfo()),
|
|
10
39
|
]);
|
|
11
40
|
if ('error' in accountResult) {
|
|
12
|
-
if (isInError(accountResult.error, 'Account not found')) {
|
|
41
|
+
if (isInError(accountResult.error, 'Account not found', 'actNotFound')) {
|
|
13
42
|
return BigInt(0);
|
|
14
43
|
}
|
|
15
44
|
throw accountResult.error;
|
|
@@ -24,8 +53,16 @@ export const getRippleCoinBalance = async (input) => {
|
|
|
24
53
|
}
|
|
25
54
|
const totalBalance = BigInt(account_data.Balance);
|
|
26
55
|
const { reserve_base, reserve_inc } = shouldBePresent(validated_ledger);
|
|
56
|
+
// `OwnerCount` already counts every owned ledger object, trust lines included,
|
|
57
|
+
// so the trust-line count must not be added again here.
|
|
27
58
|
const totalReserve = BigInt(reserve_base) + BigInt(account_data.OwnerCount) * BigInt(reserve_inc);
|
|
28
59
|
const spendableBalance = totalBalance - totalReserve;
|
|
29
60
|
return spendableBalance > 0 ? spendableBalance : BigInt(0);
|
|
30
61
|
};
|
|
62
|
+
export const getRippleCoinBalance = async (input) => isFeeCoin(input)
|
|
63
|
+
? getRippleNativeBalance(input.address)
|
|
64
|
+
: getRippleIssuedCurrencyBalance({
|
|
65
|
+
address: input.address,
|
|
66
|
+
id: shouldBePresent(input.id, 'Ripple token id'),
|
|
67
|
+
});
|
|
31
68
|
//# sourceMappingURL=ripple.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ripple.js","sourceRoot":"","sources":["../../../../../../../packages/core/chain/coin/balance/resolvers/ripple.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,iDAAiD,CAAA;AACtF,OAAO,EAAE,oBAAoB,EAAE,MAAM,iDAAiD,CAAA;AACtF,OAAO,EAAE,eAAe,EAAE,MAAM,4CAA4C,CAAA;AAC5E,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAA;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAA;AAI/D,MAAM,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"ripple.js","sourceRoot":"","sources":["../../../../../../../packages/core/chain/coin/balance/resolvers/ripple.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export declare const coinFinderChainKinds: readonly ["evm", "cosmos", "solana", "cardano"];
|
|
1
|
+
export declare const coinFinderChainKinds: readonly ["evm", "cosmos", "solana", "cardano", "ripple"];
|
|
2
2
|
export type CoinFinderChainKind = (typeof coinFinderChainKinds)[number];
|
|
3
3
|
//# sourceMappingURL=CoinFinderChainKind.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CoinFinderChainKind.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/chain/coin/find/CoinFinderChainKind.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,oBAAoB,
|
|
1
|
+
{"version":3,"file":"CoinFinderChainKind.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/chain/coin/find/CoinFinderChainKind.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,oBAAoB,2DAA4D,CAAA;AAC7F,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const coinFinderChainKinds = ['evm', 'cosmos', 'solana', 'cardano'];
|
|
1
|
+
export const coinFinderChainKinds = ['evm', 'cosmos', 'solana', 'cardano', 'ripple'];
|
|
2
2
|
//# sourceMappingURL=CoinFinderChainKind.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CoinFinderChainKind.js","sourceRoot":"","sources":["../../../../../../packages/core/chain/coin/find/CoinFinderChainKind.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAU,CAAA"}
|
|
1
|
+
{"version":3,"file":"CoinFinderChainKind.js","sourceRoot":"","sources":["../../../../../../packages/core/chain/coin/find/CoinFinderChainKind.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAU,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/chain/coin/find/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAKlD,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/chain/coin/find/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAKlD,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAe9C,eAAO,MAAM,SAAS,EAAE,iBAAiB,CAAC,KAAK,CAW9C,CAAA"}
|
package/dist/coin/find/index.js
CHANGED
|
@@ -4,12 +4,14 @@ import { coinFinderChainKinds } from './CoinFinderChainKind.js';
|
|
|
4
4
|
import { findCardanoCoins } from './resolvers/cardano.js';
|
|
5
5
|
import { findCosmosCoins } from './resolvers/cosmos.js';
|
|
6
6
|
import { findEvmCoins } from './resolvers/evm/index.js';
|
|
7
|
+
import { findRippleCoins } from './resolvers/ripple.js';
|
|
7
8
|
import { findSolanaCoins } from './resolvers/solana/index.js';
|
|
8
9
|
const resolvers = {
|
|
9
10
|
cosmos: findCosmosCoins,
|
|
10
11
|
evm: findEvmCoins,
|
|
11
12
|
solana: findSolanaCoins,
|
|
12
13
|
cardano: findCardanoCoins,
|
|
14
|
+
ripple: findRippleCoins,
|
|
13
15
|
};
|
|
14
16
|
export const findCoins = async (input) => {
|
|
15
17
|
const chainKind = getChainKind(input.chain);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/core/chain/coin/find/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAA;AAC7D,OAAO,EAAE,OAAO,EAAE,MAAM,mCAAmC,CAAA;AAE3D,OAAO,EAAuB,oBAAoB,EAAE,MAAM,uBAAuB,CAAA;AAEjF,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAEpD,MAAM,SAAS,GAAwD;IACrE,MAAM,EAAE,eAAe;IACvB,GAAG,EAAE,YAAY;IACjB,MAAM,EAAE,eAAe;IACvB,OAAO,EAAE,gBAAgB;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/core/chain/coin/find/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAA;AAC7D,OAAO,EAAE,OAAO,EAAE,MAAM,mCAAmC,CAAA;AAE3D,OAAO,EAAuB,oBAAoB,EAAE,MAAM,uBAAuB,CAAA;AAEjF,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAEpD,MAAM,SAAS,GAAwD;IACrE,MAAM,EAAE,eAAe;IACvB,GAAG,EAAE,YAAY;IACjB,MAAM,EAAE,eAAe;IACvB,OAAO,EAAE,gBAAgB;IACzB,MAAM,EAAE,eAAe;CACxB,CAAA;AAED,MAAM,CAAC,MAAM,SAAS,GAA6B,KAAK,EAAC,KAAK,EAAC,EAAE;IAC/D,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IAC3C,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,oBAAoB,CAAC,EAAE,CAAC;QAC9C,MAAM,IAAI,KAAK,CACb,sCAAsC,SAAS,sBAAsB,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACvG,CAAA;IACH,CAAC;IAED,MAAM,QAAQ,GAAG,SAAS,CAAC,SAAS,CAAC,CAAA;IAErC,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAA;AACxB,CAAC,CAAA"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { OtherChain } from '@vultisig/core-chain/Chain';
|
|
2
|
+
import { FindCoinsResolver } from '@vultisig/core-chain/coin/find/resolver';
|
|
3
|
+
/**
|
|
4
|
+
* Discovers XRPL issued currencies (trust-line tokens) held at `address`.
|
|
5
|
+
*
|
|
6
|
+
* Only lines with a strictly positive balance are surfaced: a negative balance means
|
|
7
|
+
* the account is the token's issuer and owes the counterparty rather than holding it,
|
|
8
|
+
* and a zero balance is an open-but-empty trust line that would only clutter the
|
|
9
|
+
* asset list.
|
|
10
|
+
*/
|
|
11
|
+
export declare const findRippleCoins: FindCoinsResolver<OtherChain.Ripple>;
|
|
12
|
+
//# sourceMappingURL=ripple.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ripple.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/chain/coin/find/resolvers/ripple.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AASvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAA;AAmB3E;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,EAAE,iBAAiB,CAAC,UAAU,CAAC,MAAM,CA4BhE,CAAA"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { getRippleAccountLines } from '@vultisig/core-chain/chains/ripple/account/lines';
|
|
2
|
+
import { parseIssuedCurrencyValue, rippleIssuedCurrencyDecimals, rippleKnownIssuedTokens, rippleTokenId, } from '@vultisig/core-chain/chains/ripple/issuedCurrency';
|
|
3
|
+
import { areEqualCoins } from '@vultisig/core-chain/coin/Coin';
|
|
4
|
+
import { attempt } from '@vultisig/lib-utils/attempt';
|
|
5
|
+
import { isInError } from '@vultisig/lib-utils/error/isInError';
|
|
6
|
+
/**
|
|
7
|
+
* Human-readable ticker for a trust line. Standard 3-character codes (`USD`) are
|
|
8
|
+
* already tickers; the 160-bit hex form encodes ASCII right-padded with zeros, so
|
|
9
|
+
* decoding it recovers the ticker a user would recognise (e.g. `RLUSD`).
|
|
10
|
+
*/
|
|
11
|
+
const toIssuedCurrencyTicker = (currency) => {
|
|
12
|
+
if (currency.length !== 40) {
|
|
13
|
+
return currency;
|
|
14
|
+
}
|
|
15
|
+
const ascii = Buffer.from(currency, 'hex').toString('ascii').replace(/\0+$/, '');
|
|
16
|
+
return /^[\x20-\x7e]+$/.test(ascii) ? ascii : currency;
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Discovers XRPL issued currencies (trust-line tokens) held at `address`.
|
|
20
|
+
*
|
|
21
|
+
* Only lines with a strictly positive balance are surfaced: a negative balance means
|
|
22
|
+
* the account is the token's issuer and owes the counterparty rather than holding it,
|
|
23
|
+
* and a zero balance is an open-but-empty trust line that would only clutter the
|
|
24
|
+
* asset list.
|
|
25
|
+
*/
|
|
26
|
+
export const findRippleCoins = async ({ address, chain }) => {
|
|
27
|
+
const linesResult = await attempt(getRippleAccountLines(address));
|
|
28
|
+
if ('error' in linesResult) {
|
|
29
|
+
// An unfunded account simply holds no trust lines.
|
|
30
|
+
if (isInError(linesResult.error, 'Account not found', 'actNotFound')) {
|
|
31
|
+
return [];
|
|
32
|
+
}
|
|
33
|
+
throw linesResult.error;
|
|
34
|
+
}
|
|
35
|
+
return linesResult.data
|
|
36
|
+
.filter(({ balance }) => parseIssuedCurrencyValue(balance) > 0)
|
|
37
|
+
.map(({ account, currency }) => {
|
|
38
|
+
const coin = {
|
|
39
|
+
id: rippleTokenId({ currency, issuer: account }),
|
|
40
|
+
chain,
|
|
41
|
+
address,
|
|
42
|
+
ticker: toIssuedCurrencyTicker(currency),
|
|
43
|
+
decimals: rippleIssuedCurrencyDecimals,
|
|
44
|
+
};
|
|
45
|
+
// Prefer curated metadata (logo, price provider) when we know the token.
|
|
46
|
+
const knownToken = rippleKnownIssuedTokens.find(token => areEqualCoins(token, coin));
|
|
47
|
+
return knownToken ? { ...coin, ...knownToken, address } : coin;
|
|
48
|
+
});
|
|
49
|
+
};
|
|
50
|
+
//# sourceMappingURL=ripple.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ripple.js","sourceRoot":"","sources":["../../../../../../../packages/core/chain/coin/find/resolvers/ripple.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,kDAAkD,CAAA;AACxF,OAAO,EACL,wBAAwB,EACxB,4BAA4B,EAC5B,uBAAuB,EACvB,aAAa,GACd,MAAM,mDAAmD,CAAA;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAA;AAE9D,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAA;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAA;AAE/D;;;;GAIG;AACH,MAAM,sBAAsB,GAAG,CAAC,QAAgB,EAAU,EAAE;IAC1D,IAAI,QAAQ,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;QAC3B,OAAO,QAAQ,CAAA;IACjB,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;IAEhF,OAAO,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAA;AACxD,CAAC,CAAA;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,eAAe,GAAyC,KAAK,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE;IAChG,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAA;IAEjE,IAAI,OAAO,IAAI,WAAW,EAAE,CAAC;QAC3B,mDAAmD;QACnD,IAAI,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,mBAAmB,EAAE,aAAa,CAAC,EAAE,CAAC;YACrE,OAAO,EAAE,CAAA;QACX,CAAC;QAED,MAAM,WAAW,CAAC,KAAK,CAAA;IACzB,CAAC;IAED,OAAO,WAAW,CAAC,IAAI;SACpB,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,wBAAwB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;SAC9D,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE;QAC7B,MAAM,IAAI,GAAG;YACX,EAAE,EAAE,aAAa,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;YAChD,KAAK;YACL,OAAO;YACP,MAAM,EAAE,sBAAsB,CAAC,QAAQ,CAAC;YACxC,QAAQ,EAAE,4BAA4B;SACvC,CAAA;QAED,yEAAyE;QACzE,MAAM,UAAU,GAAG,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAA;QAEpF,OAAO,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,UAAU,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;IAChE,CAAC,CAAC,CAAA;AACN,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/chain/coin/knownTokens/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/chain/coin/knownTokens/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAKlD,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAKtE,eAAO,MAAM,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,iBAOnC,CAAA;AAED,eAAO,MAAM,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,iBAOnC,CAAA;AAywBD,eAAO,MAAM,WAAW,uYAetB,CAAA;AAEF,KAAK,UAAU,GAAG,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAA;AAE1D,eAAO,MAAM,gBAAgB,EAAE,UAO7B,CAAA"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Chain } from '@vultisig/core-chain/Chain';
|
|
2
|
+
import { rippleKnownIssuedTokens } from '@vultisig/core-chain/chains/ripple/issuedCurrency';
|
|
2
3
|
import { makeRecord } from '@vultisig/lib-utils/record/makeRecord';
|
|
3
4
|
import { omit } from '@vultisig/lib-utils/record/omit';
|
|
4
5
|
import { knownCosmosTokens } from './cosmos.js';
|
|
@@ -789,6 +790,7 @@ const leanTokens = {
|
|
|
789
790
|
priceProviderId: 'usd-coin',
|
|
790
791
|
},
|
|
791
792
|
},
|
|
793
|
+
[Chain.Ripple]: Object.fromEntries(rippleKnownIssuedTokens.map(token => [token.id, omit(token, 'id', 'chain')])),
|
|
792
794
|
...knownCosmosTokens,
|
|
793
795
|
};
|
|
794
796
|
export const knownTokens = makeRecord(Object.values(Chain), chain => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/core/chain/coin/knownTokens/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/core/chain/coin/knownTokens/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getJupiterSwapQuote.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/chain/swap/general/jupiter/api/getJupiterSwapQuote.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"getJupiterSwapQuote.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/chain/swap/general/jupiter/api/getJupiterSwapQuote.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAE,MAAM,uCAAuC,CAAA;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oDAAoD,CAAA;AACrF,OAAO,EAEL,KAAK,sBAAsB,EAG5B,MAAM,kDAAkD,CAAA;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,oEAAoE,CAAA;AAE5G,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAA;AAUzE,KAAK,KAAK,GAAG,MAAM,CAAC,iBAAiB,EAAE,WAAW,CAAC,uBAAuB,CAAC,CAAC,GAAG;IAC7E,MAAM,EAAE,MAAM,CAAA;IACd,gFAAgF;IAChF,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,aAAa,CAAC,EAAE,sBAAsB,CAAA;IACtC,kEAAkE;IAClE,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB,CAAA;AA2CD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,mBAAmB,GAAU,iEAOvC,KAAK,KAAG,OAAO,CAAC,gBAAgB,CAsGlC,CAAA"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
import { PublicKey } from '@solana/web3.js';
|
|
1
2
|
import { Chain } from '@vultisig/core-chain/Chain';
|
|
3
|
+
import { assertSafeSolanaSwapTransactionBase64 } from '@vultisig/core-chain/chains/solana/assertSafeSolanaSwapInstructions';
|
|
2
4
|
import { solanaConfig } from '@vultisig/core-chain/chains/solana/solanaConfig';
|
|
3
5
|
import { getJupiterConfig, jupiterFeeOwnerAddress, normalizeJupiterBaseUrl, } from '@vultisig/core-chain/swap/general/jupiter/config';
|
|
4
6
|
import { assertJupiterPriceImpactWithinCeiling } from '@vultisig/core-chain/swap/general/priceImpactGuard';
|
|
@@ -86,6 +88,12 @@ export const getJupiterSwapQuote = async ({ from, to, amount, affiliateBps = 0,
|
|
|
86
88
|
if (!swapResponse.swapTransaction) {
|
|
87
89
|
throw new Error('Jupiter swap response did not include a serialized transaction.');
|
|
88
90
|
}
|
|
91
|
+
// Fund-safety guard (audit finding SOL-01): the proxy-supplied transaction
|
|
92
|
+
// is validated BEFORE any local mutation (fee-ATA prepend), and regardless
|
|
93
|
+
// of whether a fee is charged on this swap — an unguarded no-fee response
|
|
94
|
+
// was previously forwarded to signing verbatim.
|
|
95
|
+
const userPubkey = new PublicKey(from.address);
|
|
96
|
+
await assertSafeSolanaSwapTransactionBase64(swapResponse.swapTransaction, userPubkey);
|
|
89
97
|
const data = feeAccountInfo
|
|
90
98
|
? await prependJupiterFeeAta({
|
|
91
99
|
txData: swapResponse.swapTransaction,
|
|
@@ -93,6 +101,7 @@ export const getJupiterSwapQuote = async ({ from, to, amount, affiliateBps = 0,
|
|
|
93
101
|
mintPubkey: feeAccountInfo.mintPubkey,
|
|
94
102
|
ownerPubkey: feeAccountInfo.ownerPubkey,
|
|
95
103
|
tokenProgramId: feeAccountInfo.tokenProgramId,
|
|
104
|
+
userWallet: userPubkey,
|
|
96
105
|
})
|
|
97
106
|
: swapResponse.swapTransaction;
|
|
98
107
|
// Network fee is an upper-bound estimate: Solana's per-signature base fee plus
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getJupiterSwapQuote.js","sourceRoot":"","sources":["../../../../../../../../packages/core/chain/swap/general/jupiter/api/getJupiterSwapQuote.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,iDAAiD,CAAA;AAG9E,OAAO,EACL,gBAAgB,EAEhB,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,kDAAkD,CAAA;AAEzD,OAAO,EAAE,qCAAqC,EAAE,MAAM,oDAAoD,CAAA;AAG1G,OAAO,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AAE/E,gFAAgF;AAChF,MAAM,gBAAgB,GAAG,6CAA6C,CAAA;AAEtE,wEAAwE;AACxE,MAAM,4BAA4B,GAAG,EAAE,CAAA;AAkCvC,MAAM,OAAO,GAAG,CAAC,EAAE,EAAE,EAAe,EAAU,EAAE,CAAC,EAAE,IAAI,gBAAgB,CAAA;AAEvE,MAAM,WAAW,GAAG,KAAK,EAAK,GAAW,EAAE,IAAkB,EAAc,EAAE;IAC3E,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IACvC,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAA;IAErD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;QACvD,MAAM,IAAI,KAAK,CAAC,2BAA2B,QAAQ,CAAC,MAAM,MAAM,QAAQ,CAAC,UAAU,GAAG,IAAI,EAAE,CAAC,CAAA;IAC/F,CAAC;IAED,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAM,CAAA;IACjC,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAA;IAC1D,CAAC;AACH,CAAC,CAAA;AAED;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,EAAE,EACxC,IAAI,EACJ,EAAE,EACF,MAAM,EACN,YAAY,GAAG,CAAC,EAChB,aAAa,EACb,WAAW,GAAG,4BAA4B,GACpC,EAA6B,EAAE;IACrC,MAAM,EAAE,OAAO,EAAE,iBAAiB,EAAE,GAAG,gBAAgB,EAAE,CAAA;IACzD,MAAM,OAAO,GAAG,uBAAuB,CAAC,aAAa,EAAE,OAAO,CAAC,IAAI,iBAAiB,CAAA;IACpF,MAAM,QAAQ,GAAG,aAAa,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,sBAAsB,CAAA;IAE1E,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC/B,MAAM,UAAU,GAAG,OAAO,CAAC,EAAE,CAAC,CAAA;IAE9B,MAAM,mBAAmB,GAAG,YAAY,GAAG,CAAC,CAAA;IAE5C,MAAM,WAAW,GAAG,IAAI,eAAe,CAAC;QACtC,QAAQ,EAAE,SAAS;QACnB,SAAS;QACT,UAAU;QACV,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE;QACzB,WAAW,EAAE,WAAW,CAAC,QAAQ,EAAE;KACpC,CAAC,CAAA;IACF,IAAI,mBAAmB,EAAE,CAAC;QACxB,WAAW,CAAC,GAAG,CAAC,gBAAgB,EAAE,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAA;IAC5D,CAAC;IAED,MAAM,aAAa,GAAG,MAAM,WAAW,CAAuB,GAAG,OAAO,kBAAkB,WAAW,CAAC,QAAQ,EAAE,EAAE,EAAE;QAClH,OAAO,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE;KACxC,CAAC,CAAA;IAEF,sEAAsE;IACtE,yEAAyE;IACzE,yEAAyE;IACzE,mEAAmE;IACnE,6DAA6D;IAC7D,qCAAqC,CAAC,aAAa,CAAC,cAAc,CAAC,CAAA;IAEnE,+EAA+E;IAC/E,gFAAgF;IAChF,8EAA8E;IAC9E,8EAA8E;IAC9E,+EAA+E;IAC/E,0CAA0C;IAC1C,MAAM,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC,WAAW,EAAE,MAAM,IAAI,GAAG,CAAC,CAAA;IACtE,MAAM,UAAU,GAAG,mBAAmB,IAAI,aAAa,GAAG,EAAE,CAAA;IAE5D,4EAA4E;IAC5E,uEAAuE;IACvE,gCAAgC;IAChC,MAAM,cAAc,GAAG,UAAU,CAAC,CAAC,CAAC,MAAM,uBAAuB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IAEvG,MAAM,YAAY,GAAG,MAAM,WAAW,CAAsB,GAAG,OAAO,eAAe,EAAE;QACrF,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,EAAE,kBAAkB,EAAE;QAC3E,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YACnB,aAAa;YACb,aAAa,EAAE,IAAI,CAAC,OAAO;YAC3B,gBAAgB,EAAE,IAAI;YACtB,uBAAuB,EAAE,IAAI;YAC7B,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,cAAc,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACrE,CAAC;KACH,CAAC,CAAA;IAEF,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAA;IACpF,CAAC;IAED,MAAM,IAAI,GAAG,cAAc;QACzB,CAAC,CAAC,MAAM,oBAAoB,CAAC;YACzB,MAAM,EAAE,YAAY,CAAC,eAAe;YACpC,UAAU,EAAE,cAAc,CAAC,UAAU;YACrC,UAAU,EAAE,cAAc,CAAC,UAAU;YACrC,WAAW,EAAE,cAAc,CAAC,WAAW;YACvC,cAAc,EAAE,cAAc,CAAC,cAAc;
|
|
1
|
+
{"version":3,"file":"getJupiterSwapQuote.js","sourceRoot":"","sources":["../../../../../../../../packages/core/chain/swap/general/jupiter/api/getJupiterSwapQuote.ts"],"names":[],"mappings":"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"}
|
|
@@ -38,11 +38,12 @@ export declare const deriveJupiterFeeAccount: ({ outputMint, feeOwner, }: {
|
|
|
38
38
|
* keysign path refreshes the blockhash before broadcast (same as every other
|
|
39
39
|
* Solana general-swap route), so we do not refresh it here.
|
|
40
40
|
*/
|
|
41
|
-
export declare const prependJupiterFeeAta: ({ txData, feeAccount, mintPubkey, ownerPubkey, tokenProgramId, }: {
|
|
41
|
+
export declare const prependJupiterFeeAta: ({ txData, feeAccount, mintPubkey, ownerPubkey, tokenProgramId, userWallet, }: {
|
|
42
42
|
txData: string;
|
|
43
43
|
feeAccount: string;
|
|
44
44
|
mintPubkey: PublicKey;
|
|
45
45
|
ownerPubkey: PublicKey;
|
|
46
46
|
tokenProgramId: PublicKey;
|
|
47
|
+
userWallet: PublicKey;
|
|
47
48
|
}) => Promise<string>;
|
|
48
49
|
//# sourceMappingURL=jupiterFeeAta.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jupiterFeeAta.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/chain/swap/general/jupiter/api/jupiterFeeAta.ts"],"names":[],"mappings":"AAMA,OAAO,
|
|
1
|
+
{"version":3,"file":"jupiterFeeAta.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/chain/swap/general/jupiter/api/jupiterFeeAta.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,SAAS,EAA4C,MAAM,iBAAiB,CAAA;AA+BrF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,kEAAkE;IAClE,UAAU,EAAE,MAAM,CAAA;IAClB,kEAAkE;IAClE,cAAc,EAAE,SAAS,CAAA;IACzB,UAAU,EAAE,SAAS,CAAA;IACrB,WAAW,EAAE,SAAS,CAAA;CACvB,CAAA;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,uBAAuB,GAAU,2BAG3C;IACD,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;CACjB,KAAG,OAAO,CAAC,iBAAiB,CAa5B,CAAA;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,oBAAoB,GAAU,8EAOxC;IACD,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,SAAS,CAAA;IACrB,WAAW,EAAE,SAAS,CAAA;IACtB,cAAc,EAAE,SAAS,CAAA;IACzB,UAAU,EAAE,SAAS,CAAA;CACtB,KAAG,OAAO,CAAC,MAAM,CAqCjB,CAAA"}
|
|
@@ -1,29 +1,7 @@
|
|
|
1
1
|
import { createAssociatedTokenAccountIdempotentInstruction, getAssociatedTokenAddressSync, TOKEN_2022_PROGRAM_ID, TOKEN_PROGRAM_ID, } from '@solana/spl-token';
|
|
2
2
|
import { PublicKey, TransactionMessage, VersionedTransaction } from '@solana/web3.js';
|
|
3
|
+
import { assertSafeSolanaSwapInstructions, resolveSolanaAddressLookupTables, } from '@vultisig/core-chain/chains/solana/assertSafeSolanaSwapInstructions';
|
|
3
4
|
import { getSolanaClient } from '@vultisig/core-chain/chains/solana/client';
|
|
4
|
-
/** Maximum attempts for LUT fetches before giving up. */
|
|
5
|
-
const MAX_LUT_FETCH_ATTEMPTS = 3;
|
|
6
|
-
/**
|
|
7
|
-
* Fetch a LUT account with simple retry (exponential back-off, up to 3 attempts).
|
|
8
|
-
* RPC timeouts are transient; retrying avoids spurious quote failures.
|
|
9
|
-
*/
|
|
10
|
-
const fetchLutWithRetry = async (client, accountKey) => {
|
|
11
|
-
const errors = [];
|
|
12
|
-
for (let attempt = 0; attempt < MAX_LUT_FETCH_ATTEMPTS; attempt++) {
|
|
13
|
-
try {
|
|
14
|
-
const result = await client.getAddressLookupTable(accountKey);
|
|
15
|
-
return result.value ?? null;
|
|
16
|
-
}
|
|
17
|
-
catch (err) {
|
|
18
|
-
errors.push(err);
|
|
19
|
-
if (attempt < MAX_LUT_FETCH_ATTEMPTS - 1) {
|
|
20
|
-
await new Promise(resolve => setTimeout(resolve, 200 * 2 ** attempt));
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
console.warn('[jupiterFeeAta] LUT fetch failed after retries:', errors);
|
|
25
|
-
return null;
|
|
26
|
-
};
|
|
27
5
|
/**
|
|
28
6
|
* Resolve the SPL token program (Token vs Token-2022) that owns a mint.
|
|
29
7
|
*
|
|
@@ -80,19 +58,13 @@ export const deriveJupiterFeeAccount = async ({ outputMint, feeOwner, }) => {
|
|
|
80
58
|
* keysign path refreshes the blockhash before broadcast (same as every other
|
|
81
59
|
* Solana general-swap route), so we do not refresh it here.
|
|
82
60
|
*/
|
|
83
|
-
export const prependJupiterFeeAta = async ({ txData, feeAccount, mintPubkey, ownerPubkey, tokenProgramId, }) => {
|
|
84
|
-
const client = getSolanaClient();
|
|
61
|
+
export const prependJupiterFeeAta = async ({ txData, feeAccount, mintPubkey, ownerPubkey, tokenProgramId, userWallet, }) => {
|
|
85
62
|
const versionedTx = VersionedTransaction.deserialize(Buffer.from(txData, 'base64'));
|
|
86
|
-
const lutAccounts =
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
if (lutAccount) {
|
|
92
|
-
lutAccounts.push(lutAccount);
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
}
|
|
63
|
+
const lutAccounts = await resolveSolanaAddressLookupTables(versionedTx.message);
|
|
64
|
+
// Fund-safety guard (audit finding SOL-01): refuse to build a signable
|
|
65
|
+
// transaction out of a proxy-supplied message containing an instruction
|
|
66
|
+
// that targets an unrecognized program or moves funds to an unknown destination.
|
|
67
|
+
assertSafeSolanaSwapInstructions(versionedTx.message, lutAccounts, userWallet);
|
|
96
68
|
let decompiledMessage;
|
|
97
69
|
try {
|
|
98
70
|
decompiledMessage = TransactionMessage.decompile(versionedTx.message, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jupiterFeeAta.js","sourceRoot":"","sources":["../../../../../../../../packages/core/chain/swap/general/jupiter/api/jupiterFeeAta.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iDAAiD,EACjD,6BAA6B,EAC7B,qBAAqB,EACrB,gBAAgB,GACjB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,
|
|
1
|
+
{"version":3,"file":"jupiterFeeAta.js","sourceRoot":"","sources":["../../../../../../../../packages/core/chain/swap/general/jupiter/api/jupiterFeeAta.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
{
|
|
2
|
+
"singleHopSolToUsdc": {
|
|
3
|
+
"description": "Real Jupiter /swap response, SOL -> USDC, single-hop route (GoonFi V2), no affiliate fee. Captured 2026-07-09 from lite-api.jup.ag.",
|
|
4
|
+
"swapTransaction": "AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAQAHCkF1wZu9M3iGFk8IKByXc/pvqHgtN0JrxREMhkTk4gAwLtdJLuXn7rwQpTRDeJyvX+7SSUUYoz8GDyRj/e8oxIup1xSSxoBFn4o7mL2SnSCEX4WGaco7ETXE2mDyoUiskwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwZGb+UhFzL/7K26csOb57yM5bvF9xJrLEObOkAAAAAEedVb8jHAbu50xW7OaBUH/bGy3qP0jlECsc2iVrwTjwbd9uHXZaGT2cvhRs7reawctIXtX1s3kTqM9YV+/wCpjJclj04kifG7PRApFI4NgwtaE5na/xCEBI572Nvp+Fm0P/on9df2SnTAmx8pWHneSwmrNt/J3VFLMhqns4zl6PzRPaBBVZATz0rroahO1wI61P8hqEdH/zsFqzD6ggfDS8uoomrC6yt3ekBLwDYKDjFclgjCt2ho4LrkzQY/kB0HBAAFAsBcFQAEAAkDBBcBAAAAAAAHBgABAA0DBgEBAwIAAQwCAAAAAMqaOwAAAAAGAQEBEQUYBgABAgUSBQgFDwAMAQIKCw0SEBEOBgYJJOUXy5d6460qAQAAAJcAZAABAMqaOwAAAAACVKAEAAAAADIAAAYDAQAAAQkBtQ4ft8S/G/nU4iNQ3DOvYX1x0GnpYwrcIoCFMHsZKVED6u/xBhIuhfIxBQ==",
|
|
5
|
+
"lookupTables": [
|
|
6
|
+
{
|
|
7
|
+
"key": "DBmHWCVEGCzZ3zDNr9WzRaMmSqCjcixMh78imXfno9qJ",
|
|
8
|
+
"dataBase64": "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"
|
|
9
|
+
}
|
|
10
|
+
]
|
|
11
|
+
},
|
|
12
|
+
"multiHopSolToBonk": {
|
|
13
|
+
"description": "Real Jupiter /swap response, SOL -> BONK, 3-hop route (AlphaQ -> Hadron -> Raydium CLMM). Captured 2026-07-09 from lite-api.jup.ag.",
|
|
14
|
+
"swapTransaction": "AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAQAHEUF1wZu9M3iGFk8IKByXc/pvqHgtN0JrxREMhkTk4gAwLtdJLuXn7rwQpTRDeJyvX+7SSUUYoz8GDyRj/e8oxItuQ0VdX43P57XTzkf9ylsPMXqstrwAaDQ4Gmo7wOYd+m/z+xilXGrCdj1ZMMeA+lC8FSa7b+m4JQDZcseB/tbPcsbbBaKqZoGun7nO3Cnxmd5z4LpCbn+Nzn5BZlWjhh53BHo4HDkVOPejukK6/oQdRT8m1S5xpmRD9q8e3XSK/ZOHamzEoB95HHSyhWUPJaRVgOsbbmLUEeLgRlnxn0hfnaQGHkjbVw2C3oJDEqFkddTsoDHHgFbgcCH+jiu7tvi9uCzVnFfmeLLtEncPfV+UlQA3Ng5SzEDJrbiX8epqO+nUSIsH/jmbGpFV5YIbaX1DAWwKPE87vKKvtB0BYzBXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADBkZv5SEXMv/srbpyw5vnvIzlu8X3EmssQ5s6QAAAAAR51VvyMcBu7nTFbs5oFQf9sbLeo/SOUQKxzaJWvBOPBt324ddloZPZy+FGzut5rBy0he1fWzeROoz1hX7/AKmMlyWPTiSJ8bs9ECkUjg2DC1oTmdr/EIQEjnvY2+n4Wawa49CH8pI3BiVI9wxMBK7CqZVpSYbny7RnUgYh04YwtD/6J/XX9kp0wJsfKVh53ksJqzbfyd1RSzIap7OM5ehA857mb0JLReVQ2y6Jw0WM6LwBrm/iPtZlJfqA+F2jOQgLAAUCwFwVAAsACQOUxQAAAAAAAA4GAAEAHwoNAQEKAgABDAIAAAAAZc0dAAAAAA0BAQERDgYABAAkCg0BAQw8DQ8AAQUCBB8kDAwQDCIPIRMDBRIREhERDSAMKg0NGygpHBsPAx4aCScZJh0MIw8lFAkCGBcWDQYVBwgMLsEgmzNB1pyBBQMAAABoAGQAAaIBZAECGmQCAwBlzR0AAAAA1mX01eEAAABkAAANAwEAAAEJA+JPPiqWVx6GdrLaLkhUEAxNJ0886MhL4Nziho/JGqntAzs4OgUVAzkCIXG1VVSqukVs1RwAZXbHZmmuSS48/+Wc3tDKOaOL5J0fBX+AeH13Ant8FkMhDkzdg/WyYdmIopAi24itINNC7hzdg8iuCgJd6jsGLzE2ODwyBTowNzUz",
|
|
15
|
+
"lookupTables": [
|
|
16
|
+
{
|
|
17
|
+
"key": "GERDuMq2KXct84sG9JUxuRguqfcPvn71gYXg2p3LLHv4",
|
|
18
|
+
"dataBase64": "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"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"key": "8esSdkAjjSktt5iHjbmojPxWaL8sTac3vuPP9d8r8n2A",
|
|
22
|
+
"dataBase64": "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"
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"key": "2VuLeMEXPF4RGhw6sDEnYF4JjAfzHqtdPCyRYGjyLp3t",
|
|
26
|
+
"dataBase64": "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"
|
|
27
|
+
}
|
|
28
|
+
]
|
|
29
|
+
}
|
|
30
|
+
}
|