@aztec/wallet-sdk 0.0.1-commit.db765a8 → 0.0.1-commit.df81a97b5

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,8 +1,8 @@
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';
5
- import type { Aliased, AppCapabilities, BatchResults, BatchedMethod, ExecuteUtilityOptions, PrivateEvent, PrivateEventFilter, ProfileOptions, SendOptions, SimulateOptions, Wallet, WalletCapabilities } from '@aztec/aztec.js/wallet';
5
+ import { type Aliased, type AppCapabilities, type BatchResults, type BatchedMethod, ContractInitializationStatus, type ExecuteUtilityOptions, type PrivateEvent, type PrivateEventFilter, type ProfileOptions, type SendOptions, type SimulateOptions, type Wallet, type WalletCapabilities } from '@aztec/aztec.js/wallet';
6
6
  import { AccountFeePaymentMethodOptions } from '@aztec/entrypoints/account';
7
7
  import type { ChainInfo } from '@aztec/entrypoints/interfaces';
8
8
  import { Fr } from '@aztec/foundation/curves/bn254';
@@ -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,7 +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 scopesFrom(from: AztecAddress, additionalScopes?: AztecAddress[]): AztecAddress[];
51
+ protected scopesFrom(from: AztecAddress | NoFrom, additionalScopes?: AztecAddress[]): AztecAddress[];
45
52
  protected abstract getAccountFromAddress(address: AztecAddress): Promise<Account>;
46
53
  abstract getAccounts(): Promise<Aliased<AztecAddress>[]>;
47
54
  /**
@@ -53,7 +60,7 @@ export declare abstract class BaseWallet implements Wallet {
53
60
  */
54
61
  getAddressBook(): Promise<Aliased<AztecAddress>[]>;
55
62
  getChainInfo(): Promise<ChainInfo>;
56
- protected createTxExecutionRequestFromPayloadAndFee(executionPayload: ExecutionPayload, from: AztecAddress, feeOptions: FeeOptions): Promise<TxExecutionRequest>;
63
+ protected createTxExecutionRequestFromPayloadAndFee(executionPayload: ExecutionPayload, from: AztecAddress | NoFrom, feeOptions: FeeOptions): Promise<TxExecutionRequest>;
57
64
  createAuthWit(from: AztecAddress, messageHashOrIntent: IntentInnerHash | CallIntent): Promise<AuthWitness>;
58
65
  /**
59
66
  * Request capabilities from the wallet.
@@ -77,7 +84,7 @@ export declare abstract class BaseWallet implements Wallet {
77
84
  * @param gasSettings - User-provided partial gas settings
78
85
  * @returns - Complete fee options that can be used to create a transaction execution request
79
86
  */
80
- 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>;
81
88
  /**
82
89
  * Completes partial user-provided fee options with unreasonably high gas limits
83
90
  * for gas estimation. Uses the same logic as completeFeeOptions but sets high limits
@@ -86,14 +93,14 @@ export declare abstract class BaseWallet implements Wallet {
86
93
  * @param feePayer - The address paying for fees (if any fee payment method is embedded in the execution payload)
87
94
  * @param gasSettings - User-provided partial gas settings
88
95
  */
89
- protected completeFeeOptionsForEstimation(from: AztecAddress, feePayer?: AztecAddress, gasSettings?: Partial<FieldsOf<GasSettings>>): Promise<{
96
+ protected completeFeeOptionsForEstimation(from: AztecAddress | NoFrom, feePayer?: AztecAddress, gasSettings?: Partial<FieldsOf<GasSettings>>): Promise<{
90
97
  /**
91
98
  * A wallet-provided fallback fee payment method that is used only if the transaction that is being constructed
92
99
  * doesn't already include one
93
100
  */
94
101
  walletFeePaymentMethod?: FeePaymentMethod | undefined;
95
102
  /** Configuration options for the account to properly handle the selected fee payment method */
96
- accountFeePaymentMethodOptions: AccountFeePaymentMethodOptions;
103
+ accountFeePaymentMethodOptions?: AccountFeePaymentMethodOptions | undefined;
97
104
  gasSettings: GasSettings;
98
105
  }>;
99
106
  registerSender(address: AztecAddress, _alias?: string): Promise<AztecAddress>;
@@ -101,13 +108,9 @@ export declare abstract class BaseWallet implements Wallet {
101
108
  /**
102
109
  * Simulates calls through the standard PXE path (account entrypoint).
103
110
  * @param executionPayload - The execution payload to simulate.
104
- * @param from - The sender address.
105
- * @param feeOptions - Fee options for the transaction.
106
- * @param skipTxValidation - Whether to skip tx validation.
107
- * @param skipFeeEnforcement - Whether to skip fee enforcement.
108
- * @param scopes - The scopes to use for the simulation.
111
+ * @param opts - Simulation options.
109
112
  */
110
- 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>;
111
114
  /**
112
115
  * Simulates a transaction, optimizing leading public static calls by running them directly
113
116
  * on the node while sending the remaining calls through the standard PXE path.
@@ -127,9 +130,13 @@ export declare abstract class BaseWallet implements Wallet {
127
130
  protected contextualizeError(err: Error, ...context: string[]): Error;
128
131
  executeUtility(call: FunctionCall, opts: ExecuteUtilityOptions): Promise<UtilityExecutionResult>;
129
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
+ * @param address - The contract address to query.
136
+ */
130
137
  getContractMetadata(address: AztecAddress): Promise<{
131
138
  instance: ContractInstanceWithAddress | undefined;
132
- isContractInitialized: boolean;
139
+ initializationStatus: ContractInitializationStatus;
133
140
  isContractPublished: boolean;
134
141
  isContractUpdated: boolean;
135
142
  updatedContractClassId: Fr | undefined;
@@ -139,4 +146,4 @@ export declare abstract class BaseWallet implements Wallet {
139
146
  isContractClassPubliclyRegistered: boolean;
140
147
  }>;
141
148
  }
142
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZV93YWxsZXQuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9iYXNlLXdhbGxldC9iYXNlX3dhbGxldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxPQUFPLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEtBQUssRUFBRSxVQUFVLEVBQUUsZUFBZSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDakYsT0FBTyxFQUNMLEtBQUssc0JBQXNCLEVBRTNCLEtBQUssVUFBVSxFQUVoQixNQUFNLDJCQUEyQixDQUFDO0FBQ25DLE9BQU8sS0FBSyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFNUQsT0FBTyxLQUFLLEVBQ1YsT0FBTyxFQUNQLGVBQWUsRUFDZixZQUFZLEVBQ1osYUFBYSxFQUNiLHFCQUFxQixFQUNyQixZQUFZLEVBQ1osa0JBQWtCLEVBQ2xCLGNBQWMsRUFDZCxXQUFXLEVBQ1gsZUFBZSxFQUNmLE1BQU0sRUFDTixrQkFBa0IsRUFDbkIsTUFBTSx3QkFBd0IsQ0FBQztBQU9oQyxPQUFPLEVBQUUsOEJBQThCLEVBQXdDLE1BQU0sNEJBQTRCLENBQUM7QUFDbEgsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDL0QsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRXBELE9BQU8sS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxLQUFLLFlBQVksRUFBb0IsTUFBTSx3QkFBd0IsQ0FBQztBQUM3RSxPQUFPLEtBQUssRUFBRSxHQUFHLEVBQXNCLE1BQU0sbUJBQW1CLENBQUM7QUFDakUsT0FBTyxFQUNMLEtBQUssZ0JBQWdCLEVBQ3JCLEtBQUssdUJBQXVCLEVBQzVCLEtBQUssWUFBWSxFQUVsQixNQUFNLG1CQUFtQixDQUFDO0FBQzNCLE9BQU8sS0FB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
149
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZV93YWxsZXQuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9iYXNlLXdhbGxldC9iYXNlX3dhbGxldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFL0QsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLGVBQWUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2pGLE9BQU8sRUFDTCxLQUFLLHNCQUFzQixFQUUzQixLQUFLLFVBQVUsRUFFaEIsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRTVELE9BQU8sRUFDTCxLQUFLLE9BQU8sRUFDWixLQUFLLGVBQWUsRUFDcEIsS0FBSyxZQUFZLEVBQ2pCLEtBQUssYUFBYSxFQUNsQiw0QkFBNEIsRUFDNUIsS0FBSyxxQkFBcUIsRUFDMUIsS0FBSyxZQUFZLEVBQ2pCLEtBQUssa0JBQWtCLEVBQ3ZCLEtBQUssY0FBYyxFQUNuQixLQUFLLFdBQVcsRUFDaEIsS0FBSyxlQUFlLEVBQ3BCLEtBQUssTUFBTSxFQUNYLEtBQUssa0JBQWtCLEVBQ3hCLE1BQU0sd0JBQXdCLENBQUM7QUFPaEMsT0FBTyxFQUFFLDhCQUE4QixFQUF3QyxNQUFNLDRCQUE0QixDQUFDO0FBRWxILE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUVwRCxPQUFPLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsS0FBSyxZQUFZLEVBQW9CLE1BQU0sd0JBQXdCLENBQUM7QUFDN0UsT0FBTyxLQUFLLEVBQUUsR0FBRyxFQUFzQixNQUFNLG1CQUFtQixDQUFDO0FBQ2pFLE9BQU8sRUFD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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,10 @@
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';
4
+ import { ContractInitializationStatus } from '@aztec/aztec.js/wallet';
3
5
  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
6
  import { AccountFeePaymentMethodOptions } from '@aztec/entrypoints/account';
7
+ import { DefaultEntrypoint } from '@aztec/entrypoints/default';
5
8
  import { Fr } from '@aztec/foundation/curves/bn254';
6
9
  import { createLogger } from '@aztec/foundation/log';
7
10
  import { displayDebugLogs } from '@aztec/pxe/client/lazy';
@@ -10,7 +13,7 @@ import { AztecAddress } from '@aztec/stdlib/aztec-address';
10
13
  import { computePartialAddress, getContractClassFromArtifact } from '@aztec/stdlib/contract';
11
14
  import { SimulationError } from '@aztec/stdlib/errors';
12
15
  import { Gas, GasSettings } from '@aztec/stdlib/gas';
13
- import { siloNullifier } from '@aztec/stdlib/hash';
16
+ import { computeSiloedPrivateInitializationNullifier, computeSiloedPublicInitializationNullifier } from '@aztec/stdlib/hash';
14
17
  import { mergeExecutionPayloads } from '@aztec/stdlib/tx';
15
18
  import { inspect } from 'util';
16
19
  import { buildMergedSimulationResult, extractOptimizablePublicStaticCalls, simulateViaNode } from './utils.js';
@@ -31,7 +34,7 @@ import { buildMergedSimulationResult, extractOptimizablePublicStaticCalls, simul
31
34
  this.cancellableTransactions = false;
32
35
  }
33
36
  scopesFrom(from, additionalScopes = []) {
34
- const allScopes = from.isZero() ? additionalScopes : [
37
+ const allScopes = from === NO_FROM ? additionalScopes : [
35
38
  from,
36
39
  ...additionalScopes
37
40
  ];
@@ -62,18 +65,24 @@ import { buildMergedSimulationResult, extractOptimizablePublicStaticCalls, simul
62
65
  }
63
66
  async createTxExecutionRequestFromPayloadAndFee(executionPayload, from, feeOptions) {
64
67
  const feeExecutionPayload = await feeOptions.walletFeePaymentMethod?.getExecutionPayload();
65
- const executionOptions = {
66
- txNonce: Fr.random(),
67
- cancellable: this.cancellableTransactions,
68
- feePaymentMethodOptions: feeOptions.accountFeePaymentMethodOptions
69
- };
70
68
  const finalExecutionPayload = feeExecutionPayload ? mergeExecutionPayloads([
71
69
  feeExecutionPayload,
72
70
  executionPayload
73
71
  ]) : executionPayload;
74
- const fromAccount = await this.getAccountFromAddress(from);
75
72
  const chainInfo = await this.getChainInfo();
76
- return fromAccount.createTxExecutionRequest(finalExecutionPayload, feeOptions.gasSettings, chainInfo, executionOptions);
73
+ if (from === NO_FROM) {
74
+ const entrypoint = new DefaultEntrypoint();
75
+ return entrypoint.createTxExecutionRequest(finalExecutionPayload, feeOptions.gasSettings, chainInfo);
76
+ } else {
77
+ const fromAccount = await this.getAccountFromAddress(from);
78
+ const executionOptions = {
79
+ txNonce: Fr.random(),
80
+ cancellable: this.cancellableTransactions,
81
+ // If from is an address, feeOptions include the way the account contract should handle the fee payment
82
+ feePaymentMethodOptions: feeOptions.accountFeePaymentMethodOptions
83
+ };
84
+ return fromAccount.createTxExecutionRequest(finalExecutionPayload, feeOptions.gasSettings, chainInfo, executionOptions);
85
+ }
77
86
  }
78
87
  async createAuthWit(from, messageHashOrIntent) {
79
88
  const account = await this.getAccountFromAddress(from);
@@ -123,14 +132,18 @@ import { buildMergedSimulationResult, extractOptimizablePublicStaticCalls, simul
123
132
  */ async completeFeeOptions(from, feePayer, gasSettings) {
124
133
  const maxFeesPerGas = gasSettings?.maxFeesPerGas ?? (await this.aztecNode.getCurrentMinFees()).mul(1 + this.minFeePadding);
125
134
  let accountFeePaymentMethodOptions;
126
- // The transaction does not include a fee payment method, so we set the flag
127
- // for the account to use its fee juice balance
128
- if (!feePayer) {
129
- accountFeePaymentMethodOptions = AccountFeePaymentMethodOptions.PREEXISTING_FEE_JUICE;
130
- } else {
131
- // The transaction includes fee payment method, so we check if we are the fee payer for it
132
- // (this can only happen if the embedded payment method is FeeJuiceWithClaim)
133
- accountFeePaymentMethodOptions = from.equals(feePayer) ? AccountFeePaymentMethodOptions.FEE_JUICE_WITH_CLAIM : AccountFeePaymentMethodOptions.EXTERNAL;
135
+ // If from is an address, we need to determine the appropriate fee payment method options for the
136
+ // account contract entrypoint to use
137
+ if (from !== NO_FROM) {
138
+ if (!feePayer) {
139
+ // The transaction does not include a fee payment method, so we set the flag
140
+ // for the account to use its fee juice balance
141
+ accountFeePaymentMethodOptions = AccountFeePaymentMethodOptions.PREEXISTING_FEE_JUICE;
142
+ } else {
143
+ // The transaction includes fee payment method, so we check if we are the fee payer for it
144
+ // (this can only happen if the embedded payment method is FeeJuiceWithClaim)
145
+ accountFeePaymentMethodOptions = from.equals(feePayer) ? AccountFeePaymentMethodOptions.FEE_JUICE_WITH_CLAIM : AccountFeePaymentMethodOptions.EXTERNAL;
146
+ }
134
147
  }
135
148
  const fullGasSettings = GasSettings.default({
136
149
  ...gasSettings,
@@ -199,18 +212,14 @@ import { buildMergedSimulationResult, extractOptimizablePublicStaticCalls, simul
199
212
  /**
200
213
  * Simulates calls through the standard PXE path (account entrypoint).
201
214
  * @param executionPayload - The execution payload to simulate.
202
- * @param from - The sender address.
203
- * @param feeOptions - Fee options for the transaction.
204
- * @param skipTxValidation - Whether to skip tx validation.
205
- * @param skipFeeEnforcement - Whether to skip fee enforcement.
206
- * @param scopes - The scopes to use for the simulation.
207
- */ async simulateViaEntrypoint(executionPayload, from, feeOptions, scopes, skipTxValidation, skipFeeEnforcement) {
208
- const txRequest = await this.createTxExecutionRequestFromPayloadAndFee(executionPayload, from, feeOptions);
215
+ * @param opts - Simulation options.
216
+ */ async simulateViaEntrypoint(executionPayload, opts) {
217
+ const txRequest = await this.createTxExecutionRequestFromPayloadAndFee(executionPayload, opts.from, opts.feeOptions);
209
218
  return this.pxe.simulateTx(txRequest, {
210
219
  simulatePublic: true,
211
- skipTxValidation,
212
- skipFeeEnforcement,
213
- scopes
220
+ skipTxValidation: opts.skipTxValidation,
221
+ skipFeeEnforcement: opts.skipFeeEnforcement,
222
+ scopes: opts.scopes
214
223
  });
215
224
  }
216
225
  /**
@@ -236,9 +245,16 @@ import { buildMergedSimulationResult, extractOptimizablePublicStaticCalls, simul
236
245
  } catch {
237
246
  blockHeader = await this.aztecNode.getBlockHeader();
238
247
  }
248
+ const simulationOrigin = opts.from === NO_FROM ? AztecAddress.ZERO : opts.from;
239
249
  const [optimizedResults, normalResult] = await Promise.all([
240
- optimizableCalls.length > 0 ? simulateViaNode(this.aztecNode, optimizableCalls, opts.from, chainInfo, feeOptions.gasSettings, blockHeader, opts.skipFeeEnforcement ?? true, this.getContractName.bind(this)) : Promise.resolve([]),
241
- remainingCalls.length > 0 ? this.simulateViaEntrypoint(remainingPayload, opts.from, feeOptions, this.scopesFrom(opts.from, opts.additionalScopes), opts.skipTxValidation, opts.skipFeeEnforcement ?? true) : Promise.resolve(null)
250
+ optimizableCalls.length > 0 ? simulateViaNode(this.aztecNode, optimizableCalls, simulationOrigin, chainInfo, feeOptions.gasSettings, blockHeader, opts.skipFeeEnforcement ?? true, this.getContractName.bind(this)) : Promise.resolve([]),
251
+ remainingCalls.length > 0 ? this.simulateViaEntrypoint(remainingPayload, {
252
+ from: opts.from,
253
+ feeOptions,
254
+ scopes: this.scopesFrom(opts.from, opts.additionalScopes),
255
+ skipTxValidation: opts.skipTxValidation,
256
+ skipFeeEnforcement: opts.skipFeeEnforcement ?? true
257
+ }) : Promise.resolve(null)
242
258
  ]);
243
259
  return buildMergedSimulationResult(optimizedResults, normalResult);
244
260
  }
@@ -255,7 +271,7 @@ import { buildMergedSimulationResult, extractOptimizablePublicStaticCalls, simul
255
271
  const feeOptions = await this.completeFeeOptions(opts.from, executionPayload.feePayer, opts.fee?.gasSettings);
256
272
  const txRequest = await this.createTxExecutionRequestFromPayloadAndFee(executionPayload, opts.from, feeOptions);
257
273
  const provenTx = await this.pxe.proveTx(txRequest, this.scopesFrom(opts.from, opts.additionalScopes));
258
- const offchainOutput = extractOffchainOutput(provenTx.getOffchainEffects());
274
+ const offchainOutput = extractOffchainOutput(provenTx.getOffchainEffects(), provenTx.publicInputs.constants.anchorBlockHeader.globalVariables.timestamp);
259
275
  const tx = await provenTx.toTx();
260
276
  const txHash = tx.getTxHash();
261
277
  if (await this.aztecNode.getTxEffect(txHash)) {
@@ -312,9 +328,7 @@ import { buildMergedSimulationResult, extractOptimizablePublicStaticCalls, simul
312
328
  executeUtility(call, opts) {
313
329
  return this.pxe.executeUtility(call, {
314
330
  authwits: opts.authWitnesses,
315
- scopes: [
316
- opts.scope
317
- ]
331
+ scopes: opts.scopes
318
332
  });
319
333
  }
320
334
  async getPrivateEvents(eventDef, eventFilter) {
@@ -333,15 +347,33 @@ import { buildMergedSimulationResult, extractOptimizablePublicStaticCalls, simul
333
347
  });
334
348
  return decodedEvents;
335
349
  }
336
- async getContractMetadata(address) {
350
+ /**
351
+ * Returns metadata about a contract, including whether it has been initialized, published, and updated.
352
+ * @param address - The contract address to query.
353
+ */ async getContractMetadata(address) {
337
354
  const instance = await this.pxe.getContractInstance(address);
338
- const initNullifier = await siloNullifier(address, address.toField());
339
- const publiclyRegisteredContract = await this.aztecNode.getContract(address);
340
- const initNullifierMembershipWitness = await this.aztecNode.getNullifierMembershipWitness('latest', initNullifier);
355
+ const publiclyRegisteredContractPromise = this.aztecNode.getContract(address);
356
+ let initializationStatus;
357
+ if (instance) {
358
+ // We have the instance, so we can compute the private initialization nullifier (which includes init_hash and is
359
+ // emitted by both private and public initializers) and get a definitive INITIALIZED/UNINITIALIZED answer.
360
+ const initNullifier = await computeSiloedPrivateInitializationNullifier(address, instance.initializationHash);
361
+ const witness = await this.aztecNode.getNullifierMembershipWitness('latest', initNullifier);
362
+ initializationStatus = witness ? ContractInitializationStatus.INITIALIZED : ContractInitializationStatus.UNINITIALIZED;
363
+ } else {
364
+ // Without the instance we lack the init_hash needed for the private nullifier. We fall back to checking the
365
+ // public initialization nullifier (computed from address alone). Not all contracts emit it (only those with
366
+ // public functions that require initialization checks), so its absence doesn't mean the contract is
367
+ // uninitialized.
368
+ const publicNullifier = await computeSiloedPublicInitializationNullifier(address);
369
+ const witness = await this.aztecNode.getNullifierMembershipWitness('latest', publicNullifier);
370
+ initializationStatus = witness ? ContractInitializationStatus.INITIALIZED : ContractInitializationStatus.UNKNOWN;
371
+ }
372
+ const publiclyRegisteredContract = await publiclyRegisteredContractPromise;
341
373
  const isContractUpdated = publiclyRegisteredContract && !publiclyRegisteredContract.currentContractClassId.equals(publiclyRegisteredContract.originalContractClassId);
342
374
  return {
343
375
  instance: instance ?? undefined,
344
- isContractInitialized: !!initNullifierMembershipWitness,
376
+ initializationStatus,
345
377
  isContractPublished: !!publiclyRegisteredContract,
346
378
  isContractUpdated: !!isContractUpdated,
347
379
  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": "0.0.1-commit.db765a8",
4
+ "version": "0.0.1-commit.df81a97b5",
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": "0.0.1-commit.db765a8",
75
- "@aztec/constants": "0.0.1-commit.db765a8",
76
- "@aztec/entrypoints": "0.0.1-commit.db765a8",
77
- "@aztec/foundation": "0.0.1-commit.db765a8",
78
- "@aztec/pxe": "0.0.1-commit.db765a8",
79
- "@aztec/stdlib": "0.0.1-commit.db765a8"
74
+ "@aztec/aztec.js": "0.0.1-commit.df81a97b5",
75
+ "@aztec/constants": "0.0.1-commit.df81a97b5",
76
+ "@aztec/entrypoints": "0.0.1-commit.df81a97b5",
77
+ "@aztec/foundation": "0.0.1-commit.df81a97b5",
78
+ "@aztec/pxe": "0.0.1-commit.df81a97b5",
79
+ "@aztec/stdlib": "0.0.1-commit.df81a97b5"
80
80
  },
81
81
  "devDependencies": {
82
- "@aztec/noir-contracts.js": "0.0.1-commit.db765a8",
82
+ "@aztec/noir-contracts.js": "0.0.1-commit.df81a97b5",
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,
@@ -8,19 +9,20 @@ import {
8
9
  } from '@aztec/aztec.js/contracts';
9
10
  import type { FeePaymentMethod } from '@aztec/aztec.js/fee';
10
11
  import { waitForTx } from '@aztec/aztec.js/node';
11
- import type {
12
- Aliased,
13
- AppCapabilities,
14
- BatchResults,
15
- BatchedMethod,
16
- ExecuteUtilityOptions,
17
- PrivateEvent,
18
- PrivateEventFilter,
19
- ProfileOptions,
20
- SendOptions,
21
- SimulateOptions,
22
- Wallet,
23
- WalletCapabilities,
12
+ import {
13
+ type Aliased,
14
+ type AppCapabilities,
15
+ type BatchResults,
16
+ type BatchedMethod,
17
+ ContractInitializationStatus,
18
+ type ExecuteUtilityOptions,
19
+ type PrivateEvent,
20
+ type PrivateEventFilter,
21
+ type ProfileOptions,
22
+ type SendOptions,
23
+ type SimulateOptions,
24
+ type Wallet,
25
+ type WalletCapabilities,
24
26
  } from '@aztec/aztec.js/wallet';
25
27
  import {
26
28
  GAS_ESTIMATION_DA_GAS_LIMIT,
@@ -29,6 +31,7 @@ import {
29
31
  GAS_ESTIMATION_TEARDOWN_L2_GAS_LIMIT,
30
32
  } from '@aztec/constants';
31
33
  import { AccountFeePaymentMethodOptions, type DefaultAccountEntrypointOptions } from '@aztec/entrypoints/account';
34
+ import { DefaultEntrypoint } from '@aztec/entrypoints/default';
32
35
  import type { ChainInfo } from '@aztec/entrypoints/interfaces';
33
36
  import { Fr } from '@aztec/foundation/curves/bn254';
34
37
  import { createLogger } from '@aztec/foundation/log';
@@ -50,7 +53,10 @@ import {
50
53
  } from '@aztec/stdlib/contract';
51
54
  import { SimulationError } from '@aztec/stdlib/errors';
52
55
  import { Gas, GasSettings } from '@aztec/stdlib/gas';
53
- import { siloNullifier } from '@aztec/stdlib/hash';
56
+ import {
57
+ computeSiloedPrivateInitializationNullifier,
58
+ computeSiloedPublicInitializationNullifier,
59
+ } from '@aztec/stdlib/hash';
54
60
  import type { AztecNode } from '@aztec/stdlib/interfaces/client';
55
61
  import {
56
62
  BlockHeader,
@@ -75,11 +81,21 @@ export type FeeOptions = {
75
81
  */
76
82
  walletFeePaymentMethod?: FeePaymentMethod;
77
83
  /** Configuration options for the account to properly handle the selected fee payment method */
78
- accountFeePaymentMethodOptions: AccountFeePaymentMethodOptions;
84
+ accountFeePaymentMethodOptions?: AccountFeePaymentMethodOptions;
79
85
  /** The gas settings to use for the transaction */
80
86
  gasSettings: GasSettings;
81
87
  };
82
88
 
89
+ /** Options for `simulateViaEntrypoint`. */
90
+ export type SimulateViaEntrypointOptions = Pick<
91
+ SimulateOptions,
92
+ 'from' | 'additionalScopes' | 'skipTxValidation' | 'skipFeeEnforcement'
93
+ > & {
94
+ /** Fee options for the entrypoint */
95
+ feeOptions: FeeOptions;
96
+ /** Scopes to use for the simulation */
97
+ scopes: AccessScopes;
98
+ };
83
99
  /**
84
100
  * A base class for Wallet implementations
85
101
  */
@@ -94,8 +110,8 @@ export abstract class BaseWallet implements Wallet {
94
110
  protected log = createLogger('wallet-sdk:base_wallet'),
95
111
  ) {}
96
112
 
97
- protected scopesFrom(from: AztecAddress, additionalScopes: AztecAddress[] = []): AztecAddress[] {
98
- const allScopes = from.isZero() ? additionalScopes : [from, ...additionalScopes];
113
+ protected scopesFrom(from: AztecAddress | NoFrom, additionalScopes: AztecAddress[] = []): AztecAddress[] {
114
+ const allScopes = from === NO_FROM ? additionalScopes : [from, ...additionalScopes];
99
115
  const scopeSet = new Set(allScopes.map(address => address.toString()));
100
116
  return [...scopeSet].map(AztecAddress.fromString);
101
117
  }
@@ -123,26 +139,33 @@ export abstract class BaseWallet implements Wallet {
123
139
 
124
140
  protected async createTxExecutionRequestFromPayloadAndFee(
125
141
  executionPayload: ExecutionPayload,
126
- from: AztecAddress,
142
+ from: AztecAddress | NoFrom,
127
143
  feeOptions: FeeOptions,
128
144
  ): Promise<TxExecutionRequest> {
129
145
  const feeExecutionPayload = await feeOptions.walletFeePaymentMethod?.getExecutionPayload();
130
- const executionOptions: DefaultAccountEntrypointOptions = {
131
- txNonce: Fr.random(),
132
- cancellable: this.cancellableTransactions,
133
- feePaymentMethodOptions: feeOptions.accountFeePaymentMethodOptions,
134
- };
135
146
  const finalExecutionPayload = feeExecutionPayload
136
147
  ? mergeExecutionPayloads([feeExecutionPayload, executionPayload])
137
148
  : executionPayload;
138
- const fromAccount = await this.getAccountFromAddress(from);
139
149
  const chainInfo = await this.getChainInfo();
140
- return fromAccount.createTxExecutionRequest(
141
- finalExecutionPayload,
142
- feeOptions.gasSettings,
143
- chainInfo,
144
- executionOptions,
145
- );
150
+
151
+ if (from === NO_FROM) {
152
+ const entrypoint = new DefaultEntrypoint();
153
+ return entrypoint.createTxExecutionRequest(finalExecutionPayload, feeOptions.gasSettings, chainInfo);
154
+ } else {
155
+ const fromAccount = await this.getAccountFromAddress(from);
156
+ const executionOptions: DefaultAccountEntrypointOptions = {
157
+ txNonce: Fr.random(),
158
+ cancellable: this.cancellableTransactions,
159
+ // If from is an address, feeOptions include the way the account contract should handle the fee payment
160
+ feePaymentMethodOptions: feeOptions.accountFeePaymentMethodOptions!,
161
+ };
162
+ return fromAccount.createTxExecutionRequest(
163
+ finalExecutionPayload,
164
+ feeOptions.gasSettings,
165
+ chainInfo,
166
+ executionOptions,
167
+ );
168
+ }
146
169
  }
147
170
 
148
171
  public async createAuthWit(
@@ -197,23 +220,27 @@ export abstract class BaseWallet implements Wallet {
197
220
  * @returns - Complete fee options that can be used to create a transaction execution request
198
221
  */
199
222
  protected async completeFeeOptions(
200
- from: AztecAddress,
223
+ from: AztecAddress | NoFrom,
201
224
  feePayer?: AztecAddress,
202
225
  gasSettings?: Partial<FieldsOf<GasSettings>>,
203
226
  ): Promise<FeeOptions> {
204
227
  const maxFeesPerGas =
205
228
  gasSettings?.maxFeesPerGas ?? (await this.aztecNode.getCurrentMinFees()).mul(1 + this.minFeePadding);
206
229
  let accountFeePaymentMethodOptions;
207
- // The transaction does not include a fee payment method, so we set the flag
208
- // for the account to use its fee juice balance
209
- if (!feePayer) {
210
- accountFeePaymentMethodOptions = AccountFeePaymentMethodOptions.PREEXISTING_FEE_JUICE;
211
- } else {
212
- // The transaction includes fee payment method, so we check if we are the fee payer for it
213
- // (this can only happen if the embedded payment method is FeeJuiceWithClaim)
214
- accountFeePaymentMethodOptions = from.equals(feePayer)
215
- ? AccountFeePaymentMethodOptions.FEE_JUICE_WITH_CLAIM
216
- : AccountFeePaymentMethodOptions.EXTERNAL;
230
+ // If from is an address, we need to determine the appropriate fee payment method options for the
231
+ // account contract entrypoint to use
232
+ if (from !== NO_FROM) {
233
+ if (!feePayer) {
234
+ // The transaction does not include a fee payment method, so we set the flag
235
+ // for the account to use its fee juice balance
236
+ accountFeePaymentMethodOptions = AccountFeePaymentMethodOptions.PREEXISTING_FEE_JUICE;
237
+ } else {
238
+ // The transaction includes fee payment method, so we check if we are the fee payer for it
239
+ // (this can only happen if the embedded payment method is FeeJuiceWithClaim)
240
+ accountFeePaymentMethodOptions = from.equals(feePayer)
241
+ ? AccountFeePaymentMethodOptions.FEE_JUICE_WITH_CLAIM
242
+ : AccountFeePaymentMethodOptions.EXTERNAL;
243
+ }
217
244
  }
218
245
  const fullGasSettings: GasSettings = GasSettings.default({ ...gasSettings, maxFeesPerGas });
219
246
  this.log.debug(`Using L2 gas settings`, fullGasSettings);
@@ -233,7 +260,7 @@ export abstract class BaseWallet implements Wallet {
233
260
  * @param gasSettings - User-provided partial gas settings
234
261
  */
235
262
  protected async completeFeeOptionsForEstimation(
236
- from: AztecAddress,
263
+ from: AztecAddress | NoFrom,
237
264
  feePayer?: AztecAddress,
238
265
  gasSettings?: Partial<FieldsOf<GasSettings>>,
239
266
  ) {
@@ -300,22 +327,20 @@ export abstract class BaseWallet implements Wallet {
300
327
  /**
301
328
  * Simulates calls through the standard PXE path (account entrypoint).
302
329
  * @param executionPayload - The execution payload to simulate.
303
- * @param from - The sender address.
304
- * @param feeOptions - Fee options for the transaction.
305
- * @param skipTxValidation - Whether to skip tx validation.
306
- * @param skipFeeEnforcement - Whether to skip fee enforcement.
307
- * @param scopes - The scopes to use for the simulation.
330
+ * @param opts - Simulation options.
308
331
  */
309
- protected async simulateViaEntrypoint(
310
- executionPayload: ExecutionPayload,
311
- from: AztecAddress,
312
- feeOptions: FeeOptions,
313
- scopes: AccessScopes,
314
- skipTxValidation?: boolean,
315
- skipFeeEnforcement?: boolean,
316
- ) {
317
- const txRequest = await this.createTxExecutionRequestFromPayloadAndFee(executionPayload, from, feeOptions);
318
- return this.pxe.simulateTx(txRequest, { simulatePublic: true, skipTxValidation, skipFeeEnforcement, scopes });
332
+ protected async simulateViaEntrypoint(executionPayload: ExecutionPayload, opts: SimulateViaEntrypointOptions) {
333
+ const txRequest = await this.createTxExecutionRequestFromPayloadAndFee(
334
+ executionPayload,
335
+ opts.from,
336
+ opts.feeOptions,
337
+ );
338
+ return this.pxe.simulateTx(txRequest, {
339
+ simulatePublic: true,
340
+ skipTxValidation: opts.skipTxValidation,
341
+ skipFeeEnforcement: opts.skipFeeEnforcement,
342
+ scopes: opts.scopes,
343
+ });
319
344
  }
320
345
 
321
346
  /**
@@ -343,12 +368,13 @@ export abstract class BaseWallet implements Wallet {
343
368
  blockHeader = (await this.aztecNode.getBlockHeader())!;
344
369
  }
345
370
 
371
+ const simulationOrigin = opts.from === NO_FROM ? AztecAddress.ZERO : opts.from;
346
372
  const [optimizedResults, normalResult] = await Promise.all([
347
373
  optimizableCalls.length > 0
348
374
  ? simulateViaNode(
349
375
  this.aztecNode,
350
376
  optimizableCalls,
351
- opts.from,
377
+ simulationOrigin,
352
378
  chainInfo,
353
379
  feeOptions.gasSettings,
354
380
  blockHeader,
@@ -357,14 +383,13 @@ export abstract class BaseWallet implements Wallet {
357
383
  )
358
384
  : Promise.resolve([]),
359
385
  remainingCalls.length > 0
360
- ? this.simulateViaEntrypoint(
361
- remainingPayload,
362
- opts.from,
386
+ ? this.simulateViaEntrypoint(remainingPayload, {
387
+ from: opts.from,
363
388
  feeOptions,
364
- this.scopesFrom(opts.from, opts.additionalScopes),
365
- opts.skipTxValidation,
366
- opts.skipFeeEnforcement ?? true,
367
- )
389
+ scopes: this.scopesFrom(opts.from, opts.additionalScopes),
390
+ skipTxValidation: opts.skipTxValidation,
391
+ skipFeeEnforcement: opts.skipFeeEnforcement ?? true,
392
+ })
368
393
  : Promise.resolve(null),
369
394
  ]);
370
395
 
@@ -388,7 +413,10 @@ export abstract class BaseWallet implements Wallet {
388
413
  const feeOptions = await this.completeFeeOptions(opts.from, executionPayload.feePayer, opts.fee?.gasSettings);
389
414
  const txRequest = await this.createTxExecutionRequestFromPayloadAndFee(executionPayload, opts.from, feeOptions);
390
415
  const provenTx = await this.pxe.proveTx(txRequest, this.scopesFrom(opts.from, opts.additionalScopes));
391
- const offchainOutput = extractOffchainOutput(provenTx.getOffchainEffects());
416
+ const offchainOutput = extractOffchainOutput(
417
+ provenTx.getOffchainEffects(),
418
+ provenTx.publicInputs.constants.anchorBlockHeader.globalVariables.timestamp,
419
+ );
392
420
  const tx = await provenTx.toTx();
393
421
  const txHash = tx.getTxHash();
394
422
  if (await this.aztecNode.getTxEffect(txHash)) {
@@ -445,7 +473,7 @@ export abstract class BaseWallet implements Wallet {
445
473
  }
446
474
 
447
475
  executeUtility(call: FunctionCall, opts: ExecuteUtilityOptions): Promise<UtilityExecutionResult> {
448
- return this.pxe.executeUtility(call, { authwits: opts.authWitnesses, scopes: [opts.scope] });
476
+ return this.pxe.executeUtility(call, { authwits: opts.authWitnesses, scopes: opts.scopes });
449
477
  }
450
478
 
451
479
  async getPrivateEvents<T>(
@@ -468,17 +496,39 @@ export abstract class BaseWallet implements Wallet {
468
496
  return decodedEvents;
469
497
  }
470
498
 
499
+ /**
500
+ * Returns metadata about a contract, including whether it has been initialized, published, and updated.
501
+ * @param address - The contract address to query.
502
+ */
471
503
  async getContractMetadata(address: AztecAddress) {
472
504
  const instance = await this.pxe.getContractInstance(address);
473
- const initNullifier = await siloNullifier(address, address.toField());
474
- const publiclyRegisteredContract = await this.aztecNode.getContract(address);
475
- const initNullifierMembershipWitness = await this.aztecNode.getNullifierMembershipWitness('latest', initNullifier);
505
+ const publiclyRegisteredContractPromise = this.aztecNode.getContract(address);
506
+
507
+ let initializationStatus: ContractInitializationStatus;
508
+ if (instance) {
509
+ // We have the instance, so we can compute the private initialization nullifier (which includes init_hash and is
510
+ // emitted by both private and public initializers) and get a definitive INITIALIZED/UNINITIALIZED answer.
511
+ const initNullifier = await computeSiloedPrivateInitializationNullifier(address, instance.initializationHash);
512
+ const witness = await this.aztecNode.getNullifierMembershipWitness('latest', initNullifier);
513
+ initializationStatus = witness
514
+ ? ContractInitializationStatus.INITIALIZED
515
+ : ContractInitializationStatus.UNINITIALIZED;
516
+ } else {
517
+ // Without the instance we lack the init_hash needed for the private nullifier. We fall back to checking the
518
+ // public initialization nullifier (computed from address alone). Not all contracts emit it (only those with
519
+ // public functions that require initialization checks), so its absence doesn't mean the contract is
520
+ // uninitialized.
521
+ const publicNullifier = await computeSiloedPublicInitializationNullifier(address);
522
+ const witness = await this.aztecNode.getNullifierMembershipWitness('latest', publicNullifier);
523
+ initializationStatus = witness ? ContractInitializationStatus.INITIALIZED : ContractInitializationStatus.UNKNOWN;
524
+ }
525
+ const publiclyRegisteredContract = await publiclyRegisteredContractPromise;
476
526
  const isContractUpdated =
477
527
  publiclyRegisteredContract &&
478
528
  !publiclyRegisteredContract.currentContractClassId.equals(publiclyRegisteredContract.originalContractClassId);
479
529
  return {
480
530
  instance: instance ?? undefined,
481
- isContractInitialized: !!initNullifierMembershipWitness,
531
+ initializationStatus,
482
532
  isContractPublished: !!publiclyRegisteredContract,
483
533
  isContractUpdated: !!isContractUpdated,
484
534
  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';