@deserialize/multi-vm-wallet 1.2.293 → 1.3.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.
Files changed (106) hide show
  1. package/.claude/settings.local.json +12 -0
  2. package/SMART_WALLET_GUIDE.md +746 -0
  3. package/SMART_WALLET_IMPLEMENTATION.md +460 -0
  4. package/dist/IChainWallet.d.ts +4 -3
  5. package/dist/IChainWallet.js +5 -0
  6. package/dist/IChainWallet.js.map +1 -1
  7. package/dist/constant.js +17 -4
  8. package/dist/constant.js.map +1 -1
  9. package/dist/evm/SMART_WALLET_EXAMPLES.d.ts +20 -0
  10. package/dist/evm/SMART_WALLET_EXAMPLES.js +451 -0
  11. package/dist/evm/SMART_WALLET_EXAMPLES.js.map +1 -0
  12. package/dist/evm/aa-service/index.d.ts +16 -0
  13. package/dist/evm/aa-service/index.js +69 -0
  14. package/dist/evm/aa-service/index.js.map +1 -0
  15. package/dist/evm/aa-service/lib/account-adapter.d.ts +26 -0
  16. package/dist/evm/aa-service/lib/account-adapter.js +53 -0
  17. package/dist/evm/aa-service/lib/account-adapter.js.map +1 -0
  18. package/dist/evm/aa-service/lib/kernel-account.d.ts +91 -0
  19. package/dist/evm/aa-service/lib/kernel-account.js +251 -0
  20. package/dist/evm/aa-service/lib/kernel-account.js.map +1 -0
  21. package/dist/evm/aa-service/lib/kernel-modules.d.ts +240 -0
  22. package/dist/evm/aa-service/lib/kernel-modules.js +409 -0
  23. package/dist/evm/aa-service/lib/kernel-modules.js.map +1 -0
  24. package/dist/evm/aa-service/lib/session-keys.d.ts +170 -0
  25. package/dist/evm/aa-service/lib/session-keys.js +297 -0
  26. package/dist/evm/aa-service/lib/session-keys.js.map +1 -0
  27. package/dist/evm/aa-service/lib/type.d.ts +167 -0
  28. package/dist/evm/aa-service/lib/type.js +43 -0
  29. package/dist/evm/aa-service/lib/type.js.map +1 -0
  30. package/dist/evm/aa-service/services/account-abstraction.d.ts +614 -0
  31. package/dist/evm/aa-service/services/account-abstraction.js +754 -0
  32. package/dist/evm/aa-service/services/account-abstraction.js.map +1 -0
  33. package/dist/evm/aa-service/services/bundler.d.ts +29 -0
  34. package/dist/evm/aa-service/services/bundler.js +168 -0
  35. package/dist/evm/aa-service/services/bundler.js.map +1 -0
  36. package/dist/evm/evm.d.ts +68 -3
  37. package/dist/evm/evm.js +223 -8
  38. package/dist/evm/evm.js.map +1 -1
  39. package/dist/evm/index.d.ts +1 -0
  40. package/dist/evm/index.js +3 -0
  41. package/dist/evm/index.js.map +1 -1
  42. package/dist/evm/smartWallet.d.ts +265 -0
  43. package/dist/evm/smartWallet.js +675 -0
  44. package/dist/evm/smartWallet.js.map +1 -0
  45. package/dist/evm/smartWallet.types.d.ts +10 -0
  46. package/dist/evm/smartWallet.types.js +16 -0
  47. package/dist/evm/smartWallet.types.js.map +1 -0
  48. package/dist/evm/transaction.utils.d.ts +10 -10
  49. package/dist/evm/transaction.utils.js +12 -8
  50. package/dist/evm/transaction.utils.js.map +1 -1
  51. package/dist/evm/transactionParsing.js +123 -27
  52. package/dist/evm/transactionParsing.js.map +1 -1
  53. package/dist/evm/utils.d.ts +12 -1
  54. package/dist/evm/utils.js +138 -2
  55. package/dist/evm/utils.js.map +1 -1
  56. package/dist/helpers/index.d.ts +4 -1
  57. package/dist/helpers/index.js +25 -0
  58. package/dist/helpers/index.js.map +1 -1
  59. package/dist/helpers/routeScan.d.ts +191 -0
  60. package/dist/helpers/routeScan.js +114 -0
  61. package/dist/helpers/routeScan.js.map +1 -0
  62. package/dist/index.d.ts +0 -2
  63. package/dist/index.js +0 -2
  64. package/dist/index.js.map +1 -1
  65. package/dist/svm/svm.d.ts +6 -4
  66. package/dist/svm/svm.js +33 -19
  67. package/dist/svm/svm.js.map +1 -1
  68. package/dist/svm/transactionSender.js +2 -2
  69. package/dist/svm/transactionSender.js.map +1 -1
  70. package/dist/svm/utils.d.ts +20 -4
  71. package/dist/svm/utils.js +232 -12
  72. package/dist/svm/utils.js.map +1 -1
  73. package/dist/test.d.ts +1 -6
  74. package/dist/test.js +47 -16
  75. package/dist/test.js.map +1 -1
  76. package/dist/types.d.ts +169 -2
  77. package/dist/types.js.map +1 -1
  78. package/dist/vm.js +9 -7
  79. package/dist/vm.js.map +1 -1
  80. package/package.json +2 -2
  81. package/tsconfig.json +4 -3
  82. package/utils/IChainWallet.ts +4 -3
  83. package/utils/constant.ts +18 -4
  84. package/utils/evm/SMART_WALLET_EXAMPLES.ts.bak +591 -0
  85. package/utils/evm/aa-service/index.ts +85 -0
  86. package/utils/evm/aa-service/lib/account-adapter.ts +60 -0
  87. package/utils/evm/aa-service/lib/kernel-account.ts +367 -0
  88. package/utils/evm/aa-service/lib/kernel-modules.ts +598 -0
  89. package/utils/evm/aa-service/lib/session-keys.ts +389 -0
  90. package/utils/evm/aa-service/lib/type.ts +236 -0
  91. package/utils/evm/aa-service/services/account-abstraction.ts +1015 -0
  92. package/utils/evm/aa-service/services/bundler.ts +217 -0
  93. package/utils/evm/evm.ts +281 -13
  94. package/utils/evm/index.ts +5 -1
  95. package/utils/evm/smartWallet.ts +797 -0
  96. package/utils/evm/smartWallet.types.ts +33 -0
  97. package/utils/evm/transaction.utils.ts +12 -10
  98. package/utils/evm/transactionParsing.ts +153 -63
  99. package/utils/evm/utils.ts +161 -2
  100. package/utils/helpers/index.ts +13 -1
  101. package/utils/helpers/routeScan.ts +397 -0
  102. package/utils/index.ts +0 -2
  103. package/utils/svm/svm.ts +61 -14
  104. package/utils/svm/utils.ts +317 -14
  105. package/utils/test.ts +54 -18
  106. package/utils/types.ts +223 -2
package/utils/types.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  import BN from "bn.js"
2
2
  import { EVMVM } from "./evm";
3
3
  import { SVMVM } from "./svm";
4
+ import type { EntryPointVersion } from "./evm/aa-service/lib/type";
4
5
 
5
6
  export interface ChainWalletConfig {
6
7
  chainId: number;
@@ -13,10 +14,27 @@ export interface ChainWalletConfig {
13
14
  symbol: string;
14
15
  decimals: number;
15
16
  };
16
- logoUrl?: string
17
+ logoUrl: string
17
18
  confirmationNo?: number
18
19
  testnet?: boolean;
19
- vmType?: vmTypes
20
+ vmType: vmTypes
21
+
22
+ // Smart wallet configuration (optional) only for EVM chains and 7702
23
+
24
+ aaSupport?: {
25
+ enabled: boolean;
26
+ entryPoints: {
27
+ address: string;
28
+ version: EntryPointVersion;
29
+ }[]
30
+ bundlerUrl: string;
31
+ paymasterUrl: string;
32
+ kernelImplementations: {
33
+ address: string;
34
+ version: number;
35
+ }[];
36
+ };
37
+
20
38
  }
21
39
 
22
40
  export interface TokenInfo {
@@ -24,6 +42,15 @@ export interface TokenInfo {
24
42
  name: string;
25
43
  symbol: string;
26
44
  decimals: number;
45
+ logoUrl?: string;
46
+ description?: string;
47
+ website?: string;
48
+ social?: {
49
+ twitter?: string;
50
+ discord?: string;
51
+ telegram?: string;
52
+ [key: string]: string | undefined;
53
+ };
27
54
  }
28
55
 
29
56
  export interface UserTokenBalance<AddressType> extends TokenInfo {
@@ -39,12 +66,206 @@ export interface NFTInfo {
39
66
  image?: string;
40
67
  }
41
68
 
69
+ // Unified NFT interface for both EVM and SVM chains
70
+ export interface NFT {
71
+ // Unique identifier
72
+ id: string; // For Solana: mint address, For EVM: contractAddress:tokenId
73
+
74
+ // Basic metadata
75
+ name: string;
76
+ symbol?: string;
77
+ description: string;
78
+ image?: string;
79
+ uri: string; // Metadata URI
80
+
81
+ // Collection/Contract info
82
+ collection: {
83
+ address: string;
84
+ name: string;
85
+ verified?: boolean;
86
+ };
87
+
88
+ // Chain-specific data
89
+ chainType: 'SVM' | 'EVM';
90
+
91
+ // Ownership
92
+ balance?: string; // Quantity owned (useful for ERC1155)
93
+
94
+ // Optional metadata
95
+ attributes?: Array<{
96
+ trait_type: string;
97
+ value: string | number;
98
+ display_type?: string;
99
+ }>;
100
+
101
+ // Creators/Royalties (mainly for Solana)
102
+ creators?: Array<{
103
+ address: string;
104
+ verified: boolean;
105
+ share: number;
106
+ }>;
107
+
108
+ // Additional metadata
109
+ sellerFeeBasisPoints?: number; // Royalty percentage
110
+ tokenStandard?: string; // e.g., "ERC721", "ERC1155", "NonFungible", etc.
111
+
112
+ // Spam detection (mainly for EVM)
113
+ isSpam?: boolean;
114
+
115
+ // Raw chain-specific data for advanced use cases
116
+ raw?: {
117
+ svm?: SolanaNFT;
118
+ evm?: EVMNFT;
119
+ };
120
+ }
121
+
122
+ // NFT Collection interface for both EVM and SVM chains
123
+ export interface NFTCollection {
124
+ // Collection identifier
125
+ address: string;
126
+
127
+ // Collection metadata
128
+ name: string;
129
+ symbol?: string;
130
+ description?: string;
131
+ image?: string;
132
+
133
+ // Verification status
134
+ verified?: boolean;
135
+
136
+ // Chain-specific data
137
+ chainType: 'SVM' | 'EVM';
138
+
139
+ // NFTs owned by the user in this collection
140
+ nfts: NFT[];
141
+
142
+ // Collection statistics
143
+ totalOwned: number; // Number of NFTs owned by user in this collection
144
+
145
+ // Collection-level metadata (for EVM)
146
+ contractMetadata?: {
147
+ tokenType?: string; // ERC721, ERC1155, etc.
148
+ totalSupply?: string;
149
+ contractDeployer?: string;
150
+ deployedBlockNumber?: number;
151
+ };
152
+
153
+ // Collection-level metadata (for SVM)
154
+ collectionMetadata?: {
155
+ updateAuthority?: string;
156
+ sellerFeeBasisPoints?: number;
157
+ creators?: Array<{
158
+ address: string;
159
+ verified: boolean;
160
+ share: number;
161
+ }>;
162
+ };
163
+
164
+ // OpenSea metadata (for EVM)
165
+ openSeaMetadata?: {
166
+ collectionSlug?: string;
167
+ floorPrice?: number;
168
+ safelistRequestStatus?: string;
169
+ };
170
+ }
171
+
172
+ export interface SolanaNFT {
173
+ mint: string;
174
+ name: string;
175
+ symbol: string;
176
+ uri: string;
177
+ updateAuthority: string;
178
+ sellerFeeBasisPoints: number;
179
+ creators?: Array<{
180
+ address: string;
181
+ verified: boolean;
182
+ share: number;
183
+ }>;
184
+ }
185
+
186
+ export interface EVMNFTContract {
187
+ address: string;
188
+ name: string;
189
+ symbol: string;
190
+ totalSupply: string;
191
+ tokenType: string;
192
+ contractDeployer: string;
193
+ deployedBlockNumber: number;
194
+ isSpam: boolean;
195
+ spamClassifications?: string[];
196
+ }
197
+
198
+ export interface EVMNFTOpenSeaMetadata {
199
+ collectionName: string;
200
+ collectionSlug: string;
201
+ floorPrice?: number;
202
+ safelistRequestStatus: string;
203
+ imageUrl?: string;
204
+ lastIngestedAt: string;
205
+ }
206
+
207
+ export interface EVMNFTImage {
208
+ cachedUrl?: string;
209
+ thumbnailUrl?: string;
210
+ pngUrl?: string;
211
+ contentType?: string;
212
+ size?: number;
213
+ originalUrl?: string;
214
+ }
215
+
216
+ export interface EVMNFTAttribute {
217
+ trait_type: string;
218
+ value: string | number;
219
+ display_type?: string;
220
+ }
221
+
222
+ export interface EVMNFTRawMetadata {
223
+ tokenUri?: string;
224
+ metadata?: {
225
+ name?: string;
226
+ description?: string;
227
+ image?: string;
228
+ attributes?: EVMNFTAttribute[];
229
+ [key: string]: any;
230
+ };
231
+ }
232
+
233
+ export interface EVMNFTMint {
234
+ mintAddress?: string;
235
+ blockNumber?: number;
236
+ timestamp?: string;
237
+ transactionHash?: string;
238
+ }
239
+
240
+ export interface EVMNFT {
241
+ contract: EVMNFTContract;
242
+ openSeaMetadata?: EVMNFTOpenSeaMetadata;
243
+ tokenId: string;
244
+ tokenType: string;
245
+ name: string;
246
+ description: string;
247
+ balance: string;
248
+ image?: EVMNFTImage;
249
+ raw?: EVMNFTRawMetadata;
250
+ mint?: EVMNFTMint;
251
+ timeLastUpdated: string;
252
+ acquiredAt?: string;
253
+ }
254
+
255
+ export interface EVMNFTResponse {
256
+ data: EVMNFT[];
257
+ }
258
+
42
259
  export interface TransactionResult {
43
260
  hash: string;
44
261
  success: boolean;
45
262
  error?: string;
46
263
  }
47
264
 
265
+ export interface FeePayerOptions {
266
+ privateKey: string; // Private key of the wallet paying fees
267
+ }
268
+
48
269
  export interface Balance {
49
270
  balance: BN;
50
271
  formatted: number;