@deserialize/multi-vm-wallet 1.2.2 → 1.2.3
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/IChainWallet.d.ts +5 -1
- package/dist/IChainWallet.js.map +1 -1
- package/dist/constant.js +31 -17
- package/dist/constant.js.map +1 -1
- package/dist/evm/evm.d.ts +3 -0
- package/dist/evm/evm.js +7 -2
- package/dist/evm/evm.js.map +1 -1
- package/dist/evm/transaction.utils.d.ts +362 -0
- package/dist/evm/transaction.utils.js +669 -0
- package/dist/evm/transaction.utils.js.map +1 -0
- package/dist/evm/transactionParsing.d.ts +1 -3633
- package/dist/evm/transactionParsing.js +0 -27
- package/dist/evm/transactionParsing.js.map +1 -1
- package/dist/evm/utils.d.ts +9 -0
- package/dist/evm/utils.js +23 -1
- package/dist/evm/utils.js.map +1 -1
- package/dist/svm/svm.d.ts +12 -3
- package/dist/svm/svm.js +19 -5
- package/dist/svm/svm.js.map +1 -1
- package/dist/svm/utils.d.ts +6 -2
- package/dist/svm/utils.js +25 -12
- package/dist/svm/utils.js.map +1 -1
- package/dist/test.d.ts +4 -0
- package/dist/test.js +23 -16
- package/dist/test.js.map +1 -1
- package/package.json +5 -2
- package/utils/IChainWallet.ts +5 -3
- package/utils/constant.ts +33 -17
- package/utils/evm/evm.ts +9 -2
- package/utils/evm/transaction.utils.ts +824 -0
- package/utils/evm/transactionParsing.ts +0 -26
- package/utils/evm/utils.ts +22 -2
- package/utils/svm/svm.ts +31 -7
- package/utils/svm/utils.ts +52 -15
- package/utils/test.ts +28 -15
package/dist/test.js
CHANGED
|
@@ -7,9 +7,6 @@ exports.testUserKeyPair = void 0;
|
|
|
7
7
|
const bs58_1 = __importDefault(require("bs58"));
|
|
8
8
|
const web3_js_1 = require("@solana/web3.js");
|
|
9
9
|
const evm_1 = require("./evm");
|
|
10
|
-
const transactionParsing_1 = require("./evm/transactionParsing");
|
|
11
|
-
const viem_1 = require("viem");
|
|
12
|
-
const chains_1 = require("viem/chains");
|
|
13
10
|
// const mnemonic = GenerateNewMnemonic()
|
|
14
11
|
// console.log('mnemonic: ', mnemonic);
|
|
15
12
|
// const seed = VM.mnemonicToSeed(mnemonic)
|
|
@@ -18,6 +15,7 @@ exports.testUserKeyPair = web3_js_1.Keypair.fromSecretKey(bs58_1.default.decode(
|
|
|
18
15
|
const x = exports.testUserKeyPair instanceof web3_js_1.Keypair;
|
|
19
16
|
const evePrivateKey = "0x4c0883a69102937d6231471b5dbb6204fe5129617082792ae468d01a3f362318";
|
|
20
17
|
const evmPrivateKey2 = "0x0123456789012345678901234567890123456789012345678901234567890123";
|
|
18
|
+
const ogPrivKey = "d2d3f7117aa9a4c6e5d4affedd8a5ea624ffd82b2a1de81509e5913709b1ea72";
|
|
21
19
|
// const vm = new SVMVM(seed)
|
|
22
20
|
// const vmFromMnemonic = SVMVM.fromMnemonic(mnemonic)
|
|
23
21
|
// const keyFromMnemonic = vmFromMnemonic.generatePrivateKey(0)
|
|
@@ -40,9 +38,18 @@ const evmChainConfig = {
|
|
|
40
38
|
nativeToken: { name: "Ethereum", symbol: "ETH", decimals: 18 },
|
|
41
39
|
confirmationNo: 1,
|
|
42
40
|
};
|
|
41
|
+
const OgChainConfig = {
|
|
42
|
+
chainId: 16661,
|
|
43
|
+
name: "",
|
|
44
|
+
rpcUrl: "https://evmrpc.0g.ai",
|
|
45
|
+
explorerUrl: "",
|
|
46
|
+
nativeToken: { name: "Ethereum", symbol: "ETH", decimals: 18 },
|
|
47
|
+
};
|
|
43
48
|
// const wallet = new SVMChainWallet(chainConfig, testUserKeyPair, 0)
|
|
44
|
-
const wallet = new evm_1.EVMChainWallet(
|
|
49
|
+
const wallet = new evm_1.EVMChainWallet(OgChainConfig, ogPrivKey, 0);
|
|
50
|
+
wallet.getNativeBalance().then(console.log);
|
|
45
51
|
// console.log('wallet: ', wallet);
|
|
52
|
+
// getTokenInfo(new PublicKey("9BB6NFEcjBCtnNLFko2FqVQBq8HHM13kCyYcdQbgpump"), wallet.connection!).then(e => console.log('token info: ', e))
|
|
46
53
|
// wallet.discoverToken().then(e => console.log('discovered tokens: ', e))
|
|
47
54
|
// wallet.getNativeBalance().then(e => console.log('native balance: ', e))
|
|
48
55
|
console.log('address: ', wallet.address);
|
|
@@ -74,16 +81,16 @@ const connection = new web3_js_1.Connection(RPC_URL);
|
|
|
74
81
|
// }).catch((error: any) => {
|
|
75
82
|
// console.error("Error fetching transaction history:", error);
|
|
76
83
|
// });
|
|
77
|
-
const client =
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
})
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
}).then((history) => {
|
|
85
|
-
|
|
86
|
-
}).catch((error) => {
|
|
87
|
-
|
|
88
|
-
});
|
|
84
|
+
// const client = createPublicClient({
|
|
85
|
+
// chain: base,
|
|
86
|
+
// transport: http(base.rpcUrls.default.http[0]),
|
|
87
|
+
// })
|
|
88
|
+
// getEVMTransactionHistory(client as PublicClient, "0x9C82CE0e125F61AdE50BC0c19638F6Ba93d71D5e", {
|
|
89
|
+
// startBlock: BigInt(37427020)
|
|
90
|
+
// // before: "0xabc..."
|
|
91
|
+
// }).then((history: any) => {
|
|
92
|
+
// console.log("EVM Transaction History:", history);
|
|
93
|
+
// }).catch((error: any) => {
|
|
94
|
+
// console.error("Error fetching EVM transaction history:", error);
|
|
95
|
+
// });
|
|
89
96
|
//# sourceMappingURL=test.js.map
|
package/dist/test.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test.js","sourceRoot":"","sources":["../utils/test.ts"],"names":[],"mappings":";;;;;;AAGA,gDAA0B;AAE1B,6CAAiE;AAKjE,+BAAuC;
|
|
1
|
+
{"version":3,"file":"test.js","sourceRoot":"","sources":["../utils/test.ts"],"names":[],"mappings":";;;;;;AAGA,gDAA0B;AAE1B,6CAAiE;AAKjE,+BAAuC;AAMvC,yCAAyC;AAGzC,uCAAuC;AAEvC,2CAA2C;AAC3C,MAAM,IAAI,GAAG,0FAA0F,CAAA;AAE1F,QAAA,eAAe,GAAG,iBAAO,CAAC,aAAa,CAAC,cAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1E,MAAM,CAAC,GAAG,uBAAe,YAAY,iBAAO,CAAC;AAC7C,MAAM,aAAa,GAAG,oEAAoE,CAAA;AAC1F,MAAM,cAAc,GAAG,oEAAoE,CAAA;AAC3F,MAAM,SAAS,GAAG,kEAAkE,CAAA;AAEpF,6BAA6B;AAG7B,sDAAsD;AACtD,+DAA+D;AAC/D,0EAA0E;AAC1E,uCAAuC;AACvC,kDAAkD;AAClD,MAAM,WAAW,GAAsB;IACnC,OAAO,EAAE,SAAS;IAClB,IAAI,EAAE,QAAQ;IACd,MAAM,EAAE,+DAA+D;IACvE,WAAW,EAAE,6BAA6B;IAC1C,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE;IAC3D,cAAc,EAAE,CAAC;CAEpB,CAAA;AAED,MAAM,cAAc,GAAsB;IACtC,OAAO,EAAE,IAAI;IACb,IAAI,EAAE,UAAU;IAChB,MAAM,EAAE,4DAA4D;IACpE,WAAW,EAAE,+BAA+B;IAC5C,WAAW,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE;IAC9D,cAAc,EAAE,CAAC;CACpB,CAAA;AAED,MAAM,aAAa,GAAsB;IACrC,OAAO,EAAE,KAAK;IACd,IAAI,EAAE,EAAE;IACR,MAAM,EAAE,sBAAsB;IAC9B,WAAW,EAAE,EAAE;IACf,WAAW,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE;CAEjE,CAAA;AAGD,qEAAqE;AACrE,MAAM,MAAM,GAAG,IAAI,oBAAc,CAAC,aAAa,EAAE,SAAS,EAAE,CAAC,CAAC,CAAA;AAC9D,MAAM,CAAC,gBAAgB,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;AAC3C,mCAAmC;AACnC,4IAA4I;AAC5I,0EAA0E;AAC1E,0EAA0E;AAC1E,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;AACzC,8EAA8E;AAC9E,gBAAgB;AAChB,oCAAoC;AACpC,uCAAuC;AACvC,sCAAsC;AACtC,kBAAkB;AAClB,kDAAkD;AAGlD,qCAAqC;AACrC,mDAAmD;AAOnD,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC;AACnC,MAAM,UAAU,GAAG,IAAI,oBAAU,CAAC,OAAO,CAAC,CAAC;AAE3C;;;GAGG;AAEH,0BAA0B;AAC1B,yBAAyB;AACzB,kBAAkB;AAClB,sBAAsB;AACtB,QAAQ;AACR,oBAAoB;AACpB,6GAA6G;AAC7G,QAAQ;AACR,6BAA6B;AAC7B,oDAAoD;AACpD,6BAA6B;AAC7B,mEAAmE;AACnE,MAAM;AACN,sCAAsC;AACtC,mBAAmB;AACnB,qDAAqD;AACrD,KAAK;AAEL,mGAAmG;AACnG,mCAAmC;AACnC,4BAA4B;AAC5B,8BAA8B;AAC9B,wDAAwD;AACxD,6BAA6B;AAC7B,uEAAuE;AACvE,MAAM"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@deserialize/multi-vm-wallet",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.3",
|
|
4
4
|
"devDependencies": {
|
|
5
5
|
"@types/bn.js": "^5.2.0",
|
|
6
6
|
"@types/crypto-js": "^4.2.2",
|
|
@@ -10,12 +10,15 @@
|
|
|
10
10
|
"typescript": "^5.9.2"
|
|
11
11
|
},
|
|
12
12
|
"dependencies": {
|
|
13
|
-
"@metaplex-foundation/
|
|
13
|
+
"@metaplex-foundation/mpl-token-metadata": "^3.4.0",
|
|
14
|
+
"@metaplex-foundation/umi": "^1.4.1",
|
|
15
|
+
"@metaplex-foundation/umi-bundle-defaults": "^1.4.1",
|
|
14
16
|
"@noble/hashes": "^1.3.3",
|
|
15
17
|
"@scure/bip32": "^2.0.1",
|
|
16
18
|
"@scure/bip39": "^2.0.1",
|
|
17
19
|
"@solana/spl-token": "^0.4.13",
|
|
18
20
|
"@solana/web3.js": "^1.98.4",
|
|
21
|
+
"bignumber.js": "^9.3.1",
|
|
19
22
|
"bn.js": "^5.2.2",
|
|
20
23
|
"bs58": "^6.0.0",
|
|
21
24
|
"crypto-js": "^4.2.0",
|
package/utils/IChainWallet.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { EVMTransactionHistoryItem } from "./evm/transactionParsing";
|
|
2
|
+
import { SVMTransactionHistoryItem } from "./svm/transactionParsing";
|
|
3
|
+
import { Balance, ChainWalletConfig, NFTInfo, TokenInfo, TransactionResult, UserTokenBalance } from "./types";
|
|
2
4
|
|
|
3
5
|
export abstract class ChainWallet<AddressType, PrivateKeyType, ConnectionType> {
|
|
4
6
|
protected privateKey: PrivateKeyType;
|
|
@@ -21,7 +23,8 @@ export abstract class ChainWallet<AddressType, PrivateKeyType, ConnectionType> {
|
|
|
21
23
|
abstract transferNative(to: AddressType, amount: number): Promise<TransactionResult>;
|
|
22
24
|
abstract transferToken(tokenAddress: TokenInfo, to: AddressType, amount: number): Promise<TransactionResult>;
|
|
23
25
|
abstract swap(tokenAddress: TokenInfo, to: AddressType, amount: number, slippage?: number): Promise<TransactionResult>;
|
|
24
|
-
|
|
26
|
+
abstract discoverToken(): Promise<UserTokenBalance<AddressType>[]>;
|
|
27
|
+
abstract getTransactionHistory(): Promise<(SVMTransactionHistoryItem | EVMTransactionHistoryItem)[]>;
|
|
25
28
|
// abstract transferNFT(contractAddress: AddressType, tokenId: string, to: string): Promise<TransactionResult>;
|
|
26
29
|
// abstract getTokenInfo(tokenAddress: string): Promise<TokenInfo>;
|
|
27
30
|
// abstract getNFTInfo(contractAddress: string, tokenId: string): Promise<NFTInfo>;
|
|
@@ -30,7 +33,6 @@ export abstract class ChainWallet<AddressType, PrivateKeyType, ConnectionType> {
|
|
|
30
33
|
getAddress(): AddressType {
|
|
31
34
|
return this.address;
|
|
32
35
|
}
|
|
33
|
-
|
|
34
36
|
getChainWalletConfig(): ChainWalletConfig {
|
|
35
37
|
return this.config;
|
|
36
38
|
}
|
package/utils/constant.ts
CHANGED
|
@@ -1,8 +1,23 @@
|
|
|
1
|
+
import { base } from "viem/chains";
|
|
1
2
|
import { ChainWalletConfig } from "./types";
|
|
2
3
|
|
|
3
4
|
export const DefaultChains: ChainWalletConfig[] = [{
|
|
5
|
+
|
|
6
|
+
chainId: 16661,
|
|
7
|
+
name: "0G",
|
|
8
|
+
rpcUrl: "https://evmrpc.0g.ai",
|
|
9
|
+
explorerUrl: "https://chainscan.0g.ai/", // e.g. Solana Explorer
|
|
10
|
+
nativeToken: {
|
|
11
|
+
name: "OG Mainnet",
|
|
12
|
+
symbol: "0G",
|
|
13
|
+
decimals: 18,
|
|
14
|
+
},
|
|
15
|
+
testnet: false,
|
|
16
|
+
logoUrl: "https://chainscan.0g.ai/static/media/zg-logo-new.b22d59dabf457524325ca81c29a4e055.svg",
|
|
17
|
+
vmType: "EVM"
|
|
18
|
+
}, {
|
|
4
19
|
chainId: 123456789,
|
|
5
|
-
name: "Solana
|
|
20
|
+
name: "Solana",
|
|
6
21
|
rpcUrl: "https://solana-mainnet.g.alchemy.com/v2/vB5mKztdJeFdz9RkW99Qf",
|
|
7
22
|
explorerUrl: "https://explorer.solana.com", // e.g. Solana Explorer
|
|
8
23
|
nativeToken: {
|
|
@@ -11,13 +26,13 @@ export const DefaultChains: ChainWalletConfig[] = [{
|
|
|
11
26
|
decimals: 9,
|
|
12
27
|
},
|
|
13
28
|
testnet: false,
|
|
14
|
-
logoUrl: "https://
|
|
29
|
+
logoUrl: "https://solana.com/src/img/branding/solanaLogoMark.svg",
|
|
15
30
|
vmType: "SVM"
|
|
16
31
|
}
|
|
17
32
|
, {
|
|
18
33
|
chainId: 1,
|
|
19
|
-
name: "Ethereum
|
|
20
|
-
rpcUrl: "https://eth-mainnet.g.alchemy.com/v2/
|
|
34
|
+
name: "Ethereum",
|
|
35
|
+
rpcUrl: "https://eth-mainnet.g.alchemy.com/v2/BJ3c0bm5npmsKZ6oAdHPU",
|
|
21
36
|
explorerUrl: "https://etherscan.io",
|
|
22
37
|
nativeToken: {
|
|
23
38
|
name: "Ether",
|
|
@@ -25,11 +40,11 @@ export const DefaultChains: ChainWalletConfig[] = [{
|
|
|
25
40
|
decimals: 18,
|
|
26
41
|
},
|
|
27
42
|
testnet: false,
|
|
28
|
-
logoUrl: "https://
|
|
43
|
+
logoUrl: "https://etherscan.io/images/svg/brands/ethereum-original-light.svg",
|
|
29
44
|
vmType: "EVM"
|
|
30
45
|
}, {
|
|
31
46
|
chainId: 56,
|
|
32
|
-
name: "
|
|
47
|
+
name: "BSC",
|
|
33
48
|
rpcUrl: "https://bsc-dataseed.binance.org/",
|
|
34
49
|
explorerUrl: "https://bscscan.com",
|
|
35
50
|
nativeToken: {
|
|
@@ -38,11 +53,11 @@ export const DefaultChains: ChainWalletConfig[] = [{
|
|
|
38
53
|
decimals: 18,
|
|
39
54
|
},
|
|
40
55
|
testnet: false,
|
|
41
|
-
logoUrl: "https://
|
|
56
|
+
logoUrl: "https://bscscan.com/assets/bsc/images/svg/logos/token-light.svg?v=25.10.5.0",
|
|
42
57
|
vmType: "EVM"
|
|
43
58
|
}, {
|
|
44
59
|
chainId: 123456791,
|
|
45
|
-
name: "Eclipse
|
|
60
|
+
name: "Eclipse",
|
|
46
61
|
rpcUrl: "https://mainnetbeta-rpc.eclipse.xyz",
|
|
47
62
|
explorerUrl: "https://explorer.eclipse.xyz/", // e.g. Solana Explorer
|
|
48
63
|
nativeToken: {
|
|
@@ -54,18 +69,19 @@ export const DefaultChains: ChainWalletConfig[] = [{
|
|
|
54
69
|
logoUrl: "https://raw.githubusercontent.com/hyperlane-xyz/hyperlane-registry/a86c3b432b6f9ad7272ae09859f20eb3ade3bd6e/deployments/warp_routes/ES/logo.svg",
|
|
55
70
|
vmType: "SVM"
|
|
56
71
|
},
|
|
72
|
+
|
|
57
73
|
{
|
|
58
|
-
chainId:
|
|
59
|
-
name:
|
|
60
|
-
rpcUrl:
|
|
61
|
-
explorerUrl:
|
|
74
|
+
chainId: base.id,
|
|
75
|
+
name: base.name,
|
|
76
|
+
rpcUrl: base.rpcUrls.default.http[0],
|
|
77
|
+
explorerUrl: base.blockExplorers?.default.url || "",
|
|
62
78
|
nativeToken: {
|
|
63
|
-
name:
|
|
64
|
-
symbol:
|
|
65
|
-
decimals:
|
|
79
|
+
name: base.nativeCurrency.name,
|
|
80
|
+
symbol: base.nativeCurrency.symbol,
|
|
81
|
+
decimals: base.nativeCurrency.decimals,
|
|
66
82
|
},
|
|
67
|
-
testnet:
|
|
68
|
-
logoUrl: "https://
|
|
83
|
+
testnet: base.testnet,
|
|
84
|
+
logoUrl: "https://avatars.githubusercontent.com/u/108554348?s=200&v=4",
|
|
69
85
|
vmType: "EVM"
|
|
70
86
|
}
|
|
71
87
|
|
package/utils/evm/evm.ts
CHANGED
|
@@ -79,6 +79,7 @@ export class EVMVM extends VM<string, string, JsonRpcProvider> {
|
|
|
79
79
|
}
|
|
80
80
|
|
|
81
81
|
getTokenInfo = getTokenInfo
|
|
82
|
+
static getTokenInfo = getTokenInfo
|
|
82
83
|
generatePrivateKey(index: number, seed?: string, mnemonic?: string, derivationPath = this.derivationPath) {
|
|
83
84
|
let _seed: string
|
|
84
85
|
|
|
@@ -114,12 +115,14 @@ export class EVMVM extends VM<string, string, JsonRpcProvider> {
|
|
|
114
115
|
|
|
115
116
|
export class EVMChainWallet extends ChainWallet<string, string, JsonRpcProvider> {
|
|
116
117
|
client: PublicClient
|
|
118
|
+
wallet: Wallet
|
|
117
119
|
constructor(config: ChainWalletConfig, privateKey: string, index: number) {
|
|
118
120
|
super(config, privateKey, index);
|
|
119
|
-
|
|
121
|
+
this.connection = new JsonRpcProvider(config.rpcUrl)
|
|
122
|
+
const wallet = new Wallet(privateKey, this.connection);
|
|
123
|
+
this.wallet = wallet
|
|
120
124
|
this.address = wallet.address;
|
|
121
125
|
this.privateKey = privateKey;
|
|
122
|
-
this.connection = new JsonRpcProvider(config.rpcUrl)
|
|
123
126
|
|
|
124
127
|
//client for viem
|
|
125
128
|
this.client = createPublicClient(
|
|
@@ -172,6 +175,10 @@ export class EVMChainWallet extends ChainWallet<string, string, JsonRpcProvider>
|
|
|
172
175
|
return await EVMVM.getTokenBalance(this.address, tokenAddress, this.connection!)
|
|
173
176
|
}
|
|
174
177
|
|
|
178
|
+
async getTokenInfo(tokenAddress: string) {
|
|
179
|
+
return await EVMVM.getTokenInfo(tokenAddress, this.connection!)
|
|
180
|
+
}
|
|
181
|
+
|
|
175
182
|
async discoverToken(): Promise<UserTokenBalance<string>[]> {
|
|
176
183
|
// Implement token discovery logic here
|
|
177
184
|
return await discoverTokens(this.address, this.config)
|