@deserialize/multi-vm-wallet 1.4.12 → 1.5.1

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 (191) hide show
  1. package/.claude/settings.local.json +7 -1
  2. package/BUILD_OPTIMIZATION_PLAN.md +640 -0
  3. package/BUILD_RESULTS.md +282 -0
  4. package/BUN_MIGRATION.md +415 -0
  5. package/CHANGELOG_SECURITY.md +573 -0
  6. package/IMPLEMENTATION_SUMMARY.md +494 -0
  7. package/SECURITY_AUDIT.md +1124 -0
  8. package/bun.lock +553 -0
  9. package/dist/IChainWallet.js +0 -5
  10. package/dist/bip32Old.js +0 -885
  11. package/dist/bip32Small.js +0 -79
  12. package/dist/bipTest.js +0 -362
  13. package/dist/constant.js +0 -17
  14. package/dist/english.js +0 -1
  15. package/dist/evm/aa-service/index.d.ts +0 -5
  16. package/dist/evm/aa-service/index.js +0 -14
  17. package/dist/evm/aa-service/lib/account-adapter.d.ts +0 -22
  18. package/dist/evm/aa-service/lib/account-adapter.js +0 -24
  19. package/dist/evm/aa-service/lib/kernel-account.d.ts +0 -30
  20. package/dist/evm/aa-service/lib/kernel-account.js +2 -67
  21. package/dist/evm/aa-service/lib/kernel-modules.d.ts +0 -177
  22. package/dist/evm/aa-service/lib/kernel-modules.js +4 -202
  23. package/dist/evm/aa-service/lib/session-keys.d.ts +0 -118
  24. package/dist/evm/aa-service/lib/session-keys.js +7 -151
  25. package/dist/evm/aa-service/lib/type.d.ts +0 -55
  26. package/dist/evm/aa-service/lib/type.js +0 -10
  27. package/dist/evm/aa-service/services/account-abstraction.d.ts +0 -426
  28. package/dist/evm/aa-service/services/account-abstraction.js +0 -461
  29. package/dist/evm/aa-service/services/bundler.d.ts +0 -6
  30. package/dist/evm/aa-service/services/bundler.js +0 -54
  31. package/dist/evm/evm.d.ts +10 -67
  32. package/dist/evm/evm.js +339 -102
  33. package/dist/evm/index.js +0 -3
  34. package/dist/evm/script.js +3 -17
  35. package/dist/evm/smartWallet.d.ts +0 -173
  36. package/dist/evm/smartWallet.js +0 -206
  37. package/dist/evm/smartWallet.types.d.ts +0 -6
  38. package/dist/evm/smartWallet.types.js +0 -8
  39. package/dist/evm/transaction.utils.d.ts +0 -242
  40. package/dist/evm/transaction.utils.js +4 -320
  41. package/dist/evm/transactionParsing.d.ts +0 -11
  42. package/dist/evm/transactionParsing.js +28 -147
  43. package/dist/evm/utils.d.ts +0 -46
  44. package/dist/evm/utils.js +1 -57
  45. package/dist/helpers/index.d.ts +0 -4
  46. package/dist/helpers/index.js +8 -44
  47. package/dist/helpers/routeScan.js +0 -1
  48. package/dist/index.js +0 -1
  49. package/dist/old.js +0 -884
  50. package/dist/price.js +0 -1
  51. package/dist/price.types.js +0 -2
  52. package/dist/rate-limiter.d.ts +28 -0
  53. package/dist/rate-limiter.js +95 -0
  54. package/dist/retry-logic.d.ts +14 -0
  55. package/dist/retry-logic.js +120 -0
  56. package/dist/savings/index.d.ts +1 -0
  57. package/dist/savings/index.js +16 -2
  58. package/dist/savings/saving-manager.d.ts +46 -0
  59. package/dist/savings/saving-manager.js +176 -0
  60. package/dist/savings/savings-operations.d.ts +39 -0
  61. package/dist/savings/savings-operations.js +141 -0
  62. package/dist/savings/smart-savings.d.ts +0 -63
  63. package/dist/savings/smart-savings.js +0 -78
  64. package/dist/savings/types.d.ts +0 -69
  65. package/dist/savings/types.js +0 -7
  66. package/dist/savings/validation.d.ts +9 -0
  67. package/dist/savings/validation.js +85 -0
  68. package/dist/svm/constant.js +0 -1
  69. package/dist/svm/index.js +0 -1
  70. package/dist/svm/svm.d.ts +7 -13
  71. package/dist/svm/svm.js +262 -46
  72. package/dist/svm/transactionParsing.d.ts +0 -7
  73. package/dist/svm/transactionParsing.js +3 -41
  74. package/dist/svm/transactionSender.js +0 -9
  75. package/dist/svm/utils.d.ts +0 -12
  76. package/dist/svm/utils.js +9 -60
  77. package/dist/test.d.ts +0 -4
  78. package/dist/test.js +15 -95
  79. package/dist/transaction-utils.d.ts +38 -0
  80. package/dist/transaction-utils.js +168 -0
  81. package/dist/types.d.ts +36 -0
  82. package/dist/types.js +0 -1
  83. package/dist/utils.js +0 -1
  84. package/dist/vm-validation.d.ts +11 -0
  85. package/dist/vm-validation.js +151 -0
  86. package/dist/vm.d.ts +14 -16
  87. package/dist/vm.js +64 -53
  88. package/dist/walletBip32.d.ts +2 -0
  89. package/dist/walletBip32.js +31 -66
  90. package/package.json +9 -4
  91. package/test-discovery.ts +235 -0
  92. package/test-pocket-discovery.ts +84 -0
  93. package/tsconfig.json +18 -11
  94. package/tsconfig.prod.json +10 -0
  95. package/utils/IChainWallet.ts +2 -0
  96. package/utils/evm/evm.ts +560 -39
  97. package/utils/rate-limiter.ts +179 -0
  98. package/utils/retry-logic.ts +271 -0
  99. package/utils/savings/EXAMPLES.md +883 -0
  100. package/utils/savings/SECURITY.md +731 -0
  101. package/utils/savings/index.ts +1 -1
  102. package/utils/savings/saving-manager.ts +656 -0
  103. package/utils/savings/savings-operations.ts +509 -0
  104. package/utils/savings/validation.ts +187 -0
  105. package/utils/svm/svm.ts +467 -20
  106. package/utils/test.ts +26 -3
  107. package/utils/transaction-utils.ts +394 -0
  108. package/utils/types.ts +100 -0
  109. package/utils/vm-validation.ts +280 -0
  110. package/utils/vm.ts +202 -24
  111. package/utils/walletBip32.ts +63 -3
  112. package/dist/IChainWallet.js.map +0 -1
  113. package/dist/bip32.d.ts +0 -9
  114. package/dist/bip32.js +0 -172
  115. package/dist/bip32.js.map +0 -1
  116. package/dist/bip32Old.js.map +0 -1
  117. package/dist/bip32Small.js.map +0 -1
  118. package/dist/bipTest.js.map +0 -1
  119. package/dist/constant.js.map +0 -1
  120. package/dist/english.js.map +0 -1
  121. package/dist/evm/SMART_WALLET_EXAMPLES.d.ts +0 -20
  122. package/dist/evm/SMART_WALLET_EXAMPLES.js +0 -451
  123. package/dist/evm/SMART_WALLET_EXAMPLES.js.map +0 -1
  124. package/dist/evm/aa-service/index.js.map +0 -1
  125. package/dist/evm/aa-service/lib/account-adapter.js.map +0 -1
  126. package/dist/evm/aa-service/lib/kernel-account.js.map +0 -1
  127. package/dist/evm/aa-service/lib/kernel-modules.js.map +0 -1
  128. package/dist/evm/aa-service/lib/session-keys.js.map +0 -1
  129. package/dist/evm/aa-service/lib/type.js.map +0 -1
  130. package/dist/evm/aa-service/services/account-abstraction.js.map +0 -1
  131. package/dist/evm/aa-service/services/bundler.js.map +0 -1
  132. package/dist/evm/evm.js.map +0 -1
  133. package/dist/evm/index.js.map +0 -1
  134. package/dist/evm/script.js.map +0 -1
  135. package/dist/evm/smartWallet.js.map +0 -1
  136. package/dist/evm/smartWallet.types.js.map +0 -1
  137. package/dist/evm/transaction.utils.js.map +0 -1
  138. package/dist/evm/transactionParsing.js.map +0 -1
  139. package/dist/evm/utils.js.map +0 -1
  140. package/dist/helpers/index.js.map +0 -1
  141. package/dist/helpers/routeScan.js.map +0 -1
  142. package/dist/index.js.map +0 -1
  143. package/dist/old.js.map +0 -1
  144. package/dist/price.js.map +0 -1
  145. package/dist/price.types.js.map +0 -1
  146. package/dist/privacy/artifact-manager.d.ts +0 -117
  147. package/dist/privacy/artifact-manager.js +0 -251
  148. package/dist/privacy/artifact-manager.js.map +0 -1
  149. package/dist/privacy/broadcaster-client.d.ts +0 -166
  150. package/dist/privacy/broadcaster-client.js +0 -261
  151. package/dist/privacy/broadcaster-client.js.map +0 -1
  152. package/dist/privacy/index.d.ts +0 -34
  153. package/dist/privacy/index.js +0 -56
  154. package/dist/privacy/index.js.map +0 -1
  155. package/dist/privacy/network-config.d.ts +0 -57
  156. package/dist/privacy/network-config.js +0 -118
  157. package/dist/privacy/network-config.js.map +0 -1
  158. package/dist/privacy/poi-helper.d.ts +0 -161
  159. package/dist/privacy/poi-helper.js +0 -249
  160. package/dist/privacy/poi-helper.js.map +0 -1
  161. package/dist/privacy/railgun-engine.d.ts +0 -135
  162. package/dist/privacy/railgun-engine.js +0 -205
  163. package/dist/privacy/railgun-engine.js.map +0 -1
  164. package/dist/privacy/railgun-privacy-wallet.d.ts +0 -288
  165. package/dist/privacy/railgun-privacy-wallet.js +0 -539
  166. package/dist/privacy/railgun-privacy-wallet.js.map +0 -1
  167. package/dist/privacy/types.d.ts +0 -229
  168. package/dist/privacy/types.js +0 -26
  169. package/dist/privacy/types.js.map +0 -1
  170. package/dist/savings/index.js.map +0 -1
  171. package/dist/savings/saving-actions.d.ts +0 -0
  172. package/dist/savings/saving-actions.js +0 -78
  173. package/dist/savings/saving-actions.js.map +0 -1
  174. package/dist/savings/savings-manager.d.ts +0 -126
  175. package/dist/savings/savings-manager.js +0 -234
  176. package/dist/savings/savings-manager.js.map +0 -1
  177. package/dist/savings/smart-savings.js.map +0 -1
  178. package/dist/savings/types.js.map +0 -1
  179. package/dist/svm/constant.js.map +0 -1
  180. package/dist/svm/index.js.map +0 -1
  181. package/dist/svm/svm.js.map +0 -1
  182. package/dist/svm/transactionParsing.js.map +0 -1
  183. package/dist/svm/transactionSender.js.map +0 -1
  184. package/dist/svm/utils.js.map +0 -1
  185. package/dist/test.js.map +0 -1
  186. package/dist/types.js.map +0 -1
  187. package/dist/utils.js.map +0 -1
  188. package/dist/vm.js.map +0 -1
  189. package/dist/walletBip32.js.map +0 -1
  190. package/utils/savings/saving-actions.ts +0 -92
  191. package/utils/savings/savings-manager.ts +0 -271
@@ -1,166 +0,0 @@
1
- /**
2
- * RAILGUN Broadcaster Client
3
- *
4
- * Manages interaction with RAILGUN broadcasters (relayers) for anonymous
5
- * transaction submission.
6
- *
7
- * Broadcasters:
8
- * - Submit transactions anonymously (hide user IP)
9
- * - Pay gas fees on behalf of users
10
- * - Charge fees in tokens for their service
11
- * - Communicate via Waku Network (decentralized messaging)
12
- *
13
- * Hybrid Approach:
14
- * - Use own broadcasters when available
15
- * - Fall back to public broadcasters
16
- */
17
- import { NetworkName } from '@railgun-community/shared-models';
18
- import { BroadcasterInfo, BroadcasterFeeCallback, PrivateTransferTransaction, UnshieldTransaction } from './types';
19
- /**
20
- * Broadcaster Client
21
- *
22
- * Provides utilities for interacting with RAILGUN broadcasters.
23
- * Supports hybrid approach: custom + public broadcasters.
24
- */
25
- export declare class BroadcasterClient {
26
- private customBroadcasters;
27
- private publicBroadcasters;
28
- /**
29
- * Create broadcaster client
30
- *
31
- * @param customBroadcasters - Your own broadcaster nodes (optional)
32
- * @param usePublicBroadcasters - Whether to use public broadcasters as fallback
33
- *
34
- * @example
35
- * ```typescript
36
- * const client = new BroadcasterClient(
37
- * [
38
- * {
39
- * railgunAddress: "0zk...",
40
- * feePercentage: 0.1, // 0.1%
41
- * availableNetworks: [NetworkName.Ethereum, NetworkName.Polygon],
42
- * reliability: 0.99
43
- * }
44
- * ],
45
- * true // Also use public broadcasters
46
- * );
47
- * ```
48
- */
49
- constructor(customBroadcasters?: BroadcasterInfo[], usePublicBroadcasters?: boolean);
50
- /**
51
- * Get available broadcasters for a network
52
- *
53
- * Returns custom broadcasters first, then public ones.
54
- *
55
- * @param network - Network to query
56
- * @returns Array of broadcaster info sorted by fee (lowest first)
57
- */
58
- getAvailableBroadcasters(network: NetworkName): BroadcasterInfo[];
59
- /**
60
- * Calculate broadcaster fee for a transaction
61
- *
62
- * @param tokenAddress - Token being transferred
63
- * @param amount - Transfer amount
64
- * @param network - Network
65
- * @param broadcasterAddress - Specific broadcaster (optional - uses cheapest if not specified)
66
- *
67
- * @returns Fee amount in same token
68
- *
69
- * @example
70
- * ```typescript
71
- * const fee = await client.calculateFee(
72
- * USDC_ADDRESS,
73
- * parseUnits("100", 6),
74
- * NetworkName.Ethereum
75
- * );
76
- *
77
- * console.log(`Fee: ${formatUnits(fee, 6)} USDC`);
78
- * ```
79
- */
80
- calculateFee(tokenAddress: string, amount: bigint, network: NetworkName, broadcasterAddress?: string): Promise<bigint>;
81
- /**
82
- * Submit transaction via broadcaster
83
- *
84
- * Sends transaction to broadcaster for anonymous submission.
85
- * Broadcaster pays gas and charges fee in tokens.
86
- *
87
- * NOTE: This is a simplified implementation. In production, you would:
88
- * 1. Connect to Waku Network
89
- * 2. Find available broadcasters
90
- * 3. Submit transaction via Waku
91
- * 4. Wait for confirmation
92
- *
93
- * @param transaction - Private transfer or unshield transaction
94
- * @param network - Network
95
- * @param broadcasterAddress - Specific broadcaster (optional)
96
- *
97
- * @returns Transaction hash
98
- *
99
- * @example
100
- * ```typescript
101
- * const tx = await wallet.buildPrivateTransfer(...);
102
- * const txHash = await client.submitTransaction(
103
- * tx,
104
- * NetworkName.Ethereum
105
- * );
106
- *
107
- * console.log(`Submitted anonymously: ${txHash}`);
108
- * ```
109
- */
110
- submitTransaction(transaction: PrivateTransferTransaction | UnshieldTransaction, network: NetworkName, broadcasterAddress?: string): Promise<string>;
111
- /**
112
- * Get recommended broadcaster for a network
113
- *
114
- * Returns the broadcaster with best combination of low fees and high reliability.
115
- *
116
- * @param network - Network
117
- * @returns Recommended broadcaster info
118
- */
119
- getRecommendedBroadcaster(network: NetworkName): BroadcasterInfo | undefined;
120
- /**
121
- * Add custom broadcaster
122
- *
123
- * @param broadcaster - Broadcaster info
124
- */
125
- addCustomBroadcaster(broadcaster: BroadcasterInfo): void;
126
- /**
127
- * Remove custom broadcaster
128
- *
129
- * @param railgunAddress - Broadcaster's RAILGUN address
130
- */
131
- removeCustomBroadcaster(railgunAddress: string): void;
132
- /**
133
- * Get all custom broadcasters
134
- */
135
- getCustomBroadcasters(): BroadcasterInfo[];
136
- /**
137
- * Get default public RAILGUN broadcasters
138
- *
139
- * Returns list of known public broadcasters.
140
- * In production, this would query the Waku network for active broadcasters.
141
- */
142
- private getDefaultPublicBroadcasters;
143
- }
144
- /**
145
- * Helper: Create broadcaster fee callback
146
- *
147
- * Returns a function that calculates broadcaster fees dynamically.
148
- * Useful for transaction building.
149
- *
150
- * @param client - Broadcaster client
151
- * @param broadcasterAddress - Specific broadcaster (optional)
152
- *
153
- * @returns Fee calculation callback
154
- *
155
- * @example
156
- * ```typescript
157
- * const feeCallback = createBroadcasterFeeCallback(client);
158
- *
159
- * const fee = await feeCallback(
160
- * USDC_ADDRESS,
161
- * parseUnits("100", 6),
162
- * NetworkName.Ethereum
163
- * );
164
- * ```
165
- */
166
- export declare function createBroadcasterFeeCallback(client: BroadcasterClient, broadcasterAddress?: string): BroadcasterFeeCallback;
@@ -1,261 +0,0 @@
1
- "use strict";
2
- /**
3
- * RAILGUN Broadcaster Client
4
- *
5
- * Manages interaction with RAILGUN broadcasters (relayers) for anonymous
6
- * transaction submission.
7
- *
8
- * Broadcasters:
9
- * - Submit transactions anonymously (hide user IP)
10
- * - Pay gas fees on behalf of users
11
- * - Charge fees in tokens for their service
12
- * - Communicate via Waku Network (decentralized messaging)
13
- *
14
- * Hybrid Approach:
15
- * - Use own broadcasters when available
16
- * - Fall back to public broadcasters
17
- */
18
- Object.defineProperty(exports, "__esModule", { value: true });
19
- exports.BroadcasterClient = void 0;
20
- exports.createBroadcasterFeeCallback = createBroadcasterFeeCallback;
21
- /**
22
- * Broadcaster Client
23
- *
24
- * Provides utilities for interacting with RAILGUN broadcasters.
25
- * Supports hybrid approach: custom + public broadcasters.
26
- */
27
- class BroadcasterClient {
28
- customBroadcasters;
29
- publicBroadcasters;
30
- /**
31
- * Create broadcaster client
32
- *
33
- * @param customBroadcasters - Your own broadcaster nodes (optional)
34
- * @param usePublicBroadcasters - Whether to use public broadcasters as fallback
35
- *
36
- * @example
37
- * ```typescript
38
- * const client = new BroadcasterClient(
39
- * [
40
- * {
41
- * railgunAddress: "0zk...",
42
- * feePercentage: 0.1, // 0.1%
43
- * availableNetworks: [NetworkName.Ethereum, NetworkName.Polygon],
44
- * reliability: 0.99
45
- * }
46
- * ],
47
- * true // Also use public broadcasters
48
- * );
49
- * ```
50
- */
51
- constructor(customBroadcasters = [], usePublicBroadcasters = true) {
52
- this.customBroadcasters = customBroadcasters;
53
- this.publicBroadcasters = usePublicBroadcasters ? this.getDefaultPublicBroadcasters() : [];
54
- }
55
- /**
56
- * Get available broadcasters for a network
57
- *
58
- * Returns custom broadcasters first, then public ones.
59
- *
60
- * @param network - Network to query
61
- * @returns Array of broadcaster info sorted by fee (lowest first)
62
- */
63
- getAvailableBroadcasters(network) {
64
- const custom = this.customBroadcasters.filter(b => b.availableNetworks.includes(network));
65
- const publicOnes = this.publicBroadcasters.filter(b => b.availableNetworks.includes(network));
66
- const all = [...custom, ...publicOnes];
67
- // Sort by fee (lowest first), then reliability (highest first)
68
- return all.sort((a, b) => {
69
- if (a.feePercentage !== b.feePercentage) {
70
- return a.feePercentage - b.feePercentage;
71
- }
72
- return b.reliability - a.reliability;
73
- });
74
- }
75
- /**
76
- * Calculate broadcaster fee for a transaction
77
- *
78
- * @param tokenAddress - Token being transferred
79
- * @param amount - Transfer amount
80
- * @param network - Network
81
- * @param broadcasterAddress - Specific broadcaster (optional - uses cheapest if not specified)
82
- *
83
- * @returns Fee amount in same token
84
- *
85
- * @example
86
- * ```typescript
87
- * const fee = await client.calculateFee(
88
- * USDC_ADDRESS,
89
- * parseUnits("100", 6),
90
- * NetworkName.Ethereum
91
- * );
92
- *
93
- * console.log(`Fee: ${formatUnits(fee, 6)} USDC`);
94
- * ```
95
- */
96
- async calculateFee(tokenAddress, amount, network, broadcasterAddress) {
97
- const broadcasters = this.getAvailableBroadcasters(network);
98
- if (broadcasters.length === 0) {
99
- throw new Error(`No broadcasters available for ${network}`);
100
- }
101
- let broadcaster;
102
- if (broadcasterAddress) {
103
- const found = broadcasters.find(b => b.railgunAddress === broadcasterAddress);
104
- if (!found) {
105
- throw new Error(`Broadcaster ${broadcasterAddress} not found`);
106
- }
107
- broadcaster = found;
108
- }
109
- else {
110
- // Use cheapest broadcaster
111
- broadcaster = broadcasters[0];
112
- }
113
- // Calculate fee: amount * feePercentage
114
- const feePercentage = BigInt(Math.floor(broadcaster.feePercentage * 10000)); // Convert to basis points
115
- const fee = (amount * feePercentage) / 10000n;
116
- return fee;
117
- }
118
- /**
119
- * Submit transaction via broadcaster
120
- *
121
- * Sends transaction to broadcaster for anonymous submission.
122
- * Broadcaster pays gas and charges fee in tokens.
123
- *
124
- * NOTE: This is a simplified implementation. In production, you would:
125
- * 1. Connect to Waku Network
126
- * 2. Find available broadcasters
127
- * 3. Submit transaction via Waku
128
- * 4. Wait for confirmation
129
- *
130
- * @param transaction - Private transfer or unshield transaction
131
- * @param network - Network
132
- * @param broadcasterAddress - Specific broadcaster (optional)
133
- *
134
- * @returns Transaction hash
135
- *
136
- * @example
137
- * ```typescript
138
- * const tx = await wallet.buildPrivateTransfer(...);
139
- * const txHash = await client.submitTransaction(
140
- * tx,
141
- * NetworkName.Ethereum
142
- * );
143
- *
144
- * console.log(`Submitted anonymously: ${txHash}`);
145
- * ```
146
- */
147
- async submitTransaction(transaction, network, broadcasterAddress) {
148
- const broadcasters = this.getAvailableBroadcasters(network);
149
- if (broadcasters.length === 0) {
150
- throw new Error(`No broadcasters available for ${network}`);
151
- }
152
- const broadcaster = broadcasterAddress
153
- ? broadcasters.find(b => b.railgunAddress === broadcasterAddress)
154
- : broadcasters[0];
155
- if (!broadcaster) {
156
- throw new Error('Broadcaster not found');
157
- }
158
- // In a real implementation, this would:
159
- // 1. Import @railgun-community/waku-broadcaster-client-web or -node
160
- // 2. Connect to Waku network
161
- // 3. Find broadcaster via Waku
162
- // 4. Submit transaction anonymously
163
- // 5. Return transaction hash
164
- // Placeholder: Direct submission (NOT anonymous)
165
- console.warn('BroadcasterClient.submitTransaction is a placeholder. ' +
166
- 'Integrate @railgun-community/waku-broadcaster-client for production.');
167
- // For now, throw error directing implementer to use Waku client
168
- throw new Error('Broadcaster submission requires Waku integration. ' +
169
- 'Install @railgun-community/waku-broadcaster-client-web or -node and implement Waku connection.');
170
- }
171
- /**
172
- * Get recommended broadcaster for a network
173
- *
174
- * Returns the broadcaster with best combination of low fees and high reliability.
175
- *
176
- * @param network - Network
177
- * @returns Recommended broadcaster info
178
- */
179
- getRecommendedBroadcaster(network) {
180
- const broadcasters = this.getAvailableBroadcasters(network);
181
- return broadcasters[0]; // Already sorted by fee, then reliability
182
- }
183
- /**
184
- * Add custom broadcaster
185
- *
186
- * @param broadcaster - Broadcaster info
187
- */
188
- addCustomBroadcaster(broadcaster) {
189
- this.customBroadcasters.push(broadcaster);
190
- }
191
- /**
192
- * Remove custom broadcaster
193
- *
194
- * @param railgunAddress - Broadcaster's RAILGUN address
195
- */
196
- removeCustomBroadcaster(railgunAddress) {
197
- this.customBroadcasters = this.customBroadcasters.filter(b => b.railgunAddress !== railgunAddress);
198
- }
199
- /**
200
- * Get all custom broadcasters
201
- */
202
- getCustomBroadcasters() {
203
- return [...this.customBroadcasters];
204
- }
205
- // ===== PRIVATE HELPERS =====
206
- /**
207
- * Get default public RAILGUN broadcasters
208
- *
209
- * Returns list of known public broadcasters.
210
- * In production, this would query the Waku network for active broadcasters.
211
- */
212
- getDefaultPublicBroadcasters() {
213
- // Placeholder: In production, discover broadcasters via Waku
214
- // For now, return empty array - implementer must provide their own
215
- // or integrate Waku client to discover public broadcasters
216
- return [];
217
- // Example of what this might return:
218
- // return [
219
- // {
220
- // railgunAddress: "0zk...",
221
- // feePercentage: 0.1,
222
- // availableNetworks: [
223
- // NetworkName.Ethereum,
224
- // NetworkName.Polygon,
225
- // NetworkName.BNBChain,
226
- // NetworkName.Arbitrum
227
- // ],
228
- // reliability: 0.95
229
- // }
230
- // ];
231
- }
232
- }
233
- exports.BroadcasterClient = BroadcasterClient;
234
- /**
235
- * Helper: Create broadcaster fee callback
236
- *
237
- * Returns a function that calculates broadcaster fees dynamically.
238
- * Useful for transaction building.
239
- *
240
- * @param client - Broadcaster client
241
- * @param broadcasterAddress - Specific broadcaster (optional)
242
- *
243
- * @returns Fee calculation callback
244
- *
245
- * @example
246
- * ```typescript
247
- * const feeCallback = createBroadcasterFeeCallback(client);
248
- *
249
- * const fee = await feeCallback(
250
- * USDC_ADDRESS,
251
- * parseUnits("100", 6),
252
- * NetworkName.Ethereum
253
- * );
254
- * ```
255
- */
256
- function createBroadcasterFeeCallback(client, broadcasterAddress) {
257
- return async (tokenAddress, amount, network) => {
258
- return await client.calculateFee(tokenAddress, amount, network, broadcasterAddress);
259
- };
260
- }
261
- //# sourceMappingURL=broadcaster-client.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"broadcaster-client.js","sourceRoot":"","sources":["../../utils/privacy/broadcaster-client.ts"],"names":[],"mappings":"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"}
@@ -1,34 +0,0 @@
1
- /**
2
- * RAILGUN Privacy Module
3
- *
4
- * Provides zero-knowledge privacy features for the wallet SDK.
5
- * Completely independent from savings features.
6
- *
7
- * Usage:
8
- * ```typescript
9
- * import { RailgunEngine, RailgunPrivacyWallet } from './privacy';
10
- *
11
- * // Initialize engine once
12
- * await RailgunEngine.initialize({
13
- * walletSource: 'mywallet',
14
- * db,
15
- * artifactStore,
16
- * poiNodeURLs: ['...']
17
- * });
18
- *
19
- * // Create privacy wallet
20
- * const walletInfo = await RailgunPrivacyWallet.create(encryptionKey, mnemonic);
21
- *
22
- * // Use privacy features
23
- * const wallet = await RailgunPrivacyWallet.load(encryptionKey, walletInfo.railgunWalletID);
24
- * const shieldTx = await wallet.buildShield(...);
25
- * ```
26
- */
27
- export { RailgunEngine } from './railgun-engine';
28
- export { RailgunPrivacyWallet } from './railgun-privacy-wallet';
29
- export { ArtifactManager } from './artifact-manager';
30
- export { POIHelper } from './poi-helper';
31
- export { BroadcasterClient, createBroadcasterFeeCallback } from './broadcaster-client';
32
- export { RAILGUN_NETWORKS, DEFAULT_POI_NODES, POI_STANDBY_PERIODS, getNetworkConfig, getNetworkConfigByChainId, isNetworkSupported, isChainIdSupported, getSupportedNetworks, getSupportedChainIds, getPOIStandbyPeriod, } from './network-config';
33
- export type { RailgunDatabase, ArtifactStore, RailgunEngineConfig, PreloadedArtifacts, RailgunWalletInfo, PrivateBalance, BalanceUpdateCallback, ScanProgressCallback, BaseRailgunTransaction, ShieldTransaction, UnshieldTransaction, PrivateTransferTransaction, ShieldOptions, UnshieldOptions, PrivateTransferOptions, POISpendabilityResult, ArtifactDownloadProgress, ArtifactDownloadCallback, ArtifactSyncResult, RailgunNetworkConfig, BroadcasterInfo, BroadcasterFeeCallback, NetworkFees, } from './types';
34
- export { BalanceBucket } from './types';
@@ -1,56 +0,0 @@
1
- "use strict";
2
- /**
3
- * RAILGUN Privacy Module
4
- *
5
- * Provides zero-knowledge privacy features for the wallet SDK.
6
- * Completely independent from savings features.
7
- *
8
- * Usage:
9
- * ```typescript
10
- * import { RailgunEngine, RailgunPrivacyWallet } from './privacy';
11
- *
12
- * // Initialize engine once
13
- * await RailgunEngine.initialize({
14
- * walletSource: 'mywallet',
15
- * db,
16
- * artifactStore,
17
- * poiNodeURLs: ['...']
18
- * });
19
- *
20
- * // Create privacy wallet
21
- * const walletInfo = await RailgunPrivacyWallet.create(encryptionKey, mnemonic);
22
- *
23
- * // Use privacy features
24
- * const wallet = await RailgunPrivacyWallet.load(encryptionKey, walletInfo.railgunWalletID);
25
- * const shieldTx = await wallet.buildShield(...);
26
- * ```
27
- */
28
- Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.BalanceBucket = exports.getPOIStandbyPeriod = exports.getSupportedChainIds = exports.getSupportedNetworks = exports.isChainIdSupported = exports.isNetworkSupported = exports.getNetworkConfigByChainId = exports.getNetworkConfig = exports.POI_STANDBY_PERIODS = exports.DEFAULT_POI_NODES = exports.RAILGUN_NETWORKS = exports.createBroadcasterFeeCallback = exports.BroadcasterClient = exports.POIHelper = exports.ArtifactManager = exports.RailgunPrivacyWallet = exports.RailgunEngine = void 0;
30
- // Core classes
31
- var railgun_engine_1 = require("./railgun-engine");
32
- Object.defineProperty(exports, "RailgunEngine", { enumerable: true, get: function () { return railgun_engine_1.RailgunEngine; } });
33
- var railgun_privacy_wallet_1 = require("./railgun-privacy-wallet");
34
- Object.defineProperty(exports, "RailgunPrivacyWallet", { enumerable: true, get: function () { return railgun_privacy_wallet_1.RailgunPrivacyWallet; } });
35
- var artifact_manager_1 = require("./artifact-manager");
36
- Object.defineProperty(exports, "ArtifactManager", { enumerable: true, get: function () { return artifact_manager_1.ArtifactManager; } });
37
- var poi_helper_1 = require("./poi-helper");
38
- Object.defineProperty(exports, "POIHelper", { enumerable: true, get: function () { return poi_helper_1.POIHelper; } });
39
- var broadcaster_client_1 = require("./broadcaster-client");
40
- Object.defineProperty(exports, "BroadcasterClient", { enumerable: true, get: function () { return broadcaster_client_1.BroadcasterClient; } });
41
- Object.defineProperty(exports, "createBroadcasterFeeCallback", { enumerable: true, get: function () { return broadcaster_client_1.createBroadcasterFeeCallback; } });
42
- // Network configuration
43
- var network_config_1 = require("./network-config");
44
- Object.defineProperty(exports, "RAILGUN_NETWORKS", { enumerable: true, get: function () { return network_config_1.RAILGUN_NETWORKS; } });
45
- Object.defineProperty(exports, "DEFAULT_POI_NODES", { enumerable: true, get: function () { return network_config_1.DEFAULT_POI_NODES; } });
46
- Object.defineProperty(exports, "POI_STANDBY_PERIODS", { enumerable: true, get: function () { return network_config_1.POI_STANDBY_PERIODS; } });
47
- Object.defineProperty(exports, "getNetworkConfig", { enumerable: true, get: function () { return network_config_1.getNetworkConfig; } });
48
- Object.defineProperty(exports, "getNetworkConfigByChainId", { enumerable: true, get: function () { return network_config_1.getNetworkConfigByChainId; } });
49
- Object.defineProperty(exports, "isNetworkSupported", { enumerable: true, get: function () { return network_config_1.isNetworkSupported; } });
50
- Object.defineProperty(exports, "isChainIdSupported", { enumerable: true, get: function () { return network_config_1.isChainIdSupported; } });
51
- Object.defineProperty(exports, "getSupportedNetworks", { enumerable: true, get: function () { return network_config_1.getSupportedNetworks; } });
52
- Object.defineProperty(exports, "getSupportedChainIds", { enumerable: true, get: function () { return network_config_1.getSupportedChainIds; } });
53
- Object.defineProperty(exports, "getPOIStandbyPeriod", { enumerable: true, get: function () { return network_config_1.getPOIStandbyPeriod; } });
54
- var types_1 = require("./types");
55
- Object.defineProperty(exports, "BalanceBucket", { enumerable: true, get: function () { return types_1.BalanceBucket; } });
56
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../utils/privacy/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;;;AAEH,eAAe;AACf,mDAAiD;AAAxC,+GAAA,aAAa,OAAA;AACtB,mEAAgE;AAAvD,8HAAA,oBAAoB,OAAA;AAC7B,uDAAqD;AAA5C,mHAAA,eAAe,OAAA;AACxB,2CAAyC;AAAhC,uGAAA,SAAS,OAAA;AAClB,2DAAuF;AAA9E,uHAAA,iBAAiB,OAAA;AAAE,kIAAA,4BAA4B,OAAA;AAExD,wBAAwB;AACxB,mDAW0B;AAVxB,kHAAA,gBAAgB,OAAA;AAChB,mHAAA,iBAAiB,OAAA;AACjB,qHAAA,mBAAmB,OAAA;AACnB,kHAAA,gBAAgB,OAAA;AAChB,2HAAA,yBAAyB,OAAA;AACzB,oHAAA,kBAAkB,OAAA;AAClB,oHAAA,kBAAkB,OAAA;AAClB,sHAAA,oBAAoB,OAAA;AACpB,sHAAA,oBAAoB,OAAA;AACpB,qHAAA,mBAAmB,OAAA;AA8BrB,iCAAwC;AAA/B,sGAAA,aAAa,OAAA"}
@@ -1,57 +0,0 @@
1
- /**
2
- * RAILGUN Network Configurations
3
- *
4
- * Defines all supported RAILGUN networks with their deployment information.
5
- * Based on official RAILGUN deployments as of 2024.
6
- *
7
- * Supported Networks:
8
- * - Ethereum Mainnet
9
- * - Polygon (Matic)
10
- * - BNB Chain (BSC)
11
- * - Arbitrum One
12
- */
13
- import { NetworkName } from '@railgun-community/shared-models';
14
- import { RailgunNetworkConfig } from './types';
15
- /**
16
- * All RAILGUN supported networks
17
- */
18
- export declare const RAILGUN_NETWORKS: Record<string, RailgunNetworkConfig>;
19
- /**
20
- * Get RAILGUN network config by NetworkName
21
- */
22
- export declare function getNetworkConfig(network: NetworkName): RailgunNetworkConfig | undefined;
23
- /**
24
- * Get RAILGUN network config by chain ID
25
- */
26
- export declare function getNetworkConfigByChainId(chainId: number): RailgunNetworkConfig | undefined;
27
- /**
28
- * Check if a network is supported by RAILGUN
29
- */
30
- export declare function isNetworkSupported(network: NetworkName): boolean;
31
- /**
32
- * Check if a chain ID is supported by RAILGUN
33
- */
34
- export declare function isChainIdSupported(chainId: number): boolean;
35
- /**
36
- * Get all supported NetworkName values
37
- */
38
- export declare function getSupportedNetworks(): NetworkName[];
39
- /**
40
- * Get all supported chain IDs
41
- */
42
- export declare function getSupportedChainIds(): number[];
43
- /**
44
- * Default POI (Proof of Innocence) aggregator nodes
45
- */
46
- export declare const DEFAULT_POI_NODES: string[];
47
- /**
48
- * POI standby periods (in milliseconds)
49
- */
50
- export declare const POI_STANDBY_PERIODS: {
51
- mainnet: number;
52
- testnet: number;
53
- };
54
- /**
55
- * Get POI standby period for a network
56
- */
57
- export declare function getPOIStandbyPeriod(network: NetworkName): number;