@cryptorubic/web3 0.0.35 → 0.2.2

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 (45) hide show
  1. package/package.json +15 -2
  2. package/src/lib/adapter/adapters/abstract-adapter.d.ts +2 -2
  3. package/src/lib/adapter/adapters/abstract-adapter.js +0 -2
  4. package/src/lib/adapter/adapters/constants/erc20-token-abi.js +12 -12
  5. package/src/lib/adapter/adapters/constants/trc-20-contract-abi.js +15 -15
  6. package/src/lib/adapter/adapters/constants/tron-multicall-abi.js +6 -6
  7. package/src/lib/adapter/adapters/evm-adapter.d.ts +7 -7
  8. package/src/lib/adapter/adapters/evm-adapter.js +48 -34
  9. package/src/lib/adapter/adapters/models/approve-adapter.d.ts +2 -2
  10. package/src/lib/adapter/adapters/models/evm-adapter-options.d.ts +1 -1
  11. package/src/lib/adapter/adapters/models/ton-adapter-config.d.ts +2 -2
  12. package/src/lib/adapter/adapters/solana-adapter.d.ts +3 -3
  13. package/src/lib/adapter/adapters/solana-adapter.js +1 -1
  14. package/src/lib/adapter/adapters/ton-adapter.d.ts +6 -6
  15. package/src/lib/adapter/adapters/ton-adapter.js +8 -8
  16. package/src/lib/adapter/adapters/tron-adapter.d.ts +8 -8
  17. package/src/lib/adapter/adapters/tron-adapter.js +36 -23
  18. package/src/lib/adapter/adapters/utils/ton-api.service.d.ts +3 -3
  19. package/src/lib/adapter/adapters/utils/ton-api.service.js +4 -3
  20. package/src/lib/adapter/blockchain-adapter-factory.service.d.ts +5 -5
  21. package/src/lib/adapter/blockchain-adapter-factory.service.js +20 -13
  22. package/src/lib/adapter/constants/chain-configs/chain-configs.d.ts +1 -1
  23. package/src/lib/adapter/constants/chain-configs/chain-configs.js +589 -299
  24. package/src/lib/adapter/constants/models/wallet-provider.d.ts +3 -3
  25. package/src/lib/adapter/constants/viem-blockchain-mapping.d.ts +1 -1
  26. package/src/lib/adapter/constants/viem-blockchain-mapping.js +1 -1
  27. package/src/lib/utils/constants/changenow-api-blockchain.js +2 -2
  28. package/src/lib/utils/constants/web3-pure-store.d.ts +2 -2
  29. package/src/lib/utils/constants/web3-pure-store.js +33 -33
  30. package/src/lib/utils/models/contract-multicall-response.d.ts +1 -1
  31. package/src/lib/utils/models/primitive-types.d.ts +1 -1
  32. package/src/lib/utils/models/tron-transaction-config.d.ts +1 -1
  33. package/src/lib/utils/web3-pure.d.ts +2 -2
  34. package/src/lib/utils/web3-pure.js +6 -7
  35. package/src/lib/utils/web3-types/bitcoin-web3-pure.d.ts +1 -1
  36. package/src/lib/utils/web3-types/common-web3-pure.js +0 -2
  37. package/src/lib/utils/web3-types/evm-web3-pure.d.ts +1 -1
  38. package/src/lib/utils/web3-types/icp-web3-pure.d.ts +1 -1
  39. package/src/lib/utils/web3-types/icp-web3-pure.js +2 -1
  40. package/src/lib/utils/web3-types/solana-web3-pure.d.ts +1 -1
  41. package/src/lib/utils/web3-types/solana-web3-pure.js +1 -1
  42. package/src/lib/utils/web3-types/ton-web3-pure.d.ts +1 -1
  43. package/src/lib/utils/web3-types/ton-web3-pure.js +1 -1
  44. package/src/lib/utils/web3-types/tron-web3-pure.d.ts +6 -6
  45. package/src/lib/utils/web3-types/tron-web3-pure.js +10 -8
@@ -1,14 +1,14 @@
1
1
  import BigNumber from 'bignumber.js';
2
2
  import { AbstractAdapter } from './abstract-adapter';
3
- import { ContractMulticallResponse, MethodData, TronWeb3PrimitiveType } from "@cryptorubic/tron-types";
3
+ import { ContractMulticallResponse, MethodData, TronWeb3PrimitiveType } from '@cryptorubic/tron-types';
4
4
  import { TronWeb } from 'tronweb';
5
- import { AbiFragment } from "tronweb/lib/commonjs/types";
6
- import { ICustomLogger, PriceTokenAmount, Token, TokenAmount, TronBlockchainName } from "@cryptorubic/core";
7
- import { TronTransactionConfig } from "../../utils/models/tron-transaction-config";
8
- import { TronParameters } from "../../utils/models/tron-parameters";
9
- import { Abi } from "viem";
10
- import { ApproveAdapter } from "./models/approve-adapter";
11
- import { AllowanceInfo } from "./models/common-types";
5
+ import { AbiFragment } from 'tronweb/lib/commonjs/types';
6
+ import { ICustomLogger, PriceTokenAmount, Token, TokenAmount, TronBlockchainName } from '@cryptorubic/core';
7
+ import { TronTransactionConfig } from '../../utils/models/tron-transaction-config';
8
+ import { TronParameters } from '../../utils/models/tron-parameters';
9
+ import { Abi } from 'viem';
10
+ import { ApproveAdapter } from './models/approve-adapter';
11
+ import { AllowanceInfo } from './models/common-types';
12
12
  export declare class TronAdapter extends AbstractAdapter<TronWeb, TronWeb, TronBlockchainName> implements ApproveAdapter<TronTransactionConfig> {
13
13
  private readonly multicallAddress;
14
14
  needPreswapAction(token: TokenAmount, contractAddress: string, walletAddress: string, amount: string): Promise<boolean>;
@@ -23,7 +23,7 @@ class TronAdapter extends abstract_adapter_1.AbstractAdapter {
23
23
  const calls = contractsData.map(({ contractAddress, methodsData }) => {
24
24
  return methodsData.map(({ methodName, methodArguments }) => [
25
25
  contractAddress,
26
- tron_web3_pure_1.TronWeb3Pure.encodeFunctionCall(contractAbi, methodName, methodArguments)
26
+ tron_web3_pure_1.TronWeb3Pure.encodeFunctionCall(contractAbi, methodName, methodArguments),
27
27
  ]);
28
28
  });
29
29
  try {
@@ -33,11 +33,16 @@ class TronAdapter extends abstract_adapter_1.AbstractAdapter {
33
33
  const success = outputs.results[outputIndex];
34
34
  const returnData = outputs.returnData[outputIndex];
35
35
  outputIndex++;
36
+ const methodOutputAbi = contractAbi.find(
36
37
  // @ts-ignore
37
- const methodOutputAbi = contractAbi.find((funcSignature) => funcSignature.name === methodData.methodName).outputs;
38
+ (funcSignature) => funcSignature.name === methodData.methodName
39
+ // @ts-ignore
40
+ ).outputs;
38
41
  return {
39
- output: success ? tron_web3_pure_1.TronWeb3Pure.decodeMethodOutput(methodOutputAbi, returnData) : null,
40
- success
42
+ output: success
43
+ ? tron_web3_pure_1.TronWeb3Pure.decodeMethodOutput(methodOutputAbi, returnData)
44
+ : null,
45
+ success,
41
46
  };
42
47
  }));
43
48
  }
@@ -64,13 +69,13 @@ class TronAdapter extends abstract_adapter_1.AbstractAdapter {
64
69
  const output = (await this.read(contractData.contractAddress, contractAbi, methodData.methodName, methodData.methodArguments));
65
70
  return {
66
71
  output,
67
- success: true
72
+ success: true,
68
73
  };
69
74
  }
70
75
  catch {
71
76
  return {
72
77
  output: null,
73
- success: false
78
+ success: false,
74
79
  };
75
80
  }
76
81
  }));
@@ -88,9 +93,9 @@ class TronAdapter extends abstract_adapter_1.AbstractAdapter {
88
93
  methodsData: [
89
94
  {
90
95
  methodArguments: [userAddress],
91
- methodName: 'balanceOf'
92
- }
93
- ]
96
+ methodName: 'balanceOf',
97
+ },
98
+ ],
94
99
  })));
95
100
  const results = await Promise.all(promises);
96
101
  const tokensBalances = results[0].map((tokenResults) => {
@@ -110,10 +115,12 @@ class TronAdapter extends abstract_adapter_1.AbstractAdapter {
110
115
  contractAddress,
111
116
  methodsData: tokenFields.map((methodName) => ({
112
117
  methodArguments: [],
113
- methodName
114
- }))
118
+ methodName,
119
+ })),
115
120
  }));
116
- const results = contractsData.length ? await this.multicallContractsMethods(trc_20_contract_abi_1.TRC20_CONTRACT_ABI, contractsData) : [];
121
+ const results = contractsData.length
122
+ ? await this.multicallContractsMethods(trc_20_contract_abi_1.TRC20_CONTRACT_ABI, contractsData)
123
+ : [];
117
124
  const tokens = results.map((tokenFieldsResults, tokenIndex) => {
118
125
  const tokenAddress = tokenAddresses[tokenIndex];
119
126
  const possibleToken = tokenFieldsResults.reduce((acc, field, fieldIndex) => {
@@ -122,7 +129,9 @@ class TronAdapter extends abstract_adapter_1.AbstractAdapter {
122
129
  }
123
130
  return {
124
131
  ...acc,
125
- [tokenFields[fieldIndex]]: field.success ? field.output : undefined
132
+ [tokenFields[fieldIndex]]: field.success
133
+ ? field.output
134
+ : undefined,
126
135
  };
127
136
  }, {});
128
137
  return new core_1.Token({
@@ -130,7 +139,7 @@ class TronAdapter extends abstract_adapter_1.AbstractAdapter {
130
139
  blockchain: core_1.BLOCKCHAIN_NAME.TRON,
131
140
  decimals: Number(possibleToken?.decimals),
132
141
  name: possibleToken?.name,
133
- symbol: possibleToken?.symbol
142
+ symbol: possibleToken?.symbol,
134
143
  });
135
144
  });
136
145
  if (nativeTokenIndex === -1) {
@@ -142,7 +151,8 @@ class TronAdapter extends abstract_adapter_1.AbstractAdapter {
142
151
  }
143
152
  async getBalance(userAddress, tokenAddress) {
144
153
  let balance;
145
- if (tokenAddress && !web3_pure_1.Web3Pure.isNativeAddress(core_1.CHAIN_TYPE.TRON, tokenAddress)) {
154
+ if (tokenAddress &&
155
+ !web3_pure_1.Web3Pure.isNativeAddress(core_1.CHAIN_TYPE.TRON, tokenAddress)) {
146
156
  balance = await this.getTokenBalance(userAddress, tokenAddress);
147
157
  }
148
158
  else {
@@ -154,8 +164,10 @@ class TronAdapter extends abstract_adapter_1.AbstractAdapter {
154
164
  async getTokenBalance(userAddress, tokenAddress) {
155
165
  this.public.setAddress(userAddress);
156
166
  const contract = await this.public.contract(trc_20_contract_abi_1.TRC20_CONTRACT_ABI, tokenAddress);
157
- // @ts-ignore
158
- const balance = await contract.balanceOf(userAddress).call();
167
+ const balance = await contract
168
+ // @ts-ignore
169
+ .balanceOf(userAddress)
170
+ .call();
159
171
  return new bignumber_js_1.default(balance?.toString());
160
172
  }
161
173
  async convertTronAddressToHex(address) {
@@ -172,14 +184,15 @@ class TronAdapter extends abstract_adapter_1.AbstractAdapter {
172
184
  signature,
173
185
  to: contractAddress,
174
186
  ...(callValue && { callValue }),
175
- ...(feeLimit && { feeLimit })
187
+ ...(feeLimit && { feeLimit }),
176
188
  };
177
189
  }
178
190
  static flattenTypesToString(abiInputs) {
179
191
  return (abiInputs?.map((abiInput) => {
180
192
  if (abiInput.type === 'tuple' || abiInput.type.includes('tuple')) {
193
+ const flattenedComponents = this.flattenTypesToString(
181
194
  //@ts-ignore
182
- const flattenedComponents = this.flattenTypesToString(abiInput.components);
195
+ abiInput.components);
183
196
  return `(${flattenedComponents.join(',')})`;
184
197
  }
185
198
  return abiInput.type;
@@ -195,14 +208,16 @@ class TronAdapter extends abstract_adapter_1.AbstractAdapter {
195
208
  const amountWei = amount ?? new bignumber_js_1.default(2).pow(256).minus(1).toFixed();
196
209
  return tron_web3_pure_1.TronWeb3Pure.encodeMethodCall(tokenAddress, trc_20_contract_abi_1.TRC20_CONTRACT_ABI, 'approve', [
197
210
  { type: 'address', value: spenderAddress },
198
- { type: 'uint256', value: amountWei }
211
+ { type: 'uint256', value: amountWei },
199
212
  ]);
200
213
  }
201
214
  async getAllowance(fromTokenAddress, walletAddress, spender) {
202
215
  const [contract, decimals, allowance] = await Promise.all([
203
216
  this.public.contract(trc_20_contract_abi_1.TRC20_CONTRACT_ABI, fromTokenAddress),
204
217
  this.read(fromTokenAddress, trc_20_contract_abi_1.TRC20_CONTRACT_ABI, 'decimals'),
205
- this.read(fromTokenAddress, trc_20_contract_abi_1.TRC20_CONTRACT_ABI, 'allowance', [spender])
218
+ this.read(fromTokenAddress, trc_20_contract_abi_1.TRC20_CONTRACT_ABI, 'allowance', [
219
+ spender,
220
+ ]),
206
221
  ]);
207
222
  const allowanceWeiBN = new bignumber_js_1.default(allowance);
208
223
  const allowanceNonWei = core_1.Token.fromWei(allowanceWeiBN, Number(decimals));
@@ -214,11 +229,9 @@ class TronAdapter extends abstract_adapter_1.AbstractAdapter {
214
229
  const receipt = await this.wallet.trx.sendRawTransaction(signedTransaction);
215
230
  return receipt.transaction.txID;
216
231
  }
217
- ;
218
232
  async approve(fromAddress, tokenAddress, spenderAddress, amount) {
219
233
  const config = this.encodeApprove(tokenAddress, spenderAddress, amount);
220
234
  return this.write(config.to, config.signature, config.arguments);
221
235
  }
222
- ;
223
236
  }
224
237
  exports.TronAdapter = TronAdapter;
@@ -1,8 +1,8 @@
1
1
  import { TonApiAccountInfoResp, TonApiAllNonNullableTokenInfoForWalletResp, TonApiParseAddressResp, TonApiTokenInfoForWalletResp, TonApiTokenInfoResp, TonApiTxDataByBocResp } from '../models/tonapi-models';
2
2
  import { TonCenterBlockInfo } from '../models/toncenter-types';
3
- import { HttpClient } from "@cryptorubic/core";
4
- import { TonApiConfig } from "../models/ton-api-config";
5
- import { Web3PrimitiveType } from "../../../utils/models/primitive-types";
3
+ import { HttpClient } from '@cryptorubic/core';
4
+ import { TonApiConfig } from '../models/ton-api-config';
5
+ import { Web3PrimitiveType } from '../../../utils/models/primitive-types';
6
6
  export declare class TonApiService {
7
7
  private readonly httpClient;
8
8
  private readonly tonApiUrl;
@@ -6,7 +6,8 @@ class TonApiService {
6
6
  this.httpClient = httpClient;
7
7
  this.apiKey = params.tonApiKey;
8
8
  this.tonApiUrl = params?.tonApiUrl || 'https://tonapi.io';
9
- this.tonCenterV3Url = params.tonCenterV3Url || 'https://toncenter.com/api/v3';
9
+ this.tonCenterV3Url =
10
+ params.tonCenterV3Url || 'https://toncenter.com/api/v3';
10
11
  }
11
12
  /**
12
13
  * @param walletAddress in any format: raw or friendly
@@ -97,8 +98,8 @@ class TonApiService {
97
98
  params: {
98
99
  limit: 1,
99
100
  offset: 0,
100
- sort: 'desc'
101
- }
101
+ sort: 'desc',
102
+ },
102
103
  });
103
104
  if ('detail' in res) {
104
105
  throw new Error(`[TonApiService] Error in fetchWalletSeqno - ${res.detail[0]?.msg}`);
@@ -1,11 +1,11 @@
1
1
  import { SolanaAdapter } from './adapters/solana-adapter';
2
2
  import { TronAdapter } from './adapters/tron-adapter';
3
3
  import { AbstractAdapter } from './adapters/abstract-adapter';
4
- import { WalletProvider } from "./constants/models/wallet-provider";
5
- import { BlockchainName, EvmBlockchainName, SolanaBlockchainName, TronBlockchainName, ICustomLogger, HttpClient, TonBlockchainName } from "@cryptorubic/core";
6
- import { TonAdapter } from "./adapters/ton-adapter";
7
- import { TonAdapterConfig } from "./adapters/models/ton-adapter-config";
8
- import { EvmAdapter } from "./adapters/evm-adapter";
4
+ import { WalletProvider } from './constants/models/wallet-provider';
5
+ import { BlockchainName, EvmBlockchainName, SolanaBlockchainName, TronBlockchainName, ICustomLogger, HttpClient, TonBlockchainName } from '@cryptorubic/core';
6
+ import { TonAdapter } from './adapters/ton-adapter';
7
+ import { TonAdapterConfig } from './adapters/models/ton-adapter-config';
8
+ import { EvmAdapter } from './adapters/evm-adapter';
9
9
  export declare class BlockchainAdapterFactoryService {
10
10
  private readonly rpcList;
11
11
  private readonly createLogger?;
@@ -23,7 +23,7 @@ class BlockchainAdapterFactoryService {
23
23
  static async createFactory(rpcList, httpClient, tonParams, createLogger) {
24
24
  // @TODO Add default logger
25
25
  const loggerFn = createLogger || undefined;
26
- const resolvedHttpClient = httpClient ?? await Promise.resolve().then(() => require('axios'));
26
+ const resolvedHttpClient = httpClient ?? (await Promise.resolve().then(() => require('axios')));
27
27
  return new this(rpcList, createLogger, resolvedHttpClient, tonParams);
28
28
  }
29
29
  getAdapter(blockchain) {
@@ -35,8 +35,7 @@ class BlockchainAdapterFactoryService {
35
35
  return adapter;
36
36
  }
37
37
  createStorage() {
38
- const adapters = Object.entries(this.rpcList)
39
- .map(([blockchain, rpcs]) => {
38
+ const adapters = Object.entries(this.rpcList).map(([blockchain, rpcs]) => {
40
39
  const adapter = this.createAdapter(blockchain, rpcs || []);
41
40
  return [blockchain, adapter || null];
42
41
  if (adapter) {
@@ -47,10 +46,14 @@ class BlockchainAdapterFactoryService {
47
46
  return [blockchain, null];
48
47
  });
49
48
  const tonAdapter = this.createAdapter(core_1.BLOCKCHAIN_NAME.TON, []);
50
- adapters.push(tonAdapter ? [core_1.BLOCKCHAIN_NAME.TON, tonAdapter] : [core_1.BLOCKCHAIN_NAME.TON, null]);
49
+ adapters.push(tonAdapter
50
+ ? [core_1.BLOCKCHAIN_NAME.TON, tonAdapter]
51
+ : [core_1.BLOCKCHAIN_NAME.TON, null]);
51
52
  const activeAdapters = adapters.filter(([blockchain, adapter]) => {
52
53
  const adapterExists = Boolean(adapter);
53
- const message = adapterExists ? `Creating adapter for ${blockchain} blockchain` : `Failed to create adapter for ${blockchain} blockchain`;
54
+ const message = adapterExists
55
+ ? `Creating adapter for ${blockchain} blockchain`
56
+ : `Failed to create adapter for ${blockchain} blockchain`;
54
57
  this.logger?.customLog(message);
55
58
  return adapterExists;
56
59
  });
@@ -65,7 +68,7 @@ class BlockchainAdapterFactoryService {
65
68
  if (viem_blockchain_mapping_1.viemBlockchainMapping?.[blockchain]) {
66
69
  return new evm_adapter_1.EvmAdapter({
67
70
  blockchain: blockchain,
68
- rpcList: rpcs
71
+ rpcList: rpcs,
69
72
  }, this.createLogger?.(`EVM_ADAPTER_${blockchain}`));
70
73
  }
71
74
  }
@@ -76,11 +79,12 @@ class BlockchainAdapterFactoryService {
76
79
  return new solana_adapter_1.SolanaAdapter(rpcs, this.createLogger?.(`SOLANA_ADAPTER`));
77
80
  }
78
81
  }
79
- if (blockchain === core_1.BLOCKCHAIN_NAME.TON && this.httpClient && this.tonParams?.tonApiConfig && this.tonParams?.tonClientConfig) {
82
+ if (blockchain === core_1.BLOCKCHAIN_NAME.TON &&
83
+ this.httpClient &&
84
+ this.tonParams?.tonApiConfig &&
85
+ this.tonParams?.tonClientConfig) {
80
86
  return new ton_adapter_1.TonAdapter(this.httpClient, this.tonParams, this.createLogger?.(`TON_ADAPTER`));
81
87
  }
82
- else {
83
- }
84
88
  return null;
85
89
  }
86
90
  connectWallet(walletProvider) {
@@ -90,22 +94,25 @@ class BlockchainAdapterFactoryService {
90
94
  const chain = viem_blockchain_mapping_1.viemBlockchainMapping[blockchain];
91
95
  adapter.wallet = (0, viem_1.createWalletClient)({
92
96
  chain: chain,
93
- transport: (0, viem_1.custom)(provider)
97
+ transport: (0, viem_1.custom)(provider),
94
98
  });
95
99
  adapter.walletAddress = walletProvider[core_1.CHAIN_TYPE.EVM].address;
96
100
  });
97
101
  }
98
- if (walletProvider?.[core_1.CHAIN_TYPE.SOLANA]?.core && this.adapterStore?.[core_1.BLOCKCHAIN_NAME.SOLANA]) {
102
+ if (walletProvider?.[core_1.CHAIN_TYPE.SOLANA]?.core &&
103
+ this.adapterStore?.[core_1.BLOCKCHAIN_NAME.SOLANA]) {
99
104
  const store = this.adapterStore[core_1.BLOCKCHAIN_NAME.SOLANA];
100
105
  store.wallet = walletProvider[core_1.CHAIN_TYPE.SOLANA].core;
101
106
  store.walletAddress = walletProvider[core_1.CHAIN_TYPE.SOLANA].address;
102
107
  }
103
- if (walletProvider?.[core_1.CHAIN_TYPE.TRON]?.core && this.adapterStore?.[core_1.BLOCKCHAIN_NAME.TRON]) {
108
+ if (walletProvider?.[core_1.CHAIN_TYPE.TRON]?.core &&
109
+ this.adapterStore?.[core_1.BLOCKCHAIN_NAME.TRON]) {
104
110
  const store = this.adapterStore[core_1.BLOCKCHAIN_NAME.TRON];
105
111
  store.wallet = walletProvider[core_1.CHAIN_TYPE.TRON].core;
106
112
  store.walletAddress = walletProvider[core_1.CHAIN_TYPE.TRON].address;
107
113
  }
108
- if (walletProvider?.[core_1.CHAIN_TYPE.TON]?.core && this.adapterStore?.[core_1.BLOCKCHAIN_NAME.TON]) {
114
+ if (walletProvider?.[core_1.CHAIN_TYPE.TON]?.core &&
115
+ this.adapterStore?.[core_1.BLOCKCHAIN_NAME.TON]) {
109
116
  const store = this.adapterStore[core_1.BLOCKCHAIN_NAME.TON];
110
117
  store.wallet = walletProvider[core_1.CHAIN_TYPE.TON].core;
111
118
  store.walletAddress = walletProvider[core_1.CHAIN_TYPE.TON].address;
@@ -1,3 +1,3 @@
1
1
  import { ViemChain } from '../models/viem-chain-type';
2
- import { EvmBlockchainName } from "@cryptorubic/core";
2
+ import { EvmBlockchainName } from '@cryptorubic/core';
3
3
  export declare const viemConfig: Partial<Record<EvmBlockchainName, ViemChain>>;