@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/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(evmChainConfig, evmPrivateKey2, 0);
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 = (0, viem_1.createPublicClient)({
78
- chain: chains_1.base,
79
- transport: (0, viem_1.http)(chains_1.base.rpcUrls.default.http[0]),
80
- });
81
- (0, transactionParsing_1.getEVMTransactionHistory)(client, "0x9C82CE0e125F61AdE50BC0c19638F6Ba93d71D5e", {
82
- startBlock: BigInt(37427020)
83
- // before: "0xabc..."
84
- }).then((history) => {
85
- console.log("EVM Transaction History:", history);
86
- }).catch((error) => {
87
- console.error("Error fetching EVM transaction history:", error);
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;AAEvC,iEAAoE;AACpE,+BAA8D;AAC9D,wCAA+C;AAC/C,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;AAE3F,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;AAGD,qEAAqE;AACrE,MAAM,MAAM,GAAG,IAAI,oBAAc,CAAC,cAAc,EAAE,cAAc,EAAE,CAAC,CAAC,CAAA;AACpE,mCAAmC;AAEnC,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,MAAM,MAAM,GAAG,IAAA,yBAAkB,EAAC;IAC9B,KAAK,EAAE,aAAI;IACX,SAAS,EAAE,IAAA,WAAI,EAAC,aAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;CAChD,CAAC,CAAA;AAEF,IAAA,6CAAwB,EAAC,MAAsB,EAAE,4CAA4C,EAAE;IAC3F,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC5B,qBAAqB;CACxB,CAAC,CAAC,IAAI,CAAC,CAAC,OAAY,EAAE,EAAE;IACrB,OAAO,CAAC,GAAG,CAAC,0BAA0B,EAAE,OAAO,CAAC,CAAC;AACrD,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAU,EAAE,EAAE;IACpB,OAAO,CAAC,KAAK,CAAC,yCAAyC,EAAE,KAAK,CAAC,CAAC;AACpE,CAAC,CAAC,CAAC"}
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.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/js": "^0.20.1",
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",
@@ -1,4 +1,6 @@
1
- import { Balance, ChainWalletConfig, NFTInfo, TokenInfo, TransactionResult } from "./types";
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 Mainnet",
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://cryptologos.cc/logos/solana-sol-logo.png?v=040",
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 Mainnet",
20
- rpcUrl: "https://eth-mainnet.g.alchemy.com/v2/pwvhaDUZ4qZ8Oy2QcyWfCQa_avpkVPnL",
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://cryptologos.cc/logos/ethereum-eth-logo.png?v=040",
43
+ logoUrl: "https://etherscan.io/images/svg/brands/ethereum-original-light.svg",
29
44
  vmType: "EVM"
30
45
  }, {
31
46
  chainId: 56,
32
- name: "BNB Smart Chain Mainnet",
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://cryptologos.cc/logos/bnb-bnb-logo.png?v=040",
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 Mainnet",
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: 16661,
59
- name: "0G Mainnet",
60
- rpcUrl: "https://evmrpc.0g.ai",
61
- explorerUrl: "https://chainscan.0g.ai/", // e.g. Solana Explorer
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: "OG Mainnet",
64
- symbol: "0G",
65
- decimals: 18,
79
+ name: base.nativeCurrency.name,
80
+ symbol: base.nativeCurrency.symbol,
81
+ decimals: base.nativeCurrency.decimals,
66
82
  },
67
- testnet: false,
68
- logoUrl: "https://chainscan.0g.ai/static/media/zg-logo-new.b22d59dabf457524325ca81c29a4e055.svg",
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
- const wallet = new Wallet(privateKey);
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)