@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.
@@ -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
+ }
@@ -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