@vultisig/core-chain 2.2.3 → 2.2.4

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 CHANGED
@@ -1,5 +1,11 @@
1
1
  # @vultisig/core-chain
2
2
 
3
+ ## 2.2.4
4
+
5
+ ### Patch Changes
6
+
7
+ - [#512](https://github.com/vultisig/vultisig-sdk/pull/512) [`72eb200`](https://github.com/vultisig/vultisig-sdk/commit/72eb200ec647a707d1ebdc1f8b6f0f5243780477) Thanks [@rcoderdev](https://github.com/rcoderdev)! - Add Station Terra import primitives for legacy seed-byte, mnemonic, and raw private-key migration flows.
8
+
3
9
  ## 2.2.3
4
10
 
5
11
  ### Patch Changes
@@ -0,0 +1,57 @@
1
+ import type { WalletCore } from '@trustwallet/wallet-core';
2
+ import { Chain } from '@vultisig/core-chain/Chain';
3
+ export declare const stationTerraCoinTypes: readonly [330, 118];
4
+ export type StationTerraCoinType = (typeof stationTerraCoinTypes)[number];
5
+ export type StationTerraChain = typeof Chain.Terra | typeof Chain.TerraClassic;
6
+ type StationTerraDerivationOptions = {
7
+ /** Station account index from the legacy wallet. Defaults to 0. */
8
+ index?: number;
9
+ /** BIP44 account segment. Station uses 0 by default. */
10
+ account?: number;
11
+ /** Terra coin type. Station defaults to 330 and legacy wallets may use 118. */
12
+ coinType?: StationTerraCoinType;
13
+ };
14
+ export type StationSeedImportSource = StationTerraDerivationOptions & {
15
+ kind: 'seed';
16
+ /** BIP39 seed bytes, for example legacy Station encryptedSeed after decrypting. */
17
+ seed: Uint8Array;
18
+ };
19
+ export type StationMnemonicImportSource = StationTerraDerivationOptions & {
20
+ kind: 'mnemonic';
21
+ mnemonic: string;
22
+ };
23
+ export type StationPrivateKeyImportSource = {
24
+ kind: 'privateKey';
25
+ /** Raw secp256k1 private key as 64 hex characters, optionally prefixed with 0x. */
26
+ privateKeyHex: string;
27
+ };
28
+ export type StationImportSource = StationSeedImportSource | StationMnemonicImportSource | StationPrivateKeyImportSource;
29
+ export type StationTerraChainPublicData = {
30
+ chain: StationTerraChain;
31
+ publicKeyHex: string;
32
+ publicKeyBase64: string;
33
+ address: string;
34
+ isEddsa: false;
35
+ };
36
+ export type StationTerraKeyMaterial = {
37
+ source: StationImportSource['kind'];
38
+ privateKeyHex: string;
39
+ publicKeyHex: string;
40
+ publicKeyBase64: string;
41
+ address: string;
42
+ chainPublicKeys: StationTerraChainPublicData[];
43
+ derivePath?: string;
44
+ coinType?: StationTerraCoinType;
45
+ account?: number;
46
+ index?: number;
47
+ };
48
+ type DeriveStationTerraKeyMaterialInput = {
49
+ source: StationImportSource;
50
+ walletCore: WalletCore;
51
+ };
52
+ export declare const getStationTerraDerivationPath: (options?: StationTerraDerivationOptions) => string;
53
+ export declare const normalizeStationPrivateKeyHex: (input: string) => string;
54
+ export declare const validateStationPrivateKeyHex: (input: string) => string;
55
+ export declare const deriveStationTerraKeyMaterial: ({ source, walletCore, }: DeriveStationTerraKeyMaterialInput) => StationTerraKeyMaterial;
56
+ export {};
57
+ //# sourceMappingURL=importPrimitives.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"importPrimitives.d.ts","sourceRoot":"","sources":["../../../../../packages/core/chain/station/importPrimitives.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAKlD,eAAO,MAAM,qBAAqB,qBAAsB,CAAA;AAExD,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAA;AACzE,MAAM,MAAM,iBAAiB,GAAG,OAAO,KAAK,CAAC,KAAK,GAAG,OAAO,KAAK,CAAC,YAAY,CAAA;AAE9E,KAAK,6BAA6B,GAAG;IACnC,mEAAmE;IACnE,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,wDAAwD;IACxD,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,oBAAoB,CAAA;CAChC,CAAA;AAED,MAAM,MAAM,uBAAuB,GAAG,6BAA6B,GAAG;IACpE,IAAI,EAAE,MAAM,CAAA;IACZ,mFAAmF;IACnF,IAAI,EAAE,UAAU,CAAA;CACjB,CAAA;AAED,MAAM,MAAM,2BAA2B,GAAG,6BAA6B,GAAG;IACxE,IAAI,EAAE,UAAU,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;CACjB,CAAA;AAED,MAAM,MAAM,6BAA6B,GAAG;IAC1C,IAAI,EAAE,YAAY,CAAA;IAClB,mFAAmF;IACnF,aAAa,EAAE,MAAM,CAAA;CACtB,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG,uBAAuB,GAAG,2BAA2B,GAAG,6BAA6B,CAAA;AAEvH,MAAM,MAAM,2BAA2B,GAAG;IACxC,KAAK,EAAE,iBAAiB,CAAA;IACxB,YAAY,EAAE,MAAM,CAAA;IACpB,eAAe,EAAE,MAAM,CAAA;IACvB,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,KAAK,CAAA;CACf,CAAA;AAED,MAAM,MAAM,uBAAuB,GAAG;IACpC,MAAM,EAAE,mBAAmB,CAAC,MAAM,CAAC,CAAA;IACnC,aAAa,EAAE,MAAM,CAAA;IACrB,YAAY,EAAE,MAAM,CAAA;IACpB,eAAe,EAAE,MAAM,CAAA;IACvB,OAAO,EAAE,MAAM,CAAA;IACf,eAAe,EAAE,2BAA2B,EAAE,CAAA;IAC9C,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,EAAE,oBAAoB,CAAA;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAED,KAAK,kCAAkC,GAAG;IACxC,MAAM,EAAE,mBAAmB,CAAA;IAC3B,UAAU,EAAE,UAAU,CAAA;CACvB,CAAA;AAyBD,eAAO,MAAM,6BAA6B,GAAI,UAAS,6BAAkC,KAAG,MAI3F,CAAA;AAED,eAAO,MAAM,6BAA6B,GAAI,OAAO,MAAM,KAAG,MACM,CAAA;AAEpE,eAAO,MAAM,4BAA4B,GAAI,OAAO,MAAM,KAAG,MAY5D,CAAA;AA2FD,eAAO,MAAM,6BAA6B,GAAI,yBAG3C,kCAAkC,KAAG,uBAkBvC,CAAA"}
@@ -0,0 +1,124 @@
1
+ import { Chain } from '@vultisig/core-chain/Chain';
2
+ import { deriveAddress } from '@vultisig/core-chain/publicKey/address/deriveAddress';
3
+ import BIP32Factory from 'bip32';
4
+ import * as ecc from 'tiny-secp256k1';
5
+ export const stationTerraCoinTypes = [330, 118];
6
+ const stationTerraChains = [Chain.Terra, Chain.TerraClassic];
7
+ const assertNonNegativeInteger = (value, name) => {
8
+ if (!Number.isSafeInteger(value) || value < 0) {
9
+ throw new Error(`${name} must be a non-negative safe integer`);
10
+ }
11
+ };
12
+ const normalizeDerivationOptions = ({ account = 0, index = 0, coinType = 330, }) => {
13
+ assertNonNegativeInteger(account, 'account');
14
+ assertNonNegativeInteger(index, 'index');
15
+ if (!stationTerraCoinTypes.includes(coinType)) {
16
+ throw new Error(`Unsupported Station Terra coin type: ${coinType}`);
17
+ }
18
+ return { account, index, coinType };
19
+ };
20
+ export const getStationTerraDerivationPath = (options = {}) => {
21
+ const { account, index, coinType } = normalizeDerivationOptions(options);
22
+ return `m/44'/${coinType}'/${account}'/0/${index}`;
23
+ };
24
+ export const normalizeStationPrivateKeyHex = (input) => input.trim().replace(/^0x/i, '').replace(/\s+/g, '').toLowerCase();
25
+ export const validateStationPrivateKeyHex = (input) => {
26
+ const privateKeyHex = normalizeStationPrivateKeyHex(input);
27
+ if (!/^[0-9a-f]{64}$/.test(privateKeyHex)) {
28
+ throw new Error('Private key must be 64 hexadecimal characters');
29
+ }
30
+ if (!ecc.isPrivate(Buffer.from(privateKeyHex, 'hex'))) {
31
+ throw new Error('Invalid secp256k1 private key');
32
+ }
33
+ return privateKeyHex;
34
+ };
35
+ const derivePrivateKeyHexFromSeed = (source) => {
36
+ const { account, index, coinType } = normalizeDerivationOptions(source);
37
+ const bip32 = BIP32Factory(ecc);
38
+ const derived = bip32
39
+ .fromSeed(Buffer.from(source.seed))
40
+ .derivePath(getStationTerraDerivationPath({ account, index, coinType }));
41
+ const privateKey = derived.privateKey;
42
+ if (!privateKey) {
43
+ throw new Error('Failed to derive Station Terra private key from seed');
44
+ }
45
+ return {
46
+ privateKeyHex: Buffer.from(privateKey).toString('hex'),
47
+ derivePath: getStationTerraDerivationPath({ account, index, coinType }),
48
+ account,
49
+ index,
50
+ coinType,
51
+ };
52
+ };
53
+ const walletCoreCoinTypeForStationTerra = (walletCore, coinType) => coinType === 330 ? walletCore.CoinType.terraV2 : walletCore.CoinType.terra;
54
+ const derivePrivateKeyHexFromMnemonic = (source, walletCore) => {
55
+ const { account, index, coinType } = normalizeDerivationOptions(source);
56
+ const derivePath = getStationTerraDerivationPath({ account, index, coinType });
57
+ const hdWallet = walletCore.HDWallet.createWithMnemonic(source.mnemonic.trim(), '');
58
+ try {
59
+ const privateKey = hdWallet.getKey(walletCoreCoinTypeForStationTerra(walletCore, coinType), derivePath);
60
+ try {
61
+ return {
62
+ privateKeyHex: Buffer.from(privateKey.data()).toString('hex'),
63
+ derivePath,
64
+ account,
65
+ index,
66
+ coinType,
67
+ };
68
+ }
69
+ finally {
70
+ privateKey.delete?.();
71
+ }
72
+ }
73
+ finally {
74
+ hdWallet.delete?.();
75
+ }
76
+ };
77
+ const derivePublicDataFromPrivateKey = (privateKeyHex, walletCore) => {
78
+ const normalizedPrivateKeyHex = validateStationPrivateKeyHex(privateKeyHex);
79
+ const privateKey = walletCore.PrivateKey.createWithData(Buffer.from(normalizedPrivateKeyHex, 'hex'));
80
+ try {
81
+ const publicKey = privateKey.getPublicKeySecp256k1(true);
82
+ try {
83
+ const publicKeyHex = Buffer.from(publicKey.data()).toString('hex');
84
+ const publicKeyBase64 = Buffer.from(publicKey.data()).toString('base64');
85
+ const chainPublicKeys = stationTerraChains.map(chain => ({
86
+ chain,
87
+ publicKeyHex,
88
+ publicKeyBase64,
89
+ address: deriveAddress({ chain, publicKey, walletCore }),
90
+ isEddsa: false,
91
+ }));
92
+ return {
93
+ privateKeyHex: normalizedPrivateKeyHex,
94
+ publicKeyHex,
95
+ publicKeyBase64,
96
+ address: chainPublicKeys[0].address,
97
+ chainPublicKeys,
98
+ };
99
+ }
100
+ finally {
101
+ publicKey.delete?.();
102
+ }
103
+ }
104
+ finally {
105
+ privateKey.delete?.();
106
+ }
107
+ };
108
+ export const deriveStationTerraKeyMaterial = ({ source, walletCore, }) => {
109
+ if (source.kind === 'privateKey') {
110
+ return {
111
+ source: source.kind,
112
+ ...derivePublicDataFromPrivateKey(source.privateKeyHex, walletCore),
113
+ };
114
+ }
115
+ const seedFields = source.kind === 'mnemonic'
116
+ ? derivePrivateKeyHexFromMnemonic(source, walletCore)
117
+ : derivePrivateKeyHexFromSeed(source);
118
+ return {
119
+ source: source.kind,
120
+ ...seedFields,
121
+ ...derivePublicDataFromPrivateKey(seedFields.privateKeyHex, walletCore),
122
+ };
123
+ };
124
+ //# sourceMappingURL=importPrimitives.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"importPrimitives.js","sourceRoot":"","sources":["../../../../../packages/core/chain/station/importPrimitives.ts"],"names":[],"mappings":"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"}
@@ -15,6 +15,16 @@ export type InjectSolanaAtaResult = {
15
15
  * runtime so the correct token program (Token or Token-2022) is used for ATA
16
16
  * derivation and instruction creation.
17
17
  *
18
+ * Token-2022 extension limitation: this function handles ATA derivation and
19
+ * creation correctly for Token-2022 mints, but it does NOT inspect or handle
20
+ * Token-2022 extension data (e.g. TransferFee, ConfidentialTransfer,
21
+ * InterestBearingMint). Extensions that affect transfer semantics (e.g.
22
+ * TransferFee withholding, MemoRequired) are the responsibility of the LiFi
23
+ * route builder, not of this ATA injection layer. If a Token-2022 mint has
24
+ * extensions that require special instruction handling beyond ATA creation,
25
+ * the LiFi transaction itself must already encode those requirements.
26
+ * (#519 r-N NeO preferably-blocking #1 - document limitation.)
27
+ *
18
28
  * @param txData Base64-encoded serialized VersionedTransaction from LiFi.
19
29
  * @param mintAddress SPL token mint address (e.g. USDC mint on Solana).
20
30
  * @param owner Wallet address that will own the ATA (swap destination).
@@ -1 +1 @@
1
- {"version":3,"file":"injectSolanaAtaIfMissing.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/chain/swap/general/lifi/api/injectSolanaAtaIfMissing.ts"],"names":[],"mappings":"AAsCA,MAAM,MAAM,qBAAqB,GAAG;IAClC,6DAA6D;IAC7D,IAAI,EAAE,MAAM,CAAA;IACZ,uEAAuE;IACvE,WAAW,EAAE,OAAO,CAAA;CACrB,CAAA;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,wBAAwB,GACnC,QAAQ,MAAM,EACd,aAAa,MAAM,EACnB,OAAO,MAAM,EACb,OAAO,MAAM,KACZ,OAAO,CAAC,qBAAqB,CAsI/B,CAAA"}
1
+ {"version":3,"file":"injectSolanaAtaIfMissing.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/chain/swap/general/lifi/api/injectSolanaAtaIfMissing.ts"],"names":[],"mappings":"AAsCA,MAAM,MAAM,qBAAqB,GAAG;IAClC,6DAA6D;IAC7D,IAAI,EAAE,MAAM,CAAA;IACZ,uEAAuE;IACvE,WAAW,EAAE,OAAO,CAAA;CACrB,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,eAAO,MAAM,wBAAwB,GACnC,QAAQ,MAAM,EACd,aAAa,MAAM,EACnB,OAAO,MAAM,EACb,OAAO,MAAM,KACZ,OAAO,CAAC,qBAAqB,CAiK/B,CAAA"}
@@ -37,6 +37,16 @@ async function fetchLutWithRetry(client, accountKey) {
37
37
  * runtime so the correct token program (Token or Token-2022) is used for ATA
38
38
  * derivation and instruction creation.
39
39
  *
40
+ * Token-2022 extension limitation: this function handles ATA derivation and
41
+ * creation correctly for Token-2022 mints, but it does NOT inspect or handle
42
+ * Token-2022 extension data (e.g. TransferFee, ConfidentialTransfer,
43
+ * InterestBearingMint). Extensions that affect transfer semantics (e.g.
44
+ * TransferFee withholding, MemoRequired) are the responsibility of the LiFi
45
+ * route builder, not of this ATA injection layer. If a Token-2022 mint has
46
+ * extensions that require special instruction handling beyond ATA creation,
47
+ * the LiFi transaction itself must already encode those requirements.
48
+ * (#519 r-N NeO preferably-blocking #1 - document limitation.)
49
+ *
40
50
  * @param txData Base64-encoded serialized VersionedTransaction from LiFi.
41
51
  * @param mintAddress SPL token mint address (e.g. USDC mint on Solana).
42
52
  * @param owner Wallet address that will own the ATA (swap destination).
@@ -70,9 +80,20 @@ export const injectSolanaAtaIfMissing = async (txData, mintAddress, owner, payer
70
80
  else {
71
81
  throw new Error(`Mint ${mintAddress} is owned by unsupported program ${mintInfo.owner.toBase58()} - expected Token or Token-2022`);
72
82
  }
73
- // allowOwnerOffCurve=true: PDAs are valid ATA owners (e.g. multisig destinations).
83
+ // Validate that the owner is on the ed25519 curve (i.e. a normal wallet keypair).
84
+ // In Vultisig flows the swap destination is always a user wallet — off-curve
85
+ // addresses are PDAs (Program Derived Addresses) and are valid ATA owners in the
86
+ // broader Solana ecosystem but should never appear as the destination in a LiFi
87
+ // quote. Silently passing an off-curve owner with allowOwnerOffCurve=true would
88
+ // derive an ATA that the user likely can never sign for, producing an opaque
89
+ // simulation failure. (#519 r-N NeO should-fix #2.)
90
+ if (!PublicKey.isOnCurve(ownerPubkey.toBytes())) {
91
+ throw new Error(`Owner ${owner} is off the ed25519 curve (PDA or invalid key) - Vultisig LiFi swaps require an on-curve wallet address as destination`);
92
+ }
93
+ // allowOwnerOffCurve=false (default): we already validated above that the owner
94
+ // is on-curve, so we don't need to pass the flag — keeping it explicit for clarity.
74
95
  const ataAddress = getAssociatedTokenAddressSync(mintPubkey, ownerPubkey,
75
- /* allowOwnerOffCurve */ true, tokenProgramId);
96
+ /* allowOwnerOffCurve */ false, tokenProgramId);
76
97
  const ataInfo = await client.getAccountInfo(ataAddress);
77
98
  // ATA already exists - verify it's actually a token account owned by the
78
99
  // matching program before skipping injection. A non-token account squatting
@@ -105,9 +126,21 @@ export const injectSolanaAtaIfMissing = async (txData, mintAddress, owner, payer
105
126
  // accepts both legacy and V0 messages, and compileToV0Message always produces
106
127
  // a V0 message. LiFi does not send legacy Solana transactions in practice but
107
128
  // the path is safe regardless.
108
- const decompiledMessage = TransactionMessage.decompile(versionedTx.message, {
109
- addressLookupTableAccounts: lutAccounts,
110
- });
129
+ //
130
+ // When the tx references LUTs, decompile can fail if a referenced LUT account
131
+ // was not fetched (e.g. all retry attempts exhausted). Rather than letting the
132
+ // SDK throw an opaque "unknown account" message, we wrap here and re-throw with
133
+ // context so callers can distinguish a LUT-dependency failure from any other
134
+ // decompile error. (#519 r-N NeO should-fix #1.)
135
+ let decompiledMessage;
136
+ try {
137
+ decompiledMessage = TransactionMessage.decompile(versionedTx.message, {
138
+ addressLookupTableAccounts: lutAccounts,
139
+ });
140
+ }
141
+ catch (err) {
142
+ throw new Error(`Failed to decompile LiFi transaction message - one or more LUT accounts could not be resolved (fetched ${lutAccounts.length} of ${versionedTx.message.addressTableLookups?.length ?? 0} referenced LUTs). Original error: ${err instanceof Error ? err.message : String(err)}`);
143
+ }
111
144
  // Validate the caller-supplied payer matches the tx's actual fee-payer.
112
145
  // If LiFi ever changes the fee-payer convention (or the caller passes a
113
146
  // wrong address), the createAtaIx would be funded by `payerPubkey` while
@@ -1 +1 @@
1
- {"version":3,"file":"injectSolanaAtaIfMissing.js","sourceRoot":"","sources":["../../../../../../../../packages/core/chain/swap/general/lifi/api/injectSolanaAtaIfMissing.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iDAAiD,EACjD,6BAA6B,EAC7B,qBAAqB,EACrB,gBAAgB,GACjB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAA6B,SAAS,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AAChH,OAAO,EAAE,eAAe,EAAE,MAAM,2CAA2C,CAAA;AAE3E,yDAAyD;AACzD,MAAM,sBAAsB,GAAG,CAAC,CAAA;AAEhC;;;GAGG;AACH,KAAK,UAAU,iBAAiB,CAC9B,MAA0C,EAC1C,UAAqB;IAErB,MAAM,MAAM,GAAc,EAAE,CAAA;IAC5B,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,sBAAsB,EAAE,OAAO,EAAE,EAAE,CAAC;QAClE,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAA;YAC7D,OAAO,MAAM,CAAC,KAAK,IAAI,IAAI,CAAA;QAC7B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YAChB,IAAI,OAAO,GAAG,sBAAsB,GAAG,CAAC,EAAE,CAAC;gBACzC,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC,IAAI,OAAO,CAAC,CAAC,CAAA;YACvE,CAAC;QACH,CAAC;IACH,CAAC;IACD,sEAAsE;IACtE,wEAAwE;IACxE,OAAO,CAAC,IAAI,CAAC,4DAA4D,EAAE,MAAM,CAAC,CAAA;IAClF,OAAO,IAAI,CAAA;AACb,CAAC;AASD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,KAAK,EAC3C,MAAc,EACd,WAAmB,EACnB,KAAa,EACb,KAAa,EACmB,EAAE;IAClC,MAAM,UAAU,GAAG,IAAI,SAAS,CAAC,WAAW,CAAC,CAAA;IAC7C,MAAM,WAAW,GAAG,IAAI,SAAS,CAAC,KAAK,CAAC,CAAA;IACxC,MAAM,WAAW,GAAG,IAAI,SAAS,CAAC,KAAK,CAAC,CAAA;IAExC,MAAM,MAAM,GAAG,eAAe,EAAE,CAAA;IAEhC,uEAAuE;IACvE,8EAA8E;IAC9E,4EAA4E;IAC5E,iEAAiE;IACjE,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,CAAA;IACxD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,gBAAgB,WAAW,2DAA2D,CAAC,CAAA;IACzG,CAAC;IACD,mEAAmE;IACnE,2EAA2E;IAC3E,4EAA4E;IAC5E,oFAAoF;IACpF,IAAI,cAAyB,CAAA;IAC7B,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC;QAC5C,cAAc,GAAG,gBAAgB,CAAA;IACnC,CAAC;SAAM,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,qBAAqB,CAAC,EAAE,CAAC;QACxD,cAAc,GAAG,qBAAqB,CAAA;IACxC,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,KAAK,CACb,QAAQ,WAAW,oCAAoC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,iCAAiC,CAClH,CAAA;IACH,CAAC;IAED,mFAAmF;IACnF,MAAM,UAAU,GAAG,6BAA6B,CAC9C,UAAU,EACV,WAAW;IACX,wBAAwB,CAAC,IAAI,EAC7B,cAAc,CACf,CAAA;IAED,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,CAAA;IAEvD,yEAAyE;IACzE,4EAA4E;IAC5E,8EAA8E;IAC9E,2EAA2E;IAC3E,+DAA+D;IAC/D,8BAA8B;IAC9B,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACrB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC;YAC1C,MAAM,IAAI,KAAK,CACb,eAAe,UAAU,CAAC,QAAQ,EAAE,2BAA2B,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,cAAc,cAAc,CAAC,QAAQ,EAAE,EAAE,CACjI,CAAA;QACH,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,CAAA;IAC7C,CAAC;IAED,8DAA8D;IAC9D,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;IAC7C,MAAM,WAAW,GAAG,oBAAoB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;IAE7D,sEAAsE;IACtE,mEAAmE;IACnE,MAAM,WAAW,GAAgC,EAAE,CAAA;IACnD,IAAI,WAAW,CAAC,OAAO,CAAC,OAAO,KAAK,CAAC,EAAE,CAAC;QACtC,MAAM,OAAO,GACX,WAAW,CAAC,OAGb,CAAC,mBAAmB,CAAA;QACrB,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;YAC1B,MAAM,UAAU,GAAG,MAAM,iBAAiB,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,CAAC,CAAA;YAClE,IAAI,UAAU,EAAE,CAAC;gBACf,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;YAC9B,CAAC;QACH,CAAC;IACH,CAAC;IAED,6EAA6E;IAC7E,8EAA8E;IAC9E,8EAA8E;IAC9E,+BAA+B;IAC/B,MAAM,iBAAiB,GAAG,kBAAkB,CAAC,SAAS,CAAC,WAAW,CAAC,OAAO,EAAE;QAC1E,0BAA0B,EAAE,WAAW;KACxC,CAAC,CAAA;IAEF,wEAAwE;IACxE,wEAAwE;IACxE,yEAAyE;IACzE,wEAAwE;IACxE,wEAAwE;IACxE,uEAAuE;IACvE,kEAAkE;IAClE,8BAA8B;IAC9B,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpD,MAAM,IAAI,KAAK,CACb,iCAAiC,WAAW,CAAC,QAAQ,EAAE,6BAA6B,iBAAiB,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAC5H,CAAA;IACH,CAAC;IAED,MAAM,WAAW,GAAG,iDAAiD,CACnE,WAAW,EACX,UAAU,EACV,WAAW,EACX,UAAU,EACV,cAAc,CACf,CAAA;IAED,mEAAmE;IACnE,EAAE;IACF,yEAAyE;IACzE,qEAAqE;IACrE,0EAA0E;IAC1E,yEAAyE;IACzE,wEAAwE;IACxE,sEAAsE;IACtE,wEAAwE;IACxE,wEAAwE;IACxE,oEAAoE;IACpE,yDAAyD;IACzD,wDAAwD;IACxD,MAAM,cAAc,GAAG,IAAI,kBAAkB,CAAC;QAC5C,QAAQ,EAAE,iBAAiB,CAAC,QAAQ;QACpC,eAAe,EAAE,iBAAiB,CAAC,eAAe;QAClD,YAAY,EAAE,CAAC,WAAW,EAAE,GAAG,iBAAiB,CAAC,YAAY,CAAC;KAC/D,CAAC,CAAC,kBAAkB,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;IAEvE,MAAM,SAAS,GAAG,IAAI,oBAAoB,CAAC,cAAc,CAAC,CAAA;IAC1D,8EAA8E;IAC9E,2EAA2E;IAC3E,gFAAgF;IAEhF,OAAO;QACL,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAC3D,WAAW,EAAE,IAAI;KAClB,CAAA;AACH,CAAC,CAAA"}
1
+ {"version":3,"file":"injectSolanaAtaIfMissing.js","sourceRoot":"","sources":["../../../../../../../../packages/core/chain/swap/general/lifi/api/injectSolanaAtaIfMissing.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vultisig/core-chain",
3
- "version": "2.2.3",
3
+ "version": "2.2.4",
4
4
  "description": "Blockchain chain logic shared across Vultisig clients",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -1240,6 +1240,11 @@
1240
1240
  "import": "./dist/signing/SignatureFormat.js",
1241
1241
  "default": "./dist/signing/SignatureFormat.js"
1242
1242
  },
1243
+ "./station/importPrimitives": {
1244
+ "types": "./dist/station/importPrimitives.d.ts",
1245
+ "import": "./dist/station/importPrimitives.js",
1246
+ "default": "./dist/station/importPrimitives.js"
1247
+ },
1243
1248
  "./swap/affiliate": {
1244
1249
  "types": "./dist/swap/affiliate/index.d.ts",
1245
1250
  "import": "./dist/swap/affiliate/index.js",