viem 2.55.11 → 2.55.13

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 (78) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/_cjs/actions/wallet/prepareTransactionRequest.js +12 -12
  3. package/_cjs/actions/wallet/prepareTransactionRequest.js.map +1 -1
  4. package/_cjs/actions/wallet/sendTransaction.js +24 -12
  5. package/_cjs/actions/wallet/sendTransaction.js.map +1 -1
  6. package/_cjs/actions/wallet/sendTransactionSync.js +24 -12
  7. package/_cjs/actions/wallet/sendTransactionSync.js.map +1 -1
  8. package/_cjs/clients/createClient.js +1 -0
  9. package/_cjs/clients/createClient.js.map +1 -1
  10. package/_cjs/errors/version.js +1 -1
  11. package/_cjs/tempo/Decorator.js +7 -0
  12. package/_cjs/tempo/Decorator.js.map +1 -1
  13. package/_cjs/tempo/actions/earn/deployment.js +654 -0
  14. package/_cjs/tempo/actions/earn/deployment.js.map +1 -0
  15. package/_cjs/tempo/actions/earn.js +15 -0
  16. package/_cjs/tempo/actions/earn.js.map +1 -1
  17. package/_cjs/tempo/actions/zone.js +11 -1
  18. package/_cjs/tempo/actions/zone.js.map +1 -1
  19. package/_cjs/tempo/chainConfig.js +24 -23
  20. package/_cjs/tempo/chainConfig.js.map +1 -1
  21. package/_cjs/tempo/internal/WithdrawalSenderTag.js +2 -2
  22. package/_cjs/tempo/internal/WithdrawalSenderTag.js.map +1 -1
  23. package/_cjs/tempo/zones/Abis.js +17 -0
  24. package/_cjs/tempo/zones/Abis.js.map +1 -1
  25. package/_esm/actions/wallet/prepareTransactionRequest.js +14 -13
  26. package/_esm/actions/wallet/prepareTransactionRequest.js.map +1 -1
  27. package/_esm/actions/wallet/sendTransaction.js +24 -12
  28. package/_esm/actions/wallet/sendTransaction.js.map +1 -1
  29. package/_esm/actions/wallet/sendTransactionSync.js +24 -12
  30. package/_esm/actions/wallet/sendTransactionSync.js.map +1 -1
  31. package/_esm/clients/createClient.js +4 -3
  32. package/_esm/clients/createClient.js.map +1 -1
  33. package/_esm/errors/version.js +1 -1
  34. package/_esm/tempo/Decorator.js +7 -0
  35. package/_esm/tempo/Decorator.js.map +1 -1
  36. package/_esm/tempo/actions/earn/deployment.js +967 -0
  37. package/_esm/tempo/actions/earn/deployment.js.map +1 -0
  38. package/_esm/tempo/actions/earn.js +2 -0
  39. package/_esm/tempo/actions/earn.js.map +1 -1
  40. package/_esm/tempo/actions/zone.js +11 -1
  41. package/_esm/tempo/actions/zone.js.map +1 -1
  42. package/_esm/tempo/chainConfig.js +26 -28
  43. package/_esm/tempo/chainConfig.js.map +1 -1
  44. package/_esm/tempo/internal/WithdrawalSenderTag.js +3 -3
  45. package/_esm/tempo/internal/WithdrawalSenderTag.js.map +1 -1
  46. package/_esm/tempo/zones/Abis.js +17 -0
  47. package/_esm/tempo/zones/Abis.js.map +1 -1
  48. package/_types/actions/wallet/prepareTransactionRequest.d.ts.map +1 -1
  49. package/_types/actions/wallet/sendTransaction.d.ts.map +1 -1
  50. package/_types/actions/wallet/sendTransactionSync.d.ts.map +1 -1
  51. package/_types/clients/createClient.d.ts +3 -3
  52. package/_types/clients/createClient.d.ts.map +1 -1
  53. package/_types/errors/version.d.ts +1 -1
  54. package/_types/tempo/Decorator.d.ts +18 -0
  55. package/_types/tempo/Decorator.d.ts.map +1 -1
  56. package/_types/tempo/actions/earn/deployment.d.ts +1710 -0
  57. package/_types/tempo/actions/earn/deployment.d.ts.map +1 -0
  58. package/_types/tempo/actions/earn.d.ts +1 -1
  59. package/_types/tempo/actions/earn.d.ts.map +1 -1
  60. package/_types/tempo/actions/zone.d.ts.map +1 -1
  61. package/_types/tempo/chainConfig.d.ts.map +1 -1
  62. package/_types/tempo/internal/WithdrawalSenderTag.d.ts +2 -1
  63. package/_types/tempo/internal/WithdrawalSenderTag.d.ts.map +1 -1
  64. package/_types/tempo/zones/Abis.d.ts +48 -0
  65. package/_types/tempo/zones/Abis.d.ts.map +1 -1
  66. package/actions/wallet/prepareTransactionRequest.ts +18 -17
  67. package/actions/wallet/sendTransaction.ts +25 -10
  68. package/actions/wallet/sendTransactionSync.ts +25 -10
  69. package/clients/createClient.ts +4 -3
  70. package/errors/version.ts +1 -1
  71. package/package.json +1 -1
  72. package/tempo/Decorator.ts +41 -0
  73. package/tempo/actions/earn/deployment.ts +1427 -0
  74. package/tempo/actions/earn.ts +3 -0
  75. package/tempo/actions/zone.ts +10 -1
  76. package/tempo/chainConfig.ts +30 -27
  77. package/tempo/internal/WithdrawalSenderTag.ts +5 -4
  78. package/tempo/zones/Abis.ts +17 -0
@@ -0,0 +1,1710 @@
1
+ import type { Address } from 'abitype';
2
+ import { Hex } from 'ox';
3
+ import type { Account } from '../../../accounts/types.js';
4
+ import { type WriteContractReturnType, writeContract } from '../../../actions/wallet/writeContract.js';
5
+ import { writeContractSync } from '../../../actions/wallet/writeContractSync.js';
6
+ import type { Client } from '../../../clients/createClient.js';
7
+ import type { Transport } from '../../../clients/transports/createTransport.js';
8
+ import { BaseError, type BaseErrorType } from '../../../errors/base.js';
9
+ import type { Chain } from '../../../types/chain.js';
10
+ import type { GetEventArgs } from '../../../types/contract.js';
11
+ import type { Log } from '../../../types/log.js';
12
+ import type { Compute } from '../../../types/utils.js';
13
+ import * as Abis from '../../Abis.js';
14
+ import type { WriteParameters, WriteSyncParameters } from '../../internal/types.js';
15
+ import type { TransactionReceipt } from '../../Transaction.js';
16
+ /** @experimental Factory addresses for one reviewed Tempo Earn release. */
17
+ export type EarnFactoryAddresses = {
18
+ /** `ERC4626EngineFactory` address. */
19
+ erc4626Engine: Address;
20
+ /** `EarnFactory` address from the same release. */
21
+ earn: Address;
22
+ };
23
+ /** @experimental Deployment-fixed engine migration policy. */
24
+ export type EngineMigrationMode = 'operatorEnabled' | 'userOnly';
25
+ /** @experimental Initial controls for an Earn vault. */
26
+ export type EarnVaultControls = {
27
+ /** Request-cancellation liveness seat. @default zero address */
28
+ asyncJanitor?: Address | undefined;
29
+ /** Fast pause-only seat. @default zero address */
30
+ emergencyGuardian?: Address | undefined;
31
+ /** Maximum actively managed assets. Zero means unlimited. @default 0 */
32
+ maxManagedAssets?: bigint | undefined;
33
+ /** Whole-pool migration policy. @default 'userOnly' */
34
+ migrationMode?: EngineMigrationMode | undefined;
35
+ };
36
+ /** @experimental Optional protected fee-distributor configuration. */
37
+ export type EarnDistributorConfiguration = {
38
+ /**
39
+ * Distributor address. The first entry in `fees.fixedFees` is its protected
40
+ * fee.
41
+ */
42
+ distributor: Address;
43
+ /** Delay before a distributor fee update can execute, in seconds. */
44
+ updateDelay: number;
45
+ };
46
+ /** @experimental Initial Earn fee configuration. Omit to deploy fee-free. */
47
+ export type EarnFeeConfiguration = {
48
+ /** Optional fee on returns above an annual target. */
49
+ excess?: {
50
+ /** Fee recipient. */
51
+ account: Address;
52
+ /** Annual target rate in basis points. */
53
+ annualTargetRateBps: number;
54
+ /** Rate charged above the target in basis points. */
55
+ rateBps: number;
56
+ } | undefined;
57
+ /**
58
+ * Fixed fee recipients and rates, limited to four entries. When a
59
+ * distributor is enabled, the first entry is its protected fee and the
60
+ * remaining entries are operator-controlled.
61
+ */
62
+ fixedFees?: readonly {
63
+ /** Fee recipient. */
64
+ account: Address;
65
+ /** Fee rate in basis points. */
66
+ rateBps: number;
67
+ }[] | undefined;
68
+ };
69
+ /**
70
+ * Deploys a deterministic ERC-4626 Earn engine.
71
+ *
72
+ * @experimental
73
+ *
74
+ * @example
75
+ * ```ts
76
+ * import { createClient, http } from 'viem'
77
+ * import { privateKeyToAccount } from 'viem/accounts'
78
+ * import { tempoModerato } from 'viem/chains'
79
+ * import { Actions } from 'viem/tempo'
80
+ *
81
+ * const client = createClient({
82
+ * account: privateKeyToAccount('0x...'),
83
+ * chain: tempoModerato,
84
+ * transport: http(),
85
+ * })
86
+ *
87
+ * const hash = await Actions.earn.createErc4626Engine(client, {
88
+ * deploymentId: '0x...',
89
+ * factory: '0x...',
90
+ * venue: '0x...',
91
+ * })
92
+ * ```
93
+ *
94
+ * @param client - Client.
95
+ * @param parameters - Parameters.
96
+ * @returns The transaction hash.
97
+ */
98
+ export declare function createErc4626Engine<chain extends Chain | undefined, account extends Account | undefined>(client: Client<Transport, chain, account>, parameters: createErc4626Engine.Parameters<chain, account>): Promise<createErc4626Engine.ReturnValue>;
99
+ export declare namespace createErc4626Engine {
100
+ type Args = {
101
+ /** Stable deterministic deployment identifier. */
102
+ deploymentId: Hex.Hex;
103
+ /** Reviewed `ERC4626EngineFactory` address. */
104
+ factory: Address;
105
+ /** Optional engine name override. Empty derives the venue name. */
106
+ name?: string | undefined;
107
+ /** Final engine owner. */
108
+ owner: Address;
109
+ /** Optional engine symbol override. Empty derives the venue symbol. */
110
+ symbol?: string | undefined;
111
+ /** ERC-4626 venue address. */
112
+ venue: Address;
113
+ };
114
+ type Parameters<chain extends Chain | undefined = Chain | undefined, account extends Account | undefined = Account | undefined> = WriteParameters<chain, account> & Omit<Args, 'owner'> & {
115
+ /** Final engine owner. @default `account.address` */
116
+ owner?: Account | Address | undefined;
117
+ };
118
+ type ReturnValue = WriteContractReturnType;
119
+ type ErrorType = BaseErrorType;
120
+ /** @internal */
121
+ function inner<action extends typeof writeContract | typeof writeContractSync, chain extends Chain | undefined, account extends Account | undefined>(action: action, client: Client<Transport, chain, account>, parameters: Parameters<chain, account>): Promise<ReturnType<action>>;
122
+ /**
123
+ * Defines a call to `ERC4626EngineFactory.deploy`.
124
+ *
125
+ * Can be passed as a parameter to:
126
+ * - [`estimateContractGas`](https://viem.sh/docs/contract/estimateContractGas): estimate the gas cost of the call
127
+ * - [`simulateContract`](https://viem.sh/docs/contract/simulateContract): simulate the call
128
+ * - [`sendCalls`](https://viem.sh/docs/actions/wallet/sendCalls): send multiple calls
129
+ *
130
+ * @example
131
+ * ```ts
132
+ * import { createClient, http, walletActions } from 'viem'
133
+ * import { tempoModerato } from 'viem/chains'
134
+ * import { Actions } from 'viem/tempo'
135
+ *
136
+ * const client = createClient({ chain: tempoModerato, transport: http() })
137
+ * .extend(walletActions)
138
+ * await client.sendTransaction({
139
+ * calls: [Actions.earn.createErc4626Engine.call({
140
+ * deploymentId: '0x...',
141
+ * factory: '0x...',
142
+ * owner: '0x...',
143
+ * venue: '0x...',
144
+ * })],
145
+ * })
146
+ * ```
147
+ *
148
+ * @param args - Arguments.
149
+ * @returns The call.
150
+ */
151
+ function call(args: Args): {
152
+ abi: [{
153
+ readonly type: "function";
154
+ readonly name: "deploy";
155
+ readonly inputs: readonly [{
156
+ readonly name: "deploymentId";
157
+ readonly type: "bytes32";
158
+ }, {
159
+ readonly name: "vault";
160
+ readonly type: "address";
161
+ }, {
162
+ readonly name: "owner";
163
+ readonly type: "address";
164
+ }, {
165
+ readonly name: "nameOverride";
166
+ readonly type: "string";
167
+ }, {
168
+ readonly name: "symbolOverride";
169
+ readonly type: "string";
170
+ }];
171
+ readonly outputs: readonly [{
172
+ readonly name: "engine";
173
+ readonly type: "address";
174
+ }];
175
+ readonly stateMutability: "nonpayable";
176
+ }];
177
+ functionName: "deploy";
178
+ } & {
179
+ args: readonly [`0x${string}`, vault: `0x${string}`, owner: `0x${string}`, string, string];
180
+ } & {
181
+ address: Address;
182
+ } & {
183
+ data: import("../../../index.js").Hex;
184
+ to: Address;
185
+ };
186
+ /**
187
+ * Predicts the deterministic engine address.
188
+ *
189
+ * @param client - Client.
190
+ * @param args - Engine deployment arguments.
191
+ * @returns The predicted engine address.
192
+ */
193
+ function predict<chain extends Chain | undefined>(client: Client<Transport, chain>, args: Args): Promise<`0x${string}`>;
194
+ /**
195
+ * Extracts the `ERC4626EngineDeployed` event from factory logs.
196
+ *
197
+ * @param logs - The logs.
198
+ * @param parameters - Factory address used to filter the logs.
199
+ * @returns The deployment event.
200
+ */
201
+ function extractEvent(logs: Log[], parameters: {
202
+ factory: Address;
203
+ }): Log<bigint, number, false, undefined, true, readonly [{
204
+ readonly type: "function";
205
+ readonly name: "computeEngineSalt";
206
+ readonly inputs: readonly [{
207
+ readonly name: "deploymentId";
208
+ readonly type: "bytes32";
209
+ }, {
210
+ readonly name: "vault";
211
+ readonly type: "address";
212
+ }, {
213
+ readonly name: "owner";
214
+ readonly type: "address";
215
+ }, {
216
+ readonly name: "nameOverride";
217
+ readonly type: "string";
218
+ }, {
219
+ readonly name: "symbolOverride";
220
+ readonly type: "string";
221
+ }];
222
+ readonly outputs: readonly [{
223
+ readonly name: "";
224
+ readonly type: "bytes32";
225
+ }];
226
+ readonly stateMutability: "pure";
227
+ }, {
228
+ readonly type: "function";
229
+ readonly name: "deploy";
230
+ readonly inputs: readonly [{
231
+ readonly name: "deploymentId";
232
+ readonly type: "bytes32";
233
+ }, {
234
+ readonly name: "vault";
235
+ readonly type: "address";
236
+ }, {
237
+ readonly name: "owner";
238
+ readonly type: "address";
239
+ }, {
240
+ readonly name: "nameOverride";
241
+ readonly type: "string";
242
+ }, {
243
+ readonly name: "symbolOverride";
244
+ readonly type: "string";
245
+ }];
246
+ readonly outputs: readonly [{
247
+ readonly name: "engine";
248
+ readonly type: "address";
249
+ }];
250
+ readonly stateMutability: "nonpayable";
251
+ }, {
252
+ readonly type: "function";
253
+ readonly name: "predictEngine";
254
+ readonly inputs: readonly [{
255
+ readonly name: "deploymentId";
256
+ readonly type: "bytes32";
257
+ }, {
258
+ readonly name: "vault";
259
+ readonly type: "address";
260
+ }, {
261
+ readonly name: "owner";
262
+ readonly type: "address";
263
+ }, {
264
+ readonly name: "nameOverride";
265
+ readonly type: "string";
266
+ }, {
267
+ readonly name: "symbolOverride";
268
+ readonly type: "string";
269
+ }];
270
+ readonly outputs: readonly [{
271
+ readonly name: "";
272
+ readonly type: "address";
273
+ }];
274
+ readonly stateMutability: "view";
275
+ }, {
276
+ readonly type: "event";
277
+ readonly name: "ERC4626EngineDeployed";
278
+ readonly inputs: readonly [{
279
+ readonly name: "engine";
280
+ readonly type: "address";
281
+ readonly indexed: true;
282
+ }, {
283
+ readonly name: "vault";
284
+ readonly type: "address";
285
+ readonly indexed: true;
286
+ }, {
287
+ readonly name: "owner";
288
+ readonly type: "address";
289
+ readonly indexed: true;
290
+ }, {
291
+ readonly name: "asset";
292
+ readonly type: "address";
293
+ readonly indexed: false;
294
+ }, {
295
+ readonly name: "deploymentId";
296
+ readonly type: "bytes32";
297
+ readonly indexed: false;
298
+ }, {
299
+ readonly name: "engineSalt";
300
+ readonly type: "bytes32";
301
+ readonly indexed: false;
302
+ }];
303
+ readonly anonymous: false;
304
+ }, {
305
+ readonly type: "error";
306
+ readonly name: "EmptyDeploymentId";
307
+ readonly inputs: readonly [];
308
+ }, {
309
+ readonly type: "error";
310
+ readonly name: "EngineAlreadyExists";
311
+ readonly inputs: readonly [{
312
+ readonly name: "engine";
313
+ readonly type: "address";
314
+ }];
315
+ }, {
316
+ readonly type: "error";
317
+ readonly name: "FactoryCannotBeFinalOwner";
318
+ readonly inputs: readonly [];
319
+ }], "ERC4626EngineDeployed">;
320
+ }
321
+ /**
322
+ * Deploys an ERC-4626 engine and waits for confirmation.
323
+ *
324
+ * @experimental
325
+ *
326
+ * @example
327
+ * ```ts
328
+ * import { createClient, http } from 'viem'
329
+ * import { privateKeyToAccount } from 'viem/accounts'
330
+ * import { tempoModerato } from 'viem/chains'
331
+ * import { Actions } from 'viem/tempo'
332
+ *
333
+ * const client = createClient({
334
+ * account: privateKeyToAccount('0x...'),
335
+ * chain: tempoModerato,
336
+ * transport: http(),
337
+ * })
338
+ * const result = await Actions.earn.createErc4626EngineSync(client, {
339
+ * deploymentId: '0x...',
340
+ * factory: '0x...',
341
+ * venue: '0x...',
342
+ * })
343
+ * ```
344
+ *
345
+ * @param client - Client.
346
+ * @param parameters - Parameters.
347
+ * @returns The receipt and deployed engine metadata.
348
+ */
349
+ export declare function createErc4626EngineSync<chain extends Chain | undefined, account extends Account | undefined>(client: Client<Transport, chain, account>, parameters: createErc4626EngineSync.Parameters<chain, account>): Promise<createErc4626EngineSync.ReturnValue>;
350
+ export declare namespace createErc4626EngineSync {
351
+ type Args = createErc4626Engine.Args;
352
+ type Parameters<chain extends Chain | undefined = Chain | undefined, account extends Account | undefined = Account | undefined> = createErc4626Engine.Parameters<chain, account> & WriteSyncParameters<chain, account>;
353
+ type ReturnValue = Compute<GetEventArgs<typeof Abis.erc4626EngineFactory, 'ERC4626EngineDeployed', {
354
+ IndexedOnly: false;
355
+ Required: true;
356
+ }> & {
357
+ receipt: TransactionReceipt;
358
+ }>;
359
+ type ErrorType = BaseErrorType;
360
+ }
361
+ /**
362
+ * Creates an EarnShare, EarnVault, and EarnFees stack around an unbound engine.
363
+ *
364
+ * @experimental
365
+ *
366
+ * @example
367
+ * ```ts
368
+ * import { createClient, http } from 'viem'
369
+ * import { privateKeyToAccount } from 'viem/accounts'
370
+ * import { tempoModerato } from 'viem/chains'
371
+ * import { Actions } from 'viem/tempo'
372
+ *
373
+ * const client = createClient({
374
+ * account: privateKeyToAccount('0x...'),
375
+ * chain: tempoModerato,
376
+ * transport: http(),
377
+ * })
378
+ * const hash = await Actions.earn.createStack(client, {
379
+ * deploymentId: '0x...',
380
+ * engine: '0x...',
381
+ * factory: '0x...',
382
+ * })
383
+ * ```
384
+ *
385
+ * @param client - Client.
386
+ * @param parameters - Parameters.
387
+ * @returns The transaction hash.
388
+ */
389
+ export declare function createStack<chain extends Chain | undefined, account extends Account | undefined>(client: Client<Transport, chain, account>, parameters: createStack.Parameters<chain, account>): Promise<createStack.ReturnValue>;
390
+ export declare namespace createStack {
391
+ type Args = {
392
+ /** Initial Earn vault controls. */
393
+ controls?: EarnVaultControls | undefined;
394
+ /** Stable deterministic deployment identifier. */
395
+ deploymentId: Hex.Hex;
396
+ /** Optional protected fee distributor. */
397
+ distributor?: EarnDistributorConfiguration | undefined;
398
+ /** Engine address. */
399
+ engine: Address;
400
+ /** Reviewed `EarnFactory` address. */
401
+ factory: Address;
402
+ /** Initial fee configuration. Omit for fee-free deployment. */
403
+ fees?: EarnFeeConfiguration | undefined;
404
+ /** Final stack owner and operator. */
405
+ owner: Address;
406
+ /** Existing simple whitelist policy. Zero selects always-allow. @default 0 */
407
+ transferPolicyId?: bigint | undefined;
408
+ };
409
+ type Parameters<chain extends Chain | undefined = Chain | undefined, account extends Account | undefined = Account | undefined> = WriteParameters<chain, account> & Omit<Args, 'owner'> & {
410
+ /** Final stack owner and operator. @default `account.address` */
411
+ owner?: Account | Address | undefined;
412
+ };
413
+ type ReturnValue = WriteContractReturnType;
414
+ type ErrorType = BaseErrorType;
415
+ /** @internal */
416
+ function inner<action extends typeof writeContract | typeof writeContractSync, chain extends Chain | undefined, account extends Account | undefined>(action: action, client: Client<Transport, chain, account>, parameters: Parameters<chain, account>): Promise<ReturnType<action>>;
417
+ /**
418
+ * Defines a call to `EarnFactory.deploy`.
419
+ *
420
+ * Can be passed as a parameter to:
421
+ * - [`estimateContractGas`](https://viem.sh/docs/contract/estimateContractGas): estimate the gas cost of the call
422
+ * - [`simulateContract`](https://viem.sh/docs/contract/simulateContract): simulate the call
423
+ * - [`sendCalls`](https://viem.sh/docs/actions/wallet/sendCalls): send multiple calls
424
+ *
425
+ * @example
426
+ * ```ts
427
+ * import { createClient, http, walletActions } from 'viem'
428
+ * import { tempoModerato } from 'viem/chains'
429
+ * import { Actions } from 'viem/tempo'
430
+ *
431
+ * const client = createClient({ chain: tempoModerato, transport: http() })
432
+ * .extend(walletActions)
433
+ * await client.sendTransaction({
434
+ * calls: [Actions.earn.createStack.call({
435
+ * deploymentId: '0x...',
436
+ * engine: '0x...',
437
+ * factory: '0x...',
438
+ * owner: '0x...',
439
+ * })],
440
+ * })
441
+ * ```
442
+ *
443
+ * @param args - Arguments.
444
+ * @returns The call.
445
+ */
446
+ function call(args: Args): {
447
+ abi: [{
448
+ readonly type: "function";
449
+ readonly name: "deploy";
450
+ readonly inputs: readonly [{
451
+ readonly name: "params";
452
+ readonly type: "tuple";
453
+ readonly components: readonly [{
454
+ readonly name: "deploymentId";
455
+ readonly type: "bytes32";
456
+ }, {
457
+ readonly name: "engine";
458
+ readonly type: "address";
459
+ }, {
460
+ readonly name: "owner";
461
+ readonly type: "address";
462
+ }, {
463
+ readonly name: "controls";
464
+ readonly type: "tuple";
465
+ readonly components: readonly [{
466
+ readonly name: "emergencyGuardian";
467
+ readonly type: "address";
468
+ }, {
469
+ readonly name: "asyncJanitor";
470
+ readonly type: "address";
471
+ }, {
472
+ readonly name: "maxManagedAssets";
473
+ readonly type: "uint256";
474
+ }, {
475
+ readonly name: "migrationMode";
476
+ readonly type: "uint8";
477
+ }];
478
+ }, {
479
+ readonly name: "distributorConfig";
480
+ readonly type: "tuple";
481
+ readonly components: readonly [{
482
+ readonly name: "distributor";
483
+ readonly type: "address";
484
+ }, {
485
+ readonly name: "updateDelay";
486
+ readonly type: "uint40";
487
+ }];
488
+ }, {
489
+ readonly name: "fees";
490
+ readonly type: "tuple";
491
+ readonly components: readonly [{
492
+ readonly name: "fixedFeeCount";
493
+ readonly type: "uint8";
494
+ }, {
495
+ readonly name: "fixedFees";
496
+ readonly type: "tuple[4]";
497
+ readonly components: readonly [{
498
+ readonly name: "account";
499
+ readonly type: "address";
500
+ }, {
501
+ readonly name: "rateBps";
502
+ readonly type: "uint16";
503
+ }];
504
+ }, {
505
+ readonly name: "excess";
506
+ readonly type: "tuple";
507
+ readonly components: readonly [{
508
+ readonly name: "enabled";
509
+ readonly type: "bool";
510
+ }, {
511
+ readonly name: "account";
512
+ readonly type: "address";
513
+ }, {
514
+ readonly name: "annualTargetRateBps";
515
+ readonly type: "uint16";
516
+ }, {
517
+ readonly name: "excessFeeRateBps";
518
+ readonly type: "uint16";
519
+ }];
520
+ }];
521
+ }, {
522
+ readonly name: "transferPolicyId";
523
+ readonly type: "uint64";
524
+ }];
525
+ }];
526
+ readonly outputs: readonly [{
527
+ readonly name: "earnShare";
528
+ readonly type: "address";
529
+ }, {
530
+ readonly name: "earnVault";
531
+ readonly type: "address";
532
+ }, {
533
+ readonly name: "earnFees";
534
+ readonly type: "address";
535
+ }];
536
+ readonly stateMutability: "nonpayable";
537
+ }];
538
+ functionName: "deploy";
539
+ } & {
540
+ args: readonly [params: {
541
+ deploymentId: `0x${string}`;
542
+ engine: `0x${string}`;
543
+ owner: `0x${string}`;
544
+ controls: {
545
+ emergencyGuardian: `0x${string}`;
546
+ asyncJanitor: `0x${string}`;
547
+ maxManagedAssets: bigint;
548
+ migrationMode: number;
549
+ };
550
+ distributorConfig: {
551
+ distributor: `0x${string}`;
552
+ updateDelay: number;
553
+ };
554
+ fees: {
555
+ fixedFeeCount: number;
556
+ fixedFees: readonly [{
557
+ account: `0x${string}`;
558
+ rateBps: number;
559
+ }, {
560
+ account: `0x${string}`;
561
+ rateBps: number;
562
+ }, {
563
+ account: `0x${string}`;
564
+ rateBps: number;
565
+ }, {
566
+ account: `0x${string}`;
567
+ rateBps: number;
568
+ }];
569
+ excess: {
570
+ enabled: boolean;
571
+ account: `0x${string}`;
572
+ annualTargetRateBps: number;
573
+ excessFeeRateBps: number;
574
+ };
575
+ };
576
+ transferPolicyId: bigint;
577
+ }];
578
+ } & {
579
+ address: Address;
580
+ } & {
581
+ data: import("../../../index.js").Hex;
582
+ to: Address;
583
+ };
584
+ /**
585
+ * Predicts the deterministic EarnShare and EarnFees addresses.
586
+ *
587
+ * @param client - Client.
588
+ * @param args - Stack deployment arguments.
589
+ * @returns The predicted EarnShare and EarnFees addresses.
590
+ */
591
+ function predict<chain extends Chain | undefined>(client: Client<Transport, chain>, args: Args): Promise<{
592
+ earnFees: `0x${string}`;
593
+ earnShare: `0x${string}`;
594
+ }>;
595
+ /**
596
+ * Extracts the `EarnStackDeployed` event from factory logs.
597
+ *
598
+ * @param logs - The logs.
599
+ * @param parameters - Factory address used to filter the logs.
600
+ * @returns The deployment event.
601
+ */
602
+ function extractEvent(logs: Log[], parameters: {
603
+ factory: Address;
604
+ }): Log<bigint, number, false, undefined, true, readonly [{
605
+ readonly type: "function";
606
+ readonly name: "computeEarnShareSalt";
607
+ readonly inputs: readonly [{
608
+ readonly name: "params";
609
+ readonly type: "tuple";
610
+ readonly components: readonly [{
611
+ readonly name: "deploymentId";
612
+ readonly type: "bytes32";
613
+ }, {
614
+ readonly name: "engine";
615
+ readonly type: "address";
616
+ }, {
617
+ readonly name: "owner";
618
+ readonly type: "address";
619
+ }, {
620
+ readonly name: "controls";
621
+ readonly type: "tuple";
622
+ readonly components: readonly [{
623
+ readonly name: "emergencyGuardian";
624
+ readonly type: "address";
625
+ }, {
626
+ readonly name: "asyncJanitor";
627
+ readonly type: "address";
628
+ }, {
629
+ readonly name: "maxManagedAssets";
630
+ readonly type: "uint256";
631
+ }, {
632
+ readonly name: "migrationMode";
633
+ readonly type: "uint8";
634
+ }];
635
+ }, {
636
+ readonly name: "distributorConfig";
637
+ readonly type: "tuple";
638
+ readonly components: readonly [{
639
+ readonly name: "distributor";
640
+ readonly type: "address";
641
+ }, {
642
+ readonly name: "updateDelay";
643
+ readonly type: "uint40";
644
+ }];
645
+ }, {
646
+ readonly name: "fees";
647
+ readonly type: "tuple";
648
+ readonly components: readonly [{
649
+ readonly name: "fixedFeeCount";
650
+ readonly type: "uint8";
651
+ }, {
652
+ readonly name: "fixedFees";
653
+ readonly type: "tuple[4]";
654
+ readonly components: readonly [{
655
+ readonly name: "account";
656
+ readonly type: "address";
657
+ }, {
658
+ readonly name: "rateBps";
659
+ readonly type: "uint16";
660
+ }];
661
+ }, {
662
+ readonly name: "excess";
663
+ readonly type: "tuple";
664
+ readonly components: readonly [{
665
+ readonly name: "enabled";
666
+ readonly type: "bool";
667
+ }, {
668
+ readonly name: "account";
669
+ readonly type: "address";
670
+ }, {
671
+ readonly name: "annualTargetRateBps";
672
+ readonly type: "uint16";
673
+ }, {
674
+ readonly name: "excessFeeRateBps";
675
+ readonly type: "uint16";
676
+ }];
677
+ }];
678
+ }, {
679
+ readonly name: "transferPolicyId";
680
+ readonly type: "uint64";
681
+ }];
682
+ }];
683
+ readonly outputs: readonly [{
684
+ readonly name: "";
685
+ readonly type: "bytes32";
686
+ }];
687
+ readonly stateMutability: "pure";
688
+ }, {
689
+ readonly type: "function";
690
+ readonly name: "deploy";
691
+ readonly inputs: readonly [{
692
+ readonly name: "params";
693
+ readonly type: "tuple";
694
+ readonly components: readonly [{
695
+ readonly name: "deploymentId";
696
+ readonly type: "bytes32";
697
+ }, {
698
+ readonly name: "engine";
699
+ readonly type: "address";
700
+ }, {
701
+ readonly name: "owner";
702
+ readonly type: "address";
703
+ }, {
704
+ readonly name: "controls";
705
+ readonly type: "tuple";
706
+ readonly components: readonly [{
707
+ readonly name: "emergencyGuardian";
708
+ readonly type: "address";
709
+ }, {
710
+ readonly name: "asyncJanitor";
711
+ readonly type: "address";
712
+ }, {
713
+ readonly name: "maxManagedAssets";
714
+ readonly type: "uint256";
715
+ }, {
716
+ readonly name: "migrationMode";
717
+ readonly type: "uint8";
718
+ }];
719
+ }, {
720
+ readonly name: "distributorConfig";
721
+ readonly type: "tuple";
722
+ readonly components: readonly [{
723
+ readonly name: "distributor";
724
+ readonly type: "address";
725
+ }, {
726
+ readonly name: "updateDelay";
727
+ readonly type: "uint40";
728
+ }];
729
+ }, {
730
+ readonly name: "fees";
731
+ readonly type: "tuple";
732
+ readonly components: readonly [{
733
+ readonly name: "fixedFeeCount";
734
+ readonly type: "uint8";
735
+ }, {
736
+ readonly name: "fixedFees";
737
+ readonly type: "tuple[4]";
738
+ readonly components: readonly [{
739
+ readonly name: "account";
740
+ readonly type: "address";
741
+ }, {
742
+ readonly name: "rateBps";
743
+ readonly type: "uint16";
744
+ }];
745
+ }, {
746
+ readonly name: "excess";
747
+ readonly type: "tuple";
748
+ readonly components: readonly [{
749
+ readonly name: "enabled";
750
+ readonly type: "bool";
751
+ }, {
752
+ readonly name: "account";
753
+ readonly type: "address";
754
+ }, {
755
+ readonly name: "annualTargetRateBps";
756
+ readonly type: "uint16";
757
+ }, {
758
+ readonly name: "excessFeeRateBps";
759
+ readonly type: "uint16";
760
+ }];
761
+ }];
762
+ }, {
763
+ readonly name: "transferPolicyId";
764
+ readonly type: "uint64";
765
+ }];
766
+ }];
767
+ readonly outputs: readonly [{
768
+ readonly name: "earnShare";
769
+ readonly type: "address";
770
+ }, {
771
+ readonly name: "earnVault";
772
+ readonly type: "address";
773
+ }, {
774
+ readonly name: "earnFees";
775
+ readonly type: "address";
776
+ }];
777
+ readonly stateMutability: "nonpayable";
778
+ }, {
779
+ readonly type: "function";
780
+ readonly name: "earnFeesImplementation";
781
+ readonly inputs: readonly [];
782
+ readonly outputs: readonly [{
783
+ readonly name: "";
784
+ readonly type: "address";
785
+ }];
786
+ readonly stateMutability: "view";
787
+ }, {
788
+ readonly type: "function";
789
+ readonly name: "earnVaultImplementation";
790
+ readonly inputs: readonly [];
791
+ readonly outputs: readonly [{
792
+ readonly name: "";
793
+ readonly type: "address";
794
+ }];
795
+ readonly stateMutability: "view";
796
+ }, {
797
+ readonly type: "function";
798
+ readonly name: "predictEarnFees";
799
+ readonly inputs: readonly [{
800
+ readonly name: "params";
801
+ readonly type: "tuple";
802
+ readonly components: readonly [{
803
+ readonly name: "deploymentId";
804
+ readonly type: "bytes32";
805
+ }, {
806
+ readonly name: "engine";
807
+ readonly type: "address";
808
+ }, {
809
+ readonly name: "owner";
810
+ readonly type: "address";
811
+ }, {
812
+ readonly name: "controls";
813
+ readonly type: "tuple";
814
+ readonly components: readonly [{
815
+ readonly name: "emergencyGuardian";
816
+ readonly type: "address";
817
+ }, {
818
+ readonly name: "asyncJanitor";
819
+ readonly type: "address";
820
+ }, {
821
+ readonly name: "maxManagedAssets";
822
+ readonly type: "uint256";
823
+ }, {
824
+ readonly name: "migrationMode";
825
+ readonly type: "uint8";
826
+ }];
827
+ }, {
828
+ readonly name: "distributorConfig";
829
+ readonly type: "tuple";
830
+ readonly components: readonly [{
831
+ readonly name: "distributor";
832
+ readonly type: "address";
833
+ }, {
834
+ readonly name: "updateDelay";
835
+ readonly type: "uint40";
836
+ }];
837
+ }, {
838
+ readonly name: "fees";
839
+ readonly type: "tuple";
840
+ readonly components: readonly [{
841
+ readonly name: "fixedFeeCount";
842
+ readonly type: "uint8";
843
+ }, {
844
+ readonly name: "fixedFees";
845
+ readonly type: "tuple[4]";
846
+ readonly components: readonly [{
847
+ readonly name: "account";
848
+ readonly type: "address";
849
+ }, {
850
+ readonly name: "rateBps";
851
+ readonly type: "uint16";
852
+ }];
853
+ }, {
854
+ readonly name: "excess";
855
+ readonly type: "tuple";
856
+ readonly components: readonly [{
857
+ readonly name: "enabled";
858
+ readonly type: "bool";
859
+ }, {
860
+ readonly name: "account";
861
+ readonly type: "address";
862
+ }, {
863
+ readonly name: "annualTargetRateBps";
864
+ readonly type: "uint16";
865
+ }, {
866
+ readonly name: "excessFeeRateBps";
867
+ readonly type: "uint16";
868
+ }];
869
+ }];
870
+ }, {
871
+ readonly name: "transferPolicyId";
872
+ readonly type: "uint64";
873
+ }];
874
+ }];
875
+ readonly outputs: readonly [{
876
+ readonly name: "";
877
+ readonly type: "address";
878
+ }];
879
+ readonly stateMutability: "view";
880
+ }, {
881
+ readonly type: "function";
882
+ readonly name: "predictEarnShare";
883
+ readonly inputs: readonly [{
884
+ readonly name: "params";
885
+ readonly type: "tuple";
886
+ readonly components: readonly [{
887
+ readonly name: "deploymentId";
888
+ readonly type: "bytes32";
889
+ }, {
890
+ readonly name: "engine";
891
+ readonly type: "address";
892
+ }, {
893
+ readonly name: "owner";
894
+ readonly type: "address";
895
+ }, {
896
+ readonly name: "controls";
897
+ readonly type: "tuple";
898
+ readonly components: readonly [{
899
+ readonly name: "emergencyGuardian";
900
+ readonly type: "address";
901
+ }, {
902
+ readonly name: "asyncJanitor";
903
+ readonly type: "address";
904
+ }, {
905
+ readonly name: "maxManagedAssets";
906
+ readonly type: "uint256";
907
+ }, {
908
+ readonly name: "migrationMode";
909
+ readonly type: "uint8";
910
+ }];
911
+ }, {
912
+ readonly name: "distributorConfig";
913
+ readonly type: "tuple";
914
+ readonly components: readonly [{
915
+ readonly name: "distributor";
916
+ readonly type: "address";
917
+ }, {
918
+ readonly name: "updateDelay";
919
+ readonly type: "uint40";
920
+ }];
921
+ }, {
922
+ readonly name: "fees";
923
+ readonly type: "tuple";
924
+ readonly components: readonly [{
925
+ readonly name: "fixedFeeCount";
926
+ readonly type: "uint8";
927
+ }, {
928
+ readonly name: "fixedFees";
929
+ readonly type: "tuple[4]";
930
+ readonly components: readonly [{
931
+ readonly name: "account";
932
+ readonly type: "address";
933
+ }, {
934
+ readonly name: "rateBps";
935
+ readonly type: "uint16";
936
+ }];
937
+ }, {
938
+ readonly name: "excess";
939
+ readonly type: "tuple";
940
+ readonly components: readonly [{
941
+ readonly name: "enabled";
942
+ readonly type: "bool";
943
+ }, {
944
+ readonly name: "account";
945
+ readonly type: "address";
946
+ }, {
947
+ readonly name: "annualTargetRateBps";
948
+ readonly type: "uint16";
949
+ }, {
950
+ readonly name: "excessFeeRateBps";
951
+ readonly type: "uint16";
952
+ }];
953
+ }];
954
+ }, {
955
+ readonly name: "transferPolicyId";
956
+ readonly type: "uint64";
957
+ }];
958
+ }];
959
+ readonly outputs: readonly [{
960
+ readonly name: "";
961
+ readonly type: "address";
962
+ }];
963
+ readonly stateMutability: "view";
964
+ }, {
965
+ readonly type: "function";
966
+ readonly name: "tip20Factory";
967
+ readonly inputs: readonly [];
968
+ readonly outputs: readonly [{
969
+ readonly name: "";
970
+ readonly type: "address";
971
+ }];
972
+ readonly stateMutability: "view";
973
+ }, {
974
+ readonly type: "event";
975
+ readonly name: "EarnStackDeployed";
976
+ readonly inputs: readonly [{
977
+ readonly name: "earnVault";
978
+ readonly type: "address";
979
+ readonly indexed: true;
980
+ }, {
981
+ readonly name: "earnShare";
982
+ readonly type: "address";
983
+ readonly indexed: true;
984
+ }, {
985
+ readonly name: "earnFees";
986
+ readonly type: "address";
987
+ readonly indexed: true;
988
+ }, {
989
+ readonly name: "engine";
990
+ readonly type: "address";
991
+ readonly indexed: false;
992
+ }, {
993
+ readonly name: "asset";
994
+ readonly type: "address";
995
+ readonly indexed: false;
996
+ }, {
997
+ readonly name: "owner";
998
+ readonly type: "address";
999
+ readonly indexed: false;
1000
+ }, {
1001
+ readonly name: "deploymentId";
1002
+ readonly type: "bytes32";
1003
+ readonly indexed: false;
1004
+ }, {
1005
+ readonly name: "emergencyGuardian";
1006
+ readonly type: "address";
1007
+ readonly indexed: false;
1008
+ }, {
1009
+ readonly name: "asyncJanitor";
1010
+ readonly type: "address";
1011
+ readonly indexed: false;
1012
+ }, {
1013
+ readonly name: "maxManagedAssets";
1014
+ readonly type: "uint256";
1015
+ readonly indexed: false;
1016
+ }, {
1017
+ readonly name: "migrationMode";
1018
+ readonly type: "uint8";
1019
+ readonly indexed: false;
1020
+ }, {
1021
+ readonly name: "transferPolicyId";
1022
+ readonly type: "uint64";
1023
+ readonly indexed: false;
1024
+ }, {
1025
+ readonly name: "earnShareSalt";
1026
+ readonly type: "bytes32";
1027
+ readonly indexed: false;
1028
+ }, {
1029
+ readonly name: "controlConfigHash";
1030
+ readonly type: "bytes32";
1031
+ readonly indexed: false;
1032
+ }, {
1033
+ readonly name: "feeConfigHash";
1034
+ readonly type: "bytes32";
1035
+ readonly indexed: false;
1036
+ }, {
1037
+ readonly name: "earnFeesSalt";
1038
+ readonly type: "bytes32";
1039
+ readonly indexed: false;
1040
+ }];
1041
+ readonly anonymous: false;
1042
+ }, {
1043
+ readonly type: "error";
1044
+ readonly name: "AdminHandoffFailed";
1045
+ readonly inputs: readonly [];
1046
+ }, {
1047
+ readonly type: "error";
1048
+ readonly name: "EarnShareAlreadyExists";
1049
+ readonly inputs: readonly [{
1050
+ readonly name: "earnShare";
1051
+ readonly type: "address";
1052
+ }];
1053
+ }, {
1054
+ readonly type: "error";
1055
+ readonly name: "EarnShareSupplyNotZero";
1056
+ readonly inputs: readonly [];
1057
+ }, {
1058
+ readonly type: "error";
1059
+ readonly name: "EmptyDeploymentId";
1060
+ readonly inputs: readonly [];
1061
+ }, {
1062
+ readonly type: "error";
1063
+ readonly name: "EmptyEarnShareMetadata";
1064
+ readonly inputs: readonly [];
1065
+ }, {
1066
+ readonly type: "error";
1067
+ readonly name: "EngineAlreadyBound";
1068
+ readonly inputs: readonly [{
1069
+ readonly name: "earnVault";
1070
+ readonly type: "address";
1071
+ }];
1072
+ }, {
1073
+ readonly type: "error";
1074
+ readonly name: "FactoryCannotBeFinalOwner";
1075
+ readonly inputs: readonly [];
1076
+ }, {
1077
+ readonly type: "error";
1078
+ readonly name: "FailedDeployment";
1079
+ readonly inputs: readonly [];
1080
+ }, {
1081
+ readonly type: "error";
1082
+ readonly name: "InsufficientBalance";
1083
+ readonly inputs: readonly [{
1084
+ readonly name: "balance";
1085
+ readonly type: "uint256";
1086
+ }, {
1087
+ readonly name: "needed";
1088
+ readonly type: "uint256";
1089
+ }];
1090
+ }, {
1091
+ readonly type: "error";
1092
+ readonly name: "InvalidDistributorConfig";
1093
+ readonly inputs: readonly [];
1094
+ }, {
1095
+ readonly type: "error";
1096
+ readonly name: "InvalidEarnFeesImplementation";
1097
+ readonly inputs: readonly [];
1098
+ }, {
1099
+ readonly type: "error";
1100
+ readonly name: "InvalidEarnVaultImplementation";
1101
+ readonly inputs: readonly [];
1102
+ }, {
1103
+ readonly type: "error";
1104
+ readonly name: "InvalidEngine";
1105
+ readonly inputs: readonly [];
1106
+ }, {
1107
+ readonly type: "error";
1108
+ readonly name: "InvalidTransferPolicy";
1109
+ readonly inputs: readonly [{
1110
+ readonly name: "policyId";
1111
+ readonly type: "uint64";
1112
+ }];
1113
+ }, {
1114
+ readonly type: "error";
1115
+ readonly name: "IssuerGrantFailed";
1116
+ readonly inputs: readonly [];
1117
+ }, {
1118
+ readonly type: "error";
1119
+ readonly name: "TransferPolicyMismatch";
1120
+ readonly inputs: readonly [{
1121
+ readonly name: "expected";
1122
+ readonly type: "uint64";
1123
+ }, {
1124
+ readonly name: "actual";
1125
+ readonly type: "uint64";
1126
+ }];
1127
+ }, {
1128
+ readonly type: "error";
1129
+ readonly name: "UnsupportedTransferPolicy";
1130
+ readonly inputs: readonly [{
1131
+ readonly name: "policyId";
1132
+ readonly type: "uint64";
1133
+ }, {
1134
+ readonly name: "policyType";
1135
+ readonly type: "uint8";
1136
+ }];
1137
+ }, {
1138
+ readonly type: "error";
1139
+ readonly name: "ZeroAddress";
1140
+ readonly inputs: readonly [];
1141
+ }], "EarnStackDeployed">;
1142
+ }
1143
+ /**
1144
+ * Creates an Earn core stack and waits for confirmation.
1145
+ *
1146
+ * @experimental
1147
+ *
1148
+ * @example
1149
+ * ```ts
1150
+ * import { createClient, http } from 'viem'
1151
+ * import { privateKeyToAccount } from 'viem/accounts'
1152
+ * import { tempoModerato } from 'viem/chains'
1153
+ * import { Actions } from 'viem/tempo'
1154
+ *
1155
+ * const client = createClient({
1156
+ * account: privateKeyToAccount('0x...'),
1157
+ * chain: tempoModerato,
1158
+ * transport: http(),
1159
+ * })
1160
+ * const result = await Actions.earn.createStackSync(client, {
1161
+ * deploymentId: '0x...',
1162
+ * engine: '0x...',
1163
+ * factory: '0x...',
1164
+ * })
1165
+ * ```
1166
+ *
1167
+ * @param client - Client.
1168
+ * @param parameters - Parameters.
1169
+ * @returns The receipt and deployed stack addresses.
1170
+ */
1171
+ export declare function createStackSync<chain extends Chain | undefined, account extends Account | undefined>(client: Client<Transport, chain, account>, parameters: createStackSync.Parameters<chain, account>): Promise<createStackSync.ReturnValue>;
1172
+ export declare namespace createStackSync {
1173
+ type Args = createStack.Args;
1174
+ type Parameters<chain extends Chain | undefined = Chain | undefined, account extends Account | undefined = Account | undefined> = createStack.Parameters<chain, account> & WriteSyncParameters<chain, account>;
1175
+ type ReturnValue = Compute<GetEventArgs<typeof Abis.earnFactory, 'EarnStackDeployed', {
1176
+ IndexedOnly: false;
1177
+ Required: true;
1178
+ }> & {
1179
+ receipt: TransactionReceipt;
1180
+ }>;
1181
+ type ErrorType = BaseErrorType;
1182
+ }
1183
+ /**
1184
+ * Permanently binds an ERC-4626 engine to its EarnVault.
1185
+ *
1186
+ * @experimental
1187
+ *
1188
+ * @example
1189
+ * ```ts
1190
+ * import { createClient, http } from 'viem'
1191
+ * import { privateKeyToAccount } from 'viem/accounts'
1192
+ * import { tempoModerato } from 'viem/chains'
1193
+ * import { Actions } from 'viem/tempo'
1194
+ *
1195
+ * const client = createClient({
1196
+ * account: privateKeyToAccount('0x...'),
1197
+ * chain: tempoModerato,
1198
+ * transport: http(),
1199
+ * })
1200
+ * const hash = await Actions.earn.bindErc4626Engine(client, {
1201
+ * engine: '0x...',
1202
+ * vault: '0x...',
1203
+ * })
1204
+ * ```
1205
+ *
1206
+ * @param client - Client controlled by the final engine owner.
1207
+ * @param parameters - Parameters.
1208
+ * @returns The transaction hash.
1209
+ */
1210
+ export declare function bindErc4626Engine<chain extends Chain | undefined, account extends Account | undefined>(client: Client<Transport, chain, account>, parameters: bindErc4626Engine.Parameters<chain, account>): Promise<bindErc4626Engine.ReturnValue>;
1211
+ export declare namespace bindErc4626Engine {
1212
+ type Args = {
1213
+ /** ERC-4626 engine address. */
1214
+ engine: Address;
1215
+ /** Factory-created EarnVault address. */
1216
+ vault: Address;
1217
+ };
1218
+ type Parameters<chain extends Chain | undefined = Chain | undefined, account extends Account | undefined = Account | undefined> = WriteParameters<chain, account> & Args;
1219
+ type ReturnValue = WriteContractReturnType;
1220
+ type ErrorType = BaseErrorType;
1221
+ /** @internal */
1222
+ function inner<action extends typeof writeContract | typeof writeContractSync, chain extends Chain | undefined, account extends Account | undefined>(action: action, client: Client<Transport, chain, account>, parameters: Parameters<chain, account>): Promise<ReturnType<action>>;
1223
+ /**
1224
+ * Defines a call to `ERC4626Engine.initializeEarnVault`.
1225
+ *
1226
+ * Can be passed as a parameter to:
1227
+ * - [`estimateContractGas`](https://viem.sh/docs/contract/estimateContractGas): estimate the gas cost of the call
1228
+ * - [`simulateContract`](https://viem.sh/docs/contract/simulateContract): simulate the call
1229
+ * - [`sendCalls`](https://viem.sh/docs/actions/wallet/sendCalls): send multiple calls
1230
+ *
1231
+ * @example
1232
+ * ```ts
1233
+ * import { createClient, http, walletActions } from 'viem'
1234
+ * import { tempoModerato } from 'viem/chains'
1235
+ * import { Actions } from 'viem/tempo'
1236
+ *
1237
+ * const client = createClient({ chain: tempoModerato, transport: http() })
1238
+ * .extend(walletActions)
1239
+ * await client.sendTransaction({
1240
+ * calls: [Actions.earn.bindErc4626Engine.call({
1241
+ * engine: '0x...',
1242
+ * vault: '0x...',
1243
+ * })],
1244
+ * })
1245
+ * ```
1246
+ *
1247
+ * @param args - Arguments.
1248
+ * @returns The call.
1249
+ */
1250
+ function call(args: Args): {
1251
+ abi: [{
1252
+ readonly type: "function";
1253
+ readonly name: "initializeEarnVault";
1254
+ readonly inputs: readonly [{
1255
+ readonly name: "earnVault_";
1256
+ readonly type: "address";
1257
+ }];
1258
+ readonly outputs: readonly [];
1259
+ readonly stateMutability: "nonpayable";
1260
+ }];
1261
+ functionName: "initializeEarnVault";
1262
+ } & {
1263
+ args: readonly [`0x${string}`];
1264
+ } & {
1265
+ address: Address;
1266
+ } & {
1267
+ data: import("../../../index.js").Hex;
1268
+ to: Address;
1269
+ };
1270
+ /**
1271
+ * Extracts the `EarnVaultInitialized` event from engine logs.
1272
+ *
1273
+ * @param logs - The logs.
1274
+ * @param parameters - Engine address used to filter the logs.
1275
+ * @returns The initialization event.
1276
+ */
1277
+ function extractEvent(logs: Log[], parameters: {
1278
+ engine: Address;
1279
+ }): Log<bigint, number, false, undefined, true, readonly [{
1280
+ readonly type: "function";
1281
+ readonly name: "acceptOwnership";
1282
+ readonly inputs: readonly [];
1283
+ readonly outputs: readonly [];
1284
+ readonly stateMutability: "nonpayable";
1285
+ }, {
1286
+ readonly type: "function";
1287
+ readonly name: "asset";
1288
+ readonly inputs: readonly [];
1289
+ readonly outputs: readonly [{
1290
+ readonly name: "";
1291
+ readonly type: "address";
1292
+ }];
1293
+ readonly stateMutability: "view";
1294
+ }, {
1295
+ readonly type: "function";
1296
+ readonly name: "baseAsset";
1297
+ readonly inputs: readonly [];
1298
+ readonly outputs: readonly [{
1299
+ readonly name: "";
1300
+ readonly type: "address";
1301
+ }];
1302
+ readonly stateMutability: "view";
1303
+ }, {
1304
+ readonly type: "function";
1305
+ readonly name: "earnVault";
1306
+ readonly inputs: readonly [];
1307
+ readonly outputs: readonly [{
1308
+ readonly name: "";
1309
+ readonly type: "address";
1310
+ }];
1311
+ readonly stateMutability: "view";
1312
+ }, {
1313
+ readonly type: "function";
1314
+ readonly name: "initializeEarnVault";
1315
+ readonly inputs: readonly [{
1316
+ readonly name: "earnVault_";
1317
+ readonly type: "address";
1318
+ }];
1319
+ readonly outputs: readonly [];
1320
+ readonly stateMutability: "nonpayable";
1321
+ }, {
1322
+ readonly type: "function";
1323
+ readonly name: "name";
1324
+ readonly inputs: readonly [];
1325
+ readonly outputs: readonly [{
1326
+ readonly name: "";
1327
+ readonly type: "string";
1328
+ }];
1329
+ readonly stateMutability: "view";
1330
+ }, {
1331
+ readonly type: "function";
1332
+ readonly name: "owner";
1333
+ readonly inputs: readonly [];
1334
+ readonly outputs: readonly [{
1335
+ readonly name: "";
1336
+ readonly type: "address";
1337
+ }];
1338
+ readonly stateMutability: "view";
1339
+ }, {
1340
+ readonly type: "function";
1341
+ readonly name: "pendingOwner";
1342
+ readonly inputs: readonly [];
1343
+ readonly outputs: readonly [{
1344
+ readonly name: "";
1345
+ readonly type: "address";
1346
+ }];
1347
+ readonly stateMutability: "view";
1348
+ }, {
1349
+ readonly type: "function";
1350
+ readonly name: "renounceOwnership";
1351
+ readonly inputs: readonly [];
1352
+ readonly outputs: readonly [];
1353
+ readonly stateMutability: "nonpayable";
1354
+ }, {
1355
+ readonly type: "function";
1356
+ readonly name: "symbol";
1357
+ readonly inputs: readonly [];
1358
+ readonly outputs: readonly [{
1359
+ readonly name: "";
1360
+ readonly type: "string";
1361
+ }];
1362
+ readonly stateMutability: "view";
1363
+ }, {
1364
+ readonly type: "function";
1365
+ readonly name: "transferOwnership";
1366
+ readonly inputs: readonly [{
1367
+ readonly name: "newOwner";
1368
+ readonly type: "address";
1369
+ }];
1370
+ readonly outputs: readonly [];
1371
+ readonly stateMutability: "nonpayable";
1372
+ }, {
1373
+ readonly type: "function";
1374
+ readonly name: "vault";
1375
+ readonly inputs: readonly [];
1376
+ readonly outputs: readonly [{
1377
+ readonly name: "";
1378
+ readonly type: "address";
1379
+ }];
1380
+ readonly stateMutability: "view";
1381
+ }, {
1382
+ readonly type: "event";
1383
+ readonly name: "Deposited";
1384
+ readonly inputs: readonly [{
1385
+ readonly name: "earnVault";
1386
+ readonly type: "address";
1387
+ readonly indexed: true;
1388
+ }, {
1389
+ readonly name: "assets";
1390
+ readonly type: "uint256";
1391
+ readonly indexed: false;
1392
+ }, {
1393
+ readonly name: "engineShares";
1394
+ readonly type: "uint256";
1395
+ readonly indexed: false;
1396
+ }];
1397
+ readonly anonymous: false;
1398
+ }, {
1399
+ readonly type: "event";
1400
+ readonly name: "EarnVaultInitialized";
1401
+ readonly inputs: readonly [{
1402
+ readonly name: "earnVault";
1403
+ readonly type: "address";
1404
+ readonly indexed: true;
1405
+ }];
1406
+ readonly anonymous: false;
1407
+ }, {
1408
+ readonly type: "event";
1409
+ readonly name: "OwnershipTransferStarted";
1410
+ readonly inputs: readonly [{
1411
+ readonly name: "previousOwner";
1412
+ readonly type: "address";
1413
+ readonly indexed: true;
1414
+ }, {
1415
+ readonly name: "newOwner";
1416
+ readonly type: "address";
1417
+ readonly indexed: true;
1418
+ }];
1419
+ readonly anonymous: false;
1420
+ }, {
1421
+ readonly type: "event";
1422
+ readonly name: "OwnershipTransferred";
1423
+ readonly inputs: readonly [{
1424
+ readonly name: "previousOwner";
1425
+ readonly type: "address";
1426
+ readonly indexed: true;
1427
+ }, {
1428
+ readonly name: "newOwner";
1429
+ readonly type: "address";
1430
+ readonly indexed: true;
1431
+ }];
1432
+ readonly anonymous: false;
1433
+ }, {
1434
+ readonly type: "event";
1435
+ readonly name: "Redeemed";
1436
+ readonly inputs: readonly [{
1437
+ readonly name: "receiver";
1438
+ readonly type: "address";
1439
+ readonly indexed: true;
1440
+ }, {
1441
+ readonly name: "engineShares";
1442
+ readonly type: "uint256";
1443
+ readonly indexed: false;
1444
+ }, {
1445
+ readonly name: "assets";
1446
+ readonly type: "uint256";
1447
+ readonly indexed: false;
1448
+ }];
1449
+ readonly anonymous: false;
1450
+ }, {
1451
+ readonly type: "event";
1452
+ readonly name: "VenueSharesDeposited";
1453
+ readonly inputs: readonly [{
1454
+ readonly name: "from";
1455
+ readonly type: "address";
1456
+ readonly indexed: true;
1457
+ }, {
1458
+ readonly name: "requestedVenueShares";
1459
+ readonly type: "uint256";
1460
+ readonly indexed: false;
1461
+ }, {
1462
+ readonly name: "receivedEngineShares";
1463
+ readonly type: "uint256";
1464
+ readonly indexed: false;
1465
+ }];
1466
+ readonly anonymous: false;
1467
+ }, {
1468
+ readonly type: "event";
1469
+ readonly name: "WithdrewExact";
1470
+ readonly inputs: readonly [{
1471
+ readonly name: "receiver";
1472
+ readonly type: "address";
1473
+ readonly indexed: true;
1474
+ }, {
1475
+ readonly name: "assets";
1476
+ readonly type: "uint256";
1477
+ readonly indexed: false;
1478
+ }, {
1479
+ readonly name: "engineSharesBurned";
1480
+ readonly type: "uint256";
1481
+ readonly indexed: false;
1482
+ }];
1483
+ readonly anonymous: false;
1484
+ }, {
1485
+ readonly type: "error";
1486
+ readonly name: "AlreadyInitialized";
1487
+ readonly inputs: readonly [];
1488
+ }, {
1489
+ readonly type: "error";
1490
+ readonly name: "EarnVaultNotSet";
1491
+ readonly inputs: readonly [];
1492
+ }, {
1493
+ readonly type: "error";
1494
+ readonly name: "EmptyMetadata";
1495
+ readonly inputs: readonly [];
1496
+ }, {
1497
+ readonly type: "error";
1498
+ readonly name: "InsufficientAssetsReceived";
1499
+ readonly inputs: readonly [{
1500
+ readonly name: "minimumAssets";
1501
+ readonly type: "uint256";
1502
+ }, {
1503
+ readonly name: "actualAssets";
1504
+ readonly type: "uint256";
1505
+ }];
1506
+ }, {
1507
+ readonly type: "error";
1508
+ readonly name: "InvalidVenueShareDecimals";
1509
+ readonly inputs: readonly [];
1510
+ }, {
1511
+ readonly type: "error";
1512
+ readonly name: "NoVenueSharesReceived";
1513
+ readonly inputs: readonly [];
1514
+ }, {
1515
+ readonly type: "error";
1516
+ readonly name: "NotEarnVault";
1517
+ readonly inputs: readonly [{
1518
+ readonly name: "caller";
1519
+ readonly type: "address";
1520
+ }];
1521
+ }, {
1522
+ readonly type: "error";
1523
+ readonly name: "OwnableInvalidOwner";
1524
+ readonly inputs: readonly [{
1525
+ readonly name: "owner";
1526
+ readonly type: "address";
1527
+ }];
1528
+ }, {
1529
+ readonly type: "error";
1530
+ readonly name: "OwnableUnauthorizedAccount";
1531
+ readonly inputs: readonly [{
1532
+ readonly name: "account";
1533
+ readonly type: "address";
1534
+ }];
1535
+ }, {
1536
+ readonly type: "error";
1537
+ readonly name: "ReentrantCall";
1538
+ readonly inputs: readonly [];
1539
+ }, {
1540
+ readonly type: "error";
1541
+ readonly name: "TransferFailed";
1542
+ readonly inputs: readonly [];
1543
+ }, {
1544
+ readonly type: "error";
1545
+ readonly name: "UnexpectedAssetsReceived";
1546
+ readonly inputs: readonly [{
1547
+ readonly name: "expectedAssets";
1548
+ readonly type: "uint256";
1549
+ }, {
1550
+ readonly name: "actualAssets";
1551
+ readonly type: "uint256";
1552
+ }];
1553
+ }, {
1554
+ readonly type: "error";
1555
+ readonly name: "UnexpectedVenueSharesBurned";
1556
+ readonly inputs: readonly [{
1557
+ readonly name: "expectedShares";
1558
+ readonly type: "uint256";
1559
+ }, {
1560
+ readonly name: "actualShares";
1561
+ readonly type: "uint256";
1562
+ }];
1563
+ }, {
1564
+ readonly type: "error";
1565
+ readonly name: "ZeroAddress";
1566
+ readonly inputs: readonly [];
1567
+ }], "EarnVaultInitialized">;
1568
+ }
1569
+ /**
1570
+ * Binds an ERC-4626 engine and waits for confirmation.
1571
+ *
1572
+ * @experimental
1573
+ *
1574
+ * @example
1575
+ * ```ts
1576
+ * import { createClient, http } from 'viem'
1577
+ * import { privateKeyToAccount } from 'viem/accounts'
1578
+ * import { tempoModerato } from 'viem/chains'
1579
+ * import { Actions } from 'viem/tempo'
1580
+ *
1581
+ * const client = createClient({
1582
+ * account: privateKeyToAccount('0x...'),
1583
+ * chain: tempoModerato,
1584
+ * transport: http(),
1585
+ * })
1586
+ * const result = await Actions.earn.bindErc4626EngineSync(client, {
1587
+ * engine: '0x...',
1588
+ * vault: '0x...',
1589
+ * })
1590
+ * ```
1591
+ *
1592
+ * @param client - Client controlled by the final engine owner.
1593
+ * @param parameters - Parameters.
1594
+ * @returns The receipt and bound addresses.
1595
+ */
1596
+ export declare function bindErc4626EngineSync<chain extends Chain | undefined, account extends Account | undefined>(client: Client<Transport, chain, account>, parameters: bindErc4626EngineSync.Parameters<chain, account>): Promise<bindErc4626EngineSync.ReturnValue>;
1597
+ export declare namespace bindErc4626EngineSync {
1598
+ type Args = bindErc4626Engine.Args;
1599
+ type Parameters<chain extends Chain | undefined = Chain | undefined, account extends Account | undefined = Account | undefined> = bindErc4626Engine.Parameters<chain, account> & WriteSyncParameters<chain, account>;
1600
+ type ReturnValue = {
1601
+ /** ERC-4626 engine address. */
1602
+ engine: Address;
1603
+ /** Transaction receipt. */
1604
+ receipt: TransactionReceipt;
1605
+ /** Bound EarnVault address. */
1606
+ vault: Address;
1607
+ };
1608
+ type ErrorType = BaseErrorType;
1609
+ }
1610
+ export type DeployErc4626StackErrorType = DeployErc4626StackError & {
1611
+ name: 'DeployErc4626StackError';
1612
+ };
1613
+ /**
1614
+ * Error thrown after a partially completed Earn stack deployment.
1615
+ *
1616
+ * @experimental
1617
+ */
1618
+ export declare class DeployErc4626StackError extends BaseError {
1619
+ receipts: deployErc4626StackSync.Receipts;
1620
+ stage: deployErc4626StackSync.Stage;
1621
+ state: deployErc4626StackSync.State;
1622
+ constructor(cause: Error, parameters: {
1623
+ receipts: deployErc4626StackSync.Receipts;
1624
+ stage: deployErc4626StackSync.Stage;
1625
+ state: deployErc4626StackSync.State;
1626
+ });
1627
+ }
1628
+ /**
1629
+ * Deploys and binds a complete ERC-4626 Earn stack through sequential,
1630
+ * resumable transactions.
1631
+ *
1632
+ * @experimental
1633
+ *
1634
+ * @example
1635
+ * ```ts
1636
+ * import { createClient, http } from 'viem'
1637
+ * import { privateKeyToAccount } from 'viem/accounts'
1638
+ * import { tempoModerato } from 'viem/chains'
1639
+ * import { Actions } from 'viem/tempo'
1640
+ *
1641
+ * const client = createClient({
1642
+ * account: privateKeyToAccount('0x...'),
1643
+ * chain: tempoModerato,
1644
+ * transport: http(),
1645
+ * })
1646
+ * const result = await Actions.earn.deployErc4626StackSync(client, {
1647
+ * deploymentId: '0x...',
1648
+ * factories: { earn: '0x...', erc4626Engine: '0x...' },
1649
+ * venue: '0x...',
1650
+ * })
1651
+ * ```
1652
+ *
1653
+ * @param client - Client.
1654
+ * @param parameters - Parameters.
1655
+ * @returns The deployed addresses and receipts created by this run.
1656
+ */
1657
+ export declare function deployErc4626StackSync<chain extends Chain | undefined, account extends Account | undefined>(client: Client<Transport, chain, account>, parameters: deployErc4626StackSync.Parameters<chain, account>): Promise<deployErc4626StackSync.ReturnValue>;
1658
+ export declare namespace deployErc4626StackSync {
1659
+ type Parameters<chain extends Chain | undefined = Chain | undefined, account extends Account | undefined = Account | undefined> = Omit<WriteParameters<chain, account>, 'gas' | 'keyAuthorization' | 'nonce' | 'throwOnReceiptRevert'> & WriteSyncParameters<chain, account> & {
1660
+ /** Account used only for the final owner binding. */
1661
+ bindingAccount?: Account | Address | undefined;
1662
+ /** Initial Earn vault controls. */
1663
+ controls?: EarnVaultControls | undefined;
1664
+ /** Stable deterministic deployment identifier. */
1665
+ deploymentId: Hex.Hex;
1666
+ /** Optional protected fee distributor. */
1667
+ distributor?: EarnDistributorConfiguration | undefined;
1668
+ /** Reviewed factory pair from one Earn release. */
1669
+ factories: EarnFactoryAddresses;
1670
+ /** Initial fee configuration. Omit for fee-free deployment. */
1671
+ fees?: EarnFeeConfiguration | undefined;
1672
+ /** First block to search for a prior factory deployment event. */
1673
+ fromBlock?: bigint | undefined;
1674
+ /** Optional engine name override. */
1675
+ name?: string | undefined;
1676
+ /** Final stack owner and operator. @default `account.address` */
1677
+ owner?: Account | Address | undefined;
1678
+ /** Previously persisted deployment state. */
1679
+ resume?: State | undefined;
1680
+ /** Optional engine symbol override. */
1681
+ symbol?: string | undefined;
1682
+ /** Existing simple whitelist policy. Zero selects always-allow. */
1683
+ transferPolicyId?: bigint | undefined;
1684
+ /** ERC-4626 venue address. */
1685
+ venue: Address;
1686
+ };
1687
+ type Stage = 'binding' | 'engine' | 'stack';
1688
+ type State = {
1689
+ deploymentId: Hex.Hex;
1690
+ earnShare?: Address | undefined;
1691
+ engine: Address;
1692
+ fees?: Address | undefined;
1693
+ vault?: Address | undefined;
1694
+ };
1695
+ type Receipts = {
1696
+ binding?: TransactionReceipt | undefined;
1697
+ engine?: TransactionReceipt | undefined;
1698
+ stack?: TransactionReceipt | undefined;
1699
+ };
1700
+ type ReturnValue = {
1701
+ deploymentId: Hex.Hex;
1702
+ earnShare: Address;
1703
+ engine: Address;
1704
+ fees: Address;
1705
+ receipts: Receipts;
1706
+ vault: Address;
1707
+ };
1708
+ type ErrorType = DeployErc4626StackErrorType | BaseErrorType;
1709
+ }
1710
+ //# sourceMappingURL=deployment.d.ts.map