@marigoldlabs/web3-tester 0.4.1 → 0.4.2

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 (59) hide show
  1. package/README.md +317 -11
  2. package/dist/anvil.d.ts.map +1 -1
  3. package/dist/anvil.js.map +1 -1
  4. package/dist/benchmark.d.ts +55 -0
  5. package/dist/benchmark.d.ts.map +1 -0
  6. package/dist/benchmark.js +168 -0
  7. package/dist/benchmark.js.map +1 -0
  8. package/dist/fixtures.js +2 -2
  9. package/dist/fixtures.js.map +1 -1
  10. package/dist/index.d.ts +13 -4
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +5 -1
  13. package/dist/index.js.map +1 -1
  14. package/dist/injected-provider.d.ts.map +1 -1
  15. package/dist/injected-provider.js +748 -25
  16. package/dist/injected-provider.js.map +1 -1
  17. package/dist/mock-wallet-controller.d.ts +150 -2
  18. package/dist/mock-wallet-controller.d.ts.map +1 -1
  19. package/dist/mock-wallet-controller.js +613 -24
  20. package/dist/mock-wallet-controller.js.map +1 -1
  21. package/dist/private-key-rpc-client.d.ts +144 -132
  22. package/dist/private-key-rpc-client.d.ts.map +1 -1
  23. package/dist/private-key-rpc-client.js +142 -20
  24. package/dist/private-key-rpc-client.js.map +1 -1
  25. package/dist/real-wallet-cache.d.ts +38 -0
  26. package/dist/real-wallet-cache.d.ts.map +1 -1
  27. package/dist/real-wallet-cache.js +143 -57
  28. package/dist/real-wallet-cache.js.map +1 -1
  29. package/dist/real-wallet-extension-fixtures.d.ts +35 -0
  30. package/dist/real-wallet-extension-fixtures.d.ts.map +1 -0
  31. package/dist/real-wallet-extension-fixtures.js +96 -0
  32. package/dist/real-wallet-extension-fixtures.js.map +1 -0
  33. package/dist/real-wallet-extension.d.ts +86 -0
  34. package/dist/real-wallet-extension.d.ts.map +1 -0
  35. package/dist/real-wallet-extension.js +245 -0
  36. package/dist/real-wallet-extension.js.map +1 -0
  37. package/dist/real-wallet-fixtures.d.ts.map +1 -1
  38. package/dist/real-wallet-fixtures.js +46 -31
  39. package/dist/real-wallet-fixtures.js.map +1 -1
  40. package/dist/real-wallet.d.ts +5 -14
  41. package/dist/real-wallet.d.ts.map +1 -1
  42. package/dist/real-wallet.js +668 -435
  43. package/dist/real-wallet.js.map +1 -1
  44. package/dist/safe.d.ts +311 -0
  45. package/dist/safe.d.ts.map +1 -0
  46. package/dist/safe.js +743 -0
  47. package/dist/safe.js.map +1 -0
  48. package/dist/types.d.ts +35 -1
  49. package/dist/types.d.ts.map +1 -1
  50. package/dist/wallet-personas.d.ts +99 -0
  51. package/dist/wallet-personas.d.ts.map +1 -0
  52. package/dist/wallet-personas.js +666 -0
  53. package/dist/wallet-personas.js.map +1 -0
  54. package/dist/walletconnect.d.ts +176 -9
  55. package/dist/walletconnect.d.ts.map +1 -1
  56. package/dist/walletconnect.js +514 -74
  57. package/dist/walletconnect.js.map +1 -1
  58. package/examples/playwright.config.ts +8 -0
  59. package/package.json +29 -3
package/dist/safe.d.ts ADDED
@@ -0,0 +1,311 @@
1
+ import type { Page } from '@playwright/test';
2
+ import { type Address, type Hex } from 'viem';
3
+ import type { JsonRpcRequest, RpcClient } from './types.js';
4
+ export type SafeOperation = 0 | 1;
5
+ export type SafeTransactionData = {
6
+ to: Address;
7
+ value?: bigint | number | string;
8
+ data?: Hex;
9
+ operation?: SafeOperation;
10
+ safeTxGas?: bigint | number | string;
11
+ baseGas?: bigint | number | string;
12
+ gasPrice?: bigint | number | string;
13
+ gasToken?: Address;
14
+ refundReceiver?: Address;
15
+ nonce: bigint | number | string;
16
+ };
17
+ export type NormalizedSafeTransactionData = {
18
+ to: Address;
19
+ value: string;
20
+ data: Hex;
21
+ operation: SafeOperation;
22
+ safeTxGas: string;
23
+ baseGas: string;
24
+ gasPrice: string;
25
+ gasToken: Address;
26
+ refundReceiver: Address;
27
+ nonce: string;
28
+ };
29
+ export type SafeTransactionTypedDataMessage = {
30
+ to: Address;
31
+ value: bigint;
32
+ data: Hex;
33
+ operation: SafeOperation;
34
+ safeTxGas: bigint;
35
+ baseGas: bigint;
36
+ gasPrice: bigint;
37
+ gasToken: Address;
38
+ refundReceiver: Address;
39
+ nonce: bigint;
40
+ };
41
+ export type SafeTransactionTypedData = {
42
+ domain: {
43
+ chainId: bigint;
44
+ verifyingContract: Address;
45
+ };
46
+ primaryType: 'SafeTx';
47
+ types: typeof SAFE_TRANSACTION_TYPED_DATA_TYPES;
48
+ message: SafeTransactionTypedDataMessage;
49
+ };
50
+ export type SafeTransactionHashStrategy = 'eip712' | 'fixture';
51
+ export type SafeTransactionProposal = {
52
+ safeAddress: Address;
53
+ senderAddress: Address;
54
+ safeTxHash?: Hex;
55
+ senderSignature: Hex;
56
+ confirmationsRequired?: number;
57
+ origin?: string;
58
+ data: SafeTransactionData;
59
+ };
60
+ export type SafeTransactionConfirmation = {
61
+ owner: Address;
62
+ signature: Hex;
63
+ submissionDate?: string;
64
+ };
65
+ export type SafeMultisigTransaction = NormalizedSafeTransactionData & {
66
+ safeAddress: Address;
67
+ safeTxHash: Hex;
68
+ senderAddress: Address;
69
+ origin?: string;
70
+ confirmations: SafeTransactionConfirmation[];
71
+ confirmationsRequired?: number;
72
+ isExecuted: boolean;
73
+ transactionHash?: Hex;
74
+ executorAddress?: Address;
75
+ submissionDate?: string;
76
+ };
77
+ export type SafeTransactionService = {
78
+ proposeTransaction(proposal: SafeTransactionProposal): Promise<SafeMultisigTransaction>;
79
+ confirmTransaction(safeTxHash: Hex, confirmation: SafeTransactionConfirmation): Promise<SafeMultisigTransaction>;
80
+ getTransaction(safeTxHash: Hex): Promise<SafeMultisigTransaction>;
81
+ listTransactions(safeAddress: Address): Promise<SafeMultisigTransaction[]>;
82
+ listConfirmations(safeTxHash: Hex): Promise<SafeTransactionConfirmation[]>;
83
+ markExecuted?(safeTxHash: Hex, execution: {
84
+ transactionHash: Hex;
85
+ executorAddress: Address;
86
+ }): Promise<SafeMultisigTransaction>;
87
+ };
88
+ export type SafeTransactionServiceClientOptions = {
89
+ /**
90
+ * Transaction Service base URL. Include the API prefix if your deployment
91
+ * requires one, e.g. https://safe-transaction-sepolia.safe.global/api/v1.
92
+ */
93
+ baseUrl: string;
94
+ /** Optional prefix appended after baseUrl, e.g. '/api/v1' or '/v1'. */
95
+ apiPrefix?: string;
96
+ /**
97
+ * Chain ID used to derive Safe EIP-712 transaction hashes when a proposal
98
+ * does not provide safeTxHash. If omitted, callers should pass safeTxHash
99
+ * explicitly for real Safe Transaction Service deployments.
100
+ */
101
+ chainId?: number | bigint;
102
+ /**
103
+ * Hashes proposed transactions as protocol-compatible EIP-712 when chainId
104
+ * is configured. Use 'fixture' to keep deterministic local fixture hashes.
105
+ */
106
+ safeTxHashStrategy?: SafeTransactionHashStrategy;
107
+ fetch?: typeof fetch;
108
+ headers?: Record<string, string>;
109
+ };
110
+ export type SafeWalletHarnessOptions = {
111
+ safeAddress: Address;
112
+ owners: readonly Address[];
113
+ threshold: number;
114
+ chainId: number | bigint;
115
+ transactionService: SafeTransactionService;
116
+ /**
117
+ * Optional execution backend. When present, executeTransaction broadcasts the
118
+ * transaction data as an eth_sendTransaction from the executor address, then
119
+ * marks the service transaction executed.
120
+ */
121
+ rpcClient?: RpcClient;
122
+ /** Defaults to protocol-compatible EIP-712 Safe transaction hashes. */
123
+ safeTxHashStrategy?: SafeTransactionHashStrategy;
124
+ };
125
+ export type SafeAppSdkRequest = {
126
+ id: string;
127
+ method: string;
128
+ params?: unknown;
129
+ env?: {
130
+ sdkVersion?: string;
131
+ };
132
+ };
133
+ export type SafeAppBridgeOptions = {
134
+ allowedOrigins?: readonly string[];
135
+ addressBook?: readonly {
136
+ address: Address;
137
+ chainId: string;
138
+ name: string;
139
+ }[];
140
+ balances?: SafeAppBalances | readonly SafeAppBalance[];
141
+ chainInfo?: {
142
+ chainName?: string;
143
+ shortName?: string;
144
+ nativeCurrency?: {
145
+ name: string;
146
+ symbol: string;
147
+ decimals: number;
148
+ logoUri?: string;
149
+ };
150
+ blockExplorerUriTemplate?: {
151
+ address?: string;
152
+ /** Safe Apps SDK / Safe Gateway field. */
153
+ txHash?: string;
154
+ /** Backward-compatible alias accepted by this harness and mapped to txHash. */
155
+ tx?: string;
156
+ api?: string;
157
+ };
158
+ };
159
+ environmentOrigin?: string;
160
+ /** Target used for Safe Apps multi-transaction batches. Defaults to Safe MultiSendCallOnly 1.4.1. */
161
+ multiSendAddress?: Address;
162
+ permissions?: readonly Record<string, unknown>[];
163
+ proposer?: Address;
164
+ safeInfo?: {
165
+ implementation?: Address;
166
+ modules?: readonly Address[] | null;
167
+ fallbackHandler?: Address | null;
168
+ guard?: Address | null;
169
+ isReadOnly?: boolean;
170
+ nonce?: number;
171
+ version?: string | null;
172
+ };
173
+ version?: string;
174
+ };
175
+ export type SafeAppBalance = {
176
+ tokenInfo: {
177
+ type: string;
178
+ address: string;
179
+ decimals: number;
180
+ symbol: string;
181
+ name: string;
182
+ logoUri: string | null;
183
+ };
184
+ balance: string;
185
+ fiatBalance: string;
186
+ fiatConversion: string;
187
+ };
188
+ export type SafeAppBalances = {
189
+ fiatTotal: string;
190
+ items: readonly SafeAppBalance[];
191
+ };
192
+ export declare const SAFE_MULTISEND_CALL_ONLY_ADDRESS: "0x9641d764fc13c8b624c04430c7356c1c7c8102e2";
193
+ export declare const SAFE_TRANSACTION_TYPED_DATA_TYPES: {
194
+ readonly SafeTx: readonly [{
195
+ readonly name: "to";
196
+ readonly type: "address";
197
+ }, {
198
+ readonly name: "value";
199
+ readonly type: "uint256";
200
+ }, {
201
+ readonly name: "data";
202
+ readonly type: "bytes";
203
+ }, {
204
+ readonly name: "operation";
205
+ readonly type: "uint8";
206
+ }, {
207
+ readonly name: "safeTxGas";
208
+ readonly type: "uint256";
209
+ }, {
210
+ readonly name: "baseGas";
211
+ readonly type: "uint256";
212
+ }, {
213
+ readonly name: "gasPrice";
214
+ readonly type: "uint256";
215
+ }, {
216
+ readonly name: "gasToken";
217
+ readonly type: "address";
218
+ }, {
219
+ readonly name: "refundReceiver";
220
+ readonly type: "address";
221
+ }, {
222
+ readonly name: "nonce";
223
+ readonly type: "uint256";
224
+ }];
225
+ };
226
+ export declare function normalizeSafeTransactionData(data: SafeTransactionData): NormalizedSafeTransactionData;
227
+ export declare function buildSafeTransactionTypedData(safeAddress: Address, chainId: number | bigint, data: SafeTransactionData): SafeTransactionTypedData;
228
+ /**
229
+ * Safe protocol transaction hash, matching Safe.sol getTransactionHash:
230
+ * EIP-712 domain { chainId, verifyingContract: safeAddress } and SafeTx.
231
+ */
232
+ export declare function hashSafeTransactionTypedData(safeAddress: Address, chainId: number | bigint, data: SafeTransactionData): Hex;
233
+ /**
234
+ * Deterministic local Safe transaction hash for tests and service fixtures.
235
+ * Real Safe deployments should pass the protocol-computed safeTxHash.
236
+ */
237
+ export declare function hashSafeTransactionData(safeAddress: Address, chainId: number | bigint, data: SafeTransactionData): Hex;
238
+ export declare function deterministicSafeSignature(safeTxHash: Hex, owner: Address): Hex;
239
+ export declare class SafeTransactionServiceClient implements SafeTransactionService {
240
+ private readonly fetchImpl;
241
+ private readonly baseUrl;
242
+ private readonly apiPrefix;
243
+ private readonly headers;
244
+ private readonly chainId?;
245
+ private readonly safeTxHashStrategy;
246
+ constructor(options: SafeTransactionServiceClientOptions);
247
+ proposeTransaction(proposal: SafeTransactionProposal): Promise<SafeMultisigTransaction>;
248
+ confirmTransaction(safeTxHash: Hex, confirmation: SafeTransactionConfirmation): Promise<SafeMultisigTransaction>;
249
+ getTransaction(safeTxHash: Hex): Promise<SafeMultisigTransaction>;
250
+ listTransactions(safeAddress: Address): Promise<SafeMultisigTransaction[]>;
251
+ listConfirmations(safeTxHash: Hex): Promise<SafeTransactionConfirmation[]>;
252
+ private request;
253
+ private hashSafeTransaction;
254
+ }
255
+ export declare class InMemorySafeTransactionService implements SafeTransactionService {
256
+ private readonly transactions;
257
+ proposeTransaction(proposal: SafeTransactionProposal): Promise<SafeMultisigTransaction>;
258
+ confirmTransaction(safeTxHash: Hex, confirmation: SafeTransactionConfirmation): Promise<SafeMultisigTransaction>;
259
+ getTransaction(safeTxHash: Hex): Promise<SafeMultisigTransaction>;
260
+ listTransactions(safeAddress: Address): Promise<SafeMultisigTransaction[]>;
261
+ listConfirmations(safeTxHash: Hex): Promise<SafeTransactionConfirmation[]>;
262
+ markExecuted(safeTxHash: Hex, execution: {
263
+ transactionHash: Hex;
264
+ executorAddress: Address;
265
+ }): Promise<SafeMultisigTransaction>;
266
+ private mustGet;
267
+ }
268
+ export declare class SafeWalletHarness {
269
+ readonly safeAddress: Address;
270
+ readonly owners: readonly Address[];
271
+ readonly threshold: number;
272
+ readonly chainId: number | bigint;
273
+ readonly transactionService: SafeTransactionService;
274
+ private readonly rpcClient?;
275
+ private readonly safeTxHashStrategy;
276
+ private nonce;
277
+ constructor(options: SafeWalletHarnessOptions);
278
+ proposeTransaction(options: {
279
+ transaction: Omit<SafeTransactionData, 'nonce'> & {
280
+ nonce?: SafeTransactionData['nonce'];
281
+ };
282
+ proposer?: Address;
283
+ signature?: Hex;
284
+ origin?: string;
285
+ }): Promise<SafeMultisigTransaction>;
286
+ confirmTransaction(safeTxHash: Hex, options: {
287
+ owner: Address;
288
+ signature?: Hex;
289
+ }): Promise<SafeMultisigTransaction>;
290
+ executeTransaction(safeTxHash: Hex, options?: {
291
+ executor?: Address;
292
+ }): Promise<{
293
+ txHash?: Hex;
294
+ transaction: SafeMultisigTransaction;
295
+ }>;
296
+ getTransaction(safeTxHash: Hex): Promise<SafeMultisigTransaction>;
297
+ listTransactions(): Promise<SafeMultisigTransaction[]>;
298
+ listConfirmations(safeTxHash: Hex): Promise<SafeTransactionConfirmation[]>;
299
+ get currentNonce(): bigint;
300
+ requestRpc(request: JsonRpcRequest): Promise<unknown>;
301
+ private nextNonce;
302
+ private rollbackNonce;
303
+ private hashSafeTransaction;
304
+ private assertOwner;
305
+ }
306
+ export declare function handleSafeAppRequest(safe: SafeWalletHarness, request: SafeAppSdkRequest, options?: SafeAppBridgeOptions & {
307
+ origin?: string;
308
+ }): Promise<unknown>;
309
+ export declare function injectSafeAppBridge(page: Page, safe: SafeWalletHarness, options?: SafeAppBridgeOptions): Promise<void>;
310
+ export declare function buildSafeAppBridgeScript(version?: string): string;
311
+ //# sourceMappingURL=safe.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"safe.d.ts","sourceRoot":"","sources":["../src/safe.ts"],"names":[],"mappings":"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"}