@aztec/cli-wallet 0.0.1-commit.35158ae7e → 0.0.1-commit.3750d92a7

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.
@@ -61,6 +61,7 @@ async function inspectTx(wallet, aztecNode, txHash, log) {
61
61
  // Nullifiers
62
62
  const nullifierCount = effects.nullifiers.length;
63
63
  const { deployNullifiers, initNullifiers, classNullifiers } = await getKnownNullifiers(wallet, artifactMap);
64
+ const accounts = (await wallet.getAccounts()).map((a)=>a.item);
64
65
  if (nullifierCount > 0) {
65
66
  log(' Nullifiers:');
66
67
  for (const nullifier of effects.nullifiers){
@@ -68,7 +69,7 @@ async function inspectTx(wallet, aztecNode, txHash, log) {
68
69
  const note = deployed ? (await wallet.getNotes({
69
70
  siloedNullifier: nullifier,
70
71
  contractAddress: deployed,
71
- scopes: 'ALL_SCOPES'
72
+ scopes: accounts
72
73
  }))[0] : undefined;
73
74
  const initialized = initNullifiers[nullifier.toString()];
74
75
  const registered = classNullifiers[nullifier.toString()];
@@ -20,6 +20,11 @@ export declare class WalletDB {
20
20
  secret: string;
21
21
  leafIndex: bigint;
22
22
  }>;
23
+ peekBridgedFeeJuice(recipient: AztecAddress, log: LogFn): Promise<{
24
+ amount: bigint;
25
+ secret: string;
26
+ leafIndex: bigint;
27
+ }>;
23
28
  storeAccount(address: AztecAddress, { type, secretKey, salt, alias, publicKey }: {
24
29
  type: AccountType;
25
30
  secretKey: Fr;
@@ -50,4 +55,4 @@ export declare class WalletDB {
50
55
  }>;
51
56
  storeAlias(type: AliasType, key: string, value: Buffer, log: LogFn): Promise<void>;
52
57
  }
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2FsbGV0X2RiLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc3RvcmFnZS93YWxsZXRfZGIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BELE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ25ELE9BQU8sS0FBSyxFQUFFLGlCQUFpQixFQUFpQixNQUFNLGlCQUFpQixDQUFDO0FBQ3hFLE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzlELE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2hFLE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRS9DLE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBR3pELGVBQU8sTUFBTSxPQUFPLHdGQUF5RixDQUFDO0FBQzlHLE1BQU0sTUFBTSxTQUFTLEdBQUcsQ0FBQyxPQUFPLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBRWpELHFCQUFhLFFBQVE7O0lBTW5CLE9BQU8sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFXO0lBRWxDLE9BQU8sQ0FBQyxVQUFVLENBQTZCO0lBRS9DLE1BQU0sQ0FBQyxXQUFXLGFBTWpCO0lBRUssSUFBSSxDQUFDLEtBQUssRUFBRSxpQkFBaUIsaUJBT2xDO1lBRWEsaUJBQWlCO0lBSXpCLG1CQUFtQixDQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEtBQUssaUJBWTNHO0lBRUssa0JBQWtCLENBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUUsS0FBSzs7OztPQVkzRDtJQUVLLFlBQVksQ0FDaEIsT0FBTyxFQUFFLFlBQVksRUFDckIsRUFDRSxJQUFJLEVBQ0osU0FBUyxFQUNULElBQUksRUFDSixLQUFLLEVBQ0wsU0FBUyxFQUNWLEVBQUU7UUFBRSxJQUFJLEVBQUUsV0FBVyxDQUFDO1FBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQztRQUFDLElBQUksRUFBRSxFQUFFLENBQUM7UUFBQyxLQUFLLEVBQUUsTUFBTSxHQUFHLFNBQVMsQ0FBQztRQUFDLFNBQVMsRUFBRSxNQUFNLEdBQUcsU0FBUyxDQUFBO0tBQUUsRUFDM0csR0FBRyxFQUFFLEtBQUssaUJBcUJYO0lBRUssV0FBVyxDQUFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsS0FBSyxpQkFLakU7SUFFSyxhQUFhLENBQUMsT0FBTyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLEVBQUUsTUFBTSxpQkFZMUY7SUFFSyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLEVBQUUsTUFBTSxpQkFTdEU7SUFFSyxPQUFPLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRTtRQUFFLE1BQU0sRUFBRSxNQUFNLENBQUE7S0FBRSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLEVBQUUsTUFBTSxpQkFTdkU7SUFFRCxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsTUFBTSxVQU0zQjtJQUVNLHNCQUFzQixDQUFDLEdBQUcsRUFBRSxNQUFNLFVBWXhDO0lBRUssYUFBYSxDQUFDLEdBQUcsRUFBRSxNQUFNLG1CQVc5QjtJQUVLLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxTQUFTOzs7U0FXakM7SUFFSyxvQkFBb0IsQ0FBQyxjQUFjLEVBQUUsWUFBWSxHQUFHLE1BQU0sRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUd0RztJQUVLLHVCQUF1QixDQUFDLGNBQWMsRUFBRSxZQUFZLEdBQUcsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLG9DQU92RjtJQUVLLGVBQWUsQ0FBQyxPQUFPLEVBQUUsWUFBWSxHQUFHLE1BQU07Ozs7O09BU25EO0lBRUssVUFBVSxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxLQUFLLGlCQU12RTtDQUNGIn0=
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2FsbGV0X2RiLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc3RvcmFnZS93YWxsZXRfZGIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BELE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ25ELE9BQU8sS0FBSyxFQUFFLGlCQUFpQixFQUFpQixNQUFNLGlCQUFpQixDQUFDO0FBQ3hFLE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzlELE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2hFLE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRS9DLE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBR3pELGVBQU8sTUFBTSxPQUFPLHdGQUF5RixDQUFDO0FBQzlHLE1BQU0sTUFBTSxTQUFTLEdBQUcsQ0FBQyxPQUFPLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBRWpELHFCQUFhLFFBQVE7O0lBTW5CLE9BQU8sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFXO0lBRWxDLE9BQU8sQ0FBQyxVQUFVLENBQTZCO0lBRS9DLE1BQU0sQ0FBQyxXQUFXLGFBTWpCO0lBRUssSUFBSSxDQUFDLEtBQUssRUFBRSxpQkFBaUIsaUJBT2xDO1lBRWEsaUJBQWlCO0lBSXpCLG1CQUFtQixDQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEtBQUssaUJBWTNHO0lBRUssa0JBQWtCLENBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUUsS0FBSzs7OztPQVkzRDtJQUVLLG1CQUFtQixDQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsR0FBRyxFQUFFLEtBQUs7Ozs7T0FZNUQ7SUFFSyxZQUFZLENBQ2hCLE9BQU8sRUFBRSxZQUFZLEVBQ3JCLEVBQ0UsSUFBSSxFQUNKLFNBQVMsRUFDVCxJQUFJLEVBQ0osS0FBSyxFQUNMLFNBQVMsRUFDVixFQUFFO1FBQUUsSUFBSSxFQUFFLFdBQVcsQ0FBQztRQUFDLFNBQVMsRUFBRSxFQUFFLENBQUM7UUFBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO1FBQUMsS0FBSyxFQUFFLE1BQU0sR0FBRyxTQUFTLENBQUM7UUFBQyxTQUFTLEVBQUUsTUFBTSxHQUFHLFNBQVMsQ0FBQTtLQUFFLEVBQzNHLEdBQUcsRUFBRSxLQUFLLGlCQXFCWDtJQUVLLFdBQVcsQ0FBQyxPQUFPLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEtBQUssaUJBS2pFO0lBRUssYUFBYSxDQUFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxFQUFFLE1BQU0saUJBWTFGO0lBRUssZ0JBQWdCLENBQUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxFQUFFLE1BQU0saUJBU3RFO0lBRUssT0FBTyxDQUFDLEVBQUUsTUFBTSxFQUFFLEVBQUU7UUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFBO0tBQUUsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxFQUFFLE1BQU0saUJBU3ZFO0lBRUQsZ0JBQWdCLENBQUMsR0FBRyxFQUFFLE1BQU0sVUFNM0I7SUFFTSxzQkFBc0IsQ0FBQyxHQUFHLEVBQUUsTUFBTSxVQVl4QztJQUVLLGFBQWEsQ0FBQyxHQUFHLEVBQUUsTUFBTSxtQkFXOUI7SUFFSyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsU0FBUzs7O1NBV2pDO0lBRUssb0JBQW9CLENBQUMsY0FBYyxFQUFFLFlBQVksR0FBRyxNQUFNLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFHdEc7SUFFSyx1QkFBdUIsQ0FBQyxjQUFjLEVBQUUsWUFBWSxHQUFHLE1BQU0sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQ0FPdkY7SUFFSyxlQUFlLENBQUMsT0FBTyxFQUFFLFlBQVksR0FBRyxNQUFNOzs7OztPQVNuRDtJQUVLLFVBQVUsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsS0FBSyxpQkFNdkU7Q0FDRiJ9
@@ -1 +1 @@
1
- {"version":3,"file":"wallet_db.d.ts","sourceRoot":"","sources":["../../src/storage/wallet_db.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,KAAK,EAAE,iBAAiB,EAAiB,MAAM,iBAAiB,CAAC;AACxE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAGzD,eAAO,MAAM,OAAO,wFAAyF,CAAC;AAC9G,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC;AAEjD,qBAAa,QAAQ;;IAMnB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAW;IAElC,OAAO,CAAC,UAAU,CAA6B;IAE/C,MAAM,CAAC,WAAW,aAMjB;IAEK,IAAI,CAAC,KAAK,EAAE,iBAAiB,iBAOlC;YAEa,iBAAiB;IAIzB,mBAAmB,CAAC,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,iBAY3G;IAEK,kBAAkB,CAAC,SAAS,EAAE,YAAY,EAAE,GAAG,EAAE,KAAK;;;;OAY3D;IAEK,YAAY,CAChB,OAAO,EAAE,YAAY,EACrB,EACE,IAAI,EACJ,SAAS,EACT,IAAI,EACJ,KAAK,EACL,SAAS,EACV,EAAE;QAAE,IAAI,EAAE,WAAW,CAAC;QAAC,SAAS,EAAE,EAAE,CAAC;QAAC,IAAI,EAAE,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;QAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAA;KAAE,EAC3G,GAAG,EAAE,KAAK,iBAqBX;IAEK,WAAW,CAAC,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,iBAKjE;IAEK,aAAa,CAAC,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,MAAM,iBAY1F;IAEK,gBAAgB,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,MAAM,iBAStE;IAEK,OAAO,CAAC,EAAE,MAAM,EAAE,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,MAAM,iBASvE;IAED,gBAAgB,CAAC,GAAG,EAAE,MAAM,UAM3B;IAEM,sBAAsB,CAAC,GAAG,EAAE,MAAM,UAYxC;IAEK,aAAa,CAAC,GAAG,EAAE,MAAM,mBAW9B;IAEK,WAAW,CAAC,IAAI,CAAC,EAAE,SAAS;;;SAWjC;IAEK,oBAAoB,CAAC,cAAc,EAAE,YAAY,GAAG,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,iBAGtG;IAEK,uBAAuB,CAAC,cAAc,EAAE,YAAY,GAAG,MAAM,EAAE,WAAW,EAAE,MAAM,oCAOvF;IAEK,eAAe,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM;;;;;OASnD;IAEK,UAAU,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,iBAMvE;CACF"}
1
+ {"version":3,"file":"wallet_db.d.ts","sourceRoot":"","sources":["../../src/storage/wallet_db.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,KAAK,EAAE,iBAAiB,EAAiB,MAAM,iBAAiB,CAAC;AACxE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAGzD,eAAO,MAAM,OAAO,wFAAyF,CAAC;AAC9G,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC;AAEjD,qBAAa,QAAQ;;IAMnB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAW;IAElC,OAAO,CAAC,UAAU,CAA6B;IAE/C,MAAM,CAAC,WAAW,aAMjB;IAEK,IAAI,CAAC,KAAK,EAAE,iBAAiB,iBAOlC;YAEa,iBAAiB;IAIzB,mBAAmB,CAAC,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,iBAY3G;IAEK,kBAAkB,CAAC,SAAS,EAAE,YAAY,EAAE,GAAG,EAAE,KAAK;;;;OAY3D;IAEK,mBAAmB,CAAC,SAAS,EAAE,YAAY,EAAE,GAAG,EAAE,KAAK;;;;OAY5D;IAEK,YAAY,CAChB,OAAO,EAAE,YAAY,EACrB,EACE,IAAI,EACJ,SAAS,EACT,IAAI,EACJ,KAAK,EACL,SAAS,EACV,EAAE;QAAE,IAAI,EAAE,WAAW,CAAC;QAAC,SAAS,EAAE,EAAE,CAAC;QAAC,IAAI,EAAE,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;QAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAA;KAAE,EAC3G,GAAG,EAAE,KAAK,iBAqBX;IAEK,WAAW,CAAC,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,iBAKjE;IAEK,aAAa,CAAC,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,MAAM,iBAY1F;IAEK,gBAAgB,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,MAAM,iBAStE;IAEK,OAAO,CAAC,EAAE,MAAM,EAAE,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,MAAM,iBASvE;IAED,gBAAgB,CAAC,GAAG,EAAE,MAAM,UAM3B;IAEM,sBAAsB,CAAC,GAAG,EAAE,MAAM,UAYxC;IAEK,aAAa,CAAC,GAAG,EAAE,MAAM,mBAW9B;IAEK,WAAW,CAAC,IAAI,CAAC,EAAE,SAAS;;;SAWjC;IAEK,oBAAoB,CAAC,cAAc,EAAE,YAAY,GAAG,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,iBAGtG;IAEK,uBAAuB,CAAC,cAAc,EAAE,YAAY,GAAG,MAAM,EAAE,WAAW,EAAE,MAAM,oCAOvF;IAEK,eAAe,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM;;;;;OASnD;IAEK,UAAU,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,iBAMvE;CACF"}
@@ -62,6 +62,20 @@ export class WalletDB {
62
62
  leafIndex: BigInt(leafIndexStr)
63
63
  };
64
64
  }
65
+ async peekBridgedFeeJuice(recipient, log) {
66
+ const stackPointer = (await this.#bridgedFeeJuice.getAsync(`${recipient.toString()}:stackPointer`))?.readInt8() || 0;
67
+ const result = await this.#bridgedFeeJuice.getAsync(`${recipient.toString()}:${stackPointer}`);
68
+ if (!result) {
69
+ throw new Error(`No stored fee juice available for recipient ${recipient.toString()}. Please provide claim amount and secret. Stack pointer ${stackPointer}`);
70
+ }
71
+ const [amountStr, secretStr, leafIndexStr] = result.toString().split(':');
72
+ log(`Peeked ${amountStr} fee juice for recipient ${recipient.toString()}. Stack pointer ${stackPointer}`);
73
+ return {
74
+ amount: BigInt(amountStr),
75
+ secret: secretStr,
76
+ leafIndex: BigInt(leafIndexStr)
77
+ };
78
+ }
65
79
  async storeAccount(address, { type, secretKey, salt, alias, publicKey }, log) {
66
80
  let publicSigningKey;
67
81
  if (type === 'ecdsasecp256r1ssh' && publicKey) {
@@ -20,7 +20,7 @@ export type ParsedFeeOptions = {
20
20
  gasSettings?: Partial<FieldsOf<GasSettings>>;
21
21
  };
22
22
  export declare function getPaymentMethodOption(): Option;
23
- export declare function parsePaymentMethod(payment: string, log: LogFn, db?: WalletDB): (wallet: Wallet, from: AztecAddress, gasSettings: GasSettings) => Promise<FeePaymentMethod | undefined>;
23
+ export declare function parsePaymentMethod(payment: string, log: LogFn, db?: WalletDB, estimateOnly?: boolean): (wallet: Wallet, from: AztecAddress, gasSettings: GasSettings) => Promise<FeePaymentMethod | undefined>;
24
24
  export declare function parseGasFees(gasFees: string): GasFees;
25
25
  export declare class CLIFeeArgs {
26
26
  estimateOnly: boolean;
@@ -28,8 +28,9 @@ export declare class CLIFeeArgs {
28
28
  private gasSettings;
29
29
  constructor(estimateOnly: boolean, paymentMethod: (wallet: Wallet, feePayer: AztecAddress, gasSettings: GasSettings) => Promise<FeePaymentMethod | undefined>, gasSettings: Partial<FieldsOf<GasSettings>>);
30
30
  toUserFeeOptions(node: AztecNode, wallet: Wallet, from: AztecAddress): Promise<ParsedFeeOptions>;
31
+ private getMinFees;
31
32
  static parse(args: RawCliFeeArgs, log: LogFn, db?: WalletDB): CLIFeeArgs;
32
33
  static getOptions(): Option[];
33
34
  }
34
35
  export declare function printGasEstimates(feeOpts: FeeOptions, gasEstimates: Pick<GasSettings, 'gasLimits' | 'teardownGasLimits'>, log: LogFn): void;
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVlcy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3V0aWxzL29wdGlvbnMvZmVlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzVELE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3RELE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXJELE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ25ELE9BQU8sS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRCxPQUFPLEVBQU8sT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzlELE9BQU8sS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRWhFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFbkMsT0FBTyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFJM0QsTUFBTSxNQUFNLGFBQWEsR0FBRztJQUMxQixlQUFlLEVBQUUsT0FBTyxDQUFDO0lBQ3pCLFNBQVMsQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUNuQixPQUFPLENBQUMsRUFBRSxNQUFNLENBQUM7SUFDakIsYUFBYSxDQUFDLEVBQUUsTUFBTSxDQUFDO0lBQ3ZCLHFCQUFxQixDQUFDLEVBQUUsTUFBTSxDQUFDO0NBQ2hDLENBQUM7QUFFRixNQUFNLE1BQU0sZ0JBQWdCLEdBQUc7SUFDN0IsYUFBYSxDQUFDLEVBQUUsZ0JBQWdCLENBQUM7SUFDakMsV0FBVyxDQUFDLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0NBQzlDLENBQUM7QUF5REYsd0JBQWdCLHNCQUFzQixXQUdyQztBQTBCRCx3QkFBZ0Isa0JBQWtCLENBQ2hDLE9BQU8sRUFBRSxNQUFNLEVBQ2YsR0FBRyxFQUFFLEtBQUssRUFDVixFQUFFLENBQUMsRUFBRSxRQUFRLEdBQ1osQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLFdBQVcsS0FBSyxPQUFPLENBQUMsZ0JBQWdCLEdBQUcsU0FBUyxDQUFDLENBcUZ6RztBQXlCRCx3QkFBZ0IsWUFBWSxDQUFDLE9BQU8sRUFBRSxNQUFNLEdBQUcsT0FBTyxDQWtCckQ7QUFDRCxxQkFBYSxVQUFVO0lBRVosWUFBWSxFQUFFLE9BQU87SUFDNUIsT0FBTyxDQUFDLGFBQWE7SUFLckIsT0FBTyxDQUFDLFdBQVc7SUFQckIsWUFDUyxZQUFZLEVBQUUsT0FBTyxFQUNwQixhQUFhLEVBQUUsQ0FDckIsTUFBTSxFQUFFLE1BQU0sRUFDZCxRQUFRLEVBQUUsWUFBWSxFQUN0QixXQUFXLEVBQUUsV0FBVyxLQUNyQixPQUFPLENBQUMsZ0JBQWdCLEdBQUcsU0FBUyxDQUFDLEVBQ2xDLFdBQVcsRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQ2pEO0lBRUUsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxZQUFZLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBUXJHO0lBRUQsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLEVBQUUsUUFBUSxHQUFHLFVBQVUsQ0FNdkU7SUFFRCxNQUFNLENBQUMsVUFBVSxhQUVoQjtDQUNGO0FBSUQsd0JBQWdCLGlCQUFpQixDQUMvQixPQUFPLEVBQUUsVUFBVSxFQUNuQixZQUFZLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxXQUFXLEdBQUcsbUJBQW1CLENBQUMsRUFDbEUsR0FBRyxFQUFFLEtBQUssUUFJWCJ9
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVlcy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3V0aWxzL29wdGlvbnMvZmVlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzVELE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3RELE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXJELE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ25ELE9BQU8sS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRCxPQUFPLEVBQU8sT0FBTyxFQUFFLFdBQVcsRUFBcUIsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRixPQUFPLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUVoRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRW5DLE9BQU8sS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBSTNELE1BQU0sTUFBTSxhQUFhLEdBQUc7SUFDMUIsZUFBZSxFQUFFLE9BQU8sQ0FBQztJQUN6QixTQUFTLENBQUMsRUFBRSxNQUFNLENBQUM7SUFDbkIsT0FBTyxDQUFDLEVBQUUsTUFBTSxDQUFDO0lBQ2pCLGFBQWEsQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUN2QixxQkFBcUIsQ0FBQyxFQUFFLE1BQU0sQ0FBQztDQUNoQyxDQUFDO0FBRUYsTUFBTSxNQUFNLGdCQUFnQixHQUFHO0lBQzdCLGFBQWEsQ0FBQyxFQUFFLGdCQUFnQixDQUFDO0lBQ2pDLFdBQVcsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztDQUM5QyxDQUFDO0FBeURGLHdCQUFnQixzQkFBc0IsV0FHckM7QUEwQkQsd0JBQWdCLGtCQUFrQixDQUNoQyxPQUFPLEVBQUUsTUFBTSxFQUNmLEdBQUcsRUFBRSxLQUFLLEVBQ1YsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUNiLFlBQVksQ0FBQyxFQUFFLE9BQU8sR0FDckIsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLFdBQVcsS0FBSyxPQUFPLENBQUMsZ0JBQWdCLEdBQUcsU0FBUyxDQUFDLENBcUZ6RztBQXlCRCx3QkFBZ0IsWUFBWSxDQUFDLE9BQU8sRUFBRSxNQUFNLEdBQUcsT0FBTyxDQWtCckQ7QUFDRCxxQkFBYSxVQUFVO0lBRVosWUFBWSxFQUFFLE9BQU87SUFDNUIsT0FBTyxDQUFDLGFBQWE7SUFLckIsT0FBTyxDQUFDLFdBQVc7SUFQckIsWUFDUyxZQUFZLEVBQUUsT0FBTyxFQUNwQixhQUFhLEVBQUUsQ0FDckIsTUFBTSxFQUFFLE1BQU0sRUFDZCxRQUFRLEVBQUUsWUFBWSxFQUN0QixXQUFXLEVBQUUsV0FBVyxLQUNyQixPQUFPLENBQUMsZ0JBQWdCLEdBQUcsU0FBUyxDQUFDLEVBQ2xDLFdBQVcsRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQ2pEO0lBRUUsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxZQUFZLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBU3JHO1lBTWEsVUFBVTtJQWlCeEIsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLEVBQUUsUUFBUSxHQUFHLFVBQVUsQ0FPdkU7SUFFRCxNQUFNLENBQUMsVUFBVSxhQUVoQjtDQUNGO0FBSUQsd0JBQWdCLGlCQUFpQixDQUMvQixPQUFPLEVBQUUsVUFBVSxFQUNuQixZQUFZLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxXQUFXLEdBQUcsbUJBQW1CLENBQUMsRUFDbEUsR0FBRyxFQUFFLEtBQUssUUFJWCJ9
@@ -1 +1 @@
1
- {"version":3,"file":"fees.d.ts","sourceRoot":"","sources":["../../../src/utils/options/fees.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAErD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAO,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAEhE,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAEnC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAI3D,MAAM,MAAM,aAAa,GAAG;IAC1B,eAAe,EAAE,OAAO,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,aAAa,CAAC,EAAE,gBAAgB,CAAC;IACjC,WAAW,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;CAC9C,CAAC;AAyDF,wBAAgB,sBAAsB,WAGrC;AA0BD,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,KAAK,EACV,EAAE,CAAC,EAAE,QAAQ,GACZ,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,KAAK,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,CAqFzG;AAyBD,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAkBrD;AACD,qBAAa,UAAU;IAEZ,YAAY,EAAE,OAAO;IAC5B,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,WAAW;IAPrB,YACS,YAAY,EAAE,OAAO,EACpB,aAAa,EAAE,CACrB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,YAAY,EACtB,WAAW,EAAE,WAAW,KACrB,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,EAClC,WAAW,EAAE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,EACjD;IAEE,gBAAgB,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAQrG;IAED,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,aAAa,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,UAAU,CAMvE;IAED,MAAM,CAAC,UAAU,aAEhB;CACF;AAID,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,UAAU,EACnB,YAAY,EAAE,IAAI,CAAC,WAAW,EAAE,WAAW,GAAG,mBAAmB,CAAC,EAClE,GAAG,EAAE,KAAK,QAIX"}
1
+ {"version":3,"file":"fees.d.ts","sourceRoot":"","sources":["../../../src/utils/options/fees.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAErD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAO,OAAO,EAAE,WAAW,EAAqB,MAAM,mBAAmB,CAAC;AACjF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAEhE,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAEnC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAI3D,MAAM,MAAM,aAAa,GAAG;IAC1B,eAAe,EAAE,OAAO,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,aAAa,CAAC,EAAE,gBAAgB,CAAC;IACjC,WAAW,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;CAC9C,CAAC;AAyDF,wBAAgB,sBAAsB,WAGrC;AA0BD,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,KAAK,EACV,EAAE,CAAC,EAAE,QAAQ,EACb,YAAY,CAAC,EAAE,OAAO,GACrB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,KAAK,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,CAqFzG;AAyBD,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAkBrD;AACD,qBAAa,UAAU;IAEZ,YAAY,EAAE,OAAO;IAC5B,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,WAAW;IAPrB,YACS,YAAY,EAAE,OAAO,EACpB,aAAa,EAAE,CACrB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,YAAY,EACtB,WAAW,EAAE,WAAW,KACrB,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,EAClC,WAAW,EAAE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,EACjD;IAEE,gBAAgB,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,gBAAgB,CAAC,CASrG;YAMa,UAAU;IAiBxB,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,aAAa,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,UAAU,CAOvE;IAED,MAAM,CAAC,UAAU,aAEhB;CACF;AAID,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,UAAU,EACnB,YAAY,EAAE,IAAI,CAAC,WAAW,EAAE,WAAW,GAAG,mBAAmB,CAAC,EAClE,GAAG,EAAE,KAAK,QAIX"}
@@ -1,6 +1,6 @@
1
1
  import { Fr } from '@aztec/foundation/curves/bn254';
2
2
  import { AztecAddress } from '@aztec/stdlib/aztec-address';
3
- import { Gas, GasFees, GasSettings } from '@aztec/stdlib/gas';
3
+ import { Gas, GasFees, GasSettings, ManaUsageEstimate } from '@aztec/stdlib/gas';
4
4
  import { Option } from 'commander';
5
5
  import { MIN_FEE_PADDING } from '../constants.js';
6
6
  import { aliasedAddressParser } from './options.js';
@@ -70,7 +70,7 @@ function parseGasSettings(args) {
70
70
  maxPriorityFeesPerGas
71
71
  };
72
72
  }
73
- export function parsePaymentMethod(payment, log, db) {
73
+ export function parsePaymentMethod(payment, log, db, estimateOnly) {
74
74
  const parsed = payment.split(',').reduce((acc, item)=>{
75
75
  const [dimension, value] = item.split('=');
76
76
  acc[dimension] = value ?? 1;
@@ -95,15 +95,15 @@ export function parsePaymentMethod(payment, log, db) {
95
95
  if (parsed.claim || parsed.claimSecret && parsed.claimAmount && parsed.messageLeafIndex) {
96
96
  let claimAmount, claimSecret, messageLeafIndex;
97
97
  if (parsed.claim && db) {
98
- ({ amount: claimAmount, secret: claimSecret, leafIndex: messageLeafIndex } = await db.popBridgedFeeJuice(from, log));
98
+ ({ amount: claimAmount, secret: claimSecret, leafIndex: messageLeafIndex } = estimateOnly ? await db.peekBridgedFeeJuice(from, log) : await db.popBridgedFeeJuice(from, log));
99
99
  } else {
100
100
  ({ claimAmount, claimSecret, messageLeafIndex } = parsed);
101
101
  }
102
102
  log(`Using Fee Juice for fee payments with claim for ${claimAmount} tokens`);
103
103
  const { FeeJuicePaymentMethodWithClaim } = await import('@aztec/aztec.js/fee');
104
104
  return new FeeJuicePaymentMethodWithClaim(from, {
105
- claimAmount: (typeof claimAmount === 'string' ? Fr.fromHexString(claimAmount) : new Fr(claimAmount)).toBigInt(),
106
- claimSecret: Fr.fromHexString(claimSecret),
105
+ claimAmount: (typeof claimAmount === 'string' ? Fr.fromString(claimAmount) : new Fr(claimAmount)).toBigInt(),
106
+ claimSecret: typeof claimSecret === 'string' ? Fr.fromString(claimSecret) : claimSecret,
107
107
  messageLeafIndex: BigInt(messageLeafIndex)
108
108
  });
109
109
  } else {
@@ -192,8 +192,9 @@ export class CLIFeeArgs {
192
192
  this.gasSettings = gasSettings;
193
193
  }
194
194
  async toUserFeeOptions(node, wallet, from) {
195
- const maxFeesPerGas = (await node.getCurrentMinFees()).mul(1 + MIN_FEE_PADDING);
196
- const gasSettings = GasSettings.default({
195
+ const minFees = await this.getMinFees(node);
196
+ const maxFeesPerGas = minFees.mul(1 + MIN_FEE_PADDING);
197
+ const gasSettings = GasSettings.fallback({
197
198
  ...this.gasSettings,
198
199
  maxFeesPerGas
199
200
  });
@@ -203,8 +204,28 @@ export class CLIFeeArgs {
203
204
  gasSettings
204
205
  };
205
206
  }
207
+ /**
208
+ * Returns the worst-case min fee across predicted future slots.
209
+ * Falls back to getCurrentMinFees if the node doesn't support getPredictedMinFees.
210
+ */ async getMinFees(node) {
211
+ try {
212
+ const predicted = await node.getPredictedMinFees(ManaUsageEstimate.Limit);
213
+ if (predicted.length === 0) {
214
+ return node.getCurrentMinFees();
215
+ }
216
+ return predicted.reduce((worst, fees)=>fees.feePerL2Gas > worst.feePerL2Gas ? fees : worst);
217
+ } catch (err) {
218
+ // Fallback for old nodes that don't support getPredictedMinFees.
219
+ // Only fall back on method-not-found errors (JSON-RPC code -32601); rethrow others.
220
+ if (err?.cause?.code === -32601 || err?.message?.includes('Method not found')) {
221
+ return node.getCurrentMinFees();
222
+ }
223
+ throw err;
224
+ }
225
+ }
206
226
  static parse(args, log, db) {
207
- return new CLIFeeArgs(!!args.estimateGasOnly, parsePaymentMethod(args.payment ?? 'method=fee_juice', log, db), parseGasSettings(args));
227
+ const estimateOnly = !!args.estimateGasOnly;
228
+ return new CLIFeeArgs(estimateOnly, parsePaymentMethod(args.payment ?? 'method=fee_juice', log, db, estimateOnly), parseGasSettings(args));
208
229
  }
209
230
  static getOptions() {
210
231
  return getFeeOptions();
@@ -219,7 +240,7 @@ function formatGasEstimate(estimate) {
219
240
  return `da=${estimate.gasLimits.daGas},l2=${estimate.gasLimits.l2Gas},teardownDA=${estimate.teardownGasLimits.daGas},teardownL2=${estimate.teardownGasLimits.l2Gas}`;
220
241
  }
221
242
  function getEstimatedCost(estimate, maxFeesPerGas) {
222
- return GasSettings.default({
243
+ return GasSettings.fallback({
223
244
  ...estimate,
224
245
  maxFeesPerGas
225
246
  }).getFeeLimit().toBigInt();
@@ -2,6 +2,7 @@ import { type Account } from '@aztec/aztec.js/account';
2
2
  import { type InteractionFeeOptions } from '@aztec/aztec.js/contracts';
3
3
  import type { AztecNode } from '@aztec/aztec.js/node';
4
4
  import { AccountManager, type Aliased, type SimulateOptions } from '@aztec/aztec.js/wallet';
5
+ import { TxSimulationResultWithAppOffset } from '@aztec/aztec.js/wallet';
5
6
  import { Fr } from '@aztec/foundation/curves/bn254';
6
7
  import type { LogFn } from '@aztec/foundation/log';
7
8
  import type { NotesFilter } from '@aztec/pxe/client/lazy';
@@ -9,7 +10,7 @@ import type { PXEConfig } from '@aztec/pxe/config';
9
10
  import type { PXE } from '@aztec/pxe/server';
10
11
  import { AztecAddress } from '@aztec/stdlib/aztec-address';
11
12
  import { NoteDao } from '@aztec/stdlib/note';
12
- import type { TxProvingResult, TxSimulationResult } from '@aztec/stdlib/tx';
13
+ import type { TxProvingResult } from '@aztec/stdlib/tx';
13
14
  import { ExecutionPayload } from '@aztec/stdlib/tx';
14
15
  import { BaseWallet, type SimulateViaEntrypointOptions } from '@aztec/wallet-sdk/base-wallet';
15
16
  import type { WalletDB } from '../storage/wallet_db.js';
@@ -27,14 +28,14 @@ export declare class CLIWallet extends BaseWallet {
27
28
  private createAccount;
28
29
  createOrRetrieveAccount(address?: AztecAddress, secretKey?: Fr, type?: AccountType, salt?: Fr, publicKey?: string): Promise<AccountManager>;
29
30
  private getFakeAccountDataFor;
30
- simulateTx(executionPayload: ExecutionPayload, opts: SimulateOptions): Promise<TxSimulationResult>;
31
+ simulateTx(executionPayload: ExecutionPayload, opts: SimulateOptions): Promise<TxSimulationResultWithAppOffset>;
31
32
  /**
32
33
  * Uses a stub account for kernelless simulation, bypassing real account authorization.
33
34
  * Uses DefaultEntrypoint directly for NO_FROM transactions.
34
35
  */
35
- protected simulateViaEntrypoint(executionPayload: ExecutionPayload, opts: SimulateViaEntrypointOptions): Promise<TxSimulationResult>;
36
+ protected simulateViaEntrypoint(executionPayload: ExecutionPayload, opts: SimulateViaEntrypointOptions): Promise<TxSimulationResultWithAppOffset>;
36
37
  getContracts(): Promise<AztecAddress[]>;
37
38
  getNotes(filter: NotesFilter): Promise<NoteDao[]>;
38
39
  getContractArtifact(id: Fr): Promise<import("@aztec/stdlib/abi").ContractArtifact | undefined>;
39
40
  }
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2FsbGV0LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvd2FsbGV0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE9BQU8sRUFBRSxLQUFLLE9BQU8sRUFBaUMsTUFBTSx5QkFBeUIsQ0FBQztBQUN0RixPQUFPLEVBQ0wsS0FBSyxxQkFBcUIsRUFHM0IsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsY0FBYyxFQUFFLEtBQUssT0FBTyxFQUFFLEtBQUssZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFHNUYsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BELE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ25ELE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzFELE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sS0FBSyxFQUFFLEdBQUcsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRTdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUUzRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDN0MsT0FBTyxLQUFLLEVBQTJDLGVBQWUsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3JILE9BQU8sRUFBRSxnQkFBZ0IsRUFBMEIsTUFBTSxrQkFBa0IsQ0FBQztBQUM1RSxPQUFPLEVBQUUsVUFBVSxFQUFFLEtBQUssNEJBQTRCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUU5RixPQUFPLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN4RCxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUlsRCxxQkFBYSxTQUFVLFNBQVEsVUFBVTtJQU1yQyxPQUFPLENBQUMsT0FBTztJQUNmLE9BQU8sQ0FBQyxFQUFFLENBQUM7SUFOYixPQUFPLENBQUMsWUFBWSxDQUE4QjtJQUVsRCxZQUNFLEdBQUcsRUFBRSxHQUFHLEVBQ1IsSUFBSSxFQUFFLFNBQVMsRUFDUCxPQUFPLEVBQUUsS0FBSyxFQUNkLEVBQUUsQ0FBQyxzQkFBVSxFQUl0QjtJQUVELE9BQWEsTUFBTSxDQUNqQixJQUFJLEVBQUUsU0FBUyxFQUNmLEdBQUcsRUFBRSxLQUFLLEVBQ1YsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUNiLGlCQUFpQixDQUFDLEVBQUUsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUNyQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBSXBCO0lBRWMsV0FBVyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUc3RDtZQUVhLG9DQUFvQztJQXdCNUMsbUJBQW1CLENBQ3ZCLElBQUksRUFBRSxZQUFZLEVBQ2xCLE9BQU8sRUFBRSxFQUFFLEVBQ1gsWUFBWSxFQUFFLHFCQUFxQixHQUNsQyxPQUFPLENBQUMsZUFBZSxDQUFDLENBRzFCO0lBRWMscUJBQXFCLENBQUMsT0FBTyxFQUFFLFlBQVksb0JBYXpEO1lBRWEsYUFBYTtJQVdyQix1QkFBdUIsQ0FDM0IsT0FBTyxDQUFDLEVBQUUsWUFBWSxFQUN0QixTQUFTLENBQUMsRUFBRSxFQUFFLEVBQ2QsSUFBSSxHQUFFLFdBQXVCLEVBQzdCLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFDVCxTQUFTLENBQUMsRUFBRSxNQUFNLEdBQ2pCLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FtRHpCO1lBUWEscUJBQXFCO0lBa0JwQixVQUFVLENBQUMsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLGVBQWUsR0FBRyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FTaEg7SUFFRDs7O09BR0c7SUFDSCxVQUF5QixxQkFBcUIsQ0FDNUMsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQ2xDLElBQUksRUFBRSw0QkFBNEIsR0FDakMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBdUM3QjtJQUlELFlBQVksSUFBSSxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FFdEM7SUFJRCxRQUFRLENBQUMsTUFBTSxFQUFFLFdBQVcsR0FBRyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FFaEQ7SUFJRCxtQkFBbUIsQ0FBQyxFQUFFLEVBQUUsRUFBRSxxRUFFekI7Q0FDRiJ9
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2FsbGV0LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvd2FsbGV0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtBLE9BQU8sRUFBRSxLQUFLLE9BQU8sRUFBaUMsTUFBTSx5QkFBeUIsQ0FBQztBQUN0RixPQUFPLEVBQ0wsS0FBSyxxQkFBcUIsRUFHM0IsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsY0FBYyxFQUFFLEtBQUssT0FBTyxFQUFFLEtBQUssZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUYsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFHekUsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BELE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ25ELE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzFELE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sS0FBSyxFQUFFLEdBQUcsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRTdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUUzRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDN0MsT0FBTyxLQUFLLEVBQTJDLGVBQWUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2pHLE9BQU8sRUFBRSxnQkFBZ0IsRUFBMEIsTUFBTSxrQkFBa0IsQ0FBQztBQUM1RSxPQUFPLEVBQUUsVUFBVSxFQUFFLEtBQUssNEJBQTRCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUU5RixPQUFPLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN4RCxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUlsRCxxQkFBYSxTQUFVLFNBQVEsVUFBVTtJQU1yQyxPQUFPLENBQUMsT0FBTztJQUNmLE9BQU8sQ0FBQyxFQUFFLENBQUM7SUFOYixPQUFPLENBQUMsWUFBWSxDQUE4QjtJQUVsRCxZQUNFLEdBQUcsRUFBRSxHQUFHLEVBQ1IsSUFBSSxFQUFFLFNBQVMsRUFDUCxPQUFPLEVBQUUsS0FBSyxFQUNkLEVBQUUsQ0FBQyxzQkFBVSxFQUl0QjtJQUVELE9BQWEsTUFBTSxDQUNqQixJQUFJLEVBQUUsU0FBUyxFQUNmLEdBQUcsRUFBRSxLQUFLLEVBQ1YsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUNiLGlCQUFpQixDQUFDLEVBQUUsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUNyQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBSXBCO0lBRWMsV0FBVyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQVE3RDtZQUVhLG9DQUFvQztJQTRCNUMsbUJBQW1CLENBQ3ZCLElBQUksRUFBRSxZQUFZLEVBQ2xCLE9BQU8sRUFBRSxFQUFFLEVBQ1gsWUFBWSxFQUFFLHFCQUFxQixHQUNsQyxPQUFPLENBQUMsZUFBZSxDQUFDLENBRzFCO0lBRWMscUJBQXFCLENBQUMsT0FBTyxFQUFFLFlBQVksb0JBYXpEO1lBRWEsYUFBYTtJQVdyQix1QkFBdUIsQ0FDM0IsT0FBTyxDQUFDLEVBQUUsWUFBWSxFQUN0QixTQUFTLENBQUMsRUFBRSxFQUFFLEVBQ2QsSUFBSSxHQUFFLFdBQXVCLEVBQzdCLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFDVCxTQUFTLENBQUMsRUFBRSxNQUFNLEdBQ2pCLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FtRHpCO1lBUWEscUJBQXFCO0lBZXBCLFVBQVUsQ0FDdkIsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQ2xDLElBQUksRUFBRSxlQUFlLEdBQ3BCLE9BQU8sQ0FBQywrQkFBK0IsQ0FBQyxDQWExQztJQUVEOzs7T0FHRztJQUNILFVBQXlCLHFCQUFxQixDQUM1QyxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFDbEMsSUFBSSxFQUFFLDRCQUE0QixHQUNqQyxPQUFPLENBQUMsK0JBQStCLENBQUMsQ0EwQzFDO0lBSUQsWUFBWSxJQUFJLE9BQU8sQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUV0QztJQUlELFFBQVEsQ0FBQyxNQUFNLEVBQUUsV0FBVyxHQUFHLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUVoRDtJQUlELG1CQUFtQixDQUFDLEVBQUUsRUFBRSxFQUFFLHFFQUV6QjtDQUNGIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"wallet.d.ts","sourceRoot":"","sources":["../../src/utils/wallet.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,OAAO,EAAiC,MAAM,yBAAyB,CAAC;AACtF,OAAO,EACL,KAAK,qBAAqB,EAG3B,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,KAAK,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAG5F,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAE7C,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAE3D,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,KAAK,EAA2C,eAAe,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACrH,OAAO,EAAE,gBAAgB,EAA0B,MAAM,kBAAkB,CAAC;AAC5E,OAAO,EAAE,UAAU,EAAE,KAAK,4BAA4B,EAAE,MAAM,+BAA+B,CAAC;AAE9F,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAIlD,qBAAa,SAAU,SAAQ,UAAU;IAMrC,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,EAAE,CAAC;IANb,OAAO,CAAC,YAAY,CAA8B;IAElD,YACE,GAAG,EAAE,GAAG,EACR,IAAI,EAAE,SAAS,EACP,OAAO,EAAE,KAAK,EACd,EAAE,CAAC,sBAAU,EAItB;IAED,OAAa,MAAM,CACjB,IAAI,EAAE,SAAS,EACf,GAAG,EAAE,KAAK,EACV,EAAE,CAAC,EAAE,QAAQ,EACb,iBAAiB,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,GACrC,OAAO,CAAC,SAAS,CAAC,CAIpB;IAEc,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,CAG7D;YAEa,oCAAoC;IAwB5C,mBAAmB,CACvB,IAAI,EAAE,YAAY,EAClB,OAAO,EAAE,EAAE,EACX,YAAY,EAAE,qBAAqB,GAClC,OAAO,CAAC,eAAe,CAAC,CAG1B;IAEc,qBAAqB,CAAC,OAAO,EAAE,YAAY,oBAazD;YAEa,aAAa;IAWrB,uBAAuB,CAC3B,OAAO,CAAC,EAAE,YAAY,EACtB,SAAS,CAAC,EAAE,EAAE,EACd,IAAI,GAAE,WAAuB,EAC7B,IAAI,CAAC,EAAE,EAAE,EACT,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,cAAc,CAAC,CAmDzB;YAQa,qBAAqB;IAkBpB,UAAU,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAShH;IAED;;;OAGG;IACH,UAAyB,qBAAqB,CAC5C,gBAAgB,EAAE,gBAAgB,EAClC,IAAI,EAAE,4BAA4B,GACjC,OAAO,CAAC,kBAAkB,CAAC,CAuC7B;IAID,YAAY,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC,CAEtC;IAID,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAEhD;IAID,mBAAmB,CAAC,EAAE,EAAE,EAAE,qEAEzB;CACF"}
1
+ {"version":3,"file":"wallet.d.ts","sourceRoot":"","sources":["../../src/utils/wallet.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,OAAO,EAAiC,MAAM,yBAAyB,CAAC;AACtF,OAAO,EACL,KAAK,qBAAqB,EAG3B,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,KAAK,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC5F,OAAO,EAAE,+BAA+B,EAAE,MAAM,wBAAwB,CAAC;AAGzE,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAE7C,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAE3D,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,KAAK,EAA2C,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACjG,OAAO,EAAE,gBAAgB,EAA0B,MAAM,kBAAkB,CAAC;AAC5E,OAAO,EAAE,UAAU,EAAE,KAAK,4BAA4B,EAAE,MAAM,+BAA+B,CAAC;AAE9F,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAIlD,qBAAa,SAAU,SAAQ,UAAU;IAMrC,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,EAAE,CAAC;IANb,OAAO,CAAC,YAAY,CAA8B;IAElD,YACE,GAAG,EAAE,GAAG,EACR,IAAI,EAAE,SAAS,EACP,OAAO,EAAE,KAAK,EACd,EAAE,CAAC,sBAAU,EAItB;IAED,OAAa,MAAM,CACjB,IAAI,EAAE,SAAS,EACf,GAAG,EAAE,KAAK,EACV,EAAE,CAAC,EAAE,QAAQ,EACb,iBAAiB,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,GACrC,OAAO,CAAC,SAAS,CAAC,CAIpB;IAEc,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,CAQ7D;YAEa,oCAAoC;IA4B5C,mBAAmB,CACvB,IAAI,EAAE,YAAY,EAClB,OAAO,EAAE,EAAE,EACX,YAAY,EAAE,qBAAqB,GAClC,OAAO,CAAC,eAAe,CAAC,CAG1B;IAEc,qBAAqB,CAAC,OAAO,EAAE,YAAY,oBAazD;YAEa,aAAa;IAWrB,uBAAuB,CAC3B,OAAO,CAAC,EAAE,YAAY,EACtB,SAAS,CAAC,EAAE,EAAE,EACd,IAAI,GAAE,WAAuB,EAC7B,IAAI,CAAC,EAAE,EAAE,EACT,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,cAAc,CAAC,CAmDzB;YAQa,qBAAqB;IAepB,UAAU,CACvB,gBAAgB,EAAE,gBAAgB,EAClC,IAAI,EAAE,eAAe,GACpB,OAAO,CAAC,+BAA+B,CAAC,CAa1C;IAED;;;OAGG;IACH,UAAyB,qBAAqB,CAC5C,gBAAgB,EAAE,gBAAgB,EAClC,IAAI,EAAE,4BAA4B,GACjC,OAAO,CAAC,+BAA+B,CAAC,CA0C1C;IAID,YAAY,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC,CAEtC;IAID,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAEhD;IAID,mBAAmB,CAAC,EAAE,EAAE,EAAE,qEAEzB;CACF"}
@@ -1,10 +1,12 @@
1
1
  import { EcdsaRAccountContract, EcdsaRSSHAccountContract } from '@aztec/accounts/ecdsa';
2
2
  import { SchnorrAccountContract } from '@aztec/accounts/schnorr';
3
- import { StubAccountContractArtifact, createStubAccount } from '@aztec/accounts/stub';
3
+ import { StubEcdsaAccountContractArtifact, createStubEcdsaAccount } from '@aztec/accounts/stub/ecdsa';
4
+ import { StubSchnorrAccountContractArtifact, createStubSchnorrAccount } from '@aztec/accounts/stub/schnorr';
4
5
  import { getIdentities } from '@aztec/accounts/utils';
5
6
  import { NO_FROM } from '@aztec/aztec.js/account';
6
7
  import { getContractInstanceFromInstantiationParams, getGasLimits } from '@aztec/aztec.js/contracts';
7
8
  import { AccountManager } from '@aztec/aztec.js/wallet';
9
+ import { TxSimulationResultWithAppOffset } from '@aztec/aztec.js/wallet';
8
10
  import { DefaultEntrypoint } from '@aztec/entrypoints/default';
9
11
  import { Fr } from '@aztec/foundation/curves/bn254';
10
12
  import { createPXE, getPXEConfig } from '@aztec/pxe/server';
@@ -29,14 +31,21 @@ export class CLIWallet extends BaseWallet {
29
31
  }
30
32
  async getAccounts() {
31
33
  const accounts = await this.db?.listAliases('accounts') ?? [];
32
- return Promise.resolve(accounts.map(({ key, value })=>({
33
- alias: value,
34
- item: AztecAddress.fromString(key)
35
- })));
34
+ return Promise.resolve(accounts.map(({ key, value })=>{
35
+ const alias = key.includes(':') ? key.slice(key.indexOf(':') + 1) : key;
36
+ return {
37
+ alias,
38
+ item: AztecAddress.fromString(value)
39
+ };
40
+ }));
36
41
  }
37
42
  async createCancellationTxExecutionRequest(from, txNonce, increasedFee) {
38
43
  const executionPayload = ExecutionPayload.empty();
39
- const feeOptions = await this.completeFeeOptions(from, executionPayload.feePayer, increasedFee.gasSettings);
44
+ const feeOptions = await this.completeFeeOptions({
45
+ from,
46
+ feePayer: executionPayload.feePayer,
47
+ gasSettings: increasedFee.gasSettings
48
+ });
40
49
  const feeExecutionPayload = await feeOptions.walletFeePaymentMethod?.getExecutionPayload();
41
50
  const fromAccount = await this.getAccountFromAddress(from);
42
51
  const chainInfo = await this.getChainInfo();
@@ -130,20 +139,27 @@ export class CLIWallet extends BaseWallet {
130
139
  if (!contractInstance) {
131
140
  throw new Error(`No contract instance found for address: ${originalAddress.address}`);
132
141
  }
133
- const stubAccount = createStubAccount(originalAddress);
134
- const instance = await getContractInstanceFromInstantiationParams(StubAccountContractArtifact, {
142
+ const { type } = await this.db.retrieveAccount(address);
143
+ const isSchnorr = type === 'schnorr';
144
+ const artifact = isSchnorr ? StubSchnorrAccountContractArtifact : StubEcdsaAccountContractArtifact;
145
+ const stubAccount = isSchnorr ? createStubSchnorrAccount(originalAddress) : createStubEcdsaAccount(originalAddress);
146
+ const instance = await getContractInstanceFromInstantiationParams(artifact, {
135
147
  salt: Fr.random()
136
148
  });
137
149
  return {
138
150
  account: stubAccount,
139
151
  instance,
140
- artifact: StubAccountContractArtifact
152
+ artifact
141
153
  };
142
154
  }
143
155
  async simulateTx(executionPayload, opts) {
144
156
  const simulationResults = await super.simulateTx(executionPayload, opts);
145
157
  if (opts.fee?.estimateGas) {
146
- const feeOptions = await this.completeFeeOptions(opts.from, executionPayload.feePayer, opts.fee?.gasSettings);
158
+ const feeOptions = await this.completeFeeOptions({
159
+ from: opts.from,
160
+ feePayer: executionPayload.feePayer,
161
+ gasSettings: opts.fee?.gasSettings
162
+ });
147
163
  const limits = getGasLimits(simulationResults, opts.fee?.estimatedGasPadding);
148
164
  printGasEstimates(feeOptions, limits, this.userLog);
149
165
  }
@@ -153,7 +169,8 @@ export class CLIWallet extends BaseWallet {
153
169
  * Uses a stub account for kernelless simulation, bypassing real account authorization.
154
170
  * Uses DefaultEntrypoint directly for NO_FROM transactions.
155
171
  */ async simulateViaEntrypoint(executionPayload, opts) {
156
- const { from, feeOptions, scopes } = opts;
172
+ const { from, feeOptions, additionalScopes } = opts;
173
+ const scopes = this.scopesFrom(from, additionalScopes);
157
174
  const feeExecutionPayload = await feeOptions.walletFeePaymentMethod?.getExecutionPayload();
158
175
  const finalExecutionPayload = feeExecutionPayload ? mergeExecutionPayloads([
159
176
  feeExecutionPayload,
@@ -183,13 +200,15 @@ export class CLIWallet extends BaseWallet {
183
200
  };
184
201
  txRequest = await account.createTxExecutionRequest(finalExecutionPayload, feeOptions.gasSettings, chainInfo, executionOptions);
185
202
  }
186
- return this.pxe.simulateTx(txRequest, {
203
+ const result = await this.pxe.simulateTx(txRequest, {
187
204
  simulatePublic: true,
188
205
  skipFeeEnforcement: true,
189
206
  skipTxValidation: true,
190
207
  overrides,
191
208
  scopes
192
209
  });
210
+ const appCallOffset = await this.computeAppCallOffset(from, feeOptions);
211
+ return TxSimulationResultWithAppOffset.fromResultAndOffset(result, appCallOffset);
193
212
  }
194
213
  // Exposed because of the `aztec-wallet get-tx` command. It has been decided that it's fine to keep around because
195
214
  // this is just a CLI wallet.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aztec/cli-wallet",
3
- "version": "0.0.1-commit.35158ae7e",
3
+ "version": "0.0.1-commit.3750d92a7",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": "./dest/cmds/index.js",
@@ -67,19 +67,19 @@
67
67
  ]
68
68
  },
69
69
  "dependencies": {
70
- "@aztec/accounts": "0.0.1-commit.35158ae7e",
71
- "@aztec/aztec.js": "0.0.1-commit.35158ae7e",
72
- "@aztec/bb.js": "0.0.1-commit.35158ae7e",
73
- "@aztec/cli": "0.0.1-commit.35158ae7e",
74
- "@aztec/entrypoints": "0.0.1-commit.35158ae7e",
75
- "@aztec/ethereum": "0.0.1-commit.35158ae7e",
76
- "@aztec/foundation": "0.0.1-commit.35158ae7e",
77
- "@aztec/kv-store": "0.0.1-commit.35158ae7e",
78
- "@aztec/noir-contracts.js": "0.0.1-commit.35158ae7e",
79
- "@aztec/noir-noirc_abi": "0.0.1-commit.35158ae7e",
80
- "@aztec/pxe": "0.0.1-commit.35158ae7e",
81
- "@aztec/stdlib": "0.0.1-commit.35158ae7e",
82
- "@aztec/wallet-sdk": "0.0.1-commit.35158ae7e",
70
+ "@aztec/accounts": "0.0.1-commit.3750d92a7",
71
+ "@aztec/aztec.js": "0.0.1-commit.3750d92a7",
72
+ "@aztec/bb.js": "0.0.1-commit.3750d92a7",
73
+ "@aztec/cli": "0.0.1-commit.3750d92a7",
74
+ "@aztec/entrypoints": "0.0.1-commit.3750d92a7",
75
+ "@aztec/ethereum": "0.0.1-commit.3750d92a7",
76
+ "@aztec/foundation": "0.0.1-commit.3750d92a7",
77
+ "@aztec/kv-store": "0.0.1-commit.3750d92a7",
78
+ "@aztec/noir-contracts.js": "0.0.1-commit.3750d92a7",
79
+ "@aztec/noir-noirc_abi": "0.0.1-commit.3750d92a7",
80
+ "@aztec/pxe": "0.0.1-commit.3750d92a7",
81
+ "@aztec/stdlib": "0.0.1-commit.3750d92a7",
82
+ "@aztec/wallet-sdk": "0.0.1-commit.3750d92a7",
83
83
  "commander": "^12.1.0",
84
84
  "inquirer": "^10.1.8",
85
85
  "source-map-support": "^0.5.21",
@@ -1,5 +1,5 @@
1
1
  import type { ContractArtifact } from '@aztec/aztec.js/abi';
2
- import type { AztecAddress } from '@aztec/aztec.js/addresses';
2
+ import { AztecAddress } from '@aztec/aztec.js/addresses';
3
3
  import { Fr } from '@aztec/aztec.js/fields';
4
4
  import type { AztecNode } from '@aztec/aztec.js/node';
5
5
  import { ProtocolContractAddress } from '@aztec/aztec.js/protocol';
@@ -87,12 +87,13 @@ async function inspectTx(wallet: CLIWallet, aztecNode: AztecNode, txHash: TxHash
87
87
  // Nullifiers
88
88
  const nullifierCount = effects.nullifiers.length;
89
89
  const { deployNullifiers, initNullifiers, classNullifiers } = await getKnownNullifiers(wallet, artifactMap);
90
+ const accounts = (await wallet.getAccounts()).map(a => a.item);
90
91
  if (nullifierCount > 0) {
91
92
  log(' Nullifiers:');
92
93
  for (const nullifier of effects.nullifiers) {
93
94
  const deployed = deployNullifiers[nullifier.toString()];
94
95
  const note = deployed
95
- ? (await wallet.getNotes({ siloedNullifier: nullifier, contractAddress: deployed, scopes: 'ALL_SCOPES' }))[0]
96
+ ? (await wallet.getNotes({ siloedNullifier: nullifier, contractAddress: deployed, scopes: accounts }))[0]
96
97
  : undefined;
97
98
  const initialized = initNullifiers[nullifier.toString()];
98
99
  const registered = classNullifiers[nullifier.toString()];
@@ -70,6 +70,20 @@ export class WalletDB {
70
70
  return { amount: BigInt(amountStr), secret: secretStr, leafIndex: BigInt(leafIndexStr) };
71
71
  }
72
72
 
73
+ async peekBridgedFeeJuice(recipient: AztecAddress, log: LogFn) {
74
+ const stackPointer =
75
+ (await this.#bridgedFeeJuice.getAsync(`${recipient.toString()}:stackPointer`))?.readInt8() || 0;
76
+ const result = await this.#bridgedFeeJuice.getAsync(`${recipient.toString()}:${stackPointer}`);
77
+ if (!result) {
78
+ throw new Error(
79
+ `No stored fee juice available for recipient ${recipient.toString()}. Please provide claim amount and secret. Stack pointer ${stackPointer}`,
80
+ );
81
+ }
82
+ const [amountStr, secretStr, leafIndexStr] = result.toString().split(':');
83
+ log(`Peeked ${amountStr} fee juice for recipient ${recipient.toString()}. Stack pointer ${stackPointer}`);
84
+ return { amount: BigInt(amountStr), secret: secretStr, leafIndex: BigInt(leafIndexStr) };
85
+ }
86
+
73
87
  async storeAccount(
74
88
  address: AztecAddress,
75
89
  {
@@ -5,7 +5,7 @@ import { Fr } from '@aztec/foundation/curves/bn254';
5
5
  import type { LogFn } from '@aztec/foundation/log';
6
6
  import type { FieldsOf } from '@aztec/foundation/types';
7
7
  import { AztecAddress } from '@aztec/stdlib/aztec-address';
8
- import { Gas, GasFees, GasSettings } from '@aztec/stdlib/gas';
8
+ import { Gas, GasFees, GasSettings, ManaUsageEstimate } from '@aztec/stdlib/gas';
9
9
  import type { FeeOptions } from '@aztec/wallet-sdk/base-wallet';
10
10
 
11
11
  import { Option } from 'commander';
@@ -115,6 +115,7 @@ export function parsePaymentMethod(
115
115
  payment: string,
116
116
  log: LogFn,
117
117
  db?: WalletDB,
118
+ estimateOnly?: boolean,
118
119
  ): (wallet: Wallet, from: AztecAddress, gasSettings: GasSettings) => Promise<FeePaymentMethod | undefined> {
119
120
  const parsed = payment.split(',').reduce(
120
121
  (acc, item) => {
@@ -149,7 +150,7 @@ export function parsePaymentMethod(
149
150
  amount: claimAmount,
150
151
  secret: claimSecret,
151
152
  leafIndex: messageLeafIndex,
152
- } = await db.popBridgedFeeJuice(from, log));
153
+ } = estimateOnly ? await db.peekBridgedFeeJuice(from, log) : await db.popBridgedFeeJuice(from, log));
153
154
  } else {
154
155
  ({ claimAmount, claimSecret, messageLeafIndex } = parsed);
155
156
  }
@@ -157,10 +158,10 @@ export function parsePaymentMethod(
157
158
  const { FeeJuicePaymentMethodWithClaim } = await import('@aztec/aztec.js/fee');
158
159
  return new FeeJuicePaymentMethodWithClaim(from, {
159
160
  claimAmount: (typeof claimAmount === 'string'
160
- ? Fr.fromHexString(claimAmount)
161
+ ? Fr.fromString(claimAmount)
161
162
  : new Fr(claimAmount)
162
163
  ).toBigInt(),
163
- claimSecret: Fr.fromHexString(claimSecret),
164
+ claimSecret: typeof claimSecret === 'string' ? Fr.fromString(claimSecret) : claimSecret,
164
165
  messageLeafIndex: BigInt(messageLeafIndex),
165
166
  });
166
167
  } else {
@@ -256,8 +257,9 @@ export class CLIFeeArgs {
256
257
  ) {}
257
258
 
258
259
  async toUserFeeOptions(node: AztecNode, wallet: Wallet, from: AztecAddress): Promise<ParsedFeeOptions> {
259
- const maxFeesPerGas = (await node.getCurrentMinFees()).mul(1 + MIN_FEE_PADDING);
260
- const gasSettings = GasSettings.default({ ...this.gasSettings, maxFeesPerGas });
260
+ const minFees = await this.getMinFees(node);
261
+ const maxFeesPerGas = minFees.mul(1 + MIN_FEE_PADDING);
262
+ const gasSettings = GasSettings.fallback({ ...this.gasSettings, maxFeesPerGas });
261
263
  const paymentMethod = await this.paymentMethod(wallet, from, gasSettings);
262
264
  return {
263
265
  paymentMethod,
@@ -265,10 +267,32 @@ export class CLIFeeArgs {
265
267
  };
266
268
  }
267
269
 
270
+ /**
271
+ * Returns the worst-case min fee across predicted future slots.
272
+ * Falls back to getCurrentMinFees if the node doesn't support getPredictedMinFees.
273
+ */
274
+ private async getMinFees(node: AztecNode): Promise<GasFees> {
275
+ try {
276
+ const predicted = await node.getPredictedMinFees(ManaUsageEstimate.Limit);
277
+ if (predicted.length === 0) {
278
+ return node.getCurrentMinFees();
279
+ }
280
+ return predicted.reduce((worst, fees) => (fees.feePerL2Gas > worst.feePerL2Gas ? fees : worst));
281
+ } catch (err: any) {
282
+ // Fallback for old nodes that don't support getPredictedMinFees.
283
+ // Only fall back on method-not-found errors (JSON-RPC code -32601); rethrow others.
284
+ if (err?.cause?.code === -32601 || err?.message?.includes('Method not found')) {
285
+ return node.getCurrentMinFees();
286
+ }
287
+ throw err;
288
+ }
289
+ }
290
+
268
291
  static parse(args: RawCliFeeArgs, log: LogFn, db?: WalletDB): CLIFeeArgs {
292
+ const estimateOnly = !!args.estimateGasOnly;
269
293
  return new CLIFeeArgs(
270
- !!args.estimateGasOnly,
271
- parsePaymentMethod(args.payment ?? 'method=fee_juice', log, db),
294
+ estimateOnly,
295
+ parsePaymentMethod(args.payment ?? 'method=fee_juice', log, db, estimateOnly),
272
296
  parseGasSettings(args),
273
297
  );
274
298
  }
@@ -294,7 +318,7 @@ function formatGasEstimate(estimate: Pick<GasSettings, 'gasLimits' | 'teardownGa
294
318
  }
295
319
 
296
320
  function getEstimatedCost(estimate: Pick<GasSettings, 'gasLimits' | 'teardownGasLimits'>, maxFeesPerGas: GasFees) {
297
- return GasSettings.default({ ...estimate, maxFeesPerGas })
321
+ return GasSettings.fallback({ ...estimate, maxFeesPerGas })
298
322
  .getFeeLimit()
299
323
  .toBigInt();
300
324
  }
@@ -1,6 +1,7 @@
1
1
  import { EcdsaRAccountContract, EcdsaRSSHAccountContract } from '@aztec/accounts/ecdsa';
2
2
  import { SchnorrAccountContract } from '@aztec/accounts/schnorr';
3
- import { StubAccountContractArtifact, createStubAccount } from '@aztec/accounts/stub';
3
+ import { StubEcdsaAccountContractArtifact, createStubEcdsaAccount } from '@aztec/accounts/stub/ecdsa';
4
+ import { StubSchnorrAccountContractArtifact, createStubSchnorrAccount } from '@aztec/accounts/stub/schnorr';
4
5
  import { getIdentities } from '@aztec/accounts/utils';
5
6
  import { type Account, type AccountContract, NO_FROM } from '@aztec/aztec.js/account';
6
7
  import {
@@ -10,6 +11,7 @@ import {
10
11
  } from '@aztec/aztec.js/contracts';
11
12
  import type { AztecNode } from '@aztec/aztec.js/node';
12
13
  import { AccountManager, type Aliased, type SimulateOptions } from '@aztec/aztec.js/wallet';
14
+ import { TxSimulationResultWithAppOffset } from '@aztec/aztec.js/wallet';
13
15
  import type { DefaultAccountEntrypointOptions } from '@aztec/entrypoints/account';
14
16
  import { DefaultEntrypoint } from '@aztec/entrypoints/default';
15
17
  import { Fr } from '@aztec/foundation/curves/bn254';
@@ -21,7 +23,7 @@ import { createPXE, getPXEConfig } from '@aztec/pxe/server';
21
23
  import { AztecAddress } from '@aztec/stdlib/aztec-address';
22
24
  import { deriveSigningKey } from '@aztec/stdlib/keys';
23
25
  import { NoteDao } from '@aztec/stdlib/note';
24
- import type { SimulationOverrides, TxExecutionRequest, TxProvingResult, TxSimulationResult } from '@aztec/stdlib/tx';
26
+ import type { SimulationOverrides, TxExecutionRequest, TxProvingResult } from '@aztec/stdlib/tx';
25
27
  import { ExecutionPayload, mergeExecutionPayloads } from '@aztec/stdlib/tx';
26
28
  import { BaseWallet, type SimulateViaEntrypointOptions } from '@aztec/wallet-sdk/base-wallet';
27
29
 
@@ -56,7 +58,12 @@ export class CLIWallet extends BaseWallet {
56
58
 
57
59
  override async getAccounts(): Promise<Aliased<AztecAddress>[]> {
58
60
  const accounts = (await this.db?.listAliases('accounts')) ?? [];
59
- return Promise.resolve(accounts.map(({ key, value }) => ({ alias: value, item: AztecAddress.fromString(key) })));
61
+ return Promise.resolve(
62
+ accounts.map(({ key, value }) => {
63
+ const alias = key.includes(':') ? key.slice(key.indexOf(':') + 1) : key;
64
+ return { alias, item: AztecAddress.fromString(value) };
65
+ }),
66
+ );
60
67
  }
61
68
 
62
69
  private async createCancellationTxExecutionRequest(
@@ -65,7 +72,11 @@ export class CLIWallet extends BaseWallet {
65
72
  increasedFee: InteractionFeeOptions,
66
73
  ) {
67
74
  const executionPayload = ExecutionPayload.empty();
68
- const feeOptions = await this.completeFeeOptions(from, executionPayload.feePayer, increasedFee.gasSettings);
75
+ const feeOptions = await this.completeFeeOptions({
76
+ from,
77
+ feePayer: executionPayload.feePayer,
78
+ gasSettings: increasedFee.gasSettings,
79
+ });
69
80
  const feeExecutionPayload = await feeOptions.walletFeePaymentMethod?.getExecutionPayload();
70
81
  const fromAccount = await this.getAccountFromAddress(from);
71
82
  const chainInfo = await this.getChainInfo();
@@ -190,22 +201,26 @@ export class CLIWallet extends BaseWallet {
190
201
  if (!contractInstance) {
191
202
  throw new Error(`No contract instance found for address: ${originalAddress.address}`);
192
203
  }
193
- const stubAccount = createStubAccount(originalAddress);
194
- const instance = await getContractInstanceFromInstantiationParams(StubAccountContractArtifact, {
195
- salt: Fr.random(),
196
- });
197
- return {
198
- account: stubAccount,
199
- instance,
200
- artifact: StubAccountContractArtifact,
201
- };
204
+ const { type } = await this.db!.retrieveAccount(address);
205
+ const isSchnorr = type === 'schnorr';
206
+ const artifact = isSchnorr ? StubSchnorrAccountContractArtifact : StubEcdsaAccountContractArtifact;
207
+ const stubAccount = isSchnorr ? createStubSchnorrAccount(originalAddress) : createStubEcdsaAccount(originalAddress);
208
+ const instance = await getContractInstanceFromInstantiationParams(artifact, { salt: Fr.random() });
209
+ return { account: stubAccount, instance, artifact };
202
210
  }
203
211
 
204
- override async simulateTx(executionPayload: ExecutionPayload, opts: SimulateOptions): Promise<TxSimulationResult> {
212
+ override async simulateTx(
213
+ executionPayload: ExecutionPayload,
214
+ opts: SimulateOptions,
215
+ ): Promise<TxSimulationResultWithAppOffset> {
205
216
  const simulationResults = await super.simulateTx(executionPayload, opts);
206
217
 
207
218
  if (opts.fee?.estimateGas) {
208
- const feeOptions = await this.completeFeeOptions(opts.from, executionPayload.feePayer, opts.fee?.gasSettings);
219
+ const feeOptions = await this.completeFeeOptions({
220
+ from: opts.from,
221
+ feePayer: executionPayload.feePayer,
222
+ gasSettings: opts.fee?.gasSettings,
223
+ });
209
224
  const limits = getGasLimits(simulationResults, opts.fee?.estimatedGasPadding);
210
225
  printGasEstimates(feeOptions, limits, this.userLog);
211
226
  }
@@ -219,8 +234,9 @@ export class CLIWallet extends BaseWallet {
219
234
  protected override async simulateViaEntrypoint(
220
235
  executionPayload: ExecutionPayload,
221
236
  opts: SimulateViaEntrypointOptions,
222
- ): Promise<TxSimulationResult> {
223
- const { from, feeOptions, scopes } = opts;
237
+ ): Promise<TxSimulationResultWithAppOffset> {
238
+ const { from, feeOptions, additionalScopes } = opts;
239
+ const scopes = this.scopesFrom(from, additionalScopes);
224
240
  const feeExecutionPayload = await feeOptions.walletFeePaymentMethod?.getExecutionPayload();
225
241
  const finalExecutionPayload = feeExecutionPayload
226
242
  ? mergeExecutionPayloads([feeExecutionPayload, executionPayload])
@@ -251,13 +267,15 @@ export class CLIWallet extends BaseWallet {
251
267
  );
252
268
  }
253
269
 
254
- return this.pxe.simulateTx(txRequest, {
270
+ const result = await this.pxe.simulateTx(txRequest, {
255
271
  simulatePublic: true,
256
272
  skipFeeEnforcement: true,
257
273
  skipTxValidation: true,
258
274
  overrides,
259
275
  scopes,
260
276
  });
277
+ const appCallOffset = await this.computeAppCallOffset(from, feeOptions);
278
+ return TxSimulationResultWithAppOffset.fromResultAndOffset(result, appCallOffset);
261
279
  }
262
280
 
263
281
  // Exposed because of the `aztec-wallet get-tx` command. It has been decided that it's fine to keep around because