@lukso/transaction-decoder 1.0.1-dev.0f1bea5

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 (110) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +486 -0
  3. package/dist/browser.cjs +6912 -0
  4. package/dist/browser.cjs.map +1 -0
  5. package/dist/browser.d.cts +6 -0
  6. package/dist/browser.d.ts +6 -0
  7. package/dist/browser.js +131 -0
  8. package/dist/browser.js.map +1 -0
  9. package/dist/cdn/transaction-decoder.global.js +296 -0
  10. package/dist/cdn/transaction-decoder.global.js.map +1 -0
  11. package/dist/chunk-GGBHTWJL.js +437 -0
  12. package/dist/chunk-GGBHTWJL.js.map +1 -0
  13. package/dist/chunk-GXZOF3QY.js +839 -0
  14. package/dist/chunk-GXZOF3QY.js.map +1 -0
  15. package/dist/chunk-LJ6ES5XF.js +776 -0
  16. package/dist/chunk-LJ6ES5XF.js.map +1 -0
  17. package/dist/chunk-XVHJWV5U.js +4925 -0
  18. package/dist/chunk-XVHJWV5U.js.map +1 -0
  19. package/dist/data.cjs +5518 -0
  20. package/dist/data.cjs.map +1 -0
  21. package/dist/data.d.cts +43 -0
  22. package/dist/data.d.ts +43 -0
  23. package/dist/data.js +55 -0
  24. package/dist/data.js.map +1 -0
  25. package/dist/index-BzXh7poJ.d.cts +524 -0
  26. package/dist/index-BzXh7poJ.d.ts +524 -0
  27. package/dist/index.cjs +6912 -0
  28. package/dist/index.cjs.map +1 -0
  29. package/dist/index.d.cts +756 -0
  30. package/dist/index.d.ts +756 -0
  31. package/dist/index.js +131 -0
  32. package/dist/index.js.map +1 -0
  33. package/dist/server.cjs +5644 -0
  34. package/dist/server.cjs.map +1 -0
  35. package/dist/server.d.cts +217 -0
  36. package/dist/server.d.ts +217 -0
  37. package/dist/server.js +644 -0
  38. package/dist/server.js.map +1 -0
  39. package/dist/utils-CBAkjQh3.d.cts +108 -0
  40. package/dist/utils-xT9-km0r.d.ts +108 -0
  41. package/package.json +101 -0
  42. package/src/browser.ts +13 -0
  43. package/src/client/resolveAddresses.ts +157 -0
  44. package/src/core/addressCollector.ts +153 -0
  45. package/src/core/addressResolver.ts +135 -0
  46. package/src/core/dataModel.ts +888 -0
  47. package/src/core/instance.ts +33 -0
  48. package/src/core/integrateDecoder.ts +325 -0
  49. package/src/data.ts +70 -0
  50. package/src/decoder/GENERATOR_PROPOSAL.md +182 -0
  51. package/src/decoder/THREE_PHASE_EXAMPLE.md +108 -0
  52. package/src/decoder/aggregation.ts +218 -0
  53. package/src/decoder/browserCache.ts +237 -0
  54. package/src/decoder/cache/README.md +126 -0
  55. package/src/decoder/cache/index.ts +44 -0
  56. package/src/decoder/cache.ts +139 -0
  57. package/src/decoder/constants.ts +125 -0
  58. package/src/decoder/decodeTransaction.ts +292 -0
  59. package/src/decoder/errors.ts +95 -0
  60. package/src/decoder/events.ts +192 -0
  61. package/src/decoder/functionSignature.ts +344 -0
  62. package/src/decoder/getDataFromExternalSources.ts +248 -0
  63. package/src/decoder/graphqlWS.ts +22 -0
  64. package/src/decoder/interfaces.ts +185 -0
  65. package/src/decoder/keyValue.ts +5 -0
  66. package/src/decoder/kvCache.ts +241 -0
  67. package/src/decoder/lruCache.ts +184 -0
  68. package/src/decoder/lsp7Mint.test.ts +179 -0
  69. package/src/decoder/lsp7TransferBatch.test.ts +105 -0
  70. package/src/decoder/plugins/RegistryAbi.ts +562 -0
  71. package/src/decoder/plugins/enhanceBurntPix.ts +132 -0
  72. package/src/decoder/plugins/enhanceGraffiti.ts +70 -0
  73. package/src/decoder/plugins/enhanceLSP0ERC725Account.ts +179 -0
  74. package/src/decoder/plugins/enhanceLSP26FollowerSystem.ts +88 -0
  75. package/src/decoder/plugins/enhanceLSP6KeyManager.ts +231 -0
  76. package/src/decoder/plugins/enhanceLSP7DigitalAsset.ts +165 -0
  77. package/src/decoder/plugins/enhanceLSP8IdentifiableDigitalAsset.ts +170 -0
  78. package/src/decoder/plugins/enhanceLSP9Vault.ts +57 -0
  79. package/src/decoder/plugins/enhanceRetrieveAbi.ts +85 -0
  80. package/src/decoder/plugins/enhanceSetData.ts +135 -0
  81. package/src/decoder/plugins/index.ts +99 -0
  82. package/src/decoder/plugins/schemaDefault.ts +318 -0
  83. package/src/decoder/plugins/standardPlugin.ts +202 -0
  84. package/src/decoder/registry.ts +322 -0
  85. package/src/decoder/singleGQL.ts +293 -0
  86. package/src/decoder/transaction.ts +198 -0
  87. package/src/decoder/types.ts +465 -0
  88. package/src/decoder/utils.ts +212 -0
  89. package/src/example/usage.ts +172 -0
  90. package/src/index.ts +174 -0
  91. package/src/server/addressResolver.ts +68 -0
  92. package/src/server/caches.ts +209 -0
  93. package/src/server/decodeTransactionSync.ts +156 -0
  94. package/src/server/decodeTransactionsBatch.ts +207 -0
  95. package/src/server/finishDecoding.ts +116 -0
  96. package/src/server/index.ts +81 -0
  97. package/src/server/lsp23Resolver.test.ts +46 -0
  98. package/src/server/lsp23Resolver.ts +419 -0
  99. package/src/server/types.ts +168 -0
  100. package/src/server.ts +22 -0
  101. package/src/shared/addressResolver.ts +651 -0
  102. package/src/shared/cache.ts +144 -0
  103. package/src/shared/constants.ts +21 -0
  104. package/src/stubs/tty.ts +13 -0
  105. package/src/stubs/util.ts +42 -0
  106. package/src/types/index.ts +154 -0
  107. package/src/types/provider.ts +46 -0
  108. package/src/umd.ts +13 -0
  109. package/src/utils/debug.ts +49 -0
  110. package/src/utils/json-bigint.ts +47 -0
@@ -0,0 +1,217 @@
1
+ import { Chain, Abi } from 'viem';
2
+ import { b as DecoderResult, c as DataKey, E as EnhancedInfo, e as Info } from './index-BzXh7poJ.cjs';
3
+ import '@preact/signals-core';
4
+ import '@erc725/erc725.js';
5
+
6
+ /**
7
+ * Options for server-side decoding
8
+ */
9
+ interface ServerDecoderOptions {
10
+ /**
11
+ * Total time budget in milliseconds
12
+ * Default: 800ms
13
+ */
14
+ timeoutMs?: number;
15
+ /**
16
+ * Whether to enable Phase 2 (ABI fetching and enhancement)
17
+ * Default: true
18
+ */
19
+ enableEnhancement?: boolean;
20
+ /**
21
+ * Chain to decode for
22
+ */
23
+ chain: Chain;
24
+ }
25
+ /**
26
+ * Configuration for server decoder instance
27
+ */
28
+ interface ServerDecoderConfig {
29
+ /**
30
+ * GraphQL endpoint for address resolution
31
+ */
32
+ graphqlEndpoint: string;
33
+ /**
34
+ * Default chain (can be overridden per request)
35
+ */
36
+ defaultChain: Chain;
37
+ /**
38
+ * Size of transaction result cache
39
+ * Default: 10000
40
+ */
41
+ transactionCacheSize?: number;
42
+ /**
43
+ * Size of address metadata cache
44
+ * Default: 50000
45
+ */
46
+ addressCacheSize?: number;
47
+ /**
48
+ * Size of contract ABI cache
49
+ * Default: 5000
50
+ */
51
+ abiCacheSize?: number;
52
+ /**
53
+ * Size of schema decode cache
54
+ * Default: 10000
55
+ */
56
+ schemaCacheSize?: number;
57
+ /**
58
+ * Default timeout for decoding operations
59
+ * Default: 800ms
60
+ */
61
+ defaultTimeout?: number;
62
+ }
63
+ /**
64
+ * Cache statistics
65
+ */
66
+ interface CacheStats {
67
+ transactions: {
68
+ size: number;
69
+ maxSize: number;
70
+ hits: number;
71
+ misses: number;
72
+ hitRate: number;
73
+ };
74
+ addresses: {
75
+ size: number;
76
+ maxSize: number;
77
+ hits: number;
78
+ misses: number;
79
+ hitRate: number;
80
+ };
81
+ abis: {
82
+ size: number;
83
+ maxSize: number;
84
+ hits: number;
85
+ misses: number;
86
+ hitRate: number;
87
+ };
88
+ schemas: {
89
+ size: number;
90
+ maxSize: number;
91
+ hits: number;
92
+ misses: number;
93
+ hitRate: number;
94
+ };
95
+ }
96
+ /**
97
+ * Batch decode result
98
+ */
99
+ interface BatchDecodeResult {
100
+ /**
101
+ * Array of decoded results
102
+ */
103
+ results: DecoderResult[];
104
+ }
105
+ /**
106
+ * Server decoder instance interface
107
+ */
108
+ interface ServerDecoder {
109
+ /**
110
+ * Decode a single transaction
111
+ */
112
+ decodeTransaction: (transaction: DecoderResult, options?: Partial<ServerDecoderOptions>) => Promise<DecoderResult>;
113
+ /**
114
+ * Decode multiple transactions with batching
115
+ * Returns results with global addressIdentities
116
+ */
117
+ decodeTransactionsBatch: (transactions: DecoderResult[], options?: Partial<ServerDecoderOptions>) => Promise<BatchDecodeResult>;
118
+ /**
119
+ * Finish decoding a transaction (enhance and resolve addresses)
120
+ * This will update the cache with the fully decoded result
121
+ */
122
+ finishDecoding: (transaction: DecoderResult, options?: Partial<ServerDecoderOptions>) => Promise<DecoderResult>;
123
+ /**
124
+ * Clear all caches
125
+ */
126
+ clearCaches: () => void;
127
+ /**
128
+ * Get cache statistics
129
+ */
130
+ getCacheStats: () => CacheStats;
131
+ /**
132
+ * Warm up address cache with specific addresses
133
+ */
134
+ warmAddressCache: (addresses: DataKey[]) => Promise<void>;
135
+ /**
136
+ * Resolve addresses and return their metadata
137
+ * Uses cache when available
138
+ */
139
+ resolveAddresses: (addresses: DataKey[], timeoutMs?: number) => Promise<Map<DataKey, EnhancedInfo>>;
140
+ }
141
+
142
+ /**
143
+ * Multi-level caching system for server-side decoder
144
+ */
145
+ declare class ServerDecoderCaches {
146
+ private transactionCache;
147
+ private transactionStats;
148
+ private addressCache;
149
+ private addressStats;
150
+ private abiCache;
151
+ private abiStats;
152
+ private schemaCache;
153
+ private schemaStats;
154
+ constructor(options?: {
155
+ transactionCacheSize?: number;
156
+ addressCacheSize?: number;
157
+ abiCacheSize?: number;
158
+ schemaCacheSize?: number;
159
+ });
160
+ /**
161
+ * Get cache key for a data key (address or address:tokenId)
162
+ */
163
+ private getDataKeyCacheKey;
164
+ getTransaction(hash: string): DecoderResult | undefined;
165
+ setTransaction(hash: string, result: DecoderResult): void;
166
+ getAddress(key: DataKey): EnhancedInfo | undefined;
167
+ setAddress(key: DataKey, data: EnhancedInfo): void;
168
+ hasAddress(key: DataKey): boolean;
169
+ getAddresses(keys: DataKey[]): Map<DataKey, EnhancedInfo>;
170
+ getAbi(address: string): Abi | undefined;
171
+ setAbi(address: string, abi: Abi): void;
172
+ hasAbi(address: string): boolean;
173
+ getSchema(key: string, value: string): Info | undefined;
174
+ setSchema(key: string, value: string, info: Info): void;
175
+ clear(): void;
176
+ getStats(): CacheStats;
177
+ }
178
+
179
+ /**
180
+ * Server-side address resolver with caching
181
+ */
182
+ declare class ServerAddressResolver {
183
+ private graphqlEndpoint;
184
+ private chain;
185
+ private caches;
186
+ private cacheAdapter;
187
+ constructor(graphqlEndpoint: string, chain: Chain, caches: ServerDecoderCaches);
188
+ /**
189
+ * Resolve addresses, using cache when possible
190
+ */
191
+ resolveAddresses(addresses: readonly DataKey[]): Promise<Map<DataKey, EnhancedInfo>>;
192
+ /**
193
+ * Resolve addresses with timeout
194
+ */
195
+ resolveAddressesWithTimeout(addresses: DataKey[], timeoutMs: number): Promise<Map<DataKey, EnhancedInfo>>;
196
+ /**
197
+ * Warm the cache with specific addresses
198
+ */
199
+ warmCache(addresses: DataKey[]): Promise<void>;
200
+ }
201
+
202
+ /**
203
+ * Decode a single transaction with time-bounded enhancement
204
+ */
205
+ declare function decodeTransactionSync(transaction: DecoderResult, options: ServerDecoderOptions, caches: ServerDecoderCaches): Promise<DecoderResult>;
206
+
207
+ /**
208
+ * Decode multiple transactions with batching and time budget
209
+ */
210
+ declare function decodeTransactionsBatch(transactions: DecoderResult[], options: ServerDecoderOptions, caches: ServerDecoderCaches): Promise<BatchDecodeResult>;
211
+
212
+ /**
213
+ * Create a server-optimized decoder instance
214
+ */
215
+ declare function createServerDecoder(config: ServerDecoderConfig): ServerDecoder;
216
+
217
+ export { type CacheStats, ServerAddressResolver, type ServerDecoder, ServerDecoderCaches, type ServerDecoderConfig, type ServerDecoderOptions, createServerDecoder, decodeTransactionSync, decodeTransactionsBatch };
@@ -0,0 +1,217 @@
1
+ import { Chain, Abi } from 'viem';
2
+ import { b as DecoderResult, c as DataKey, E as EnhancedInfo, e as Info } from './index-BzXh7poJ.js';
3
+ import '@preact/signals-core';
4
+ import '@erc725/erc725.js';
5
+
6
+ /**
7
+ * Options for server-side decoding
8
+ */
9
+ interface ServerDecoderOptions {
10
+ /**
11
+ * Total time budget in milliseconds
12
+ * Default: 800ms
13
+ */
14
+ timeoutMs?: number;
15
+ /**
16
+ * Whether to enable Phase 2 (ABI fetching and enhancement)
17
+ * Default: true
18
+ */
19
+ enableEnhancement?: boolean;
20
+ /**
21
+ * Chain to decode for
22
+ */
23
+ chain: Chain;
24
+ }
25
+ /**
26
+ * Configuration for server decoder instance
27
+ */
28
+ interface ServerDecoderConfig {
29
+ /**
30
+ * GraphQL endpoint for address resolution
31
+ */
32
+ graphqlEndpoint: string;
33
+ /**
34
+ * Default chain (can be overridden per request)
35
+ */
36
+ defaultChain: Chain;
37
+ /**
38
+ * Size of transaction result cache
39
+ * Default: 10000
40
+ */
41
+ transactionCacheSize?: number;
42
+ /**
43
+ * Size of address metadata cache
44
+ * Default: 50000
45
+ */
46
+ addressCacheSize?: number;
47
+ /**
48
+ * Size of contract ABI cache
49
+ * Default: 5000
50
+ */
51
+ abiCacheSize?: number;
52
+ /**
53
+ * Size of schema decode cache
54
+ * Default: 10000
55
+ */
56
+ schemaCacheSize?: number;
57
+ /**
58
+ * Default timeout for decoding operations
59
+ * Default: 800ms
60
+ */
61
+ defaultTimeout?: number;
62
+ }
63
+ /**
64
+ * Cache statistics
65
+ */
66
+ interface CacheStats {
67
+ transactions: {
68
+ size: number;
69
+ maxSize: number;
70
+ hits: number;
71
+ misses: number;
72
+ hitRate: number;
73
+ };
74
+ addresses: {
75
+ size: number;
76
+ maxSize: number;
77
+ hits: number;
78
+ misses: number;
79
+ hitRate: number;
80
+ };
81
+ abis: {
82
+ size: number;
83
+ maxSize: number;
84
+ hits: number;
85
+ misses: number;
86
+ hitRate: number;
87
+ };
88
+ schemas: {
89
+ size: number;
90
+ maxSize: number;
91
+ hits: number;
92
+ misses: number;
93
+ hitRate: number;
94
+ };
95
+ }
96
+ /**
97
+ * Batch decode result
98
+ */
99
+ interface BatchDecodeResult {
100
+ /**
101
+ * Array of decoded results
102
+ */
103
+ results: DecoderResult[];
104
+ }
105
+ /**
106
+ * Server decoder instance interface
107
+ */
108
+ interface ServerDecoder {
109
+ /**
110
+ * Decode a single transaction
111
+ */
112
+ decodeTransaction: (transaction: DecoderResult, options?: Partial<ServerDecoderOptions>) => Promise<DecoderResult>;
113
+ /**
114
+ * Decode multiple transactions with batching
115
+ * Returns results with global addressIdentities
116
+ */
117
+ decodeTransactionsBatch: (transactions: DecoderResult[], options?: Partial<ServerDecoderOptions>) => Promise<BatchDecodeResult>;
118
+ /**
119
+ * Finish decoding a transaction (enhance and resolve addresses)
120
+ * This will update the cache with the fully decoded result
121
+ */
122
+ finishDecoding: (transaction: DecoderResult, options?: Partial<ServerDecoderOptions>) => Promise<DecoderResult>;
123
+ /**
124
+ * Clear all caches
125
+ */
126
+ clearCaches: () => void;
127
+ /**
128
+ * Get cache statistics
129
+ */
130
+ getCacheStats: () => CacheStats;
131
+ /**
132
+ * Warm up address cache with specific addresses
133
+ */
134
+ warmAddressCache: (addresses: DataKey[]) => Promise<void>;
135
+ /**
136
+ * Resolve addresses and return their metadata
137
+ * Uses cache when available
138
+ */
139
+ resolveAddresses: (addresses: DataKey[], timeoutMs?: number) => Promise<Map<DataKey, EnhancedInfo>>;
140
+ }
141
+
142
+ /**
143
+ * Multi-level caching system for server-side decoder
144
+ */
145
+ declare class ServerDecoderCaches {
146
+ private transactionCache;
147
+ private transactionStats;
148
+ private addressCache;
149
+ private addressStats;
150
+ private abiCache;
151
+ private abiStats;
152
+ private schemaCache;
153
+ private schemaStats;
154
+ constructor(options?: {
155
+ transactionCacheSize?: number;
156
+ addressCacheSize?: number;
157
+ abiCacheSize?: number;
158
+ schemaCacheSize?: number;
159
+ });
160
+ /**
161
+ * Get cache key for a data key (address or address:tokenId)
162
+ */
163
+ private getDataKeyCacheKey;
164
+ getTransaction(hash: string): DecoderResult | undefined;
165
+ setTransaction(hash: string, result: DecoderResult): void;
166
+ getAddress(key: DataKey): EnhancedInfo | undefined;
167
+ setAddress(key: DataKey, data: EnhancedInfo): void;
168
+ hasAddress(key: DataKey): boolean;
169
+ getAddresses(keys: DataKey[]): Map<DataKey, EnhancedInfo>;
170
+ getAbi(address: string): Abi | undefined;
171
+ setAbi(address: string, abi: Abi): void;
172
+ hasAbi(address: string): boolean;
173
+ getSchema(key: string, value: string): Info | undefined;
174
+ setSchema(key: string, value: string, info: Info): void;
175
+ clear(): void;
176
+ getStats(): CacheStats;
177
+ }
178
+
179
+ /**
180
+ * Server-side address resolver with caching
181
+ */
182
+ declare class ServerAddressResolver {
183
+ private graphqlEndpoint;
184
+ private chain;
185
+ private caches;
186
+ private cacheAdapter;
187
+ constructor(graphqlEndpoint: string, chain: Chain, caches: ServerDecoderCaches);
188
+ /**
189
+ * Resolve addresses, using cache when possible
190
+ */
191
+ resolveAddresses(addresses: readonly DataKey[]): Promise<Map<DataKey, EnhancedInfo>>;
192
+ /**
193
+ * Resolve addresses with timeout
194
+ */
195
+ resolveAddressesWithTimeout(addresses: DataKey[], timeoutMs: number): Promise<Map<DataKey, EnhancedInfo>>;
196
+ /**
197
+ * Warm the cache with specific addresses
198
+ */
199
+ warmCache(addresses: DataKey[]): Promise<void>;
200
+ }
201
+
202
+ /**
203
+ * Decode a single transaction with time-bounded enhancement
204
+ */
205
+ declare function decodeTransactionSync(transaction: DecoderResult, options: ServerDecoderOptions, caches: ServerDecoderCaches): Promise<DecoderResult>;
206
+
207
+ /**
208
+ * Decode multiple transactions with batching and time budget
209
+ */
210
+ declare function decodeTransactionsBatch(transactions: DecoderResult[], options: ServerDecoderOptions, caches: ServerDecoderCaches): Promise<BatchDecodeResult>;
211
+
212
+ /**
213
+ * Create a server-optimized decoder instance
214
+ */
215
+ declare function createServerDecoder(config: ServerDecoderConfig): ServerDecoder;
216
+
217
+ export { type CacheStats, ServerAddressResolver, type ServerDecoder, ServerDecoderCaches, type ServerDecoderConfig, type ServerDecoderOptions, createServerDecoder, decodeTransactionSync, decodeTransactionsBatch };