@lifi/sdk 3.3.0 → 3.4.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.
Files changed (43) hide show
  1. package/package.json +4 -4
  2. package/src/_cjs/config.js +6 -5
  3. package/src/_cjs/config.js.map +1 -1
  4. package/src/_cjs/core/Solana/SolanaStepExecutor.js +12 -57
  5. package/src/_cjs/core/Solana/SolanaStepExecutor.js.map +1 -1
  6. package/src/_cjs/core/Solana/connection.js +30 -9
  7. package/src/_cjs/core/Solana/connection.js.map +1 -1
  8. package/src/_cjs/core/Solana/getSolanaBalance.js +5 -5
  9. package/src/_cjs/core/Solana/getSolanaBalance.js.map +1 -1
  10. package/src/_cjs/core/Solana/sendAndConfirmTransaction.js +68 -0
  11. package/src/_cjs/core/Solana/sendAndConfirmTransaction.js.map +1 -0
  12. package/src/_cjs/utils/withDedupe.js.map +1 -1
  13. package/src/_cjs/version.js +1 -1
  14. package/src/_esm/config.js +6 -5
  15. package/src/_esm/config.js.map +1 -1
  16. package/src/_esm/core/Solana/SolanaStepExecutor.js +14 -75
  17. package/src/_esm/core/Solana/SolanaStepExecutor.js.map +1 -1
  18. package/src/_esm/core/Solana/connection.js +40 -10
  19. package/src/_esm/core/Solana/connection.js.map +1 -1
  20. package/src/_esm/core/Solana/getSolanaBalance.js +6 -6
  21. package/src/_esm/core/Solana/getSolanaBalance.js.map +1 -1
  22. package/src/_esm/core/Solana/sendAndConfirmTransaction.js +76 -0
  23. package/src/_esm/core/Solana/sendAndConfirmTransaction.js.map +1 -0
  24. package/src/_esm/utils/withDedupe.js.map +1 -1
  25. package/src/_esm/version.js +1 -1
  26. package/src/_types/config.d.ts +2 -2
  27. package/src/_types/config.d.ts.map +1 -1
  28. package/src/_types/core/Solana/SolanaStepExecutor.d.ts.map +1 -1
  29. package/src/_types/core/Solana/connection.d.ts +14 -3
  30. package/src/_types/core/Solana/connection.d.ts.map +1 -1
  31. package/src/_types/core/Solana/getSolanaBalance.d.ts.map +1 -1
  32. package/src/_types/core/Solana/sendAndConfirmTransaction.d.ts +13 -0
  33. package/src/_types/core/Solana/sendAndConfirmTransaction.d.ts.map +1 -0
  34. package/src/_types/utils/withDedupe.d.ts +1 -1
  35. package/src/_types/utils/withDedupe.d.ts.map +1 -1
  36. package/src/_types/version.d.ts +1 -1
  37. package/src/config.ts +6 -6
  38. package/src/core/Solana/SolanaStepExecutor.ts +15 -98
  39. package/src/core/Solana/connection.ts +43 -10
  40. package/src/core/Solana/getSolanaBalance.ts +27 -7
  41. package/src/core/Solana/sendAndConfirmTransaction.ts +111 -0
  42. package/src/utils/withDedupe.ts +3 -3
  43. package/src/version.ts +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"SolanaStepExecutor.js","sourceRoot":"","sources":["../../../core/Solana/SolanaStepExecutor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SolanaStepExecutor.js","sourceRoot":"","sources":["../../../core/Solana/SolanaStepExecutor.ts"],"names":[],"mappings":"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"}
@@ -1,17 +1,47 @@
1
1
  import { ChainId } from '@lifi/types';
2
2
  import { Connection } from '@solana/web3.js';
3
- import { getRpcUrl } from '../rpc.js';
4
- let connection = undefined;
3
+ import { getRpcUrls } from '../rpc.js';
4
+ const connections = new Map();
5
5
  /**
6
- * getSolanaConnection is just a thin wrapper around getting the connection (RPC provider) for Solana
7
- * @returns - Solana RPC connection
6
+ * Initializes the Solana connections if they haven't been initialized yet.
7
+ * @returns - Promise that resolves when connections are initialized.
8
8
  */
9
- export const getSolanaConnection = async () => {
10
- if (!connection) {
11
- const rpcUrl = await getRpcUrl(ChainId.SOL);
12
- connection = new Connection(rpcUrl);
13
- return connection;
9
+ export const ensureConnections = async () => {
10
+ const rpcUrls = await getRpcUrls(ChainId.SOL);
11
+ for (const rpcUrl of rpcUrls) {
12
+ if (!connections.get(rpcUrl)) {
13
+ const connection = new Connection(rpcUrl);
14
+ connections.set(rpcUrl, connection);
15
+ }
14
16
  }
15
- return connection;
16
17
  };
18
+ /**
19
+ * Wrapper around getting the connection (RPC provider) for Solana
20
+ * @returns - Solana RPC connections
21
+ */
22
+ export const getSolanaConnections = async () => {
23
+ await ensureConnections();
24
+ return Array.from(connections.values());
25
+ };
26
+ /**
27
+ * Calls a function on the Connection instances with retry logic.
28
+ * @param fn - The function to call, which receives a Connection instance.
29
+ * @returns - The result of the function call.
30
+ */
31
+ export async function callSolanaWithRetry(fn) {
32
+ // Ensure connections are initialized
33
+ await ensureConnections();
34
+ let lastError = null;
35
+ for (const connection of connections.values()) {
36
+ try {
37
+ const result = await fn(connection);
38
+ return result;
39
+ }
40
+ catch (error) {
41
+ lastError = error;
42
+ }
43
+ }
44
+ // Throw the last encountered error
45
+ throw lastError;
46
+ }
17
47
  //# sourceMappingURL=connection.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"connection.js","sourceRoot":"","sources":["../../../core/Solana/connection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAErC,IAAI,UAAU,GAA2B,SAAS,CAAA;AAElD;;;GAGG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,IAAyB,EAAE;IACjE,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;QAC3C,UAAU,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAA;QACnC,OAAO,UAAU,CAAA;IACnB,CAAC;IACD,OAAO,UAAU,CAAA;AACnB,CAAC,CAAA"}
1
+ {"version":3,"file":"connection.js","sourceRoot":"","sources":["../../../core/Solana/connection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AAEtC,MAAM,WAAW,GAAG,IAAI,GAAG,EAAsB,CAAA;AAEjD;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,IAAmB,EAAE;IACzD,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;IAC7C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YAC7B,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAA;YACzC,WAAW,CAAC,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;QACrC,CAAC;IACH,CAAC;AACH,CAAC,CAAA;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,IAA2B,EAAE;IACpE,MAAM,iBAAiB,EAAE,CAAA;IACzB,OAAO,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAA;AACzC,CAAC,CAAA;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,EAA0C;IAE1C,qCAAqC;IACrC,MAAM,iBAAiB,EAAE,CAAA;IACzB,IAAI,SAAS,GAAQ,IAAI,CAAA;IACzB,KAAK,MAAM,UAAU,IAAI,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC;QAC9C,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,UAAU,CAAC,CAAA;YACnC,OAAO,MAAM,CAAA;QACf,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,SAAS,GAAG,KAAK,CAAA;QACnB,CAAC;IACH,CAAC;IACD,mCAAmC;IACnC,MAAM,SAAS,CAAA;AACjB,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import { PublicKey } from '@solana/web3.js';
2
2
  import { SolSystemProgram } from '../../constants.js';
3
- import { getSolanaConnection } from './connection.js';
3
+ import { withDedupe } from '../../utils/withDedupe.js';
4
+ import { callSolanaWithRetry } from './connection.js';
4
5
  import { TokenProgramAddress } from './types.js';
5
6
  export const getSolanaBalance = async (walletAddress, tokens) => {
6
7
  if (tokens.length === 0) {
@@ -15,15 +16,14 @@ export const getSolanaBalance = async (walletAddress, tokens) => {
15
16
  return getSolanaBalanceDefault(chainId, tokens, walletAddress);
16
17
  };
17
18
  const getSolanaBalanceDefault = async (_chainId, tokens, walletAddress) => {
18
- const connection = await getSolanaConnection();
19
19
  const accountPublicKey = new PublicKey(walletAddress);
20
20
  const tokenProgramPublicKey = new PublicKey(TokenProgramAddress);
21
21
  const [slot, balance, tokenAccountsByOwner] = await Promise.allSettled([
22
- connection.getSlot(),
23
- connection.getBalance(accountPublicKey),
24
- connection.getParsedTokenAccountsByOwner(accountPublicKey, {
22
+ withDedupe(() => callSolanaWithRetry((connection) => connection.getSlot('confirmed')), { id: `${getSolanaBalanceDefault.name}.getSlot` }),
23
+ withDedupe(() => callSolanaWithRetry((connection) => connection.getBalance(accountPublicKey, 'confirmed')), { id: `${getSolanaBalanceDefault.name}.getBalance` }),
24
+ withDedupe(() => callSolanaWithRetry((connection) => connection.getParsedTokenAccountsByOwner(accountPublicKey, {
25
25
  programId: tokenProgramPublicKey,
26
- }),
26
+ }, 'confirmed')), { id: `${getSolanaBalanceDefault.name}.getParsedTokenAccountsByOwner` }),
27
27
  ]);
28
28
  const blockNumber = slot.status === 'fulfilled' ? BigInt(slot.value) : 0n;
29
29
  const solBalance = balance.status === 'fulfilled' ? BigInt(balance.value) : 0n;
@@ -1 +1 @@
1
- {"version":3,"file":"getSolanaBalance.js","sourceRoot":"","sources":["../../../core/Solana/getSolanaBalance.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"getSolanaBalance.js","sourceRoot":"","sources":["../../../core/Solana/getSolanaBalance.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,76 @@
1
+ import bs58 from 'bs58';
2
+ import { sleep } from '../../utils/sleep.js';
3
+ import { getSolanaConnections } from './connection.js';
4
+ /**
5
+ * Sends a Solana transaction to multiple RPC endpoints and returns the confirmation
6
+ * as soon as any of them confirm the transaction.
7
+ * @param signedTx - The signed transaction to send.
8
+ * @returns - The confirmation result of the transaction.
9
+ */
10
+ export async function sendAndConfirmTransaction(signedTx) {
11
+ const connections = await getSolanaConnections();
12
+ const signedTxSerialized = signedTx.serialize();
13
+ // Create transaction hash (signature)
14
+ const txSignature = bs58.encode(signedTx.signatures[0]);
15
+ if (!txSignature) {
16
+ throw new Error('Transaction signature is missing.');
17
+ }
18
+ const rawTransactionOptions = {
19
+ // We can skip preflight check after the first transaction has been sent
20
+ // https://solana.com/docs/advanced/retry#the-cost-of-skipping-preflight
21
+ skipPreflight: true,
22
+ // Setting max retries to 0 as we are handling retries manually
23
+ maxRetries: 0,
24
+ // https://solana.com/docs/advanced/confirmation#use-an-appropriate-preflight-commitment-level
25
+ preflightCommitment: 'confirmed',
26
+ };
27
+ for (const connection of connections) {
28
+ connection
29
+ .sendRawTransaction(signedTxSerialized, rawTransactionOptions)
30
+ .catch();
31
+ }
32
+ const abortControllers = [];
33
+ const confirmPromises = connections.map(async (connection) => {
34
+ const abortController = new AbortController();
35
+ abortControllers.push(abortController);
36
+ try {
37
+ const blockhashResult = await connection.getLatestBlockhash('confirmed');
38
+ const confirmTransactionPromise = connection
39
+ .confirmTransaction({
40
+ signature: txSignature,
41
+ blockhash: blockhashResult.blockhash,
42
+ lastValidBlockHeight: blockhashResult.lastValidBlockHeight,
43
+ abortSignal: abortController.signal,
44
+ }, 'confirmed')
45
+ .then((result) => result.value);
46
+ let signatureResult = null;
47
+ let blockHeight = await connection.getBlockHeight('confirmed');
48
+ while (!signatureResult &&
49
+ blockHeight < blockhashResult.lastValidBlockHeight) {
50
+ await connection.sendRawTransaction(signedTxSerialized, rawTransactionOptions);
51
+ signatureResult = await Promise.race([
52
+ confirmTransactionPromise,
53
+ sleep(1000),
54
+ ]);
55
+ if (signatureResult || abortController.signal.aborted) {
56
+ break;
57
+ }
58
+ blockHeight = await connection.getBlockHeight('confirmed');
59
+ }
60
+ abortController.abort();
61
+ return signatureResult;
62
+ }
63
+ catch (error) {
64
+ if (abortController.signal.aborted) {
65
+ return Promise.reject(new Error('Confirmation aborted.'));
66
+ }
67
+ throw error;
68
+ }
69
+ });
70
+ const signatureResult = await Promise.any(confirmPromises).catch(() => null);
71
+ for (const abortController of abortControllers) {
72
+ abortController.abort();
73
+ }
74
+ return { signatureResult, txSignature };
75
+ }
76
+ //# sourceMappingURL=sendAndConfirmTransaction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sendAndConfirmTransaction.js","sourceRoot":"","sources":["../../../core/Solana/sendAndConfirmTransaction.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"withDedupe.js","sourceRoot":"","sources":["../../utils/withDedupe.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,OAAO,MAAwB,SAAQ,GAAkB;IAG7D,YAAY,IAAY;QACtB,KAAK,EAAE,CAAA;QAHT;;;;;WAAe;QAIb,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;IACrB,CAAC;IAEQ,GAAG,CAAC,GAAW,EAAE,KAAY;QACpC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;QACrB,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;YAC7C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAM,CAAC,CAAA;QACxC,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;CACF;AAED,gBAAgB;AAChB,MAAM,CAAC,MAAM,YAAY,GAAG,aAAa,CAAC,IAAI,MAAM,CAAe,IAAI,CAAC,CAAA;AAOxE,uCAAuC;AACvC,MAAM,UAAU,UAAU,CACxB,EAAuB,EACvB,EAAE,OAAO,GAAG,IAAI,EAAE,EAAE,EAAqB;IAEzC,IAAI,CAAC,OAAO,IAAI,CAAC,EAAE,EAAE,CAAC;QACpB,OAAO,EAAE,EAAE,CAAA;IACb,CAAC;IACD,IAAI,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;QACzB,OAAO,YAAY,CAAC,GAAG,CAAC,EAAE,CAAE,CAAA;IAC9B,CAAC;IACD,MAAM,OAAO,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAA;IAC3D,YAAY,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,CAAA;IAC7B,OAAO,OAAO,CAAA;AAChB,CAAC"}
1
+ {"version":3,"file":"withDedupe.js","sourceRoot":"","sources":["../../utils/withDedupe.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,OAAO,MAAwB,SAAQ,GAAkB;IAG7D,YAAY,IAAY;QACtB,KAAK,EAAE,CAAA;QAHT;;;;;WAAe;QAIb,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;IACrB,CAAC;IAEQ,GAAG,CAAC,GAAW,EAAE,KAAY;QACpC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;QACrB,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;YAC7C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAM,CAAC,CAAA;QACxC,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;CACF;AAED,gBAAgB;AAChB,MAAM,CAAC,MAAM,YAAY,GAAG,aAAa,CAAC,IAAI,MAAM,CAAe,IAAI,CAAC,CAAA;AAOxE,uCAAuC;AACvC,MAAM,UAAU,UAAU,CACxB,EAAoB,EACpB,EAAE,OAAO,GAAG,IAAI,EAAE,EAAE,EAAqB;IAEzC,IAAI,CAAC,OAAO,IAAI,CAAC,EAAE,EAAE,CAAC;QACpB,OAAO,EAAE,EAAE,CAAA;IACb,CAAC;IACD,IAAI,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;QACzB,OAAO,YAAY,CAAC,GAAG,CAAC,EAAE,CAAE,CAAA;IAC9B,CAAC;IACD,MAAM,OAAO,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAA;IAC3D,YAAY,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,CAAA;IAC7B,OAAO,OAAO,CAAA;AAChB,CAAC"}
@@ -1,3 +1,3 @@
1
1
  export const name = '@lifi/sdk';
2
- export const version = '3.3.0';
2
+ export const version = '3.4.0';
3
3
  //# sourceMappingURL=version.js.map
@@ -1,4 +1,4 @@
1
- import type { ChainId, ExtendedChain } from '@lifi/types';
1
+ import { ChainId, type ExtendedChain } from '@lifi/types';
2
2
  import type { SDKProvider } from './core/types.js';
3
3
  import type { RPCUrls, SDKBaseConfig, SDKConfig } from './types/internal.js';
4
4
  export declare const config: {
@@ -9,7 +9,7 @@ export declare const config: {
9
9
  setChains(chains: ExtendedChain[]): void;
10
10
  getChains(): Promise<ExtendedChain[]>;
11
11
  getChainById(chainId: ChainId): Promise<ExtendedChain>;
12
- setRPCUrls(rpcUrls: RPCUrls): void;
12
+ setRPCUrls(rpcUrls: RPCUrls, skipChains?: ChainId[]): void;
13
13
  getRPCUrls(): Promise<Partial<Record<ChainId, string[]>>>;
14
14
  };
15
15
  //# sourceMappingURL=config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAClD,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAE5E,eAAO,MAAM,MAAM;;;iBAkBF,SAAS;4BAcE,WAAW,EAAE;sBASnB,aAAa,EAAE;;0BAiBL,OAAO;wBAUf,OAAO;;CAwB3B,CAAA"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAA;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAClD,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAE5E,eAAO,MAAM,MAAM;;;iBAkBF,SAAS;4BAcE,WAAW,EAAE;sBASnB,aAAa,EAAE;;0BAiBL,OAAO;wBAUf,OAAO,eAAe,OAAO,EAAE;;CAwBnD,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"SolanaStepExecutor.d.ts","sourceRoot":"","sources":["../../../core/Solana/SolanaStepExecutor.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AAetE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAIzD,OAAO,KAAK,EACV,gBAAgB,EAChB,mBAAmB,EAEpB,MAAM,aAAa,CAAA;AAKpB,MAAM,WAAW,yBAA0B,SAAQ,mBAAmB;IACpE,aAAa,EAAE,mBAAmB,CAAA;CACnC;AAED,qBAAa,kBAAmB,SAAQ,gBAAgB;IACtD,OAAO,CAAC,aAAa,CAAqB;gBAE9B,OAAO,EAAE,yBAAyB;IAK9C,kBAAkB,SAAU,gBAAgB,UAQ3C;IAED,WAAW,SAAgB,gBAAgB,KAAG,OAAO,CAAC,gBAAgB,CAAC,CAoUtE;CACF"}
1
+ {"version":3,"file":"SolanaStepExecutor.d.ts","sourceRoot":"","sources":["../../../core/Solana/SolanaStepExecutor.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AAStE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAIzD,OAAO,KAAK,EACV,gBAAgB,EAChB,mBAAmB,EAEpB,MAAM,aAAa,CAAA;AAMpB,MAAM,WAAW,yBAA0B,SAAQ,mBAAmB;IACpE,aAAa,EAAE,mBAAmB,CAAA;CACnC;AAED,qBAAa,kBAAmB,SAAQ,gBAAgB;IACtD,OAAO,CAAC,aAAa,CAAqB;gBAE9B,OAAO,EAAE,yBAAyB;IAK9C,kBAAkB,SAAU,gBAAgB,UAQ3C;IAED,WAAW,SAAgB,gBAAgB,KAAG,OAAO,CAAC,gBAAgB,CAAC,CAsPtE;CACF"}
@@ -1,7 +1,18 @@
1
1
  import { Connection } from '@solana/web3.js';
2
2
  /**
3
- * getSolanaConnection is just a thin wrapper around getting the connection (RPC provider) for Solana
4
- * @returns - Solana RPC connection
3
+ * Initializes the Solana connections if they haven't been initialized yet.
4
+ * @returns - Promise that resolves when connections are initialized.
5
5
  */
6
- export declare const getSolanaConnection: () => Promise<Connection>;
6
+ export declare const ensureConnections: () => Promise<void>;
7
+ /**
8
+ * Wrapper around getting the connection (RPC provider) for Solana
9
+ * @returns - Solana RPC connections
10
+ */
11
+ export declare const getSolanaConnections: () => Promise<Connection[]>;
12
+ /**
13
+ * Calls a function on the Connection instances with retry logic.
14
+ * @param fn - The function to call, which receives a Connection instance.
15
+ * @returns - The result of the function call.
16
+ */
17
+ export declare function callSolanaWithRetry<R>(fn: (connection: Connection) => Promise<R>): Promise<R>;
7
18
  //# sourceMappingURL=connection.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../../core/Solana/connection.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAK5C;;;GAGG;AACH,eAAO,MAAM,mBAAmB,QAAa,OAAO,CAAC,UAAU,CAO9D,CAAA"}
1
+ {"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../../core/Solana/connection.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAK5C;;;GAGG;AACH,eAAO,MAAM,iBAAiB,QAAa,OAAO,CAAC,IAAI,CAQtD,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,oBAAoB,QAAa,OAAO,CAAC,UAAU,EAAE,CAGjE,CAAA;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,CAAC,CAAC,EACzC,EAAE,EAAE,CAAC,UAAU,EAAE,UAAU,KAAK,OAAO,CAAC,CAAC,CAAC,GACzC,OAAO,CAAC,CAAC,CAAC,CAcZ"}
@@ -1 +1 @@
1
- {"version":3,"file":"getSolanaBalance.d.ts","sourceRoot":"","sources":["../../../core/Solana/getSolanaBalance.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAW,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAM9D,eAAO,MAAM,gBAAgB,kBACZ,MAAM,UACb,KAAK,EAAE,KACd,OAAO,CAAC,WAAW,EAAE,CAYvB,CAAA"}
1
+ {"version":3,"file":"getSolanaBalance.d.ts","sourceRoot":"","sources":["../../../core/Solana/getSolanaBalance.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAW,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAO9D,eAAO,MAAM,gBAAgB,kBACZ,MAAM,UACb,KAAK,EAAE,KACd,OAAO,CAAC,WAAW,EAAE,CAYvB,CAAA"}
@@ -0,0 +1,13 @@
1
+ import type { SignatureResult, VersionedTransaction } from '@solana/web3.js';
2
+ export type ConfirmedTransactionResult = {
3
+ signatureResult: SignatureResult | null;
4
+ txSignature: string;
5
+ };
6
+ /**
7
+ * Sends a Solana transaction to multiple RPC endpoints and returns the confirmation
8
+ * as soon as any of them confirm the transaction.
9
+ * @param signedTx - The signed transaction to send.
10
+ * @returns - The confirmation result of the transaction.
11
+ */
12
+ export declare function sendAndConfirmTransaction(signedTx: VersionedTransaction): Promise<ConfirmedTransactionResult>;
13
+ //# sourceMappingURL=sendAndConfirmTransaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sendAndConfirmTransaction.d.ts","sourceRoot":"","sources":["../../../core/Solana/sendAndConfirmTransaction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,eAAe,EACf,oBAAoB,EACrB,MAAM,iBAAiB,CAAA;AAKxB,MAAM,MAAM,0BAA0B,GAAG;IACvC,eAAe,EAAE,eAAe,GAAG,IAAI,CAAA;IACvC,WAAW,EAAE,MAAM,CAAA;CACpB,CAAA;AAED;;;;;GAKG;AACH,wBAAsB,yBAAyB,CAC7C,QAAQ,EAAE,oBAAoB,GAC7B,OAAO,CAAC,0BAA0B,CAAC,CAwFrC"}
@@ -15,6 +15,6 @@ type WithDedupeOptions = {
15
15
  id?: string | undefined;
16
16
  };
17
17
  /** Deduplicates in-flight promises. */
18
- export declare function withDedupe<data>(fn: () => Promise<data>, { enabled, id }: WithDedupeOptions): Promise<data>;
18
+ export declare function withDedupe<T>(fn: () => Promise<T>, { enabled, id }: WithDedupeOptions): Promise<T>;
19
19
  export {};
20
20
  //# sourceMappingURL=withDedupe.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"withDedupe.d.ts","sourceRoot":"","sources":["../../utils/withDedupe.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,qBAAa,MAAM,CAAC,KAAK,GAAG,OAAO,CAAE,SAAQ,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC;IAC7D,OAAO,EAAE,MAAM,CAAA;gBAEH,IAAI,EAAE,MAAM;IAKf,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK;CAOvC;AAED,gBAAgB;AAChB,eAAO,MAAM,YAAY,sBAA+C,CAAA;AAExE,KAAK,iBAAiB,GAAG;IACvB,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IAC7B,EAAE,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CACxB,CAAA;AAED,uCAAuC;AACvC,wBAAgB,UAAU,CAAC,IAAI,EAC7B,EAAE,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,EACvB,EAAE,OAAc,EAAE,EAAE,EAAE,EAAE,iBAAiB,GACxC,OAAO,CAAC,IAAI,CAAC,CAUf"}
1
+ {"version":3,"file":"withDedupe.d.ts","sourceRoot":"","sources":["../../utils/withDedupe.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,qBAAa,MAAM,CAAC,KAAK,GAAG,OAAO,CAAE,SAAQ,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC;IAC7D,OAAO,EAAE,MAAM,CAAA;gBAEH,IAAI,EAAE,MAAM;IAKf,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK;CAOvC;AAED,gBAAgB;AAChB,eAAO,MAAM,YAAY,sBAA+C,CAAA;AAExE,KAAK,iBAAiB,GAAG;IACvB,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IAC7B,EAAE,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CACxB,CAAA;AAED,uCAAuC;AACvC,wBAAgB,UAAU,CAAC,CAAC,EAC1B,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,EAAE,OAAc,EAAE,EAAE,EAAE,EAAE,iBAAiB,GACxC,OAAO,CAAC,CAAC,CAAC,CAUZ"}
@@ -1,3 +1,3 @@
1
1
  export declare const name = "@lifi/sdk";
2
- export declare const version = "3.3.0";
2
+ export declare const version = "3.4.0";
3
3
  //# sourceMappingURL=version.d.ts.map
package/src/config.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { ChainId, ExtendedChain } from '@lifi/types'
1
+ import { ChainId, type ExtendedChain } from '@lifi/types'
2
2
  import type { SDKProvider } from './core/types.js'
3
3
  import type { RPCUrls, SDKBaseConfig, SDKConfig } from './types/internal.js'
4
4
 
@@ -50,7 +50,7 @@ export const config = (() => {
50
50
  }
51
51
  return rpcUrls
52
52
  }, {} as RPCUrls)
53
- this.setRPCUrls(rpcUrls)
53
+ this.setRPCUrls(rpcUrls, [ChainId.SOL])
54
54
  _config.chains = chains
55
55
  _loading = undefined
56
56
  },
@@ -70,20 +70,20 @@ export const config = (() => {
70
70
  }
71
71
  return chain
72
72
  },
73
- setRPCUrls(rpcUrls: RPCUrls) {
73
+ setRPCUrls(rpcUrls: RPCUrls, skipChains?: ChainId[]) {
74
74
  for (const rpcUrlsKey in rpcUrls) {
75
- const chainId = rpcUrlsKey as unknown as ChainId
75
+ const chainId = Number(rpcUrlsKey) as ChainId
76
76
  const urls = rpcUrls[chainId]
77
77
  if (!urls?.length) {
78
78
  continue
79
79
  }
80
80
  if (!_config.rpcUrls[chainId]?.length) {
81
81
  _config.rpcUrls[chainId] = Array.from(urls)
82
- } else {
82
+ } else if (!skipChains?.includes(chainId)) {
83
83
  const filteredUrls = urls.filter(
84
84
  (url) => !_config.rpcUrls[chainId]?.includes(url)
85
85
  )
86
- _config.rpcUrls[chainId]?.push(...filteredUrls)
86
+ _config.rpcUrls[chainId].push(...filteredUrls)
87
87
  }
88
88
  }
89
89
  },
@@ -1,11 +1,6 @@
1
1
  import type { ExtendedTransactionInfo, FullStatusData } from '@lifi/types'
2
2
  import type { SignerWalletAdapter } from '@solana/wallet-adapter-base'
3
- import {
4
- type SendOptions,
5
- type SignatureResult,
6
- VersionedTransaction,
7
- } from '@solana/web3.js'
8
- import bs58 from 'bs58'
3
+ import { VersionedTransaction } from '@solana/web3.js'
9
4
  import { withTimeout } from 'viem'
10
5
  import { config } from '../../config.js'
11
6
  import { LiFiErrorCode } from '../../errors/constants.js'
@@ -13,7 +8,6 @@ import { TransactionError } from '../../errors/errors.js'
13
8
  import { getStepTransaction } from '../../services/api.js'
14
9
  import { base64ToUint8Array } from '../../utils/base64ToUint8Array.js'
15
10
  import { getTransactionFailedMessage } from '../../utils/getTransactionMessage.js'
16
- import { sleep } from '../../utils/sleep.js'
17
11
  import { BaseStepExecutor } from '../BaseStepExecutor.js'
18
12
  import { checkBalance } from '../checkBalance.js'
19
13
  import { getSubstatusMessage } from '../processMessages.js'
@@ -24,8 +18,9 @@ import type {
24
18
  TransactionParameters,
25
19
  } from '../types.js'
26
20
  import { waitForReceivingTransaction } from '../waitForReceivingTransaction.js'
27
- import { getSolanaConnection } from './connection.js'
21
+ import { callSolanaWithRetry } from './connection.js'
28
22
  import { parseSolanaErrors } from './parseSolanaErrors.js'
23
+ import { sendAndConfirmTransaction } from './sendAndConfirmTransaction.js'
29
24
 
30
25
  export interface SolanaStepExecutorOptions extends StepExecutorOptions {
31
26
  walletAdapter: SignerWalletAdapter
@@ -66,8 +61,6 @@ export class SolanaStepExecutor extends BaseStepExecutor {
66
61
 
67
62
  if (process.status !== 'DONE') {
68
63
  try {
69
- const connection = await getSolanaConnection()
70
-
71
64
  process = this.statusManager.updateProcess(
72
65
  step,
73
66
  process.type,
@@ -115,10 +108,6 @@ export class SolanaStepExecutor extends BaseStepExecutor {
115
108
  data: step.transactionRequest.data,
116
109
  }
117
110
 
118
- const blockhashResult = await connection.getLatestBlockhash({
119
- commitment: 'confirmed',
120
- })
121
-
122
111
  if (this.executionOptions?.updateTransactionRequestHook) {
123
112
  const customizedTransactionRequest: TransactionParameters =
124
113
  await this.executionOptions.updateTransactionRequestHook({
@@ -159,30 +148,17 @@ export class SolanaStepExecutor extends BaseStepExecutor {
159
148
  }
160
149
  )
161
150
 
162
- async function bufferToBase64(buffer: any) {
163
- const base64url = (await new Promise((r) => {
164
- const reader = new FileReader()
165
- reader.onload = () => r(reader.result)
166
- reader.readAsDataURL(new Blob([buffer]))
167
- })) as any
168
- return base64url.slice(base64url.indexOf(',') + 1)
169
- }
170
-
171
- const _s = await bufferToBase64(signedTx.serialize())
172
- console.log(_s)
173
-
174
151
  process = this.statusManager.updateProcess(
175
152
  step,
176
153
  process.type,
177
154
  'PENDING'
178
155
  )
179
156
 
180
- const simulationResult = await connection.simulateTransaction(
181
- signedTx,
182
- {
183
- commitment: 'processed',
157
+ const simulationResult = await callSolanaWithRetry((connection) =>
158
+ connection.simulateTransaction(signedTx, {
159
+ commitment: 'confirmed',
184
160
  replaceRecentBlockhash: true,
185
- }
161
+ })
186
162
  )
187
163
 
188
164
  if (simulationResult.value.err) {
@@ -192,79 +168,20 @@ export class SolanaStepExecutor extends BaseStepExecutor {
192
168
  )
193
169
  }
194
170
 
195
- // Create transaction hash (signature)
196
- const txSignature = bs58.encode(signedTx.signatures[0])
197
-
198
- // A known weirdness - MAX_RECENT_BLOCKHASHES is 300
199
- // https://github.com/solana-labs/solana/blob/master/sdk/program/src/clock.rs#L123
200
- // but MAX_PROCESSING_AGE is 150
201
- // https://github.com/solana-labs/solana/blob/master/sdk/program/src/clock.rs#L129
202
- // the blockhash queue in the bank tells you 300 + current slot, but it won't be accepted 150 blocks later.
203
- // https://solana.com/docs/advanced/confirmation#transaction-expiration
204
- const lastValidBlockHeight = blockhashResult.lastValidBlockHeight - 150
205
-
206
- // In the following section, we wait and constantly check for the transaction to be confirmed
207
- // and resend the transaction if it is not confirmed within a certain time interval
208
- // thus handling tx retries on the client side rather than relying on the RPC
209
- const abortController = new AbortController()
210
- const confirmTransactionPromise = connection
211
- .confirmTransaction(
212
- {
213
- signature: txSignature,
214
- blockhash: blockhashResult.blockhash,
215
- lastValidBlockHeight: lastValidBlockHeight,
216
- abortSignal: abortController.signal,
217
- },
218
- 'confirmed'
219
- )
220
- .then((result) => result.value)
221
-
222
- let confirmedTx: SignatureResult | null = null
223
- let blockHeight = await connection.getBlockHeight()
224
-
225
- const rawTransactionOptions: SendOptions = {
226
- // We can skip preflight check after the first transaction has been sent
227
- // https://solana.com/docs/advanced/retry#the-cost-of-skipping-preflight
228
- skipPreflight: true,
229
- // Setting max retries to 0 as we are handling retries manually
230
- maxRetries: 0,
231
- // https://solana.com/docs/advanced/confirmation#use-an-appropriate-preflight-commitment-level
232
- preflightCommitment: 'confirmed',
233
- }
234
-
235
- const signedTxSerialized = signedTx.serialize()
236
-
237
- // https://solana.com/docs/advanced/retry#customizing-rebroadcast-logic
238
- while (!confirmedTx && blockHeight < lastValidBlockHeight) {
239
- await connection.sendRawTransaction(
240
- signedTxSerialized,
241
- rawTransactionOptions
242
- )
243
- confirmedTx = await Promise.race([
244
- confirmTransactionPromise,
245
- sleep(1000),
246
- ])
247
- if (confirmedTx) {
248
- break
249
- }
250
- blockHeight = await connection.getBlockHeight()
251
- }
252
-
253
- // Stop waiting for tx confirmation
254
- abortController.abort()
171
+ const confirmedTx = await sendAndConfirmTransaction(signedTx)
255
172
 
256
- if (!confirmedTx) {
173
+ if (!confirmedTx.signatureResult) {
257
174
  throw new TransactionError(
258
175
  LiFiErrorCode.TransactionExpired,
259
176
  'Transaction has expired: The block height has exceeded the maximum allowed limit.'
260
177
  )
261
178
  }
262
179
 
263
- if (confirmedTx?.err) {
180
+ if (confirmedTx.signatureResult.err) {
264
181
  const reason =
265
- typeof confirmedTx.err === 'object'
266
- ? JSON.stringify(confirmedTx.err)
267
- : confirmedTx.err
182
+ typeof confirmedTx.signatureResult.err === 'object'
183
+ ? JSON.stringify(confirmedTx.signatureResult.err)
184
+ : confirmedTx.signatureResult.err
268
185
  throw new TransactionError(
269
186
  LiFiErrorCode.TransactionFailed,
270
187
  `Transaction failed: ${reason}`
@@ -277,8 +194,8 @@ export class SolanaStepExecutor extends BaseStepExecutor {
277
194
  process.type,
278
195
  'PENDING',
279
196
  {
280
- txHash: txSignature,
281
- txLink: `${fromChain.metamask.blockExplorerUrls[0]}tx/${txSignature}`,
197
+ txHash: confirmedTx.txSignature,
198
+ txLink: `${fromChain.metamask.blockExplorerUrls[0]}tx/${confirmedTx.txSignature}`,
282
199
  }
283
200
  )
284
201