@cryptorubic/web3 0.5.2 → 0.6.1

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/package.json CHANGED
@@ -1,17 +1,17 @@
1
1
  {
2
2
  "name": "@cryptorubic/web3",
3
- "version": "0.5.2",
3
+ "version": "0.6.1",
4
4
  "dependencies": {
5
5
  "tslib": "^2.3.0",
6
6
  "bignumber.js": "9.1.2",
7
- "@cryptorubic/core": "0.5.2",
7
+ "@cryptorubic/core": "0.6.1",
8
8
  "viem": "^2.19.1",
9
9
  "web3-utils": "^4.3.1",
10
10
  "@ton/ton": "^15.1.0",
11
11
  "@solana/web3.js": "1.95.3",
12
12
  "@solflare-wallet/utl-sdk": "^1.4.0",
13
13
  "@ethersproject/bignumber": "^5.7.0",
14
- "@cryptorubic/tron-types": "0.5.2",
14
+ "@cryptorubic/tron-types": "0.6.1",
15
15
  "bitcoin-address-validation": "^2.2.3",
16
16
  "axios": "0.27.2",
17
17
  "crc-32": "^1.2.2",
@@ -16,7 +16,7 @@ class TonApiService {
16
16
  const res = await this.httpClient.get(`${this.tonApiUrl}/v2/address/${walletAddress}/parse`, {
17
17
  headers: {
18
18
  apiKey: this.apiKey,
19
- referer: 'https://api.rubic.exchange'
19
+ referer: 'app.rubic.exchange'
20
20
  }
21
21
  });
22
22
  if ('error' in res) {
@@ -32,7 +32,7 @@ class TonApiService {
32
32
  const res = await this.httpClient.get(`${this.tonApiUrl}/v2/wallet/${walletAddress}/seqno`, {
33
33
  headers: {
34
34
  apiKey: this.apiKey,
35
- referer: 'https://api.rubic.exchange'
35
+ referer: 'app.rubic.exchange'
36
36
  }
37
37
  });
38
38
  if ('error' in res) {
@@ -44,7 +44,7 @@ class TonApiService {
44
44
  const res = await this.httpClient.get(`${this.tonApiUrl}/v2/blockchain/transactions/${txHash}`, {
45
45
  headers: {
46
46
  apiKey: this.apiKey,
47
- referer: 'https://api.rubic.exchange'
47
+ referer: 'app.rubic.exchange'
48
48
  }
49
49
  });
50
50
  if ('error' in res) {
@@ -56,7 +56,7 @@ class TonApiService {
56
56
  const res = await this.httpClient.get(`${this.tonApiUrl}/v2/blockchain/messages/${txHash}/transaction`, {
57
57
  headers: {
58
58
  apiKey: this.apiKey,
59
- referer: 'https://api.rubic.exchange'
59
+ referer: 'app.rubic.exchange'
60
60
  }
61
61
  });
62
62
  if ('error' in res) {
@@ -69,7 +69,7 @@ class TonApiService {
69
69
  const res = await this.httpClient.get(`${this.tonApiUrl}/v2/events/${txHash}`, {
70
70
  headers: {
71
71
  apiKey: this.apiKey,
72
- referer: 'https://api.rubic.exchange'
72
+ referer: 'app.rubic.exchange'
73
73
  }
74
74
  });
75
75
  if ('error' in res) {
@@ -85,7 +85,7 @@ class TonApiService {
85
85
  const res = await this.httpClient.get(`${this.tonApiUrl}/v2/status`, {
86
86
  headers: {
87
87
  apiKey: this.apiKey,
88
- referer: 'https://api.rubic.exchange'
88
+ referer: 'app.rubic.exchange'
89
89
  }
90
90
  });
91
91
  if ('error' in res || !res.rest_online) {
@@ -118,7 +118,7 @@ class TonApiService {
118
118
  const res = await this.httpClient.get(`${this.tonApiUrl}/v2/blockchain/accounts/${address}/methods/${methodName}${argsParam}`, {
119
119
  headers: {
120
120
  apiKey: this.apiKey,
121
- referer: 'https://api.rubic.exchange'
121
+ referer: 'app.rubic.exchange'
122
122
  }
123
123
  });
124
124
  if ('error' in res) {
@@ -127,16 +127,21 @@ class TonApiService {
127
127
  return res.decoded;
128
128
  }
129
129
  async fetchTokenInfo(tokenAddress) {
130
- const res = await this.httpClient.get(`${this.tonApiUrl}/v2/jettons/${tokenAddress}`, {
131
- headers: {
132
- apiKey: this.apiKey,
133
- referer: 'https://api.rubic.exchange'
130
+ try {
131
+ const res = await this.httpClient.get(`${this.tonApiUrl}/v2/jettons/${tokenAddress}`, {
132
+ headers: {
133
+ apiKey: this.apiKey,
134
+ referer: 'app.rubic.exchange'
135
+ }
136
+ });
137
+ if ('error' in res) {
138
+ throw new Error(`[TonApiService] Error in fetchTokenInfo - ${res.error}`);
134
139
  }
135
- });
136
- if ('error' in res) {
137
- throw new Error(`[TonApiService] Error in fetchTokenInfo - ${res.error}`);
140
+ return res.metadata;
141
+ }
142
+ catch (err) {
143
+ throw new Error(`[TonApiService] Error in fetchTokenInfo - ${err}`);
138
144
  }
139
- return res.metadata;
140
145
  }
141
146
  /**
142
147
  *
@@ -147,7 +152,7 @@ class TonApiService {
147
152
  const res = await this.httpClient.get(`${this.tonApiUrl}/v2/accounts/${walletAddress}/jettons/${tokenAddress}`, {
148
153
  headers: {
149
154
  apiKey: this.apiKey,
150
- referer: 'https://api.rubic.exchange'
155
+ referer: 'app.rubic.exchange'
151
156
  }
152
157
  });
153
158
  if ('error' in res) {
@@ -159,7 +164,7 @@ class TonApiService {
159
164
  const res = await this.httpClient.get(`${this.tonApiUrl}/v2/accounts/${walletAddress}/jettons`, {
160
165
  headers: {
161
166
  apiKey: this.apiKey,
162
- referer: 'https://api.rubic.exchange'
167
+ referer: 'app.rubic.exchange'
163
168
  }
164
169
  });
165
170
  if ('error' in res) {
@@ -174,7 +179,7 @@ class TonApiService {
174
179
  const res = await this.httpClient.get(`${this.tonApiUrl}/v2/accounts/${walletAddress}`, {
175
180
  headers: {
176
181
  apiKey: this.apiKey,
177
- referer: 'https://api.rubic.exchange'
182
+ referer: 'app.rubic.exchange'
178
183
  }
179
184
  });
180
185
  if ('error' in res) {
@@ -2,12 +2,11 @@ import { SolanaAdapter } from './adapters/solana-adapter';
2
2
  import { TronAdapter } from './adapters/tron-adapter';
3
3
  import { AbstractAdapter } from './adapters/abstract-adapter';
4
4
  import { WalletProvider } from './constants/models/wallet-provider';
5
- import { BlockchainName, EvmBlockchainName, SolanaBlockchainName, TronBlockchainName, ICustomLogger, HttpClient, TonBlockchainName, BitcoinBlockchainName, SuiBlockchainName } from '@cryptorubic/core';
5
+ import { BlockchainName, EvmBlockchainName, SolanaBlockchainName, TronBlockchainName, ICustomLogger, HttpClient, TonBlockchainName, BitcoinBlockchainName } from '@cryptorubic/core';
6
6
  import { TonAdapter } from './adapters/ton-adapter';
7
7
  import { TonAdapterConfig } from './adapters/models/ton-adapter-config';
8
8
  import { EvmAdapter } from './adapters/evm-adapter';
9
9
  import { BitcoinAdapter } from './adapters/bitcoin-adapter';
10
- import { SuiAdapter } from './adapters/sui-adapter';
11
10
  export declare class BlockchainAdapterFactoryService {
12
11
  private readonly rpcList;
13
12
  private readonly createLogger?;
@@ -22,7 +21,6 @@ export declare class BlockchainAdapterFactoryService {
22
21
  getAdapter(blockchain: TronBlockchainName): TronAdapter;
23
22
  getAdapter(blockchain: TonBlockchainName): TonAdapter;
24
23
  getAdapter(blockchain: BitcoinBlockchainName): BitcoinAdapter;
25
- getAdapter(blockchain: SuiBlockchainName): SuiAdapter;
26
24
  private createStorage;
27
25
  private createAdapter;
28
26
  connectWallet(walletProvider: WalletProvider): void;
@@ -9,7 +9,6 @@ const core_1 = require("@cryptorubic/core");
9
9
  const ton_adapter_1 = require("./adapters/ton-adapter");
10
10
  const evm_adapter_1 = require("./adapters/evm-adapter");
11
11
  const bitcoin_adapter_1 = require("./adapters/bitcoin-adapter");
12
- const sui_adapter_1 = require("./adapters/sui-adapter");
13
12
  class BlockchainAdapterFactoryService {
14
13
  constructor(rpcList, createLogger, httpClient, tonParams) {
15
14
  this.rpcList = rpcList;
@@ -78,9 +77,6 @@ class BlockchainAdapterFactoryService {
78
77
  if (blockchainType === core_1.CHAIN_TYPE.TRON) {
79
78
  return new tron_adapter_1.TronAdapter(rpcs, this.createLogger?.(`TRON_ADAPTER`));
80
79
  }
81
- if (blockchainType === core_1.CHAIN_TYPE.SUI) {
82
- return new sui_adapter_1.SuiAdapter(rpcs, this.createLogger?.(`SUI_ADAPTER`));
83
- }
84
80
  if (blockchainType === core_1.CHAIN_TYPE.SOLANA) {
85
81
  return new solana_adapter_1.SolanaAdapter(rpcs, this.createLogger?.(`SOLANA_ADAPTER`));
86
82
  }
@@ -120,12 +116,6 @@ class BlockchainAdapterFactoryService {
120
116
  store.wallet = walletProvider[core_1.CHAIN_TYPE.TRON].core;
121
117
  store.walletAddress = walletProvider[core_1.CHAIN_TYPE.TRON].address;
122
118
  }
123
- if (walletProvider?.[core_1.CHAIN_TYPE.SUI]?.core &&
124
- this.adapterStore?.[core_1.BLOCKCHAIN_NAME.SUI]) {
125
- const store = this.adapterStore[core_1.BLOCKCHAIN_NAME.SUI];
126
- store.wallet = walletProvider[core_1.CHAIN_TYPE.SUI].core;
127
- store.walletAddress = walletProvider[core_1.CHAIN_TYPE.SUI].address;
128
- }
129
119
  if (walletProvider?.[core_1.CHAIN_TYPE.TON]?.core &&
130
120
  this.adapterStore?.[core_1.BLOCKCHAIN_NAME.TON]) {
131
121
  const store = this.adapterStore[core_1.BLOCKCHAIN_NAME.TON];
@@ -2,7 +2,6 @@ import { CHAIN_TYPE } from '@cryptorubic/core';
2
2
  import { SolanaWeb3 } from './solana-web3';
3
3
  import { TronWeb } from 'tronweb';
4
4
  import { BtcWallet } from '../../adapters/models/btc-wallet-provider';
5
- import { WalletAdapter } from '@suiet/wallet-sdk';
6
5
  export interface WalletProviderCore<T = any> {
7
6
  /**
8
7
  * Core provider.
@@ -20,7 +19,6 @@ export type TronWalletProviderCore = WalletProviderCore<typeof TronWeb>;
20
19
  export type SolanaWalletProviderCore = WalletProviderCore<SolanaWeb3>;
21
20
  export type TonWaleltProviderCore = WalletProviderCore<unknown>;
22
21
  export type BitcoinWalletProviderCore = WalletProviderCore<BtcWallet>;
23
- export type SuiWalletProviderCore = WalletProviderCore<WalletAdapter>;
24
22
  /**
25
23
  * Stores wallet core and information about current user, used to make `send` transactions.
26
24
  */
@@ -30,7 +28,6 @@ interface IWalletProvider {
30
28
  readonly [CHAIN_TYPE.SOLANA]?: SolanaWalletProviderCore;
31
29
  readonly [CHAIN_TYPE.TON]?: TonWaleltProviderCore;
32
30
  readonly [CHAIN_TYPE.BITCOIN]?: BitcoinWalletProviderCore;
33
- readonly [CHAIN_TYPE.SUI]?: SuiWalletProviderCore;
34
31
  }
35
32
  export type WalletProvider = Partial<IWalletProvider>;
36
33
  export {};
@@ -23,7 +23,6 @@ export declare const changeNowEvmSupportedBlockchain: {
23
23
  export type ChangenowEvmCrossChainSupportedBlockchain = keyof typeof changeNowEvmSupportedBlockchain;
24
24
  export declare const changenowApiBlockchain: {
25
25
  THETA: string;
26
- SUI: string;
27
26
  FLARE: string;
28
27
  FILECOIN: string;
29
28
  EOS: string;
@@ -29,7 +29,6 @@ exports.changenowApiBlockchain = {
29
29
  ...exports.changeNowEvmSupportedBlockchain,
30
30
  // Non evm
31
31
  [core_1.BLOCKCHAIN_NAME.THETA]: 'theta',
32
- [core_1.BLOCKCHAIN_NAME.SUI]: 'sui',
33
32
  [core_1.BLOCKCHAIN_NAME.FLARE]: 'flr',
34
33
  [core_1.BLOCKCHAIN_NAME.FILECOIN]: 'fil',
35
34
  [core_1.BLOCKCHAIN_NAME.EOS]: 'eos',
@@ -10,10 +10,8 @@ const icp_web3_pure_1 = require("../web3-types/icp-web3-pure");
10
10
  const solana_web3_pure_1 = require("../web3-types/solana-web3-pure");
11
11
  const common_web3_pure_1 = require("../web3-types/common-web3-pure");
12
12
  const ton_web3_pure_1 = require("../web3-types/ton-web3-pure");
13
- const sui_web3_pure_1 = require("../web3-types/sui-web3-pure");
14
13
  exports.web3PureStore = {
15
14
  [core_1.CHAIN_TYPE.EVM]: new evm_web3_pure_1.EvmWeb3Pure(),
16
- [core_1.CHAIN_TYPE.SUI]: new sui_web3_pure_1.SuiWeb3Pure(),
17
15
  [core_1.CHAIN_TYPE.TRON]: new tron_web3_pure_1.TronWeb3Pure(),
18
16
  [core_1.CHAIN_TYPE.BITCOIN]: new bitcoin_web3_pure_1.BitcoinWeb3Pure(),
19
17
  [core_1.CHAIN_TYPE.ICP]: new icp_web3_pure_1.IcpWeb3Pure(),
@@ -7,7 +7,7 @@ class SolanaWeb3Pure extends common_web3_pure_1.CommonWeb3Pure {
7
7
  constructor() {
8
8
  super({
9
9
  cnApiKey: changenow_api_blockchain_1.changenowApiBlockchain.SOLANA,
10
- regex: /^0[xX][a-fA-F0-9]{64}$/
10
+ regex: /^[1-9A-HJ-NP-Za-km-z]{32,44}$/
11
11
  });
12
12
  this.nativeTokenAddress = 'So11111111111111111111111111111111111111111';
13
13
  }
@@ -1,15 +0,0 @@
1
- import { Abi, MulticallResponse, MulticallParameters } from 'viem';
2
- import { AbstractAdapter } from './abstract-adapter';
3
- import { Connection } from '@solana/web3.js';
4
- import { ICustomLogger, SuiBlockchainName, Token } from '@cryptorubic/core';
5
- import { EvmTransactionConfig } from '../../utils/models/evm-transaction-config';
6
- import { SuiClient } from '@mysten/sui/client';
7
- export declare class SuiAdapter extends AbstractAdapter<SuiClient, Connection, SuiBlockchainName> {
8
- constructor(rpcList: string[], logger?: ICustomLogger);
9
- read<T>(_address: string, _abi: Abi, _method: string, _methodArgs?: unknown[]): Promise<T>;
10
- write<T>(_address: string, _abi: Abi, _method: string, _methodArgs?: unknown[]): Promise<T>;
11
- multicallByContract<T>(_contracts: MulticallParameters, _allowErrors?: boolean): Promise<MulticallResponse<T>[]>;
12
- multicallByAddress<T>(_address: string, _abi: Abi, _method: string, _methodArgs?: unknown[][], _allowErrors?: boolean): Promise<MulticallResponse<T>[]>;
13
- simulateTransaction(_config: EvmTransactionConfig, _from: string): Promise<void>;
14
- callForTokensInfo(tokenAddresses: string[] | ReadonlyArray<string>): Promise<Token<SuiBlockchainName>[]>;
15
- }
@@ -1,63 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SuiAdapter = void 0;
4
- const abstract_adapter_1 = require("./abstract-adapter");
5
- const core_1 = require("@cryptorubic/core");
6
- const web3_pure_1 = require("../../utils/web3-pure");
7
- const client_1 = require("@mysten/sui/client");
8
- class SuiAdapter extends abstract_adapter_1.AbstractAdapter {
9
- constructor(rpcList, logger) {
10
- super(core_1.BLOCKCHAIN_NAME.SUI, logger);
11
- this.public = new client_1.SuiClient({ url: rpcList[0] });
12
- }
13
- async read(_address, _abi, _method, _methodArgs = []) {
14
- throw new Error('Method read is not supported');
15
- }
16
- async write(_address, _abi, _method, _methodArgs = []) {
17
- throw new Error('Method write is not supported');
18
- }
19
- async multicallByContract(_contracts, _allowErrors = true) {
20
- throw new Error('Method multicall is not supported');
21
- }
22
- async multicallByAddress(_address, _abi, _method, _methodArgs = [], _allowErrors = true) {
23
- throw new Error('Method multicall is not supported');
24
- }
25
- async simulateTransaction(_config, _from) { }
26
- async callForTokensInfo(tokenAddresses) {
27
- const nativeToken = core_1.nativeTokensList[core_1.BLOCKCHAIN_NAME.SUI];
28
- const nativeTokenIndex = tokenAddresses.findIndex((address) => web3_pure_1.Web3Pure.isNativeAddress(core_1.BLOCKCHAIN_NAME.SUI, address));
29
- const filteredTokenAddresses = tokenAddresses.filter((_, index) => index !== nativeTokenIndex);
30
- // only native token in array
31
- if (!filteredTokenAddresses.length && nativeTokenIndex !== -1) {
32
- return [nativeToken];
33
- }
34
- const allTokensMeta = await Promise.all(filteredTokenAddresses.map((coinType) => this.public.getCoinMetadata({ coinType })));
35
- const tokens = allTokensMeta.map((metadata) => {
36
- if (metadata) {
37
- const tokenID = metadata.id?.toLowerCase();
38
- if (!tokenID) {
39
- return null;
40
- }
41
- const tokenAddress = tokenAddresses.find((address) => address.toLowerCase().includes(tokenID))?.[0];
42
- if (!tokenAddress) {
43
- return null;
44
- }
45
- const token = new core_1.Token({
46
- decimals: metadata.decimals,
47
- symbol: metadata.symbol,
48
- name: metadata.name,
49
- blockchain: core_1.BLOCKCHAIN_NAME.SUI,
50
- address: tokenAddress
51
- });
52
- return token;
53
- }
54
- return null;
55
- });
56
- if (nativeTokenIndex === -1) {
57
- return tokens;
58
- }
59
- tokens.splice(nativeTokenIndex, 0, nativeToken);
60
- return tokens;
61
- }
62
- }
63
- exports.SuiAdapter = SuiAdapter;
@@ -1,7 +0,0 @@
1
- import { CommonWeb3Pure } from './common-web3-pure';
2
- export declare class SuiWeb3Pure extends CommonWeb3Pure {
3
- readonly nativeTokenAddress = "0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI";
4
- readonly emptyAddress = "0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI";
5
- static compareAddress(addressA: string, addressB: string): boolean;
6
- constructor();
7
- }
@@ -1,21 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SuiWeb3Pure = void 0;
4
- const common_web3_pure_1 = require("./common-web3-pure");
5
- const core_1 = require("@cryptorubic/core");
6
- const bignumber_js_1 = require("bignumber.js");
7
- class SuiWeb3Pure extends common_web3_pure_1.CommonWeb3Pure {
8
- static compareAddress(addressA, addressB) {
9
- const pureAddressA = addressA.split(':')[0];
10
- const pureAddressB = addressB.split(':')[0];
11
- return (0, core_1.compareAddresses)(new bignumber_js_1.default(pureAddressA).toFixed(), new bignumber_js_1.default(pureAddressB).toFixed());
12
- }
13
- constructor() {
14
- super({
15
- regex: /^0[xX][a-fA-F0-9]{64}::[a-z0-9]*::[A-Z0-9]*$/
16
- });
17
- this.nativeTokenAddress = '0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI';
18
- this.emptyAddress = '0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI';
19
- }
20
- }
21
- exports.SuiWeb3Pure = SuiWeb3Pure;