@cryptorubic/web3 0.5.2-alpha-teleswap.4 → 0.5.2-id-1249.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.
- package/package.json +3 -3
- package/src/lib/adapter/adapters/bitcoin-adapter.d.ts +0 -3
- package/src/lib/adapter/adapters/bitcoin-adapter.js +2 -76
- package/src/lib/adapter/adapters/models/btc-wallet-provider.d.ts +2 -2
- package/src/lib/adapter/adapters/sui-adapter.d.ts +15 -0
- package/src/lib/adapter/adapters/sui-adapter.js +58 -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/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 +7 -0
- package/src/lib/utils/web3-types/sui-web3-pure.js +21 -0
- package/src/lib/adapter/adapters/models/bitcoin-user-address-info.d.ts +0 -53
- package/src/lib/adapter/adapters/models/bitcoin-user-address-info.js +0 -2
package/package.json
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cryptorubic/web3",
|
|
3
|
-
"version": "0.5.2-
|
|
3
|
+
"version": "0.5.2-id-1249.0",
|
|
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.5.2-id-1249.0",
|
|
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.5.2-id-1249.0",
|
|
15
15
|
"bitcoin-address-validation": "^2.2.3",
|
|
16
16
|
"axios": "0.27.2",
|
|
17
17
|
"crc-32": "^1.2.2",
|
|
@@ -7,11 +7,8 @@ export declare class BitcoinAdapter extends AbstractAdapter<BtcWallet, BtcWallet
|
|
|
7
7
|
private readonly httpClient;
|
|
8
8
|
constructor(httpClient: HttpClient, logger?: ICustomLogger);
|
|
9
9
|
getBalance(userAddress: string): Promise<BigNumber>;
|
|
10
|
-
getPublicKey(userAddress: string): Promise<string | null>;
|
|
11
10
|
callForTokensInfo(tokenAddresses: string[] | ReadonlyArray<string>): Promise<Token<BlockchainName>[]>;
|
|
12
11
|
read<T>(args: unknown): Promise<T>;
|
|
13
12
|
write(args: unknown): Promise<string>;
|
|
14
|
-
getPublicKeyFromWallet(): Promise<string>;
|
|
15
13
|
transfer(recipient: string, amount: string, fromAddress: string, memo?: string, options?: BasicTransactionOptions): Promise<string>;
|
|
16
|
-
sendPsbtTransaction(psbt: string, userAddress: string, inputIndexes: number[], options?: BasicTransactionOptions): Promise<string>;
|
|
17
14
|
}
|
|
@@ -14,32 +14,6 @@ class BitcoinAdapter extends abstract_adapter_1.AbstractAdapter {
|
|
|
14
14
|
const response = await this.httpClient.get(url);
|
|
15
15
|
return new bignumber_js_1.default(response.final_balance);
|
|
16
16
|
}
|
|
17
|
-
async getPublicKey(userAddress) {
|
|
18
|
-
try {
|
|
19
|
-
const url = `https://api.blockcypher.com/v1/btc/main/addrs/${userAddress}/full`;
|
|
20
|
-
const response = await this.httpClient.get(url);
|
|
21
|
-
const txs = response.txs;
|
|
22
|
-
let publicKey = null;
|
|
23
|
-
for (const txData of txs) {
|
|
24
|
-
const userInputData = txData.inputs.find((inputData) => {
|
|
25
|
-
const isInputFromUserAddress = inputData.addresses.includes(userAddress);
|
|
26
|
-
const publicKey = inputData.witness?.[1];
|
|
27
|
-
return isInputFromUserAddress && publicKey;
|
|
28
|
-
});
|
|
29
|
-
if (userInputData) {
|
|
30
|
-
publicKey = userInputData.witness[1];
|
|
31
|
-
break;
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
if (!publicKey) {
|
|
35
|
-
throw new Error();
|
|
36
|
-
}
|
|
37
|
-
return publicKey;
|
|
38
|
-
}
|
|
39
|
-
catch {
|
|
40
|
-
return null;
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
17
|
async callForTokensInfo(tokenAddresses) {
|
|
44
18
|
return [core_1.nativeTokensList[core_1.BLOCKCHAIN_NAME.BITCOIN]];
|
|
45
19
|
}
|
|
@@ -49,19 +23,6 @@ class BitcoinAdapter extends abstract_adapter_1.AbstractAdapter {
|
|
|
49
23
|
write(args) {
|
|
50
24
|
throw new Error('Not implemented');
|
|
51
25
|
}
|
|
52
|
-
async getPublicKeyFromWallet() {
|
|
53
|
-
const res = await this.wallet.request({
|
|
54
|
-
method: 'request_accounts_and_keys',
|
|
55
|
-
params: {
|
|
56
|
-
purposes: ['payment']
|
|
57
|
-
}
|
|
58
|
-
}, () => { });
|
|
59
|
-
if (res.error) {
|
|
60
|
-
console.error(res.error);
|
|
61
|
-
throw res.error;
|
|
62
|
-
}
|
|
63
|
-
return res.result[0].publicKey;
|
|
64
|
-
}
|
|
65
26
|
async transfer(recipient, amount, fromAddress, memo, options) {
|
|
66
27
|
const hashPromise = new Promise((resolve, reject) => {
|
|
67
28
|
this.wallet.request({
|
|
@@ -83,9 +44,8 @@ class BitcoinAdapter extends abstract_adapter_1.AbstractAdapter {
|
|
|
83
44
|
reject(error);
|
|
84
45
|
}
|
|
85
46
|
else {
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
resolve(hash);
|
|
47
|
+
options?.onTransactionHash?.(txHash);
|
|
48
|
+
resolve(txHash);
|
|
89
49
|
}
|
|
90
50
|
});
|
|
91
51
|
});
|
|
@@ -101,39 +61,5 @@ class BitcoinAdapter extends abstract_adapter_1.AbstractAdapter {
|
|
|
101
61
|
throw new Error('Failed to transfer funds');
|
|
102
62
|
}
|
|
103
63
|
}
|
|
104
|
-
async sendPsbtTransaction(psbt, userAddress, inputIndexes, options) {
|
|
105
|
-
const hashPromise = new Promise((resolve, reject) => {
|
|
106
|
-
this.wallet.request({
|
|
107
|
-
method: 'sign_psbt',
|
|
108
|
-
params: {
|
|
109
|
-
psbt,
|
|
110
|
-
signInputs: {
|
|
111
|
-
[userAddress]: inputIndexes
|
|
112
|
-
},
|
|
113
|
-
allowedSignHash: 1,
|
|
114
|
-
broadcast: true
|
|
115
|
-
}
|
|
116
|
-
}, (error, txHash) => {
|
|
117
|
-
if (error) {
|
|
118
|
-
reject(error);
|
|
119
|
-
}
|
|
120
|
-
else {
|
|
121
|
-
const txData = txHash;
|
|
122
|
-
options?.onTransactionHash?.(txData.result.txId);
|
|
123
|
-
resolve(txData.result.txId);
|
|
124
|
-
}
|
|
125
|
-
});
|
|
126
|
-
});
|
|
127
|
-
try {
|
|
128
|
-
const hash = await hashPromise;
|
|
129
|
-
if (typeof hash === 'string') {
|
|
130
|
-
return hash;
|
|
131
|
-
}
|
|
132
|
-
throw new Error();
|
|
133
|
-
}
|
|
134
|
-
catch {
|
|
135
|
-
throw new Error('Failed to sign psbt transaction');
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
64
|
}
|
|
139
65
|
exports.BitcoinAdapter = BitcoinAdapter;
|
|
@@ -2,8 +2,8 @@ export interface BtcWallet {
|
|
|
2
2
|
on: (event: string, callback: (...args: unknown[]) => void) => unknown;
|
|
3
3
|
request<T>(args: {
|
|
4
4
|
method: string;
|
|
5
|
-
params: unknown[]
|
|
6
|
-
}, fn: (error: Error, txHash: string
|
|
5
|
+
params: unknown[];
|
|
6
|
+
}, fn: (error: Error, txHash: string) => unknown): Promise<{
|
|
7
7
|
error: null | Error;
|
|
8
8
|
result: T;
|
|
9
9
|
}>;
|
|
@@ -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,58 @@
|
|
|
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, metaIndex) => {
|
|
36
|
+
if (metadata) {
|
|
37
|
+
if (!metadata) {
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
const token = new core_1.Token({
|
|
41
|
+
decimals: metadata.decimals,
|
|
42
|
+
symbol: metadata.symbol,
|
|
43
|
+
name: metadata.name,
|
|
44
|
+
blockchain: core_1.BLOCKCHAIN_NAME.SUI,
|
|
45
|
+
address: filteredTokenAddresses[metaIndex]
|
|
46
|
+
});
|
|
47
|
+
return token;
|
|
48
|
+
}
|
|
49
|
+
return null;
|
|
50
|
+
});
|
|
51
|
+
if (nativeTokenIndex === -1) {
|
|
52
|
+
return tokens;
|
|
53
|
+
}
|
|
54
|
+
tokens.splice(nativeTokenIndex, 0, nativeToken);
|
|
55
|
+
return tokens;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
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 {};
|
|
@@ -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,7 @@
|
|
|
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
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
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;
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
export interface BitcoinTxInput {
|
|
2
|
-
prev_hash: string;
|
|
3
|
-
output_index: number;
|
|
4
|
-
output_value: number;
|
|
5
|
-
sequence: number;
|
|
6
|
-
addresses: string[];
|
|
7
|
-
script_type: string;
|
|
8
|
-
age?: number;
|
|
9
|
-
witness: string[];
|
|
10
|
-
}
|
|
11
|
-
export interface BitcoinTxOutput {
|
|
12
|
-
value: number;
|
|
13
|
-
script: string;
|
|
14
|
-
addresses: string[];
|
|
15
|
-
script_type: string;
|
|
16
|
-
spent_by?: string;
|
|
17
|
-
}
|
|
18
|
-
export interface BitcoinTxInfo {
|
|
19
|
-
block_hash?: string;
|
|
20
|
-
block_height: number;
|
|
21
|
-
block_index: number;
|
|
22
|
-
hash: string;
|
|
23
|
-
addresses: string[];
|
|
24
|
-
total: number;
|
|
25
|
-
fees: number;
|
|
26
|
-
size: number;
|
|
27
|
-
vsize: number;
|
|
28
|
-
preference: string;
|
|
29
|
-
relayed_by: string;
|
|
30
|
-
confirmed?: string;
|
|
31
|
-
received: string;
|
|
32
|
-
ver: number;
|
|
33
|
-
double_spend: boolean;
|
|
34
|
-
vin_sz: number;
|
|
35
|
-
vout_sz: number;
|
|
36
|
-
confirmations?: number;
|
|
37
|
-
confidence?: number;
|
|
38
|
-
inputs: BitcoinTxInput[];
|
|
39
|
-
outputs: BitcoinTxOutput[];
|
|
40
|
-
opt_in_rbf?: boolean;
|
|
41
|
-
}
|
|
42
|
-
export interface BitcoinUserAddressInfo {
|
|
43
|
-
address: string;
|
|
44
|
-
total_received: number;
|
|
45
|
-
total_sent: number;
|
|
46
|
-
balance: number;
|
|
47
|
-
unconfirmed_balance: number;
|
|
48
|
-
final_balance: number;
|
|
49
|
-
n_tx: number;
|
|
50
|
-
unconfirmed_n_tx: number;
|
|
51
|
-
final_n_tx: number;
|
|
52
|
-
txs: BitcoinTxInfo[];
|
|
53
|
-
}
|