rubic-sdk 5.50.5-alpha.solana.4 → 5.50.5-alpha.solana.40

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 (56) hide show
  1. package/lib/common/tokens/token.d.ts +2 -0
  2. package/lib/common/tokens/token.js +5 -2
  3. package/lib/common/tokens/token.js.map +1 -1
  4. package/lib/core/blockchain/web3-private-service/web3-private/solana-web3-private/models/solana-transaction-options.d.ts +1 -0
  5. package/lib/core/blockchain/web3-private-service/web3-private/solana-web3-private/solana-web3-private.d.ts +3 -1
  6. package/lib/core/blockchain/web3-private-service/web3-private/solana-web3-private/solana-web3-private.js +31 -2
  7. package/lib/core/blockchain/web3-private-service/web3-private/solana-web3-private/solana-web3-private.js.map +1 -1
  8. package/lib/core/blockchain/web3-public-service/web3-public/models/supported-token-field.d.ts +1 -1
  9. package/lib/core/blockchain/web3-public-service/web3-public/solana-web3-public/models/solana-token.d.ts +6 -0
  10. package/lib/core/blockchain/web3-public-service/web3-public/solana-web3-public/services/solana-tokens-api-service.d.ts +0 -6
  11. package/lib/core/blockchain/web3-public-service/web3-public/solana-web3-public/services/solana-tokens-api-service.js +0 -31
  12. package/lib/core/blockchain/web3-public-service/web3-public/solana-web3-public/services/solana-tokens-api-service.js.map +1 -1
  13. package/lib/core/blockchain/web3-public-service/web3-public/solana-web3-public/services/solana-tokens-service.d.ts +14 -0
  14. package/lib/core/blockchain/web3-public-service/web3-public/solana-web3-public/services/solana-tokens-service.js +106 -0
  15. package/lib/core/blockchain/web3-public-service/web3-public/solana-web3-public/services/solana-tokens-service.js.map +1 -0
  16. package/lib/core/blockchain/web3-public-service/web3-public/solana-web3-public/solana-web3-public.d.ts +13 -3
  17. package/lib/core/blockchain/web3-public-service/web3-public/solana-web3-public/solana-web3-public.js +73 -71
  18. package/lib/core/blockchain/web3-public-service/web3-public/solana-web3-public/solana-web3-public.js.map +1 -1
  19. package/lib/core/blockchain/web3-public-service/web3-public/web3-public.js +0 -10
  20. package/lib/core/blockchain/web3-public-service/web3-public/web3-public.js.map +1 -1
  21. package/lib/features/common/models/swap-transaction-options.d.ts +1 -0
  22. package/lib/features/common/providers/dln/dln-api-service.d.ts +1 -1
  23. package/lib/features/common/providers/dln/dln-api-service.js +14 -10
  24. package/lib/features/common/providers/dln/dln-api-service.js.map +1 -1
  25. package/lib/features/common/providers/unizen/services/unizen-api-service.js +3 -3
  26. package/lib/features/common/providers/unizen/services/unizen-api-service.js.map +1 -1
  27. package/lib/features/cross-chain/calculation-manager/providers/debridge-provider/chains/debridge-solana-cross-chain-trade.js +5 -1
  28. package/lib/features/cross-chain/calculation-manager/providers/debridge-provider/chains/debridge-solana-cross-chain-trade.js.map +1 -1
  29. package/lib/features/cross-chain/calculation-manager/providers/lifi-provider/chains/lifi-solana-cross-chain-trade.js +5 -1
  30. package/lib/features/cross-chain/calculation-manager/providers/lifi-provider/chains/lifi-solana-cross-chain-trade.js.map +1 -1
  31. package/lib/features/cross-chain/calculation-manager/providers/lifi-provider/services/lifi-api-service.d.ts +0 -1
  32. package/lib/features/cross-chain/calculation-manager/providers/lifi-provider/services/lifi-api-service.js +2 -6
  33. package/lib/features/cross-chain/calculation-manager/providers/lifi-provider/services/lifi-api-service.js.map +1 -1
  34. package/lib/features/on-chain/calculation-manager/providers/aggregators/dln/chains/dln-solana-on-chain-trade.js +1 -1
  35. package/lib/features/on-chain/calculation-manager/providers/aggregators/dln/chains/dln-solana-on-chain-trade.js.map +1 -1
  36. package/lib/features/on-chain/calculation-manager/providers/aggregators/dln/constants/dln-on-chain-supported-blockchains.d.ts +1 -1
  37. package/lib/features/on-chain/calculation-manager/providers/aggregators/dln/constants/dln-on-chain-supported-blockchains.js +8 -8
  38. package/lib/features/on-chain/calculation-manager/providers/aggregators/dln/constants/dln-on-chain-supported-blockchains.js.map +1 -1
  39. package/lib/features/on-chain/calculation-manager/providers/aggregators/lifi/chains/lifi-solana-on-chain-trade.js +1 -1
  40. package/lib/features/on-chain/calculation-manager/providers/aggregators/lifi/chains/lifi-solana-on-chain-trade.js.map +1 -1
  41. package/lib/features/on-chain/calculation-manager/providers/aggregators/lifi/services/lifi-on-chain-api-service.js +0 -2
  42. package/lib/features/on-chain/calculation-manager/providers/aggregators/lifi/services/lifi-on-chain-api-service.js.map +1 -1
  43. package/lib/features/on-chain/calculation-manager/providers/aggregators/okuswap/constants/okuswap-api.d.ts +1 -1
  44. package/lib/features/on-chain/calculation-manager/providers/aggregators/okuswap/constants/okuswap-api.js +2 -2
  45. package/lib/features/on-chain/calculation-manager/providers/aggregators/okuswap/constants/okuswap-api.js.map +1 -1
  46. package/lib/features/on-chain/calculation-manager/providers/aggregators/okuswap/services/okuswap-api-service.js +3 -3
  47. package/lib/features/on-chain/calculation-manager/providers/aggregators/okuswap/services/okuswap-api-service.js.map +1 -1
  48. package/lib/features/on-chain/calculation-manager/providers/common/on-chain-aggregator/aggregator-solana-on-chain-trade-abstract.d.ts +1 -1
  49. package/lib/features/on-chain/calculation-manager/providers/common/on-chain-aggregator/aggregator-solana-on-chain-trade-abstract.js +4 -5
  50. package/lib/features/on-chain/calculation-manager/providers/common/on-chain-aggregator/aggregator-solana-on-chain-trade-abstract.js.map +1 -1
  51. package/lib/features/on-chain/calculation-manager/providers/common/on-chain-trade/solana-on-chain-trade/solana-on-chain-trade.js +3 -2
  52. package/lib/features/on-chain/calculation-manager/providers/common/on-chain-trade/solana-on-chain-trade/solana-on-chain-trade.js.map +1 -1
  53. package/lib/index.d.ts +1 -0
  54. package/lib/index.js +1 -0
  55. package/lib/index.js.map +1 -1
  56. package/package.json +1 -1
@@ -6,6 +6,7 @@ export type TokenStruct<T extends BlockchainName = BlockchainName> = {
6
6
  name: string;
7
7
  symbol: string;
8
8
  decimals: number;
9
+ image?: string;
9
10
  };
10
11
  /**
11
12
  * Contains main token's fields.
@@ -29,6 +30,7 @@ export declare class Token<T extends BlockchainName = BlockchainName> {
29
30
  readonly name: string;
30
31
  readonly symbol: string;
31
32
  readonly decimals: number;
33
+ readonly image: string | undefined;
32
34
  get isNative(): boolean;
33
35
  get isWrapped(): boolean;
34
36
  constructor(tokenStruct: TokenStruct<T>);
@@ -39,7 +39,8 @@ class Token {
39
39
  ...tokenBaseStruct,
40
40
  name: tokenInfo.name,
41
41
  symbol: tokenInfo.symbol,
42
- decimals: parseInt(tokenInfo.decimals)
42
+ decimals: parseInt(tokenInfo.decimals),
43
+ ...('image' in tokenInfo && { image: tokenInfo.image })
43
44
  });
44
45
  }
45
46
  /**
@@ -66,7 +67,8 @@ class Token {
66
67
  blockchain,
67
68
  name: tokenInfo.name,
68
69
  symbol: tokenInfo.symbol,
69
- decimals: parseInt(tokenInfo.decimals)
70
+ decimals: parseInt(tokenInfo.decimals),
71
+ ...('image' in tokenInfo && { image: tokenInfo.image })
70
72
  });
71
73
  });
72
74
  }
@@ -96,6 +98,7 @@ class Token {
96
98
  this.name = tokenStruct.name;
97
99
  this.symbol = tokenStruct.symbol;
98
100
  this.decimals = tokenStruct.decimals;
101
+ this.image = tokenStruct.image;
99
102
  }
100
103
  isEqualTo(token) {
101
104
  return (token.blockchain === this.blockchain && (0, blockchain_1.compareAddresses)(token.address, this.address));
@@ -1 +1 @@
1
- {"version":3,"file":"token.js","sourceRoot":"","sources":["../../../src/common/tokens/token.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"token.js","sourceRoot":"","sources":["../../../src/common/tokens/token.ts"],"names":[],"mappings":"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"}
@@ -4,4 +4,5 @@ export interface SolanaTransactionOptions extends BasicTransactionOptions {
4
4
  * Encoded data, which will be executed in transaction.
5
5
  */
6
6
  data?: string;
7
+ fromAddress: string;
7
8
  }
@@ -7,6 +7,8 @@ export declare class SolanaWeb3Private extends Web3Private {
7
7
  private readonly solanaWeb3;
8
8
  protected readonly Web3Pure: typeof SolanaWeb3Pure;
9
9
  getBlockchainName(): Promise<BlockchainName | undefined>;
10
- sendTransaction(options?: SolanaTransactionOptions): Promise<string>;
10
+ sendTransaction(options: SolanaTransactionOptions): Promise<string>;
11
+ private updatePriorityFee;
12
+ private encodeNumberToArrayLE;
11
13
  constructor(solanaWeb3: SolanaWeb3);
12
14
  }
@@ -12,15 +12,21 @@ class SolanaWeb3Private extends web3_private_1.Web3Private {
12
12
  async getBlockchainName() {
13
13
  return blockchain_name_1.BLOCKCHAIN_NAME.SOLANA;
14
14
  }
15
- async sendTransaction(options = {}) {
15
+ async sendTransaction(options) {
16
16
  try {
17
17
  const web3Public = injector_1.Injector.web3PublicService.getWeb3Public(blockchain_name_1.BLOCKCHAIN_NAME.SOLANA);
18
18
  const decodedData = options.data.startsWith('0x')
19
19
  ? Buffer.from(options.data.slice(2), 'hex')
20
20
  : utils_1.base64.decode(options.data);
21
- const tx = web3_js_1.VersionedTransaction.deserialize(decodedData);
22
21
  const { blockhash } = await web3Public.getRecentBlockhash();
22
+ const tx = web3_js_1.VersionedTransaction.deserialize(decodedData);
23
23
  tx.message.recentBlockhash = blockhash;
24
+ const [computedUnitsPrice, computedUnitsLimit] = await Promise.all([
25
+ web3Public.getConsumedUnitsPrice(tx),
26
+ web3Public.simulateTransaction(tx)
27
+ ]);
28
+ console.log('sendTransaction_SOLANA', { computedUnitsPrice, computedUnitsLimit });
29
+ this.updatePriorityFee(tx, computedUnitsPrice, computedUnitsLimit);
24
30
  const { signature } = await this.solanaWeb3.signAndSendTransaction(tx);
25
31
  options.onTransactionHash?.(signature);
26
32
  return signature;
@@ -30,6 +36,29 @@ class SolanaWeb3Private extends web3_private_1.Web3Private {
30
36
  throw evm_web3_private_1.EvmWeb3Private.parseError(err);
31
37
  }
32
38
  }
39
+ updatePriorityFee(tx, computeUnitPrice, computeUnitLimit) {
40
+ const computeBudgetOfset = 1;
41
+ const computeUnitPriceData = tx.message.compiledInstructions[1].data;
42
+ const encodedPrice = this.encodeNumberToArrayLE(computeUnitPrice, 8);
43
+ for (let i = 0; i < encodedPrice.length; i++) {
44
+ computeUnitPriceData[i + computeBudgetOfset] = encodedPrice[i];
45
+ }
46
+ if (computeUnitLimit) {
47
+ const computeUnitLimitData = tx.message.compiledInstructions[0].data;
48
+ const encodedLimit = this.encodeNumberToArrayLE(computeUnitLimit, 4);
49
+ for (let i = 0; i < encodedLimit.length; i++) {
50
+ computeUnitLimitData[i + computeBudgetOfset] = encodedLimit[i];
51
+ }
52
+ }
53
+ }
54
+ encodeNumberToArrayLE(num, arraySize) {
55
+ const result = new Uint8Array(arraySize);
56
+ for (let i = 0; i < arraySize; i++) {
57
+ result[i] = Number(num & 0xff);
58
+ num >>= 8;
59
+ }
60
+ return result;
61
+ }
33
62
  constructor(solanaWeb3) {
34
63
  super(solanaWeb3.publicKey?.toString() || '');
35
64
  this.solanaWeb3 = solanaWeb3;
@@ -1 +1 @@
1
- {"version":3,"file":"solana-web3-private.js","sourceRoot":"","sources":["../../../../../../src/core/blockchain/web3-private-service/web3-private/solana-web3-private/solana-web3-private.ts"],"names":[],"mappings":";;;AAAA,6CAAuD;AACvD,4CAA0C;AAC1C,gFAA6F;AAC7F,8HAAyH;AAGzH,qGAAiG;AACjG,sHAAiH;AACjH,yDAAsD;AAGtD,MAAa,iBAAkB,SAAQ,0BAAW;IAGvC,KAAK,CAAC,iBAAiB;QAC1B,OAAO,iCAAe,CAAC,MAAM,CAAC;IAClC,CAAC;IAEM,KAAK,CAAC,eAAe,CAAC,UAAoC,EAAE;QAC/D,IAAI,CAAC;YACD,MAAM,UAAU,GAAG,mBAAQ,CAAC,iBAAiB,CAAC,aAAa,CAAC,iCAAe,CAAC,MAAM,CAAC,CAAC;YACpF,MAAM,WAAW,GAAG,OAAO,CAAC,IAAK,CAAC,UAAU,CAAC,IAAI,CAAC;gBAC9C,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;gBAC5C,CAAC,CAAC,cAAM,CAAC,MAAM,CAAC,OAAO,CAAC,IAAK,CAAC,CAAC;YAEnC,MAAM,EAAE,GAAG,8BAAoB,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;YACzD,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,UAAU,CAAC,kBAAkB,EAAE,CAAC;YAC5D,EAAE,CAAC,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC;YAEvC,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC;YACvE,OAAO,CAAC,iBAAiB,EAAE,CAAC,SAAS,CAAC,CAAC;YACvC,OAAO,SAAS,CAAC;QACrB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CAAC,2BAA2B,GAAG,EAAE,CAAC,CAAC;YAChD,MAAM,iCAAc,CAAC,UAAU,CAAC,GAAgB,CAAC,CAAC;QACtD,CAAC;IACL,CAAC;IAED,YAA6B,UAAsB;QAC/C,KAAK,CAAC,UAAU,CAAC,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QADrB,eAAU,GAAV,UAAU,CAAY;QA1BhC,aAAQ,GAAG,iCAAc,CAAC;IA4B7C,CAAC;CACJ;AA9BD,8CA8BC"}
1
+ {"version":3,"file":"solana-web3-private.js","sourceRoot":"","sources":["../../../../../../src/core/blockchain/web3-private-service/web3-private/solana-web3-private/solana-web3-private.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- export type SupportedTokenField = 'decimals' | 'symbol' | 'name';
1
+ export type SupportedTokenField = 'decimals' | 'symbol' | 'name' | 'image';
@@ -1,3 +1,4 @@
1
+ import { PublicKey } from '@solana/web3.js';
1
2
  export interface SolanaToken {
2
3
  name: string;
3
4
  symbol: string;
@@ -7,3 +8,8 @@ export interface SolanaToken {
7
8
  decimals: number | null;
8
9
  holders?: number | null;
9
10
  }
11
+ export interface SolanaTokensFetchingResp {
12
+ tokensList: SolanaToken[];
13
+ notFetchedMints: PublicKey[];
14
+ hasNotFetchedTokens: boolean;
15
+ }
@@ -1,14 +1,8 @@
1
1
  import { SolanaToken } from '../models/solana-token';
2
- interface TokenList {
3
- preparedTokens: SolanaToken[];
4
- addresses: string[];
5
- }
6
2
  export declare class SolanaTokensApiService {
7
3
  private static readonly apiEndpoint;
8
4
  private static readonly xApiKey;
9
5
  static getTokensList(tokenAddresses: string[]): Promise<{
10
6
  content: SolanaToken[];
11
7
  }>;
12
- static prepareTokens(tokenAddresses: string[]): TokenList;
13
8
  }
14
- export {};
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.SolanaTokensApiService = void 0;
4
- const blockchain_1 = require("../../../../../../common/utils/blockchain");
5
4
  const injector_1 = require("../../../../../injector/injector");
6
5
  class SolanaTokensApiService {
7
6
  static getTokensList(tokenAddresses) {
@@ -11,36 +10,6 @@ class SolanaTokensApiService {
11
10
  }
12
11
  });
13
12
  }
14
- static prepareTokens(tokenAddresses) {
15
- const preparedTokens = [
16
- {
17
- name: 'Happy Cat',
18
- symbol: 'HAPPY',
19
- logoURI: null,
20
- address: 'HAPPYwgFcjEJDzRtfWE6tiHE9zGdzpNky2FvjPHsvvGZ',
21
- decimals: 9
22
- },
23
- {
24
- name: 'Just a chill guy',
25
- symbol: 'CHILLGUY',
26
- logoURI: 'https://ipfs.io/ipfs/Qmckb3nWWHyoJKtX3FeagfmDZXNVqiXM4nKkYsTnygm2Ah',
27
- address: 'Df6yfrKC8kZE3KNkrHERKzAetSxbrWeniQfyJY4Jpump',
28
- decimals: 6
29
- }
30
- ];
31
- return tokenAddresses.reduce((list, address) => {
32
- const existedToken = preparedTokens.find(token => (0, blockchain_1.compareAddresses)(token.address, address));
33
- return existedToken
34
- ? {
35
- preparedTokens: [...list.preparedTokens, existedToken],
36
- addresses: list.addresses
37
- }
38
- : {
39
- preparedTokens: list.preparedTokens,
40
- addresses: [...list.addresses, address]
41
- };
42
- }, { preparedTokens: [], addresses: [] });
43
- }
44
13
  }
45
14
  exports.SolanaTokensApiService = SolanaTokensApiService;
46
15
  SolanaTokensApiService.apiEndpoint = 'https://x-api.rubic.exchange/sol_token_list';
@@ -1 +1 @@
1
- {"version":3,"file":"solana-tokens-api-service.js","sourceRoot":"","sources":["../../../../../../../src/core/blockchain/web3-public-service/web3-public/solana-web3-public/services/solana-tokens-api-service.ts"],"names":[],"mappings":";;;AAAA,4DAA+D;AAC/D,yDAAsD;AAStD,MAAa,sBAAsB;IAKxB,MAAM,CAAC,aAAa,CAAC,cAAwB;QAChD,OAAO,mBAAQ,CAAC,UAAU,CAAC,IAAI,CAC3B,GAAG,IAAI,CAAC,WAAW,uBAAuB,EAC1C,EAAE,SAAS,EAAE,cAAc,EAAE,EAC7B;YACI,OAAO,EAAE;gBACL,MAAM,EAAE,IAAI,CAAC,OAAO;aACvB;SACJ,CACJ,CAAC;IACN,CAAC;IAEM,MAAM,CAAC,aAAa,CAAC,cAAwB;QAChD,MAAM,cAAc,GAAG;YACnB;gBACI,IAAI,EAAE,WAAW;gBACjB,MAAM,EAAE,OAAO;gBACf,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,8CAA8C;gBACvD,QAAQ,EAAE,CAAC;aACd;YACD;gBACI,IAAI,EAAE,kBAAkB;gBACxB,MAAM,EAAE,UAAU;gBAClB,OAAO,EAAE,qEAAqE;gBAC9E,OAAO,EAAE,8CAA8C;gBACvD,QAAQ,EAAE,CAAC;aACd;SACJ,CAAC;QACF,OAAO,cAAc,CAAC,MAAM,CACxB,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE;YACd,MAAM,YAAY,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAC7C,IAAA,6BAAgB,EAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAC3C,CAAC;YACF,OAAO,YAAY;gBACf,CAAC,CAAC;oBACI,cAAc,EAAE,CAAC,GAAG,IAAI,CAAC,cAAc,EAAE,YAAY,CAAC;oBACtD,SAAS,EAAE,IAAI,CAAC,SAAS;iBAC5B;gBACH,CAAC,CAAC;oBACI,cAAc,EAAE,IAAI,CAAC,cAAc;oBACnC,SAAS,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC;iBAC1C,CAAC;QACZ,CAAC,EACD,EAAE,cAAc,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAe,CACrD,CAAC;IACN,CAAC;;AAnDL,wDAoDC;AAnD2B,kCAAW,GAAG,6CAA6C,CAAC;AAE5D,8BAAO,GAAG,8CAA8C,CAAC"}
1
+ {"version":3,"file":"solana-tokens-api-service.js","sourceRoot":"","sources":["../../../../../../../src/core/blockchain/web3-public-service/web3-public/solana-web3-public/services/solana-tokens-api-service.ts"],"names":[],"mappings":";;;AAAA,yDAAsD;AAItD,MAAa,sBAAsB;IAKxB,MAAM,CAAC,aAAa,CAAC,cAAwB;QAChD,OAAO,mBAAQ,CAAC,UAAU,CAAC,IAAI,CAC3B,GAAG,IAAI,CAAC,WAAW,uBAAuB,EAC1C,EAAE,SAAS,EAAE,cAAc,EAAE,EAC7B;YACI,OAAO,EAAE;gBACL,MAAM,EAAE,IAAI,CAAC,OAAO;aACvB;SACJ,CACJ,CAAC;IACN,CAAC;;AAfL,wDAgBC;AAf2B,kCAAW,GAAG,6CAA6C,CAAC;AAE5D,8BAAO,GAAG,8CAA8C,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { Connection, PublicKey } from '@solana/web3.js';
2
+ import { SolanaToken } from '../models/solana-token';
3
+ export declare class SolanaTokensService {
4
+ private connection;
5
+ private tokensOrder;
6
+ private initialMints;
7
+ constructor(connection: Connection);
8
+ fetchTokensData(mints: PublicKey[]): Promise<SolanaToken[]>;
9
+ private fetchTokensFromBackend;
10
+ private fetchTokensFromMetaplex;
11
+ private fetchTokensFromSplApi;
12
+ private sortTokensByIdx;
13
+ private getNotFetchedTokensList;
14
+ }
@@ -0,0 +1,106 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.SolanaTokensService = void 0;
7
+ const spl_token_1 = require("@solana/spl-token");
8
+ const utl_sdk_1 = require("@solflare-wallet/utl-sdk");
9
+ const blockchain_1 = require("../../../../../../common/utils/blockchain");
10
+ const p_timeout_1 = __importDefault(require("../../../../../../common/utils/p-timeout"));
11
+ const solana_tokens_api_service_1 = require("./solana-tokens-api-service");
12
+ class SolanaTokensService {
13
+ constructor(connection) {
14
+ // key - address of token, value - idx of token in initial tokensAddress
15
+ this.tokensOrder = {};
16
+ this.initialMints = [];
17
+ this.connection = connection;
18
+ }
19
+ async fetchTokensData(mints) {
20
+ const tokensAddresses = mints.map(mint => mint.toString());
21
+ this.initialMints = mints;
22
+ this.tokensOrder = tokensAddresses.reduce((acc, address, idx) => ({ ...acc, [address.toLowerCase()]: idx }), {});
23
+ const fromBackend = await this.fetchTokensFromBackend(mints);
24
+ if (!fromBackend.hasNotFetchedTokens)
25
+ return this.sortTokensByIdx(fromBackend.tokensList);
26
+ const fromMetaplex = await this.fetchTokensFromMetaplex(fromBackend.notFetchedMints, fromBackend.tokensList);
27
+ const backendWithMetaplexTokens = this.sortTokensByIdx([
28
+ ...fromBackend.tokensList,
29
+ ...fromMetaplex.tokensList
30
+ ]);
31
+ if (!fromMetaplex.hasNotFetchedTokens)
32
+ return backendWithMetaplexTokens;
33
+ const fromSplApi = await this.fetchTokensFromSplApi(fromMetaplex.notFetchedMints, backendWithMetaplexTokens);
34
+ return this.sortTokensByIdx([
35
+ ...fromBackend.tokensList,
36
+ ...fromMetaplex.tokensList,
37
+ ...fromSplApi.tokensList
38
+ ]);
39
+ }
40
+ async fetchTokensFromBackend(mints) {
41
+ try {
42
+ const tokensAddresses = mints.map(mint => mint.toString());
43
+ const { content: notSortedTokensList } = await (0, p_timeout_1.default)(solana_tokens_api_service_1.SolanaTokensApiService.getTokensList(tokensAddresses), 4000, new Error('Api Timeout!'));
44
+ const notFetchedMints = this.getNotFetchedTokensList(notSortedTokensList);
45
+ return {
46
+ tokensList: notSortedTokensList,
47
+ notFetchedMints,
48
+ hasNotFetchedTokens: notFetchedMints.length > 0
49
+ };
50
+ }
51
+ catch {
52
+ return {
53
+ tokensList: [],
54
+ notFetchedMints: [...mints],
55
+ hasNotFetchedTokens: true
56
+ };
57
+ }
58
+ }
59
+ async fetchTokensFromMetaplex(mints, prevTokensList) {
60
+ const config = new utl_sdk_1.UtlConfig({
61
+ connection: this.connection,
62
+ timeout: 5000
63
+ });
64
+ const tokenSDK = new utl_sdk_1.Client(config);
65
+ const metaplexTokens = await tokenSDK.getFromMetaplex(mints).catch(() => []);
66
+ const notSortedTokensList = [...prevTokensList, ...metaplexTokens];
67
+ const notFetchedMints = this.getNotFetchedTokensList(notSortedTokensList);
68
+ return {
69
+ tokensList: metaplexTokens,
70
+ notFetchedMints,
71
+ hasNotFetchedTokens: notFetchedMints.length > 0
72
+ };
73
+ }
74
+ async fetchTokensFromSplApi(mints, prevTokensList) {
75
+ const splApiResp = await Promise.all(mints.map(mint => (0, spl_token_1.getMint)(this.connection, mint, 'confirmed'))).catch(() => []);
76
+ const splApiTokens = splApiResp.filter(Boolean).map(token => ({
77
+ name: `Token ${token.address.toString().slice(0, 10)}`,
78
+ symbol: `Token ${token.address.toString().slice(0, 10)}`,
79
+ logoURI: null,
80
+ decimals: token.decimals,
81
+ address: token.address.toString(),
82
+ verified: token.isInitialized
83
+ }));
84
+ const notSortedTokensList = [...prevTokensList, ...splApiTokens];
85
+ const notFetchedMints = this.getNotFetchedTokensList(notSortedTokensList);
86
+ return {
87
+ tokensList: notSortedTokensList,
88
+ notFetchedMints,
89
+ hasNotFetchedTokens: notFetchedMints.length > 0
90
+ };
91
+ }
92
+ sortTokensByIdx(notSortedList) {
93
+ const sortedList = [];
94
+ for (const token of notSortedList) {
95
+ const originalIdx = this.tokensOrder[token.address.toLowerCase()];
96
+ sortedList[originalIdx] = token;
97
+ }
98
+ return sortedList;
99
+ }
100
+ getNotFetchedTokensList(tokensList) {
101
+ const notFetchedTokensList = this.initialMints.filter(mint => tokensList.every(token => !(0, blockchain_1.compareAddresses)(token.address, mint.toString())));
102
+ return notFetchedTokensList;
103
+ }
104
+ }
105
+ exports.SolanaTokensService = SolanaTokensService;
106
+ //# sourceMappingURL=solana-tokens-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solana-tokens-service.js","sourceRoot":"","sources":["../../../../../../../src/core/blockchain/web3-public-service/web3-public/solana-web3-public/services/solana-tokens-service.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { BlockhashWithExpiryBlockHeight, Connection } from '@solana/web3.js';
1
+ import { BlockhashWithExpiryBlockHeight, Connection, VersionedTransaction } from '@solana/web3.js';
2
2
  import BigNumber from 'bignumber.js';
3
3
  import { Web3PrimitiveType } from '../../../models/web3-primitive-type';
4
4
  import { ContractMulticallResponse } from '../models/contract-multicall-response';
@@ -13,13 +13,25 @@ import { AbiItem } from 'web3-utils';
13
13
  */
14
14
  export declare class SolanaWeb3Public extends Web3Public {
15
15
  private readonly connection;
16
+ private readonly HELIUS_API_URL;
17
+ private readonly MAX_TRANSFER_COST;
16
18
  constructor(connection: Connection);
19
+ /**
20
+ * @returns ComputedUnitsLimit - like gasLimit in evm
21
+ */
22
+ simulateTransaction(tx: VersionedTransaction): Promise<number>;
23
+ /**
24
+ * @returns ComputedUnitsPrice - like gasPrice in evm
25
+ */
26
+ getConsumedUnitsPrice(tx: VersionedTransaction): Promise<number>;
27
+ getLastComputeUnits(): Promise<BigNumber>;
17
28
  getBlockNumber(): Promise<number>;
18
29
  multicallContractsMethods<Output extends Web3PrimitiveType>(_contractAbi: AbiItem[], _contractsData: {
19
30
  contractAddress: string;
20
31
  methodsData: MethodData[];
21
32
  }[]): Promise<ContractMulticallResponse<Output>[][]>;
22
33
  getTransactionStatus(hash: string): Promise<TxStatus>;
34
+ callForTokenInfo(tokenAddress: string, tokenFields?: SupportedTokenField[]): Promise<Partial<Record<SupportedTokenField, string>>>;
23
35
  callForTokensInfo(tokenAddresses: string[] | ReadonlyArray<string>, tokenFields?: SupportedTokenField[]): Promise<Partial<Record<SupportedTokenField, string>>[]>;
24
36
  getBalance(userAddress: string, tokenAddress: string): Promise<BigNumber>;
25
37
  getTokenBalance(address: string, tokenAddress: string): Promise<BigNumber>;
@@ -29,8 +41,6 @@ export declare class SolanaWeb3Public extends Web3Public {
29
41
  gasPrice?: string;
30
42
  gas?: string;
31
43
  }): Promise<T>;
32
- private fetchMints;
33
- private hasNotFetchedTokens;
34
44
  healthCheck(timeoutMs?: number): Promise<boolean>;
35
45
  /**
36
46
  * Gets balance of multiple tokens.
@@ -1,10 +1,4 @@
1
1
  "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
2
  var __importDefault = (this && this.__importDefault) || function (mod) {
9
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
10
4
  };
@@ -12,18 +6,17 @@ Object.defineProperty(exports, "__esModule", { value: true });
12
6
  exports.SolanaWeb3Public = void 0;
13
7
  const spl_token_1 = require("@solana/spl-token");
14
8
  const web3_js_1 = require("@solana/web3.js");
15
- const utl_sdk_1 = require("@solflare-wallet/utl-sdk");
16
9
  const bignumber_js_1 = __importDefault(require("bignumber.js"));
10
+ const utils_1 = require("ethers/lib/utils");
17
11
  const rxjs_1 = require("rxjs");
18
12
  const native_tokens_1 = require("../../../../../common/tokens/constants/native-tokens");
19
- const blockchain_1 = require("../../../../../common/utils/blockchain");
20
- const decorators_1 = require("../../../../../common/utils/decorators");
21
13
  const native_solana_mint_address_1 = require("../../../constants/solana/native-solana-mint-address");
22
14
  const blockchain_name_1 = require("../../../models/blockchain-name");
23
15
  const tx_status_1 = require("../models/tx-status");
24
16
  const web3_public_1 = require("../web3-public");
25
17
  const solana_web3_pure_1 = require("../../../web3-pure/typed-web3-pure/solana-web3-pure/solana-web3-pure");
26
- const solana_tokens_api_service_1 = require("./services/solana-tokens-api-service");
18
+ const injector_1 = require("../../../../injector/injector");
19
+ const solana_tokens_service_1 = require("./services/solana-tokens-service");
27
20
  /**
28
21
  * Class containing methods for calling contracts in order to obtain information from the blockchain.
29
22
  * To send transaction or execute contract method use {@link Web3Private}.
@@ -32,6 +25,56 @@ class SolanaWeb3Public extends web3_public_1.Web3Public {
32
25
  constructor(connection) {
33
26
  super(blockchain_name_1.BLOCKCHAIN_NAME.SOLANA);
34
27
  this.connection = connection;
28
+ this.HELIUS_API_URL = 'https://mainnet.helius-rpc.com';
29
+ this.MAX_TRANSFER_COST = 10000;
30
+ }
31
+ /**
32
+ * @returns ComputedUnitsLimit - like gasLimit in evm
33
+ */
34
+ async simulateTransaction(tx) {
35
+ const DEFAULT_CU_LIMIT = 600000;
36
+ try {
37
+ const resp = await this.connection.simulateTransaction(tx, {
38
+ replaceRecentBlockhash: true
39
+ });
40
+ return resp.value.unitsConsumed || DEFAULT_CU_LIMIT;
41
+ }
42
+ catch (err) {
43
+ console.error('Solana_simulateTransaction_Error ==> ', err);
44
+ return DEFAULT_CU_LIMIT;
45
+ }
46
+ }
47
+ /**
48
+ * @returns ComputedUnitsPrice - like gasPrice in evm
49
+ */
50
+ async getConsumedUnitsPrice(tx) {
51
+ const resp = await injector_1.Injector.httpClient.post(`${this.HELIUS_API_URL}/?api-key=f6b96e37-e267-4b67-8790-84bdf8748c39`, {
52
+ jsonrpc: '2.0',
53
+ id: '1',
54
+ method: 'getPriorityFeeEstimate',
55
+ params: [
56
+ {
57
+ transaction: utils_1.base58.encode(tx.serialize()), // Pass the serialized transaction in Base58
58
+ options: { priorityLevel: 'VeryHigh' }
59
+ }
60
+ ]
61
+ });
62
+ return resp.result.priorityFeeEstimate;
63
+ }
64
+ /* like gasLimit in evm */
65
+ async getLastComputeUnits() {
66
+ const latestSlot = await this.connection.getSlot();
67
+ const block = await this.connection.getParsedBlock(latestSlot, {
68
+ transactionDetails: 'full',
69
+ maxSupportedTransactionVersion: 0
70
+ });
71
+ const onlyDeFiSwaps = block.transactions.filter(tx => Number(tx.meta?.computeUnitsConsumed) > this.MAX_TRANSFER_COST);
72
+ const maxUnits = onlyDeFiSwaps.reduce((maxUnits, tx) => {
73
+ const computeUnits = Number(tx.meta?.computeUnitsConsumed);
74
+ return maxUnits > computeUnits ? maxUnits : computeUnits;
75
+ }, 0);
76
+ console.log('%cLAST_BLOCK ===> ', 'color: pink; font-size: 20px;', { block, maxUnits });
77
+ return new bignumber_js_1.default(maxUnits);
35
78
  }
36
79
  getBlockNumber() {
37
80
  return this.connection.getBlockHeight('finalized');
@@ -56,25 +99,33 @@ class SolanaWeb3Public extends web3_public_1.Web3Public {
56
99
  return tx_status_1.TX_STATUS.PENDING;
57
100
  }
58
101
  }
59
- async callForTokensInfo(tokenAddresses, tokenFields = ['decimals', 'symbol', 'name']) {
102
+ async callForTokenInfo(tokenAddress, tokenFields = ['decimals', 'symbol', 'name', 'image']) {
103
+ return (await this.callForTokensInfo([tokenAddress], tokenFields))[0];
104
+ }
105
+ async callForTokensInfo(tokenAddresses, tokenFields = ['decimals', 'symbol', 'name', 'image']) {
60
106
  const nativeTokenIndex = tokenAddresses.findIndex(address => this.Web3Pure.isNativeAddress(address));
61
107
  const filteredTokenAddresses = tokenAddresses.filter((_, index) => index !== nativeTokenIndex);
62
- const { preparedTokens, addresses } = solana_tokens_api_service_1.SolanaTokensApiService.prepareTokens(filteredTokenAddresses);
63
- const mints = addresses.map(address => new web3_js_1.PublicKey(address));
64
- const tokensMint = await this.fetchMints(mints);
65
- const fetchedTokens = tokensMint.map(token => {
66
- const entries = tokenFields.map(field => [field, token?.[field]]);
67
- return Object.fromEntries(entries);
68
- });
69
- const tokens = [...fetchedTokens, ...preparedTokens];
70
- if (nativeTokenIndex === -1) {
71
- return tokens;
72
- }
73
108
  const blockchainNativeToken = native_tokens_1.nativeTokensList[this.blockchainName];
74
109
  const nativeToken = {
75
110
  ...blockchainNativeToken,
76
111
  decimals: blockchainNativeToken.decimals.toString()
77
112
  };
113
+ // only native token in array
114
+ if (!filteredTokenAddresses.length && nativeTokenIndex !== -1) {
115
+ return [nativeToken];
116
+ }
117
+ const mints = filteredTokenAddresses.map(address => new web3_js_1.PublicKey(address));
118
+ const tokensMint = await new solana_tokens_service_1.SolanaTokensService(this.connection).fetchTokensData(mints);
119
+ const tokens = tokensMint.map(token => {
120
+ const data = tokenFields.reduce((acc, fieldName) => ({
121
+ ...acc,
122
+ [fieldName]: fieldName === 'image' ? token.logoURI : token[fieldName]
123
+ }), {});
124
+ return data;
125
+ });
126
+ if (nativeTokenIndex === -1) {
127
+ return tokens;
128
+ }
78
129
  tokens.splice(nativeTokenIndex, 0, nativeToken);
79
130
  return tokens;
80
131
  }
@@ -94,52 +145,6 @@ class SolanaWeb3Public extends web3_public_1.Web3Public {
94
145
  async callContractMethod(_contractAddress, _contractAbi, _methodName, _methodArguments = [], _options = {}) {
95
146
  throw new Error('Method call is not supported');
96
147
  }
97
- async fetchMints(mints) {
98
- const tokensAddresses = mints.map(mint => mint.toString());
99
- let tokensList = [];
100
- let notFetchedList = [];
101
- const m = await (0, spl_token_1.getMint)(this.connection, mints[0], 'confirmed');
102
- const tokenData = await (0, spl_token_1.getTokenMetadata)(this.connection, mints[0], 'confirmed').catch(err => err);
103
- const rpcResp = await this.connection
104
- .getAccountInfo(mints[0], 'confirmed')
105
- .catch(err => err);
106
- console.log(`%cMINT`, 'color: aqua; font-sie: 20px;', { mint: m, tokenData, rpcResp });
107
- try {
108
- const { content } = await solana_tokens_api_service_1.SolanaTokensApiService.getTokensList(tokensAddresses);
109
- tokensList = content;
110
- notFetchedList = mints.filter(mint => tokensList.some(token => !(0, blockchain_1.compareAddresses)(token.address, mint.toString())));
111
- }
112
- catch { }
113
- if (!this.hasNotFetchedTokens(notFetchedList))
114
- return tokensList;
115
- const config = new utl_sdk_1.UtlConfig({
116
- connection: this.connection,
117
- timeout: 5000
118
- });
119
- const tokenSDK = new utl_sdk_1.Client(config);
120
- const metaplexTokens = await tokenSDK.getFromMetaplex(notFetchedList);
121
- notFetchedList = mints.filter(mint => [...tokensList, ...metaplexTokens].some(token => !(0, blockchain_1.compareAddresses)(token.address, mint.toString())));
122
- if (!this.hasNotFetchedTokens(notFetchedList))
123
- return [...tokensList, ...metaplexTokens];
124
- // const splApiResp = await Promise.all(
125
- notFetchedList.map(mint => (0, spl_token_1.getTokenMetadata)(this.connection, mint, 'confirmed'));
126
- // );
127
- // const splApiTokens = splApiResp.filter(Boolean).map(
128
- // token =>
129
- // ({
130
- // name: token!.name,
131
- // symbol: token!.symbol,
132
- // logoURI: token!.uri,
133
- // decimals: Number(token?.additionalMetadata?.[0]?.[0] || 9),
134
- // address: token!.mint.toString(),
135
- // verified: true
136
- // } as SolanaToken)
137
- // );
138
- return [...tokensList, ...metaplexTokens];
139
- }
140
- hasNotFetchedTokens(notFetchedList) {
141
- return notFetchedList.length > 0;
142
- }
143
148
  healthCheck(timeoutMs = 4000) {
144
149
  const request = this.connection.getBalanceAndContext(new web3_js_1.PublicKey('DVLwQbEaw5txuduQwvfbNP3sXvjawHqaoMuGMKZx15bQ'), 'confirmed');
145
150
  return (0, rxjs_1.firstValueFrom)((0, rxjs_1.from)(request).pipe((0, rxjs_1.timeout)(timeoutMs), (0, rxjs_1.map)(result => Boolean(result)), (0, rxjs_1.catchError)((err) => {
@@ -194,7 +199,4 @@ class SolanaWeb3Public extends web3_public_1.Web3Public {
194
199
  }
195
200
  }
196
201
  exports.SolanaWeb3Public = SolanaWeb3Public;
197
- __decorate([
198
- decorators_1.Cache
199
- ], SolanaWeb3Public.prototype, "callForTokensInfo", null);
200
202
  //# sourceMappingURL=solana-web3-public.js.map