@cryptorubic/web3 0.5.1-alpha-fraxtal.1 → 0.5.1-id-1249.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.
- package/package.json +3 -3
- package/src/lib/adapter/adapters/sui-adapter.d.ts +15 -0
- package/src/lib/adapter/adapters/sui-adapter.js +55 -0
- package/src/lib/adapter/blockchain-adapter-factory.service.d.ts +3 -1
- package/src/lib/adapter/blockchain-adapter-factory.service.js +10 -0
- package/src/lib/adapter/constants/models/wallet-provider.d.ts +3 -0
- package/src/lib/adapter/constants/viem-blockchain-mapping.js +1 -2
- package/src/lib/utils/constants/changenow-api-blockchain.d.ts +1 -0
- package/src/lib/utils/constants/changenow-api-blockchain.js +1 -0
- package/src/lib/utils/constants/web3-pure-store.js +2 -0
- package/src/lib/utils/web3-types/solana-web3-pure.js +1 -1
- package/src/lib/utils/web3-types/sui-web3-pure.d.ts +6 -0
- package/src/lib/utils/web3-types/sui-web3-pure.js +14 -0
package/package.json
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cryptorubic/web3",
|
|
3
|
-
"version": "0.5.1-
|
|
3
|
+
"version": "0.5.1-id-1249.2",
|
|
4
4
|
"dependencies": {
|
|
5
5
|
"tslib": "^2.3.0",
|
|
6
6
|
"bignumber.js": "9.1.2",
|
|
7
|
-
"@cryptorubic/core": "0.5.1-
|
|
7
|
+
"@cryptorubic/core": "0.5.1-id-1249.2",
|
|
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.1-
|
|
14
|
+
"@cryptorubic/tron-types": "0.5.1-id-1249.2",
|
|
15
15
|
"bitcoin-address-validation": "^2.2.3",
|
|
16
16
|
"axios": "0.27.2",
|
|
17
17
|
"crc-32": "^1.2.2",
|
|
@@ -0,0 +1,15 @@
|
|
|
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
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
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 token = new core_1.Token({
|
|
38
|
+
decimals: metadata.decimals,
|
|
39
|
+
symbol: metadata.symbol,
|
|
40
|
+
name: metadata.name,
|
|
41
|
+
blockchain: core_1.BLOCKCHAIN_NAME.SUI,
|
|
42
|
+
address: metadata.id
|
|
43
|
+
});
|
|
44
|
+
return token;
|
|
45
|
+
}
|
|
46
|
+
return null;
|
|
47
|
+
});
|
|
48
|
+
if (nativeTokenIndex === -1) {
|
|
49
|
+
return tokens;
|
|
50
|
+
}
|
|
51
|
+
tokens.splice(nativeTokenIndex, 0, nativeToken);
|
|
52
|
+
return tokens;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
exports.SuiAdapter = SuiAdapter;
|
|
@@ -2,11 +2,12 @@ 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 } from '@cryptorubic/core';
|
|
5
|
+
import { BlockchainName, EvmBlockchainName, SolanaBlockchainName, TronBlockchainName, ICustomLogger, HttpClient, TonBlockchainName, BitcoinBlockchainName, SuiBlockchainName } 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';
|
|
10
11
|
export declare class BlockchainAdapterFactoryService {
|
|
11
12
|
private readonly rpcList;
|
|
12
13
|
private readonly createLogger?;
|
|
@@ -21,6 +22,7 @@ export declare class BlockchainAdapterFactoryService {
|
|
|
21
22
|
getAdapter(blockchain: TronBlockchainName): TronAdapter;
|
|
22
23
|
getAdapter(blockchain: TonBlockchainName): TonAdapter;
|
|
23
24
|
getAdapter(blockchain: BitcoinBlockchainName): BitcoinAdapter;
|
|
25
|
+
getAdapter(blockchain: SuiBlockchainName): SuiAdapter;
|
|
24
26
|
private createStorage;
|
|
25
27
|
private createAdapter;
|
|
26
28
|
connectWallet(walletProvider: WalletProvider): void;
|
|
@@ -9,6 +9,7 @@ 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");
|
|
12
13
|
class BlockchainAdapterFactoryService {
|
|
13
14
|
constructor(rpcList, createLogger, httpClient, tonParams) {
|
|
14
15
|
this.rpcList = rpcList;
|
|
@@ -77,6 +78,9 @@ class BlockchainAdapterFactoryService {
|
|
|
77
78
|
if (blockchainType === core_1.CHAIN_TYPE.TRON) {
|
|
78
79
|
return new tron_adapter_1.TronAdapter(rpcs, this.createLogger?.(`TRON_ADAPTER`));
|
|
79
80
|
}
|
|
81
|
+
if (blockchainType === core_1.CHAIN_TYPE.SUI) {
|
|
82
|
+
return new sui_adapter_1.SuiAdapter(rpcs, this.createLogger?.(`SUI_ADAPTER`));
|
|
83
|
+
}
|
|
80
84
|
if (blockchainType === core_1.CHAIN_TYPE.SOLANA) {
|
|
81
85
|
return new solana_adapter_1.SolanaAdapter(rpcs, this.createLogger?.(`SOLANA_ADAPTER`));
|
|
82
86
|
}
|
|
@@ -116,6 +120,12 @@ class BlockchainAdapterFactoryService {
|
|
|
116
120
|
store.wallet = walletProvider[core_1.CHAIN_TYPE.TRON].core;
|
|
117
121
|
store.walletAddress = walletProvider[core_1.CHAIN_TYPE.TRON].address;
|
|
118
122
|
}
|
|
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
|
+
}
|
|
119
129
|
if (walletProvider?.[core_1.CHAIN_TYPE.TON]?.core &&
|
|
120
130
|
this.adapterStore?.[core_1.BLOCKCHAIN_NAME.TON]) {
|
|
121
131
|
const store = this.adapterStore[core_1.BLOCKCHAIN_NAME.TON];
|
|
@@ -2,6 +2,7 @@ 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';
|
|
5
6
|
export interface WalletProviderCore<T = any> {
|
|
6
7
|
/**
|
|
7
8
|
* Core provider.
|
|
@@ -19,6 +20,7 @@ export type TronWalletProviderCore = WalletProviderCore<typeof TronWeb>;
|
|
|
19
20
|
export type SolanaWalletProviderCore = WalletProviderCore<SolanaWeb3>;
|
|
20
21
|
export type TonWaleltProviderCore = WalletProviderCore<unknown>;
|
|
21
22
|
export type BitcoinWalletProviderCore = WalletProviderCore<BtcWallet>;
|
|
23
|
+
export type SuiWalletProviderCore = WalletProviderCore<WalletAdapter>;
|
|
22
24
|
/**
|
|
23
25
|
* Stores wallet core and information about current user, used to make `send` transactions.
|
|
24
26
|
*/
|
|
@@ -28,6 +30,7 @@ interface IWalletProvider {
|
|
|
28
30
|
readonly [CHAIN_TYPE.SOLANA]?: SolanaWalletProviderCore;
|
|
29
31
|
readonly [CHAIN_TYPE.TON]?: TonWaleltProviderCore;
|
|
30
32
|
readonly [CHAIN_TYPE.BITCOIN]?: BitcoinWalletProviderCore;
|
|
33
|
+
readonly [CHAIN_TYPE.SUI]?: SuiWalletProviderCore;
|
|
31
34
|
}
|
|
32
35
|
export type WalletProvider = Partial<IWalletProvider>;
|
|
33
36
|
export {};
|
|
@@ -70,6 +70,5 @@ exports.viemBlockchainMapping = {
|
|
|
70
70
|
[core_1.BLOCKCHAIN_NAME.BAHAMUT]: chain_configs_1.viemConfig[core_1.BLOCKCHAIN_NAME.BAHAMUT],
|
|
71
71
|
[core_1.BLOCKCHAIN_NAME.BITLAYER]: chain_configs_1.viemConfig[core_1.BLOCKCHAIN_NAME.BITLAYER],
|
|
72
72
|
[core_1.BLOCKCHAIN_NAME.SEI]: chains_1.sei,
|
|
73
|
-
[core_1.BLOCKCHAIN_NAME.GRAVITY]: chains_1.gravity
|
|
74
|
-
[core_1.BLOCKCHAIN_NAME.FRAXTAL]: chains_1.fraxtal
|
|
73
|
+
[core_1.BLOCKCHAIN_NAME.GRAVITY]: chains_1.gravity
|
|
75
74
|
};
|
|
@@ -23,6 +23,7 @@ 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;
|
|
26
27
|
FLARE: string;
|
|
27
28
|
FILECOIN: string;
|
|
28
29
|
EOS: string;
|
|
@@ -29,6 +29,7 @@ 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',
|
|
32
33
|
[core_1.BLOCKCHAIN_NAME.FLARE]: 'flr',
|
|
33
34
|
[core_1.BLOCKCHAIN_NAME.FILECOIN]: 'fil',
|
|
34
35
|
[core_1.BLOCKCHAIN_NAME.EOS]: 'eos',
|
|
@@ -10,8 +10,10 @@ 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");
|
|
13
14
|
exports.web3PureStore = {
|
|
14
15
|
[core_1.CHAIN_TYPE.EVM]: new evm_web3_pure_1.EvmWeb3Pure(),
|
|
16
|
+
[core_1.CHAIN_TYPE.SUI]: new sui_web3_pure_1.SuiWeb3Pure(),
|
|
15
17
|
[core_1.CHAIN_TYPE.TRON]: new tron_web3_pure_1.TronWeb3Pure(),
|
|
16
18
|
[core_1.CHAIN_TYPE.BITCOIN]: new bitcoin_web3_pure_1.BitcoinWeb3Pure(),
|
|
17
19
|
[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: /^[
|
|
10
|
+
regex: /^0[xX][a-fA-F0-9]{64}$/
|
|
11
11
|
});
|
|
12
12
|
this.nativeTokenAddress = 'So11111111111111111111111111111111111111111';
|
|
13
13
|
}
|
|
@@ -0,0 +1,6 @@
|
|
|
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
|
+
constructor();
|
|
6
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
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
|
+
class SuiWeb3Pure extends common_web3_pure_1.CommonWeb3Pure {
|
|
6
|
+
constructor() {
|
|
7
|
+
super({
|
|
8
|
+
regex: /^[1-9A-HJ-NP-Za-km-z]{32,44}$/
|
|
9
|
+
});
|
|
10
|
+
this.nativeTokenAddress = '0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI';
|
|
11
|
+
this.emptyAddress = '0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI';
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
exports.SuiWeb3Pure = SuiWeb3Pure;
|