@swapkit/helpers 1.0.0-rc.85 → 1.0.0-rc.87
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/dist/index.js +1040 -46
- package/dist/index.js.map +19 -14
- package/package.json +7 -9
- package/src/helpers/__tests__/asset.test.ts +1 -1
- package/src/helpers/__tests__/memo.test.ts +1 -1
- package/src/helpers/__tests__/others.test.ts +1 -1
- package/src/helpers/asset.ts +4 -4
- package/src/helpers/liquidity.ts +1 -2
- package/src/helpers/memo.ts +2 -1
- package/src/helpers/others.ts +1 -1
- package/src/helpers/validators.ts +1 -1
- package/src/index.ts +3 -1
- package/src/modules/__tests__/assetValue.test.ts +1 -1
- package/src/modules/assetValue.ts +4 -7
- package/src/modules/bigIntArithmetics.ts +1 -2
- package/src/modules/requestClient.ts +29 -0
- package/src/types/abis/erc20.ts +99 -0
- package/src/types/abis/tcEthVault.ts +496 -0
- package/src/types/chains.ts +219 -0
- package/src/types/commonTypes.ts +140 -0
- package/src/types/derivationPath.ts +56 -0
- package/src/types/index.ts +10 -0
- package/src/types/network.ts +43 -0
- package/src/types/sdk.ts +32 -0
- package/src/types/transactions.ts +71 -0
- package/src/types/wallet.ts +45 -0
- /package/src/{types.ts → types/tokens.ts} +0 -0
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
import { ExplorerUrl, RPCUrl } from "./network";
|
|
2
|
+
|
|
3
|
+
export enum Chain {
|
|
4
|
+
Arbitrum = "ARB",
|
|
5
|
+
Avalanche = "AVAX",
|
|
6
|
+
Binance = "BNB",
|
|
7
|
+
BinanceSmartChain = "BSC",
|
|
8
|
+
Bitcoin = "BTC",
|
|
9
|
+
BitcoinCash = "BCH",
|
|
10
|
+
Cosmos = "GAIA",
|
|
11
|
+
Dash = "DASH",
|
|
12
|
+
Dogecoin = "DOGE",
|
|
13
|
+
Ethereum = "ETH",
|
|
14
|
+
Kujira = "KUJI",
|
|
15
|
+
Litecoin = "LTC",
|
|
16
|
+
Maya = "MAYA",
|
|
17
|
+
Optimism = "OP",
|
|
18
|
+
Polkadot = "DOT",
|
|
19
|
+
Chainflip = "FLIP",
|
|
20
|
+
Polygon = "MATIC",
|
|
21
|
+
THORChain = "THOR",
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export enum ChainId {
|
|
25
|
+
Arbitrum = "42161",
|
|
26
|
+
ArbitrumHex = "0xa4b1",
|
|
27
|
+
Avalanche = "43114",
|
|
28
|
+
AvalancheHex = "0xa86a",
|
|
29
|
+
Binance = "Binance-Chain-Tigris",
|
|
30
|
+
BinanceSmartChain = "56",
|
|
31
|
+
BinanceSmartChainHex = "0x38",
|
|
32
|
+
Bitcoin = "bitcoin",
|
|
33
|
+
BitcoinCash = "bitcoincash",
|
|
34
|
+
Chainflip = "chainflip",
|
|
35
|
+
Cosmos = "cosmoshub-4",
|
|
36
|
+
Dash = "dash",
|
|
37
|
+
Dogecoin = "dogecoin",
|
|
38
|
+
Kujira = "kaiyo-1",
|
|
39
|
+
Ethereum = "1",
|
|
40
|
+
EthereumHex = "0x1",
|
|
41
|
+
Litecoin = "litecoin",
|
|
42
|
+
Maya = "mayachain-mainnet-v1",
|
|
43
|
+
MayaStagenet = "mayachain-stagenet-v1",
|
|
44
|
+
Optimism = "10",
|
|
45
|
+
OptimismHex = "0xa",
|
|
46
|
+
Polkadot = "polkadot",
|
|
47
|
+
Polygon = "137",
|
|
48
|
+
PolygonHex = "0x89",
|
|
49
|
+
THORChain = "thorchain-mainnet-v1",
|
|
50
|
+
THORChainStagenet = "thorchain-stagenet-v2",
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
export const ChainIdToChain: Record<ChainId, Chain> = {
|
|
54
|
+
[ChainId.ArbitrumHex]: Chain.Arbitrum,
|
|
55
|
+
[ChainId.Arbitrum]: Chain.Arbitrum,
|
|
56
|
+
[ChainId.AvalancheHex]: Chain.Avalanche,
|
|
57
|
+
[ChainId.Avalanche]: Chain.Avalanche,
|
|
58
|
+
[ChainId.BinanceSmartChainHex]: Chain.BinanceSmartChain,
|
|
59
|
+
[ChainId.BinanceSmartChain]: Chain.BinanceSmartChain,
|
|
60
|
+
[ChainId.Binance]: Chain.Binance,
|
|
61
|
+
[ChainId.BitcoinCash]: Chain.BitcoinCash,
|
|
62
|
+
[ChainId.Bitcoin]: Chain.Bitcoin,
|
|
63
|
+
[ChainId.Chainflip]: Chain.Chainflip,
|
|
64
|
+
[ChainId.Cosmos]: Chain.Cosmos,
|
|
65
|
+
[ChainId.Dash]: Chain.Dash,
|
|
66
|
+
[ChainId.Dogecoin]: Chain.Dogecoin,
|
|
67
|
+
[ChainId.EthereumHex]: Chain.Ethereum,
|
|
68
|
+
[ChainId.Kujira]: Chain.Kujira,
|
|
69
|
+
[ChainId.Ethereum]: Chain.Ethereum,
|
|
70
|
+
[ChainId.Litecoin]: Chain.Litecoin,
|
|
71
|
+
[ChainId.MayaStagenet]: Chain.Maya,
|
|
72
|
+
[ChainId.Maya]: Chain.Maya,
|
|
73
|
+
[ChainId.OptimismHex]: Chain.Optimism,
|
|
74
|
+
[ChainId.Optimism]: Chain.Optimism,
|
|
75
|
+
[ChainId.Polkadot]: Chain.Polkadot,
|
|
76
|
+
[ChainId.PolygonHex]: Chain.Polygon,
|
|
77
|
+
[ChainId.Polygon]: Chain.Polygon,
|
|
78
|
+
[ChainId.THORChainStagenet]: Chain.THORChain,
|
|
79
|
+
[ChainId.THORChain]: Chain.THORChain,
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
type ChainNameType = keyof typeof Chain;
|
|
83
|
+
const chainNames = Object.keys(Chain) as ChainNameType[];
|
|
84
|
+
const chains = Object.values(Chain) as Chain[];
|
|
85
|
+
|
|
86
|
+
export enum BaseDecimal {
|
|
87
|
+
ARB = 18,
|
|
88
|
+
AVAX = 18,
|
|
89
|
+
BCH = 8,
|
|
90
|
+
BNB = 8,
|
|
91
|
+
BSC = 18,
|
|
92
|
+
BTC = 8,
|
|
93
|
+
DASH = 8,
|
|
94
|
+
DOGE = 8,
|
|
95
|
+
DOT = 10,
|
|
96
|
+
ETH = 18,
|
|
97
|
+
FLIP = 18,
|
|
98
|
+
GAIA = 6,
|
|
99
|
+
KUJI = 6,
|
|
100
|
+
LTC = 8,
|
|
101
|
+
MATIC = 18,
|
|
102
|
+
MAYA = 10,
|
|
103
|
+
OP = 18,
|
|
104
|
+
THOR = 8,
|
|
105
|
+
ZEC = 8,
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
export type SubstrateChain = Chain.Polkadot | Chain.Chainflip;
|
|
109
|
+
export const SubstrateChains = [Chain.Polkadot, Chain.Chainflip];
|
|
110
|
+
|
|
111
|
+
export type EVMChain =
|
|
112
|
+
| Chain.Ethereum
|
|
113
|
+
| Chain.Avalanche
|
|
114
|
+
| Chain.BinanceSmartChain
|
|
115
|
+
| Chain.Arbitrum
|
|
116
|
+
| Chain.Optimism
|
|
117
|
+
| Chain.Polygon;
|
|
118
|
+
export const EVMChains = [
|
|
119
|
+
Chain.Ethereum,
|
|
120
|
+
Chain.Avalanche,
|
|
121
|
+
Chain.BinanceSmartChain,
|
|
122
|
+
Chain.Arbitrum,
|
|
123
|
+
Chain.Optimism,
|
|
124
|
+
Chain.Polygon,
|
|
125
|
+
] as const;
|
|
126
|
+
|
|
127
|
+
export type UTXOChain =
|
|
128
|
+
| Chain.Bitcoin
|
|
129
|
+
| Chain.BitcoinCash
|
|
130
|
+
| Chain.Dash
|
|
131
|
+
| Chain.Dogecoin
|
|
132
|
+
| Chain.Litecoin;
|
|
133
|
+
export const UTXOChains = [
|
|
134
|
+
Chain.Bitcoin,
|
|
135
|
+
Chain.BitcoinCash,
|
|
136
|
+
Chain.Dash,
|
|
137
|
+
Chain.Dogecoin,
|
|
138
|
+
Chain.Litecoin,
|
|
139
|
+
] as const;
|
|
140
|
+
|
|
141
|
+
export type CosmosChain =
|
|
142
|
+
| Chain.Cosmos
|
|
143
|
+
| Chain.THORChain
|
|
144
|
+
| Chain.Binance
|
|
145
|
+
| Chain.Maya
|
|
146
|
+
| Chain.Kujira;
|
|
147
|
+
export const CosmosChains = [
|
|
148
|
+
Chain.Cosmos,
|
|
149
|
+
Chain.THORChain,
|
|
150
|
+
Chain.Binance,
|
|
151
|
+
Chain.Maya,
|
|
152
|
+
Chain.Kujira,
|
|
153
|
+
] as const;
|
|
154
|
+
|
|
155
|
+
export const TCSupportedChains = [
|
|
156
|
+
Chain.Avalanche,
|
|
157
|
+
Chain.Binance,
|
|
158
|
+
Chain.BinanceSmartChain,
|
|
159
|
+
Chain.Bitcoin,
|
|
160
|
+
Chain.BitcoinCash,
|
|
161
|
+
Chain.Cosmos,
|
|
162
|
+
Chain.Dogecoin,
|
|
163
|
+
Chain.Ethereum,
|
|
164
|
+
Chain.Litecoin,
|
|
165
|
+
Chain.THORChain,
|
|
166
|
+
] as const;
|
|
167
|
+
|
|
168
|
+
export const MAYASupportedChains = [
|
|
169
|
+
Chain.Dash,
|
|
170
|
+
Chain.Ethereum,
|
|
171
|
+
Chain.Kujira,
|
|
172
|
+
Chain.Maya,
|
|
173
|
+
Chain.THORChain,
|
|
174
|
+
] as const;
|
|
175
|
+
|
|
176
|
+
const ChainToChainName = chains.reduce(
|
|
177
|
+
(acc, chain) => {
|
|
178
|
+
const chainName = chainNames.find((key) => Chain[key as ChainNameType] === chain);
|
|
179
|
+
|
|
180
|
+
if (chainName) acc[chain] = chainName;
|
|
181
|
+
|
|
182
|
+
return acc;
|
|
183
|
+
},
|
|
184
|
+
{} as { [key in Chain]: ChainNameType },
|
|
185
|
+
);
|
|
186
|
+
|
|
187
|
+
export const ChainToChainId = chains.reduce(
|
|
188
|
+
(acc, chain) => {
|
|
189
|
+
acc[chain] = ChainId[ChainToChainName[chain]];
|
|
190
|
+
return acc;
|
|
191
|
+
},
|
|
192
|
+
{} as { [key in Chain]: ChainId },
|
|
193
|
+
);
|
|
194
|
+
|
|
195
|
+
export const ChainToRPC = chains.reduce(
|
|
196
|
+
(acc, chain) => {
|
|
197
|
+
acc[chain] = RPCUrl[ChainToChainName[chain]];
|
|
198
|
+
return acc;
|
|
199
|
+
},
|
|
200
|
+
{} as { [key in Chain]: RPCUrl },
|
|
201
|
+
);
|
|
202
|
+
|
|
203
|
+
export const ChainToHexChainId = chains.reduce(
|
|
204
|
+
(acc, chain) => {
|
|
205
|
+
const chainString = `${ChainToChainName[chain]}Hex` as keyof typeof ChainId;
|
|
206
|
+
|
|
207
|
+
acc[chain] = ChainId[chainString];
|
|
208
|
+
return acc;
|
|
209
|
+
},
|
|
210
|
+
{} as { [key in Chain]: ChainId },
|
|
211
|
+
);
|
|
212
|
+
|
|
213
|
+
export const ChainToExplorerUrl = chains.reduce(
|
|
214
|
+
(acc, chain) => {
|
|
215
|
+
acc[chain] = ExplorerUrl[ChainToChainName[chain]];
|
|
216
|
+
return acc;
|
|
217
|
+
},
|
|
218
|
+
{} as { [key in Chain]: string },
|
|
219
|
+
);
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import type { Chain, CosmosChain, EVMChain, UTXOChain } from "./chains.ts";
|
|
2
|
+
import type { WalletOption } from "./wallet.ts";
|
|
3
|
+
|
|
4
|
+
type ConnectMethodNames =
|
|
5
|
+
| "connectEVMWallet"
|
|
6
|
+
| "connectKeplr"
|
|
7
|
+
| "connectKeystore"
|
|
8
|
+
| "connectKeepkey"
|
|
9
|
+
| "connectLedger"
|
|
10
|
+
| "connectOkx"
|
|
11
|
+
| "connectTrezor"
|
|
12
|
+
| "connectWalletconnect"
|
|
13
|
+
| "connectXDEFI";
|
|
14
|
+
|
|
15
|
+
export type ConnectConfig = {
|
|
16
|
+
stagenet?: boolean;
|
|
17
|
+
/**
|
|
18
|
+
* @required
|
|
19
|
+
*/
|
|
20
|
+
thorswapApiKey?: string;
|
|
21
|
+
/**
|
|
22
|
+
* @required for AVAX & BSC
|
|
23
|
+
*/
|
|
24
|
+
covalentApiKey?: string;
|
|
25
|
+
/**
|
|
26
|
+
* @required for ETH
|
|
27
|
+
*/
|
|
28
|
+
ethplorerApiKey?: string;
|
|
29
|
+
/**
|
|
30
|
+
* @required for BTC, BCH, LTC, DOGE
|
|
31
|
+
*/
|
|
32
|
+
blockchairApiKey?: string;
|
|
33
|
+
/**
|
|
34
|
+
* @required for Walletconnect
|
|
35
|
+
*/
|
|
36
|
+
walletConnectProjectId?: string;
|
|
37
|
+
/**
|
|
38
|
+
* @optional for Trezor config
|
|
39
|
+
*/
|
|
40
|
+
trezorManifest?: {
|
|
41
|
+
email: string;
|
|
42
|
+
appUrl: string;
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
* @optional for KeepKey config
|
|
46
|
+
*/
|
|
47
|
+
keepkeyConfig?: {
|
|
48
|
+
apiKey: string;
|
|
49
|
+
pairingInfo: {
|
|
50
|
+
name: string;
|
|
51
|
+
imageUrl: string;
|
|
52
|
+
basePath: string;
|
|
53
|
+
url: string;
|
|
54
|
+
};
|
|
55
|
+
};
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
export type AddChainWalletParams<T extends Chain> = {
|
|
59
|
+
address: string;
|
|
60
|
+
balance: Todo[];
|
|
61
|
+
walletType: WalletOption;
|
|
62
|
+
chain: T;
|
|
63
|
+
[key: string]: Todo;
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
type ApisType = { [key in UTXOChain]?: string | Todo } & {
|
|
67
|
+
[key in EVMChain]?: string | Todo;
|
|
68
|
+
} & {
|
|
69
|
+
[key in CosmosChain]?: string;
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
export type ConnectWalletParams = {
|
|
73
|
+
addChain: <T extends Chain>(params: AddChainWalletParams<T>) => void;
|
|
74
|
+
config: ConnectConfig;
|
|
75
|
+
rpcUrls: { [chain in Chain]?: string };
|
|
76
|
+
apis: ApisType;
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
export type Witness = {
|
|
80
|
+
value: number;
|
|
81
|
+
script: Buffer;
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
export type ExtendParams<WalletConnectMethodNames = ""> = {
|
|
85
|
+
excludedChains?: Chain[];
|
|
86
|
+
config?: ConnectConfig;
|
|
87
|
+
rpcUrls?: { [chain in Chain]?: string };
|
|
88
|
+
apis?: ApisType;
|
|
89
|
+
wallets: {
|
|
90
|
+
connectMethodName: ConnectMethodNames | WalletConnectMethodNames;
|
|
91
|
+
connect: (params: ConnectWalletParams) => (...params: Todo) => Promise<Todo>;
|
|
92
|
+
}[];
|
|
93
|
+
};
|
|
94
|
+
|
|
95
|
+
export enum QuoteMode {
|
|
96
|
+
TC_SUPPORTED_TO_TC_SUPPORTED = "TC-TC",
|
|
97
|
+
TC_SUPPORTED_TO_ETH = "TC-ERC20",
|
|
98
|
+
TC_SUPPORTED_TO_AVAX = "TC-ARC20",
|
|
99
|
+
TC_SUPPORTED_TO_BSC = "TC-BEP20",
|
|
100
|
+
ETH_TO_TC_SUPPORTED = "ERC20-TC",
|
|
101
|
+
ETH_TO_ETH = "ERC20-ERC20",
|
|
102
|
+
ETH_TO_AVAX = "ERC20-ARC20",
|
|
103
|
+
ETH_TO_BSC = "ERC20-BEP20",
|
|
104
|
+
AVAX_TO_TC_SUPPORTED = "ARC20-TC",
|
|
105
|
+
AVAX_TO_ETH = "ARC20-ERC20",
|
|
106
|
+
AVAX_TO_AVAX = "ARC20-ARC20",
|
|
107
|
+
AVAX_TO_BSC = "ARC20-BEP20",
|
|
108
|
+
BSC_TO_TC_SUPPORTED = "BEP20-TC",
|
|
109
|
+
BSC_TO_ETH = "BEP20-ERC20",
|
|
110
|
+
BSC_TO_AVAX = "BEP20-ARC20",
|
|
111
|
+
BSC_TO_BSC = "BEP20-BEP20",
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
export type Asset = {
|
|
115
|
+
chain: Chain;
|
|
116
|
+
symbol: string;
|
|
117
|
+
ticker: string;
|
|
118
|
+
synth?: boolean;
|
|
119
|
+
};
|
|
120
|
+
|
|
121
|
+
export const AGG_SWAP = [QuoteMode.ETH_TO_ETH, QuoteMode.AVAX_TO_AVAX, QuoteMode.BSC_TO_BSC];
|
|
122
|
+
|
|
123
|
+
export const SWAP_IN = [
|
|
124
|
+
QuoteMode.ETH_TO_TC_SUPPORTED,
|
|
125
|
+
QuoteMode.ETH_TO_AVAX,
|
|
126
|
+
QuoteMode.ETH_TO_BSC,
|
|
127
|
+
QuoteMode.AVAX_TO_TC_SUPPORTED,
|
|
128
|
+
QuoteMode.AVAX_TO_ETH,
|
|
129
|
+
QuoteMode.AVAX_TO_BSC,
|
|
130
|
+
QuoteMode.BSC_TO_TC_SUPPORTED,
|
|
131
|
+
QuoteMode.BSC_TO_ETH,
|
|
132
|
+
QuoteMode.BSC_TO_AVAX,
|
|
133
|
+
];
|
|
134
|
+
|
|
135
|
+
export const SWAP_OUT = [
|
|
136
|
+
QuoteMode.TC_SUPPORTED_TO_TC_SUPPORTED,
|
|
137
|
+
QuoteMode.TC_SUPPORTED_TO_ETH,
|
|
138
|
+
QuoteMode.TC_SUPPORTED_TO_AVAX,
|
|
139
|
+
QuoteMode.TC_SUPPORTED_TO_BSC,
|
|
140
|
+
];
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import type { Chain } from "./chains";
|
|
2
|
+
|
|
3
|
+
export enum ContractAddress {
|
|
4
|
+
ARB = "0x0000000000000000000000000000000000000000",
|
|
5
|
+
AVAX = "0x0000000000000000000000000000000000000000",
|
|
6
|
+
ETH = "0x0000000000000000000000000000000000000000",
|
|
7
|
+
BSC = "0x0000000000000000000000000000000000000000",
|
|
8
|
+
MATIC = "0x0000000000000000000000000000000000001010",
|
|
9
|
+
OP = "0x4200000000000000000000000000000000000042",
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export enum DerivationPath {
|
|
13
|
+
ARB = "m/44'/60'/0'/0",
|
|
14
|
+
AVAX = "m/44'/60'/0'/0",
|
|
15
|
+
BCH = "m/44'/145'/0'/0",
|
|
16
|
+
BNB = "m/44'/714'/0'/0",
|
|
17
|
+
BSC = "m/44'/60'/0'/0",
|
|
18
|
+
BTC = "m/84'/0'/0'/0",
|
|
19
|
+
DASH = "m/44'/5'/0'/0",
|
|
20
|
+
DOGE = "m/44'/3'/0'/0",
|
|
21
|
+
DOT = "////",
|
|
22
|
+
ETH = "m/44'/60'/0'/0",
|
|
23
|
+
FLIP = "////",
|
|
24
|
+
GAIA = "m/44'/118'/0'/0",
|
|
25
|
+
KUJI = "m/44'/118'/0'/0",
|
|
26
|
+
LTC = "m/84'/2'/0'/0",
|
|
27
|
+
MATIC = "m/44'/60'/0'/0",
|
|
28
|
+
MAYA = "m/44'/931'/0'/0",
|
|
29
|
+
OP = "m/44'/60'/0'/0",
|
|
30
|
+
THOR = "m/44'/931'/0'/0",
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export type DerivationPathArray = [number, number, number, number, number?];
|
|
34
|
+
|
|
35
|
+
export const NetworkDerivationPath: Record<Chain, DerivationPathArray> = {
|
|
36
|
+
ARB: [44, 60, 0, 0, 0],
|
|
37
|
+
AVAX: [44, 60, 0, 0, 0],
|
|
38
|
+
BCH: [44, 145, 0, 0, 0],
|
|
39
|
+
BNB: [44, 714, 0, 0, 0],
|
|
40
|
+
BSC: [44, 60, 0, 0, 0],
|
|
41
|
+
BTC: [84, 0, 0, 0, 0],
|
|
42
|
+
DASH: [44, 5, 0, 0, 0],
|
|
43
|
+
DOGE: [44, 3, 0, 0, 0],
|
|
44
|
+
ETH: [44, 60, 0, 0, 0],
|
|
45
|
+
GAIA: [44, 118, 0, 0, 0],
|
|
46
|
+
KUJI: [44, 118, 0, 0, 0],
|
|
47
|
+
LTC: [84, 2, 0, 0, 0],
|
|
48
|
+
MATIC: [44, 60, 0, 0, 0],
|
|
49
|
+
MAYA: [44, 931, 0, 0, 0],
|
|
50
|
+
OP: [44, 60, 0, 0, 0],
|
|
51
|
+
THOR: [44, 931, 0, 0, 0],
|
|
52
|
+
|
|
53
|
+
// Polkadot and related network derivation path is not number based
|
|
54
|
+
DOT: [0, 0, 0, 0, 0],
|
|
55
|
+
FLIP: [0, 0, 0, 0, 0],
|
|
56
|
+
};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export * from "./abis/erc20";
|
|
2
|
+
export * from "./abis/tcEthVault";
|
|
3
|
+
export * from "./chains";
|
|
4
|
+
export * from "./commonTypes";
|
|
5
|
+
export * from "./derivationPath";
|
|
6
|
+
export * from "./network";
|
|
7
|
+
export * from "./tokens";
|
|
8
|
+
export * from "./transactions";
|
|
9
|
+
export * from "./wallet";
|
|
10
|
+
export * from "./sdk";
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
export enum RPCUrl {
|
|
2
|
+
Arbitrum = "https://arb1.arbitrum.io/rpc",
|
|
3
|
+
Avalanche = "https://node-router.thorswap.net/avalanche-c",
|
|
4
|
+
Binance = "",
|
|
5
|
+
BinanceSmartChain = "https://bsc-dataseed.binance.org",
|
|
6
|
+
Bitcoin = "https://node-router.thorswap.net/bitcoin",
|
|
7
|
+
BitcoinCash = "https://node-router.thorswap.net/bitcoin-cash",
|
|
8
|
+
Chainflip = "wss://mainnet-archive.chainflip.io",
|
|
9
|
+
Cosmos = "https://node-router.thorswap.net/cosmos/rpc",
|
|
10
|
+
Dash = "https://node-router.thorswap.net/dash",
|
|
11
|
+
Dogecoin = "https://node-router.thorswap.net/dogecoin",
|
|
12
|
+
Ethereum = "https://node-router.thorswap.net/ethereum",
|
|
13
|
+
Kujira = "https://rpc-kujira.synergynodes.com/",
|
|
14
|
+
Litecoin = "https://node-router.thorswap.net/litecoin",
|
|
15
|
+
Maya = "https://tendermint.mayachain.info",
|
|
16
|
+
MayaStagenet = "https://stagenet.tendermint.mayachain.info",
|
|
17
|
+
Optimism = "https://mainnet.optimism.io",
|
|
18
|
+
Polkadot = "wss://rpc.polkadot.io",
|
|
19
|
+
Polygon = "https://polygon-rpc.com",
|
|
20
|
+
THORChain = "https://rpc.thorswap.net",
|
|
21
|
+
THORChainStagenet = "https://stagenet-rpc.ninerealms.com",
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export enum ExplorerUrl {
|
|
25
|
+
Arbitrum = "https://arbiscan.io",
|
|
26
|
+
Avalanche = "https://snowtrace.io",
|
|
27
|
+
Binance = "https://explorer.binance.org",
|
|
28
|
+
BinanceSmartChain = "https://bscscan.com",
|
|
29
|
+
Bitcoin = "https://blockchair.com/bitcoin",
|
|
30
|
+
BitcoinCash = "https://www.blockchair.com/bitcoin-cash",
|
|
31
|
+
Chainflip = "https://explorer.polkascan.io/polkadot",
|
|
32
|
+
Cosmos = "https://www.mintscan.io/cosmos",
|
|
33
|
+
Dash = "https://blockchair.com/dash",
|
|
34
|
+
Dogecoin = "https://blockchair.com/dogecoin",
|
|
35
|
+
Ethereum = "https://etherscan.io",
|
|
36
|
+
Kujira = "https://finder.kujira.network/kaiyo-1",
|
|
37
|
+
Litecoin = "https://blockchair.com/litecoin",
|
|
38
|
+
Maya = "https://www.mayascan.org",
|
|
39
|
+
Optimism = "https://optimistic.etherscan.io",
|
|
40
|
+
Polkadot = "https://polkadot.subscan.io/",
|
|
41
|
+
Polygon = "https://polygonscan.com",
|
|
42
|
+
THORChain = "https://runescan.io",
|
|
43
|
+
}
|
package/src/types/sdk.ts
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { AssetValue } from "../modules/assetValue";
|
|
2
|
+
|
|
3
|
+
export type PluginName = "thorchain" | "chainflip" | "mayachain";
|
|
4
|
+
|
|
5
|
+
export type ProviderMethods = {
|
|
6
|
+
swap: (swapParams: SwapParams) => Promise<string>;
|
|
7
|
+
[key: string]: Todo;
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
export type SwapKitPlugins = {
|
|
11
|
+
[K in PluginName]?: ProviderMethods;
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
type GenericSwapParams = {
|
|
15
|
+
buyAsset: AssetValue;
|
|
16
|
+
sellAsset: AssetValue;
|
|
17
|
+
recipient: string;
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
export type SwapParams<T = GenericSwapParams> = T & {
|
|
21
|
+
provider?: {
|
|
22
|
+
name: PluginName;
|
|
23
|
+
config: Record<string, Todo>;
|
|
24
|
+
};
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
export type AvailableProviders<T> = T | { [K in PluginName]?: ProviderMethods };
|
|
28
|
+
|
|
29
|
+
export type SwapKitPlugin = <T>({ wallets, stagenet }: { wallets: T; stagenet?: boolean }) => {
|
|
30
|
+
name: PluginName;
|
|
31
|
+
methods: ProviderMethods;
|
|
32
|
+
};
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import type { AssetValue } from "../modules/assetValue";
|
|
2
|
+
|
|
3
|
+
export enum FeeOption {
|
|
4
|
+
Average = "average",
|
|
5
|
+
Fast = "fast",
|
|
6
|
+
Fastest = "fastest",
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export enum ApproveMode {
|
|
10
|
+
Approve = "approve",
|
|
11
|
+
CheckOnly = "checkOnly",
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export type ApproveReturnType<T extends ApproveMode> = T extends "checkOnly"
|
|
15
|
+
? Promise<boolean>
|
|
16
|
+
: Promise<string>;
|
|
17
|
+
|
|
18
|
+
export type WalletTxParams = {
|
|
19
|
+
feeOptionKey?: FeeOption;
|
|
20
|
+
from?: string;
|
|
21
|
+
memo?: string; // optional memo to pass
|
|
22
|
+
recipient: string;
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
export type EVMTxBaseParams<T = bigint> = {
|
|
26
|
+
to?: string;
|
|
27
|
+
from?: string;
|
|
28
|
+
nonce?: number;
|
|
29
|
+
gasLimit?: T;
|
|
30
|
+
data?: string;
|
|
31
|
+
value?: T;
|
|
32
|
+
chainId?: T;
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
export type GetAddressAndPubKeyResponse = {
|
|
36
|
+
bech32_address: string;
|
|
37
|
+
compressed_pk: NotWorth;
|
|
38
|
+
error_message: string;
|
|
39
|
+
return_code: number;
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
export type Signature = {
|
|
43
|
+
pub_key: {
|
|
44
|
+
type: string;
|
|
45
|
+
value: string;
|
|
46
|
+
};
|
|
47
|
+
sequence: string;
|
|
48
|
+
signature: string;
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
export enum MemoType {
|
|
52
|
+
BOND = "BOND",
|
|
53
|
+
DEPOSIT = "+",
|
|
54
|
+
LEAVE = "LEAVE",
|
|
55
|
+
THORNAME_REGISTER = "~",
|
|
56
|
+
UNBOND = "UNBOND",
|
|
57
|
+
WITHDRAW = "-",
|
|
58
|
+
OPEN_LOAN = "$+",
|
|
59
|
+
CLOSE_LOAN = "$-",
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
export type CoreTxParams = {
|
|
63
|
+
assetValue: AssetValue;
|
|
64
|
+
recipient: string;
|
|
65
|
+
memo?: string;
|
|
66
|
+
feeOptionKey?: FeeOption;
|
|
67
|
+
feeRate?: number;
|
|
68
|
+
data?: string;
|
|
69
|
+
from?: string;
|
|
70
|
+
expiration?: number;
|
|
71
|
+
};
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { AssetValue } from "../modules/assetValue";
|
|
2
|
+
import type { Chain } from "./chains";
|
|
3
|
+
|
|
4
|
+
export enum WalletOption {
|
|
5
|
+
KEYSTORE = "KEYSTORE",
|
|
6
|
+
KEEPKEY = "KEEPKEY",
|
|
7
|
+
XDEFI = "XDEFI",
|
|
8
|
+
METAMASK = "METAMASK",
|
|
9
|
+
COINBASE_WEB = "COINBASE_WEB",
|
|
10
|
+
TREZOR = "TREZOR",
|
|
11
|
+
TRUSTWALLET_WEB = "TRUSTWALLET_WEB",
|
|
12
|
+
LEDGER = "LEDGER",
|
|
13
|
+
KEPLR = "KEPLR",
|
|
14
|
+
OKX = "OKX",
|
|
15
|
+
OKX_MOBILE = "OKX_MOBILE",
|
|
16
|
+
BRAVE = "BRAVE",
|
|
17
|
+
WALLETCONNECT = "WALLETCONNECT",
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export type EVMWalletOptions =
|
|
21
|
+
| WalletOption.BRAVE
|
|
22
|
+
| WalletOption.OKX_MOBILE
|
|
23
|
+
| WalletOption.METAMASK
|
|
24
|
+
| WalletOption.TRUSTWALLET_WEB
|
|
25
|
+
| WalletOption.COINBASE_WEB;
|
|
26
|
+
|
|
27
|
+
export enum LedgerErrorCode {
|
|
28
|
+
NoError = 0x9000,
|
|
29
|
+
LockedDevice = 0x5515,
|
|
30
|
+
TC_NotFound = 65535,
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export type ChainWallet = {
|
|
34
|
+
chain: Chain;
|
|
35
|
+
address: string;
|
|
36
|
+
balance: AssetValue[];
|
|
37
|
+
walletType: WalletOption;
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
export type EmptyWallet = { [key in Chain]?: unknown };
|
|
41
|
+
|
|
42
|
+
export type BaseWallet<T extends EmptyWallet | unknown> = {
|
|
43
|
+
// @ts-expect-error
|
|
44
|
+
[key in Chain]: ChainWallet & T[key];
|
|
45
|
+
};
|
|
File without changes
|