@aztec/wallet-sdk 4.1.0-rc.4 → 4.2.0-nightly.20260320

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.
@@ -1,4 +1,4 @@
1
- import type { Account } from '@aztec/aztec.js/account';
1
+ import type { Account, NoFrom } from '@aztec/aztec.js/account';
2
2
  import type { CallIntent, IntentInnerHash } from '@aztec/aztec.js/authorization';
3
3
  import { type InteractionWaitOptions, type SendReturn } from '@aztec/aztec.js/contracts';
4
4
  import type { FeePaymentMethod } from '@aztec/aztec.js/fee';
@@ -27,10 +27,17 @@ export type FeeOptions = {
27
27
  */
28
28
  walletFeePaymentMethod?: FeePaymentMethod;
29
29
  /** Configuration options for the account to properly handle the selected fee payment method */
30
- accountFeePaymentMethodOptions: AccountFeePaymentMethodOptions;
30
+ accountFeePaymentMethodOptions?: AccountFeePaymentMethodOptions;
31
31
  /** The gas settings to use for the transaction */
32
32
  gasSettings: GasSettings;
33
33
  };
34
+ /** Options for `simulateViaEntrypoint`. */
35
+ export type SimulateViaEntrypointOptions = Pick<SimulateOptions, 'from' | 'additionalScopes' | 'skipTxValidation' | 'skipFeeEnforcement'> & {
36
+ /** Fee options for the entrypoint */
37
+ feeOptions: FeeOptions;
38
+ /** Scopes to use for the simulation */
39
+ scopes: AccessScopes;
40
+ };
34
41
  /**
35
42
  * A base class for Wallet implementations
36
43
  */
@@ -41,8 +48,7 @@ export declare abstract class BaseWallet implements Wallet {
41
48
  protected minFeePadding: number;
42
49
  protected cancellableTransactions: boolean;
43
50
  protected constructor(pxe: PXE, aztecNode: AztecNode, log?: import("@aztec/foundation/log").Logger);
44
- protected scopesFor(from: AztecAddress): AztecAddress[];
45
- protected scopesFrom(from: AztecAddress, additionalScopes?: AztecAddress[]): AztecAddress[];
51
+ protected scopesFrom(from: AztecAddress | NoFrom, additionalScopes?: AztecAddress[]): AztecAddress[];
46
52
  protected abstract getAccountFromAddress(address: AztecAddress): Promise<Account>;
47
53
  abstract getAccounts(): Promise<Aliased<AztecAddress>[]>;
48
54
  /**
@@ -54,7 +60,7 @@ export declare abstract class BaseWallet implements Wallet {
54
60
  */
55
61
  getAddressBook(): Promise<Aliased<AztecAddress>[]>;
56
62
  getChainInfo(): Promise<ChainInfo>;
57
- protected createTxExecutionRequestFromPayloadAndFee(executionPayload: ExecutionPayload, from: AztecAddress, feeOptions: FeeOptions): Promise<TxExecutionRequest>;
63
+ protected createTxExecutionRequestFromPayloadAndFee(executionPayload: ExecutionPayload, from: AztecAddress | NoFrom, feeOptions: FeeOptions): Promise<TxExecutionRequest>;
58
64
  createAuthWit(from: AztecAddress, messageHashOrIntent: IntentInnerHash | CallIntent): Promise<AuthWitness>;
59
65
  /**
60
66
  * Request capabilities from the wallet.
@@ -78,7 +84,7 @@ export declare abstract class BaseWallet implements Wallet {
78
84
  * @param gasSettings - User-provided partial gas settings
79
85
  * @returns - Complete fee options that can be used to create a transaction execution request
80
86
  */
81
- protected completeFeeOptions(from: AztecAddress, feePayer?: AztecAddress, gasSettings?: Partial<FieldsOf<GasSettings>>): Promise<FeeOptions>;
87
+ protected completeFeeOptions(from: AztecAddress | NoFrom, feePayer?: AztecAddress, gasSettings?: Partial<FieldsOf<GasSettings>>): Promise<FeeOptions>;
82
88
  /**
83
89
  * Completes partial user-provided fee options with unreasonably high gas limits
84
90
  * for gas estimation. Uses the same logic as completeFeeOptions but sets high limits
@@ -87,14 +93,14 @@ export declare abstract class BaseWallet implements Wallet {
87
93
  * @param feePayer - The address paying for fees (if any fee payment method is embedded in the execution payload)
88
94
  * @param gasSettings - User-provided partial gas settings
89
95
  */
90
- protected completeFeeOptionsForEstimation(from: AztecAddress, feePayer?: AztecAddress, gasSettings?: Partial<FieldsOf<GasSettings>>): Promise<{
96
+ protected completeFeeOptionsForEstimation(from: AztecAddress | NoFrom, feePayer?: AztecAddress, gasSettings?: Partial<FieldsOf<GasSettings>>): Promise<{
91
97
  /**
92
98
  * A wallet-provided fallback fee payment method that is used only if the transaction that is being constructed
93
99
  * doesn't already include one
94
100
  */
95
101
  walletFeePaymentMethod?: FeePaymentMethod | undefined;
96
102
  /** Configuration options for the account to properly handle the selected fee payment method */
97
- accountFeePaymentMethodOptions: AccountFeePaymentMethodOptions;
103
+ accountFeePaymentMethodOptions?: AccountFeePaymentMethodOptions | undefined;
98
104
  gasSettings: GasSettings;
99
105
  }>;
100
106
  registerSender(address: AztecAddress, _alias?: string): Promise<AztecAddress>;
@@ -102,13 +108,9 @@ export declare abstract class BaseWallet implements Wallet {
102
108
  /**
103
109
  * Simulates calls through the standard PXE path (account entrypoint).
104
110
  * @param executionPayload - The execution payload to simulate.
105
- * @param from - The sender address.
106
- * @param feeOptions - Fee options for the transaction.
107
- * @param skipTxValidation - Whether to skip tx validation.
108
- * @param skipFeeEnforcement - Whether to skip fee enforcement.
109
- * @param scopes - The scopes to use for the simulation.
111
+ * @param opts - Simulation options.
110
112
  */
111
- protected simulateViaEntrypoint(executionPayload: ExecutionPayload, from: AztecAddress, feeOptions: FeeOptions, scopes: AccessScopes, skipTxValidation?: boolean, skipFeeEnforcement?: boolean): Promise<TxSimulationResult>;
113
+ protected simulateViaEntrypoint(executionPayload: ExecutionPayload, opts: SimulateViaEntrypointOptions): Promise<TxSimulationResult>;
112
114
  /**
113
115
  * Simulates a transaction, optimizing leading public static calls by running them directly
114
116
  * on the node while sending the remaining calls through the standard PXE path.
@@ -128,9 +130,16 @@ export declare abstract class BaseWallet implements Wallet {
128
130
  protected contextualizeError(err: Error, ...context: string[]): Error;
129
131
  executeUtility(call: FunctionCall, opts: ExecuteUtilityOptions): Promise<UtilityExecutionResult>;
130
132
  getPrivateEvents<T>(eventDef: EventMetadataDefinition, eventFilter: PrivateEventFilter): Promise<PrivateEvent<T>[]>;
133
+ /**
134
+ * Returns metadata about a contract, including whether it has been initialized, published, and updated.
135
+ *
136
+ * `isContractInitialized` requires the contract instance to be registered in the PXE (for `init_hash`). When the
137
+ * instance is not available, `isContractInitialized` is `undefined` since it cannot be determined.
138
+ * @param address - The contract address to query.
139
+ */
131
140
  getContractMetadata(address: AztecAddress): Promise<{
132
141
  instance: ContractInstanceWithAddress | undefined;
133
- isContractInitialized: boolean;
142
+ isContractInitialized: boolean | undefined;
134
143
  isContractPublished: boolean;
135
144
  isContractUpdated: boolean;
136
145
  updatedContractClassId: Fr | undefined;
@@ -140,4 +149,4 @@ export declare abstract class BaseWallet implements Wallet {
140
149
  isContractClassPubliclyRegistered: boolean;
141
150
  }>;
142
151
  }
143
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZV93YWxsZXQuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9iYXNlLXdhbGxldC9iYXNlX3dhbGxldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxPQUFPLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEtBQUssRUFBRSxVQUFVLEVBQUUsZUFBZSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDakYsT0FBTyxFQUNMLEtBQUssc0JBQXNCLEVBRTNCLEtBQUssVUFBVSxFQUVoQixNQUFNLDJCQUEyQixDQUFDO0FBQ25DLE9BQU8sS0FBSyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFNUQsT0FBTyxLQUFLLEVBQ1YsT0FBTyxFQUNQLGVBQWUsRUFDZixZQUFZLEVBQ1osYUFBYSxFQUNiLHFCQUFxQixFQUNyQixZQUFZLEVBQ1osa0JBQWtCLEVBQ2xCLGNBQWMsRUFDZCxXQUFXLEVBQ1gsZUFBZSxFQUNmLE1BQU0sRUFDTixrQkFBa0IsRUFDbkIsTUFBTSx3QkFBd0IsQ0FBQztBQU9oQyxPQUFPLEVBQUUsOEJBQThCLEVBQXdDLE1BQU0sNEJBQTRCLENBQUM7QUFDbEgsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDL0QsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRXBELE9BQU8sS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxLQUFLLFlBQVksRUFBb0IsTUFBTSx3QkFBd0IsQ0FBQztBQUM3RSxPQUFPLEtBQUssRUFBRSxHQUFHLEVBQXNCLE1BQU0sbUJBQW1CLENBQUM7QUFDakUsT0FBTyxFQUNMLEtBQUssZ0JBQWdCLEVBQ3JCLEtBQUssdUJBQXVCLEVBQzVCLEtBQUssWUFBWSxFQUVsQixNQUFNLG1CQUFtQixDQUFDO0FBQzNCLE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzlELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRCxPQUFPLEVBQ0wsS0FBSywyQkFBMkIsRUFHakMsTUFBTSx3QkFBd0IsQ0FBQztBQUVoQyxPQUFPLEVBQU8sV0FBVyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFckQsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDakUsT0FBTyxFQUVMLEtBQUssa0JBQWtCLEVBQ3ZCLEtBQUssZUFBZSxFQUNwQixrQkFBa0IsRUFDbEIsS0FBSyxzQkFBc0IsRUFDNUIsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQUUsZ0JBQWdCLEVBQTBCLE1BQU0sa0JBQWtCLENBQUM7QUFNNUU7O0dBRUc7QUFDSCxNQUFNLE1BQU0sVUFBVSxHQUFHO0lBQ3ZCOzs7T0FHRztJQUNILHNCQUFzQixDQUFDLEVBQUUsZ0JBQWdCLENBQUM7SUFDMUMsK0ZBQStGO0lBQy9GLDhCQUE4QixFQUFFLDhCQUE4QixDQUFDO0lBQy9ELGtEQUFrRDtJQUNsRCxXQUFXLEVBQUUsV0FBVyxDQUFDO0NBQzFCLENBQUM7QUFFRjs7R0FFRztBQUNILDhCQUFzQixVQUFXLFlBQVcsTUFBTTtJQU05QyxTQUFTLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxHQUFHO0lBQzNCLFNBQVMsQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLFNBQVM7SUFDdkMsU0FBUyxDQUFDLEdBQUc7SUFQZixTQUFTLENBQUMsYUFBYSxTQUFPO0lBQzlCLFNBQVMsQ0FBQyx1QkFBdUIsVUFBUztJQUcxQyxTQUFTLGFBQ1ksR0FBRyxFQUFFLEdBQUcsRUFDUixTQUFTLEVBQUUsU0FBUyxFQUM3QixHQUFHLHlDQUF5QyxFQUNwRDtJQUlKLFNBQVMsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLFlBQVksR0FBRyxZQUFZLEVBQUUsQ0FFdEQ7SUFFRCxTQUFTLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLEdBQUUsWUFBWSxFQUFPLEdBQUcsWUFBWSxFQUFFLENBSTlGO0lBRUQsU0FBUyxDQUFDLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLEVBQUUsWUFBWSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUVsRixRQUFRLENBQUMsV0FBVyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBRXpEOzs7Ozs7T0FNRztJQUNHLGNBQWMsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FHdkQ7SUFFSyxZQUFZLElBQUksT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUd2QztJQUVELFVBQWdCLHlDQUF5QyxDQUN2RCxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFDbEMsSUFBSSxFQUFFLFlBQVksRUFDbEIsVUFBVSxFQUFFLFVBQVUsR0FDckIsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBa0I3QjtJQUVZLGFBQWEsQ0FDeEIsSUFBSSxFQUFFLFlBQVksRUFDbEIsbUJBQW1CLEVBQUUsZUFBZSxHQUFHLFVBQVUsR0FDaEQsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUl0QjtJQUVEOzs7Ozs7Ozs7Ozs7T0FZRztJQUNJLG1CQUFtQixDQUFDLFNBQVMsRUFBRSxlQUFlLEdBQUcsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBRWxGO0lBRVksS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLFNBQVMsU0FBUyxhQUFhLEVBQUUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FnQmpHO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsVUFBZ0Isa0JBQWtCLENBQ2hDLElBQUksRUFBRSxZQUFZLEVBQ2xCLFFBQVEsQ0FBQyxFQUFFLFlBQVksRUFDdkIsV0FBVyxDQUFDLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxHQUMzQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBc0JyQjtJQUVEOzs7Ozs7O09BT0c7SUFDSCxVQUFnQiwrQkFBK0IsQ0FDN0MsSUFBSSxFQUFFLFlBQVksRUFDbEIsUUFBUSxDQUFDLEVBQUUsWUFBWSxFQUN2QixXQUFXLENBQUMsRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBNUs5Qzs7O1dBR0c7O1FBRUgsK0ZBQStGOzs7T0F5TDlGO0lBRUQsY0FBYyxDQUFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxHQUFFLE1BQVcsR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDLENBRWhGO0lBRUssZ0JBQWdCLENBQ3BCLFFBQVEsRUFBRSwyQkFBMkIsRUFDckMsUUFBUSxDQUFDLEVBQUUsZ0JBQWdCLEVBQzNCLFNBQVMsQ0FBQyxFQUFFLEVBQUUsR0FDYixPQUFPLENBQUMsMkJBQTJCLENBQUMsQ0FnQ3RDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSCxVQUFnQixxQkFBcUIsQ0FDbkMsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQ2xDLElBQUksRUFBRSxZQUFZLEVBQ2xCLFVBQVUsRUFBRSxVQUFVLEVBQ3RCLE1BQU0sRUFBRSxZQUFZLEVBQ3BCLGdCQUFnQixDQUFDLEVBQUUsT0FBTyxFQUMxQixrQkFBa0IsQ0FBQyxFQUFFLE9BQU8sK0JBSTdCO0lBRUQ7Ozs7Ozs7T0FPRztJQUNHLFVBQVUsQ0FBQyxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBRSxJQUFJLEVBQUUsZUFBZSxHQUFHLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQTJDdkc7SUFFSyxTQUFTLENBQUMsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLGNBQWMsR0FBRyxPQUFPLENBQUMsZUFBZSxDQUFDLENBUWxHO0lBRVksTUFBTSxDQUFDLENBQUMsU0FBUyxzQkFBc0IsR0FBRyxTQUFTLEVBQzlELGdCQUFnQixFQUFFLGdCQUFnQixFQUNsQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUNuQixPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBK0J4QjtJQUVEOzs7T0FHRztJQUNILFVBQWdCLGVBQWUsQ0FBQyxPQUFPLEVBQUUsWUFBWSxHQUFHLE9BQU8sQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDLENBT2xGO0lBRUQsU0FBUyxDQUFDLGtCQUFrQixDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsS0FBSyxDQVlwRTtJQUVELGNBQWMsQ0FBQyxJQUFJLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxxQkFBcUIsR0FBRyxPQUFPLENBQUMsc0JBQXNCLENBQUMsQ0FFL0Y7SUFFSyxnQkFBZ0IsQ0FBQyxDQUFDLEVBQ3RCLFFBQVEsRUFBRSx1QkFBdUIsRUFDakMsV0FBVyxFQUFFLGtCQUFrQixHQUM5QixPQUFPLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FlNUI7SUFFSyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsWUFBWTs7Ozs7O09BZTlDO0lBRUssd0JBQXdCLENBQUMsRUFBRSxFQUFFLEVBQUU7OztPQU1wQztDQUNGIn0=
152
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZV93YWxsZXQuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9iYXNlLXdhbGxldC9iYXNlX3dhbGxldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFL0QsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLGVBQWUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2pGLE9BQU8sRUFDTCxLQUFLLHNCQUFzQixFQUUzQixLQUFLLFVBQVUsRUFFaEIsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRTVELE9BQU8sS0FBSyxFQUNWLE9BQU8sRUFDUCxlQUFlLEVBQ2YsWUFBWSxFQUNaLGFBQWEsRUFDYixxQkFBcUIsRUFDckIsWUFBWSxFQUNaLGtCQUFrQixFQUNsQixjQUFjLEVBQ2QsV0FBVyxFQUNYLGVBQWUsRUFDZixNQUFNLEVBQ04sa0JBQWtCLEVBQ25CLE1BQU0sd0JBQXdCLENBQUM7QUFPaEMsT0FBTyxFQUFFLDhCQUE4QixFQUF3QyxNQUFNLDRCQUE0QixDQUFDO0FBRWxILE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUVwRCxPQUFPLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsS0FBSyxZQUFZLEVBQW9CLE1BQU0sd0JBQXdCLENBQUM7QUFDN0UsT0FBTyxLQUFLLEVBQUUsR0FBRyxFQUFzQixNQUFNLG1CQUFtQixDQUFDO0FBQ2pFLE9BQU8sRUFDTCxLQUFLLGdCQUFnQixFQUNyQixLQUFLLHVCQUF1QixFQUM1QixLQUFLLFlBQVksRUFFbEIsTUFBTSxtQkFBbUIsQ0FBQztBQUMz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
@@ -1 +1 @@
1
- {"version":3,"file":"base_wallet.d.ts","sourceRoot":"","sources":["../../src/base-wallet/base_wallet.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"base_wallet.d.ts","sourceRoot":"","sources":["../../src/base-wallet/base_wallet.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,9 @@
1
+ import { NO_FROM } from '@aztec/aztec.js/account';
1
2
  import { NO_WAIT, extractOffchainOutput } from '@aztec/aztec.js/contracts';
2
3
  import { waitForTx } from '@aztec/aztec.js/node';
3
4
  import { GAS_ESTIMATION_DA_GAS_LIMIT, GAS_ESTIMATION_L2_GAS_LIMIT, GAS_ESTIMATION_TEARDOWN_DA_GAS_LIMIT, GAS_ESTIMATION_TEARDOWN_L2_GAS_LIMIT } from '@aztec/constants';
4
5
  import { AccountFeePaymentMethodOptions } from '@aztec/entrypoints/account';
6
+ import { DefaultEntrypoint } from '@aztec/entrypoints/default';
5
7
  import { Fr } from '@aztec/foundation/curves/bn254';
6
8
  import { createLogger } from '@aztec/foundation/log';
7
9
  import { displayDebugLogs } from '@aztec/pxe/client/lazy';
@@ -10,7 +12,7 @@ import { AztecAddress } from '@aztec/stdlib/aztec-address';
10
12
  import { computePartialAddress, getContractClassFromArtifact } from '@aztec/stdlib/contract';
11
13
  import { SimulationError } from '@aztec/stdlib/errors';
12
14
  import { Gas, GasSettings } from '@aztec/stdlib/gas';
13
- import { siloNullifier } from '@aztec/stdlib/hash';
15
+ import { computeSiloedPrivateInitializationNullifier } from '@aztec/stdlib/hash';
14
16
  import { mergeExecutionPayloads } from '@aztec/stdlib/tx';
15
17
  import { inspect } from 'util';
16
18
  import { buildMergedSimulationResult, extractOptimizablePublicStaticCalls, simulateViaNode } from './utils.js';
@@ -30,15 +32,8 @@ import { buildMergedSimulationResult, extractOptimizablePublicStaticCalls, simul
30
32
  this.minFeePadding = 0.5;
31
33
  this.cancellableTransactions = false;
32
34
  }
33
- // When `from` is the zero address (e.g. when deploying a new account contract), we return an
34
- // empty scope list which acts as deny-all: no notes are visible and no keys are accessible.
35
- scopesFor(from) {
36
- return from.isZero() ? [] : [
37
- from
38
- ];
39
- }
40
35
  scopesFrom(from, additionalScopes = []) {
41
- const allScopes = from.isZero() ? additionalScopes : [
36
+ const allScopes = from === NO_FROM ? additionalScopes : [
42
37
  from,
43
38
  ...additionalScopes
44
39
  ];
@@ -69,18 +64,24 @@ import { buildMergedSimulationResult, extractOptimizablePublicStaticCalls, simul
69
64
  }
70
65
  async createTxExecutionRequestFromPayloadAndFee(executionPayload, from, feeOptions) {
71
66
  const feeExecutionPayload = await feeOptions.walletFeePaymentMethod?.getExecutionPayload();
72
- const executionOptions = {
73
- txNonce: Fr.random(),
74
- cancellable: this.cancellableTransactions,
75
- feePaymentMethodOptions: feeOptions.accountFeePaymentMethodOptions
76
- };
77
67
  const finalExecutionPayload = feeExecutionPayload ? mergeExecutionPayloads([
78
68
  feeExecutionPayload,
79
69
  executionPayload
80
70
  ]) : executionPayload;
81
- const fromAccount = await this.getAccountFromAddress(from);
82
71
  const chainInfo = await this.getChainInfo();
83
- return fromAccount.createTxExecutionRequest(finalExecutionPayload, feeOptions.gasSettings, chainInfo, executionOptions);
72
+ if (from === NO_FROM) {
73
+ const entrypoint = new DefaultEntrypoint();
74
+ return entrypoint.createTxExecutionRequest(finalExecutionPayload, feeOptions.gasSettings, chainInfo);
75
+ } else {
76
+ const fromAccount = await this.getAccountFromAddress(from);
77
+ const executionOptions = {
78
+ txNonce: Fr.random(),
79
+ cancellable: this.cancellableTransactions,
80
+ // If from is an address, feeOptions include the way the account contract should handle the fee payment
81
+ feePaymentMethodOptions: feeOptions.accountFeePaymentMethodOptions
82
+ };
83
+ return fromAccount.createTxExecutionRequest(finalExecutionPayload, feeOptions.gasSettings, chainInfo, executionOptions);
84
+ }
84
85
  }
85
86
  async createAuthWit(from, messageHashOrIntent) {
86
87
  const account = await this.getAccountFromAddress(from);
@@ -130,14 +131,18 @@ import { buildMergedSimulationResult, extractOptimizablePublicStaticCalls, simul
130
131
  */ async completeFeeOptions(from, feePayer, gasSettings) {
131
132
  const maxFeesPerGas = gasSettings?.maxFeesPerGas ?? (await this.aztecNode.getCurrentMinFees()).mul(1 + this.minFeePadding);
132
133
  let accountFeePaymentMethodOptions;
133
- // The transaction does not include a fee payment method, so we set the flag
134
- // for the account to use its fee juice balance
135
- if (!feePayer) {
136
- accountFeePaymentMethodOptions = AccountFeePaymentMethodOptions.PREEXISTING_FEE_JUICE;
137
- } else {
138
- // The transaction includes fee payment method, so we check if we are the fee payer for it
139
- // (this can only happen if the embedded payment method is FeeJuiceWithClaim)
140
- accountFeePaymentMethodOptions = from.equals(feePayer) ? AccountFeePaymentMethodOptions.FEE_JUICE_WITH_CLAIM : AccountFeePaymentMethodOptions.EXTERNAL;
134
+ // If from is an address, we need to determine the appropriate fee payment method options for the
135
+ // account contract entrypoint to use
136
+ if (from !== NO_FROM) {
137
+ if (!feePayer) {
138
+ // The transaction does not include a fee payment method, so we set the flag
139
+ // for the account to use its fee juice balance
140
+ accountFeePaymentMethodOptions = AccountFeePaymentMethodOptions.PREEXISTING_FEE_JUICE;
141
+ } else {
142
+ // The transaction includes fee payment method, so we check if we are the fee payer for it
143
+ // (this can only happen if the embedded payment method is FeeJuiceWithClaim)
144
+ accountFeePaymentMethodOptions = from.equals(feePayer) ? AccountFeePaymentMethodOptions.FEE_JUICE_WITH_CLAIM : AccountFeePaymentMethodOptions.EXTERNAL;
145
+ }
141
146
  }
142
147
  const fullGasSettings = GasSettings.default({
143
148
  ...gasSettings,
@@ -206,18 +211,14 @@ import { buildMergedSimulationResult, extractOptimizablePublicStaticCalls, simul
206
211
  /**
207
212
  * Simulates calls through the standard PXE path (account entrypoint).
208
213
  * @param executionPayload - The execution payload to simulate.
209
- * @param from - The sender address.
210
- * @param feeOptions - Fee options for the transaction.
211
- * @param skipTxValidation - Whether to skip tx validation.
212
- * @param skipFeeEnforcement - Whether to skip fee enforcement.
213
- * @param scopes - The scopes to use for the simulation.
214
- */ async simulateViaEntrypoint(executionPayload, from, feeOptions, scopes, skipTxValidation, skipFeeEnforcement) {
215
- const txRequest = await this.createTxExecutionRequestFromPayloadAndFee(executionPayload, from, feeOptions);
214
+ * @param opts - Simulation options.
215
+ */ async simulateViaEntrypoint(executionPayload, opts) {
216
+ const txRequest = await this.createTxExecutionRequestFromPayloadAndFee(executionPayload, opts.from, opts.feeOptions);
216
217
  return this.pxe.simulateTx(txRequest, {
217
218
  simulatePublic: true,
218
- skipTxValidation,
219
- skipFeeEnforcement,
220
- scopes
219
+ skipTxValidation: opts.skipTxValidation,
220
+ skipFeeEnforcement: opts.skipFeeEnforcement,
221
+ scopes: opts.scopes
221
222
  });
222
223
  }
223
224
  /**
@@ -243,9 +244,16 @@ import { buildMergedSimulationResult, extractOptimizablePublicStaticCalls, simul
243
244
  } catch {
244
245
  blockHeader = await this.aztecNode.getBlockHeader();
245
246
  }
247
+ const simulationOrigin = opts.from === NO_FROM ? AztecAddress.ZERO : opts.from;
246
248
  const [optimizedResults, normalResult] = await Promise.all([
247
- optimizableCalls.length > 0 ? simulateViaNode(this.aztecNode, optimizableCalls, opts.from, chainInfo, feeOptions.gasSettings, blockHeader, opts.skipFeeEnforcement ?? true, this.getContractName.bind(this)) : Promise.resolve([]),
248
- remainingCalls.length > 0 ? this.simulateViaEntrypoint(remainingPayload, opts.from, feeOptions, this.scopesFrom(opts.from, opts.additionalScopes), opts.skipTxValidation, opts.skipFeeEnforcement ?? true) : Promise.resolve(null)
249
+ optimizableCalls.length > 0 ? simulateViaNode(this.aztecNode, optimizableCalls, simulationOrigin, chainInfo, feeOptions.gasSettings, blockHeader, opts.skipFeeEnforcement ?? true, this.getContractName.bind(this)) : Promise.resolve([]),
250
+ remainingCalls.length > 0 ? this.simulateViaEntrypoint(remainingPayload, {
251
+ from: opts.from,
252
+ feeOptions,
253
+ scopes: this.scopesFrom(opts.from, opts.additionalScopes),
254
+ skipTxValidation: opts.skipTxValidation,
255
+ skipFeeEnforcement: opts.skipFeeEnforcement ?? true
256
+ }) : Promise.resolve(null)
249
257
  ]);
250
258
  return buildMergedSimulationResult(optimizedResults, normalResult);
251
259
  }
@@ -262,7 +270,7 @@ import { buildMergedSimulationResult, extractOptimizablePublicStaticCalls, simul
262
270
  const feeOptions = await this.completeFeeOptions(opts.from, executionPayload.feePayer, opts.fee?.gasSettings);
263
271
  const txRequest = await this.createTxExecutionRequestFromPayloadAndFee(executionPayload, opts.from, feeOptions);
264
272
  const provenTx = await this.pxe.proveTx(txRequest, this.scopesFrom(opts.from, opts.additionalScopes));
265
- const offchainOutput = extractOffchainOutput(provenTx.getOffchainEffects());
273
+ const offchainOutput = extractOffchainOutput(provenTx.getOffchainEffects(), provenTx.publicInputs.constants.anchorBlockHeader.globalVariables.timestamp);
266
274
  const tx = await provenTx.toTx();
267
275
  const txHash = tx.getTxHash();
268
276
  if (await this.aztecNode.getTxEffect(txHash)) {
@@ -319,9 +327,7 @@ import { buildMergedSimulationResult, extractOptimizablePublicStaticCalls, simul
319
327
  executeUtility(call, opts) {
320
328
  return this.pxe.executeUtility(call, {
321
329
  authwits: opts.authWitnesses,
322
- scopes: [
323
- opts.scope
324
- ]
330
+ scopes: opts.scopes
325
331
  });
326
332
  }
327
333
  async getPrivateEvents(eventDef, eventFilter) {
@@ -340,15 +346,33 @@ import { buildMergedSimulationResult, extractOptimizablePublicStaticCalls, simul
340
346
  });
341
347
  return decodedEvents;
342
348
  }
343
- async getContractMetadata(address) {
349
+ /**
350
+ * Returns metadata about a contract, including whether it has been initialized, published, and updated.
351
+ *
352
+ * `isContractInitialized` requires the contract instance to be registered in the PXE (for `init_hash`). When the
353
+ * instance is not available, `isContractInitialized` is `undefined` since it cannot be determined.
354
+ * @param address - The contract address to query.
355
+ */ async getContractMetadata(address) {
344
356
  const instance = await this.pxe.getContractInstance(address);
345
- const initNullifier = await siloNullifier(address, address.toField());
346
- const publiclyRegisteredContract = await this.aztecNode.getContract(address);
347
- const initNullifierMembershipWitness = await this.aztecNode.getNullifierMembershipWitness('latest', initNullifier);
357
+ const publiclyRegisteredContractPromise = this.aztecNode.getContract(address);
358
+ // We check only the private initialization nullifier. It is emitted by both private and public initializers and
359
+ // includes init_hash, preventing observers from determining initialization status from the address alone. Without
360
+ // the instance (and thus init_hash), we can't compute it, so we return undefined.
361
+ //
362
+ // We skip the public initialization nullifier because it's not always emitted (contracts without public external
363
+ // functions that require initialization checks won't emit it). If the private one exists, the public one was
364
+ // created in the same tx and will also be present.
365
+ let isContractInitialized = undefined;
366
+ if (instance) {
367
+ const initNullifier = await computeSiloedPrivateInitializationNullifier(address, instance.initializationHash);
368
+ const witness = await this.aztecNode.getNullifierMembershipWitness('latest', initNullifier);
369
+ isContractInitialized = !!witness;
370
+ }
371
+ const publiclyRegisteredContract = await publiclyRegisteredContractPromise;
348
372
  const isContractUpdated = publiclyRegisteredContract && !publiclyRegisteredContract.currentContractClassId.equals(publiclyRegisteredContract.originalContractClassId);
349
373
  return {
350
374
  instance: instance ?? undefined,
351
- isContractInitialized: !!initNullifierMembershipWitness,
375
+ isContractInitialized,
352
376
  isContractPublished: !!publiclyRegisteredContract,
353
377
  isContractUpdated: !!isContractUpdated,
354
378
  updatedContractClassId: isContractUpdated ? publiclyRegisteredContract.currentContractClassId : undefined
@@ -1,3 +1,3 @@
1
- export { BaseWallet, type FeeOptions } from './base_wallet.js';
1
+ export { BaseWallet, type FeeOptions, type SimulateViaEntrypointOptions } from './base_wallet.js';
2
2
  export { simulateViaNode, buildMergedSimulationResult, extractOptimizablePublicStaticCalls } from './utils.js';
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9iYXNlLXdhbGxldC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLEtBQUssVUFBVSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGVBQWUsRUFBRSwyQkFBMkIsRUFBRSxtQ0FBbUMsRUFBRSxNQUFNLFlBQVksQ0FBQyJ9
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9iYXNlLXdhbGxldC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLEtBQUssVUFBVSxFQUFFLEtBQUssNEJBQTRCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRyxPQUFPLEVBQUUsZUFBZSxFQUFFLDJCQUEyQixFQUFFLG1DQUFtQyxFQUFFLE1BQU0sWUFBWSxDQUFDIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/base-wallet/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,2BAA2B,EAAE,mCAAmC,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/base-wallet/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,KAAK,UAAU,EAAE,KAAK,4BAA4B,EAAE,MAAM,kBAAkB,CAAC;AAClG,OAAO,EAAE,eAAe,EAAE,2BAA2B,EAAE,mCAAmC,EAAE,MAAM,YAAY,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@aztec/wallet-sdk",
3
3
  "homepage": "https://github.com/AztecProtocol/aztec-packages/tree/master/yarn-project/wallet-sdk",
4
- "version": "4.1.0-rc.4",
4
+ "version": "4.2.0-nightly.20260320",
5
5
  "type": "module",
6
6
  "exports": {
7
7
  "./base-wallet": "./dest/base-wallet/index.js",
@@ -71,15 +71,15 @@
71
71
  ]
72
72
  },
73
73
  "dependencies": {
74
- "@aztec/aztec.js": "4.1.0-rc.4",
75
- "@aztec/constants": "4.1.0-rc.4",
76
- "@aztec/entrypoints": "4.1.0-rc.4",
77
- "@aztec/foundation": "4.1.0-rc.4",
78
- "@aztec/pxe": "4.1.0-rc.4",
79
- "@aztec/stdlib": "4.1.0-rc.4"
74
+ "@aztec/aztec.js": "4.2.0-nightly.20260320",
75
+ "@aztec/constants": "4.2.0-nightly.20260320",
76
+ "@aztec/entrypoints": "4.2.0-nightly.20260320",
77
+ "@aztec/foundation": "4.2.0-nightly.20260320",
78
+ "@aztec/pxe": "4.2.0-nightly.20260320",
79
+ "@aztec/stdlib": "4.2.0-nightly.20260320"
80
80
  },
81
81
  "devDependencies": {
82
- "@aztec/noir-contracts.js": "4.1.0-rc.4",
82
+ "@aztec/noir-contracts.js": "4.2.0-nightly.20260320",
83
83
  "@jest/globals": "^30.0.0",
84
84
  "@types/jest": "^30.0.0",
85
85
  "@types/node": "^22.15.17",
@@ -1,4 +1,5 @@
1
- import type { Account } from '@aztec/aztec.js/account';
1
+ import type { Account, NoFrom } from '@aztec/aztec.js/account';
2
+ import { NO_FROM } from '@aztec/aztec.js/account';
2
3
  import type { CallIntent, IntentInnerHash } from '@aztec/aztec.js/authorization';
3
4
  import {
4
5
  type InteractionWaitOptions,
@@ -29,6 +30,7 @@ import {
29
30
  GAS_ESTIMATION_TEARDOWN_L2_GAS_LIMIT,
30
31
  } from '@aztec/constants';
31
32
  import { AccountFeePaymentMethodOptions, type DefaultAccountEntrypointOptions } from '@aztec/entrypoints/account';
33
+ import { DefaultEntrypoint } from '@aztec/entrypoints/default';
32
34
  import type { ChainInfo } from '@aztec/entrypoints/interfaces';
33
35
  import { Fr } from '@aztec/foundation/curves/bn254';
34
36
  import { createLogger } from '@aztec/foundation/log';
@@ -50,7 +52,7 @@ import {
50
52
  } from '@aztec/stdlib/contract';
51
53
  import { SimulationError } from '@aztec/stdlib/errors';
52
54
  import { Gas, GasSettings } from '@aztec/stdlib/gas';
53
- import { siloNullifier } from '@aztec/stdlib/hash';
55
+ import { computeSiloedPrivateInitializationNullifier } from '@aztec/stdlib/hash';
54
56
  import type { AztecNode } from '@aztec/stdlib/interfaces/client';
55
57
  import {
56
58
  BlockHeader,
@@ -75,11 +77,21 @@ export type FeeOptions = {
75
77
  */
76
78
  walletFeePaymentMethod?: FeePaymentMethod;
77
79
  /** Configuration options for the account to properly handle the selected fee payment method */
78
- accountFeePaymentMethodOptions: AccountFeePaymentMethodOptions;
80
+ accountFeePaymentMethodOptions?: AccountFeePaymentMethodOptions;
79
81
  /** The gas settings to use for the transaction */
80
82
  gasSettings: GasSettings;
81
83
  };
82
84
 
85
+ /** Options for `simulateViaEntrypoint`. */
86
+ export type SimulateViaEntrypointOptions = Pick<
87
+ SimulateOptions,
88
+ 'from' | 'additionalScopes' | 'skipTxValidation' | 'skipFeeEnforcement'
89
+ > & {
90
+ /** Fee options for the entrypoint */
91
+ feeOptions: FeeOptions;
92
+ /** Scopes to use for the simulation */
93
+ scopes: AccessScopes;
94
+ };
83
95
  /**
84
96
  * A base class for Wallet implementations
85
97
  */
@@ -94,14 +106,8 @@ export abstract class BaseWallet implements Wallet {
94
106
  protected log = createLogger('wallet-sdk:base_wallet'),
95
107
  ) {}
96
108
 
97
- // When `from` is the zero address (e.g. when deploying a new account contract), we return an
98
- // empty scope list which acts as deny-all: no notes are visible and no keys are accessible.
99
- protected scopesFor(from: AztecAddress): AztecAddress[] {
100
- return from.isZero() ? [] : [from];
101
- }
102
-
103
- protected scopesFrom(from: AztecAddress, additionalScopes: AztecAddress[] = []): AztecAddress[] {
104
- const allScopes = from.isZero() ? additionalScopes : [from, ...additionalScopes];
109
+ protected scopesFrom(from: AztecAddress | NoFrom, additionalScopes: AztecAddress[] = []): AztecAddress[] {
110
+ const allScopes = from === NO_FROM ? additionalScopes : [from, ...additionalScopes];
105
111
  const scopeSet = new Set(allScopes.map(address => address.toString()));
106
112
  return [...scopeSet].map(AztecAddress.fromString);
107
113
  }
@@ -129,26 +135,33 @@ export abstract class BaseWallet implements Wallet {
129
135
 
130
136
  protected async createTxExecutionRequestFromPayloadAndFee(
131
137
  executionPayload: ExecutionPayload,
132
- from: AztecAddress,
138
+ from: AztecAddress | NoFrom,
133
139
  feeOptions: FeeOptions,
134
140
  ): Promise<TxExecutionRequest> {
135
141
  const feeExecutionPayload = await feeOptions.walletFeePaymentMethod?.getExecutionPayload();
136
- const executionOptions: DefaultAccountEntrypointOptions = {
137
- txNonce: Fr.random(),
138
- cancellable: this.cancellableTransactions,
139
- feePaymentMethodOptions: feeOptions.accountFeePaymentMethodOptions,
140
- };
141
142
  const finalExecutionPayload = feeExecutionPayload
142
143
  ? mergeExecutionPayloads([feeExecutionPayload, executionPayload])
143
144
  : executionPayload;
144
- const fromAccount = await this.getAccountFromAddress(from);
145
145
  const chainInfo = await this.getChainInfo();
146
- return fromAccount.createTxExecutionRequest(
147
- finalExecutionPayload,
148
- feeOptions.gasSettings,
149
- chainInfo,
150
- executionOptions,
151
- );
146
+
147
+ if (from === NO_FROM) {
148
+ const entrypoint = new DefaultEntrypoint();
149
+ return entrypoint.createTxExecutionRequest(finalExecutionPayload, feeOptions.gasSettings, chainInfo);
150
+ } else {
151
+ const fromAccount = await this.getAccountFromAddress(from);
152
+ const executionOptions: DefaultAccountEntrypointOptions = {
153
+ txNonce: Fr.random(),
154
+ cancellable: this.cancellableTransactions,
155
+ // If from is an address, feeOptions include the way the account contract should handle the fee payment
156
+ feePaymentMethodOptions: feeOptions.accountFeePaymentMethodOptions!,
157
+ };
158
+ return fromAccount.createTxExecutionRequest(
159
+ finalExecutionPayload,
160
+ feeOptions.gasSettings,
161
+ chainInfo,
162
+ executionOptions,
163
+ );
164
+ }
152
165
  }
153
166
 
154
167
  public async createAuthWit(
@@ -203,23 +216,27 @@ export abstract class BaseWallet implements Wallet {
203
216
  * @returns - Complete fee options that can be used to create a transaction execution request
204
217
  */
205
218
  protected async completeFeeOptions(
206
- from: AztecAddress,
219
+ from: AztecAddress | NoFrom,
207
220
  feePayer?: AztecAddress,
208
221
  gasSettings?: Partial<FieldsOf<GasSettings>>,
209
222
  ): Promise<FeeOptions> {
210
223
  const maxFeesPerGas =
211
224
  gasSettings?.maxFeesPerGas ?? (await this.aztecNode.getCurrentMinFees()).mul(1 + this.minFeePadding);
212
225
  let accountFeePaymentMethodOptions;
213
- // The transaction does not include a fee payment method, so we set the flag
214
- // for the account to use its fee juice balance
215
- if (!feePayer) {
216
- accountFeePaymentMethodOptions = AccountFeePaymentMethodOptions.PREEXISTING_FEE_JUICE;
217
- } else {
218
- // The transaction includes fee payment method, so we check if we are the fee payer for it
219
- // (this can only happen if the embedded payment method is FeeJuiceWithClaim)
220
- accountFeePaymentMethodOptions = from.equals(feePayer)
221
- ? AccountFeePaymentMethodOptions.FEE_JUICE_WITH_CLAIM
222
- : AccountFeePaymentMethodOptions.EXTERNAL;
226
+ // If from is an address, we need to determine the appropriate fee payment method options for the
227
+ // account contract entrypoint to use
228
+ if (from !== NO_FROM) {
229
+ if (!feePayer) {
230
+ // The transaction does not include a fee payment method, so we set the flag
231
+ // for the account to use its fee juice balance
232
+ accountFeePaymentMethodOptions = AccountFeePaymentMethodOptions.PREEXISTING_FEE_JUICE;
233
+ } else {
234
+ // The transaction includes fee payment method, so we check if we are the fee payer for it
235
+ // (this can only happen if the embedded payment method is FeeJuiceWithClaim)
236
+ accountFeePaymentMethodOptions = from.equals(feePayer)
237
+ ? AccountFeePaymentMethodOptions.FEE_JUICE_WITH_CLAIM
238
+ : AccountFeePaymentMethodOptions.EXTERNAL;
239
+ }
223
240
  }
224
241
  const fullGasSettings: GasSettings = GasSettings.default({ ...gasSettings, maxFeesPerGas });
225
242
  this.log.debug(`Using L2 gas settings`, fullGasSettings);
@@ -239,7 +256,7 @@ export abstract class BaseWallet implements Wallet {
239
256
  * @param gasSettings - User-provided partial gas settings
240
257
  */
241
258
  protected async completeFeeOptionsForEstimation(
242
- from: AztecAddress,
259
+ from: AztecAddress | NoFrom,
243
260
  feePayer?: AztecAddress,
244
261
  gasSettings?: Partial<FieldsOf<GasSettings>>,
245
262
  ) {
@@ -306,22 +323,20 @@ export abstract class BaseWallet implements Wallet {
306
323
  /**
307
324
  * Simulates calls through the standard PXE path (account entrypoint).
308
325
  * @param executionPayload - The execution payload to simulate.
309
- * @param from - The sender address.
310
- * @param feeOptions - Fee options for the transaction.
311
- * @param skipTxValidation - Whether to skip tx validation.
312
- * @param skipFeeEnforcement - Whether to skip fee enforcement.
313
- * @param scopes - The scopes to use for the simulation.
326
+ * @param opts - Simulation options.
314
327
  */
315
- protected async simulateViaEntrypoint(
316
- executionPayload: ExecutionPayload,
317
- from: AztecAddress,
318
- feeOptions: FeeOptions,
319
- scopes: AccessScopes,
320
- skipTxValidation?: boolean,
321
- skipFeeEnforcement?: boolean,
322
- ) {
323
- const txRequest = await this.createTxExecutionRequestFromPayloadAndFee(executionPayload, from, feeOptions);
324
- return this.pxe.simulateTx(txRequest, { simulatePublic: true, skipTxValidation, skipFeeEnforcement, scopes });
328
+ protected async simulateViaEntrypoint(executionPayload: ExecutionPayload, opts: SimulateViaEntrypointOptions) {
329
+ const txRequest = await this.createTxExecutionRequestFromPayloadAndFee(
330
+ executionPayload,
331
+ opts.from,
332
+ opts.feeOptions,
333
+ );
334
+ return this.pxe.simulateTx(txRequest, {
335
+ simulatePublic: true,
336
+ skipTxValidation: opts.skipTxValidation,
337
+ skipFeeEnforcement: opts.skipFeeEnforcement,
338
+ scopes: opts.scopes,
339
+ });
325
340
  }
326
341
 
327
342
  /**
@@ -349,12 +364,13 @@ export abstract class BaseWallet implements Wallet {
349
364
  blockHeader = (await this.aztecNode.getBlockHeader())!;
350
365
  }
351
366
 
367
+ const simulationOrigin = opts.from === NO_FROM ? AztecAddress.ZERO : opts.from;
352
368
  const [optimizedResults, normalResult] = await Promise.all([
353
369
  optimizableCalls.length > 0
354
370
  ? simulateViaNode(
355
371
  this.aztecNode,
356
372
  optimizableCalls,
357
- opts.from,
373
+ simulationOrigin,
358
374
  chainInfo,
359
375
  feeOptions.gasSettings,
360
376
  blockHeader,
@@ -363,14 +379,13 @@ export abstract class BaseWallet implements Wallet {
363
379
  )
364
380
  : Promise.resolve([]),
365
381
  remainingCalls.length > 0
366
- ? this.simulateViaEntrypoint(
367
- remainingPayload,
368
- opts.from,
382
+ ? this.simulateViaEntrypoint(remainingPayload, {
383
+ from: opts.from,
369
384
  feeOptions,
370
- this.scopesFrom(opts.from, opts.additionalScopes),
371
- opts.skipTxValidation,
372
- opts.skipFeeEnforcement ?? true,
373
- )
385
+ scopes: this.scopesFrom(opts.from, opts.additionalScopes),
386
+ skipTxValidation: opts.skipTxValidation,
387
+ skipFeeEnforcement: opts.skipFeeEnforcement ?? true,
388
+ })
374
389
  : Promise.resolve(null),
375
390
  ]);
376
391
 
@@ -394,7 +409,10 @@ export abstract class BaseWallet implements Wallet {
394
409
  const feeOptions = await this.completeFeeOptions(opts.from, executionPayload.feePayer, opts.fee?.gasSettings);
395
410
  const txRequest = await this.createTxExecutionRequestFromPayloadAndFee(executionPayload, opts.from, feeOptions);
396
411
  const provenTx = await this.pxe.proveTx(txRequest, this.scopesFrom(opts.from, opts.additionalScopes));
397
- const offchainOutput = extractOffchainOutput(provenTx.getOffchainEffects());
412
+ const offchainOutput = extractOffchainOutput(
413
+ provenTx.getOffchainEffects(),
414
+ provenTx.publicInputs.constants.anchorBlockHeader.globalVariables.timestamp,
415
+ );
398
416
  const tx = await provenTx.toTx();
399
417
  const txHash = tx.getTxHash();
400
418
  if (await this.aztecNode.getTxEffect(txHash)) {
@@ -451,7 +469,7 @@ export abstract class BaseWallet implements Wallet {
451
469
  }
452
470
 
453
471
  executeUtility(call: FunctionCall, opts: ExecuteUtilityOptions): Promise<UtilityExecutionResult> {
454
- return this.pxe.executeUtility(call, { authwits: opts.authWitnesses, scopes: [opts.scope] });
472
+ return this.pxe.executeUtility(call, { authwits: opts.authWitnesses, scopes: opts.scopes });
455
473
  }
456
474
 
457
475
  async getPrivateEvents<T>(
@@ -474,17 +492,36 @@ export abstract class BaseWallet implements Wallet {
474
492
  return decodedEvents;
475
493
  }
476
494
 
495
+ /**
496
+ * Returns metadata about a contract, including whether it has been initialized, published, and updated.
497
+ *
498
+ * `isContractInitialized` requires the contract instance to be registered in the PXE (for `init_hash`). When the
499
+ * instance is not available, `isContractInitialized` is `undefined` since it cannot be determined.
500
+ * @param address - The contract address to query.
501
+ */
477
502
  async getContractMetadata(address: AztecAddress) {
478
503
  const instance = await this.pxe.getContractInstance(address);
479
- const initNullifier = await siloNullifier(address, address.toField());
480
- const publiclyRegisteredContract = await this.aztecNode.getContract(address);
481
- const initNullifierMembershipWitness = await this.aztecNode.getNullifierMembershipWitness('latest', initNullifier);
504
+ const publiclyRegisteredContractPromise = this.aztecNode.getContract(address);
505
+ // We check only the private initialization nullifier. It is emitted by both private and public initializers and
506
+ // includes init_hash, preventing observers from determining initialization status from the address alone. Without
507
+ // the instance (and thus init_hash), we can't compute it, so we return undefined.
508
+ //
509
+ // We skip the public initialization nullifier because it's not always emitted (contracts without public external
510
+ // functions that require initialization checks won't emit it). If the private one exists, the public one was
511
+ // created in the same tx and will also be present.
512
+ let isContractInitialized: boolean | undefined = undefined;
513
+ if (instance) {
514
+ const initNullifier = await computeSiloedPrivateInitializationNullifier(address, instance.initializationHash);
515
+ const witness = await this.aztecNode.getNullifierMembershipWitness('latest', initNullifier);
516
+ isContractInitialized = !!witness;
517
+ }
518
+ const publiclyRegisteredContract = await publiclyRegisteredContractPromise;
482
519
  const isContractUpdated =
483
520
  publiclyRegisteredContract &&
484
521
  !publiclyRegisteredContract.currentContractClassId.equals(publiclyRegisteredContract.originalContractClassId);
485
522
  return {
486
523
  instance: instance ?? undefined,
487
- isContractInitialized: !!initNullifierMembershipWitness,
524
+ isContractInitialized,
488
525
  isContractPublished: !!publiclyRegisteredContract,
489
526
  isContractUpdated: !!isContractUpdated,
490
527
  updatedContractClassId: isContractUpdated ? publiclyRegisteredContract.currentContractClassId : undefined,
@@ -1,2 +1,2 @@
1
- export { BaseWallet, type FeeOptions } from './base_wallet.js';
1
+ export { BaseWallet, type FeeOptions, type SimulateViaEntrypointOptions } from './base_wallet.js';
2
2
  export { simulateViaNode, buildMergedSimulationResult, extractOptimizablePublicStaticCalls } from './utils.js';