@wonderland/aztec-fee-payment 4.2.0 → 5.0.0-rc.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -29,7 +29,7 @@ A Fee Payment Contract (FPC) for Aztec that enables private transaction fee spon
29
29
 
30
30
  ### Prerequisites
31
31
 
32
- - [Aztec CLI](https://docs.aztec.network/getting_started) v4.2.0
32
+ - [Aztec CLI](https://docs.aztec.network/getting_started) v5.0.0-rc.2
33
33
  - Node.js 22+
34
34
  - Yarn 1.22+
35
35
 
@@ -1,7 +1,6 @@
1
1
  import { AztecAddress } from '@aztec/aztec.js/addresses';
2
2
  import { type AztecAddressLike, type ContractArtifact, type FieldLike, type OptionLike } from '@aztec/aztec.js/abi';
3
- import { ContractBase, ContractFunctionInteraction, type ContractMethod, type ContractStorageLayout, DeployMethod } from '@aztec/aztec.js/contracts';
4
- import { PublicKeys } from '@aztec/aztec.js/keys';
3
+ import { ContractBase, ContractFunctionInteraction, type ContractMethod, type ContractStorageLayout, type DeployInstantiationOptions, DeployMethod } from '@aztec/aztec.js/contracts';
5
4
  import type { Wallet } from '@aztec/aztec.js/wallet';
6
5
  export declare const CounterContractArtifact: ContractArtifact;
7
6
  /**
@@ -18,19 +17,17 @@ export declare class CounterContract extends ContractBase {
18
17
  static at(address: AztecAddress, wallet: Wallet): CounterContract;
19
18
  /**
20
19
  * Creates a tx to deploy a new instance of this contract.
20
+ * @param instantiation - Optional address-affecting parameters (salt, deployer / universalDeploy, publicKeys).
21
+ * Salt defaults to a random value; the deployer is locked lazily from the first send-time `from`.
21
22
  */
22
- static deploy(wallet: Wallet): DeployMethod<CounterContract>;
23
- /**
24
- * Creates a tx to deploy a new instance of this contract using the specified public keys hash to derive the address.
25
- */
26
- static deployWithPublicKeys(publicKeys: PublicKeys, wallet: Wallet): DeployMethod<CounterContract>;
23
+ static deploy(wallet: Wallet, instantiation?: DeployInstantiationOptions): DeployMethod<CounterContract>;
27
24
  /**
28
25
  * Creates a tx to deploy a new instance of this contract using the specified constructor method.
29
26
  */
30
27
  static deployWithOpts<M extends keyof CounterContract['methods']>(opts: {
31
- publicKeys?: PublicKeys;
32
28
  method?: M;
33
29
  wallet: Wallet;
30
+ instantiation?: DeployInstantiationOptions;
34
31
  }, ...args: Parameters<CounterContract['methods'][M]>): DeployMethod<CounterContract>;
35
32
  /**
36
33
  * Returns this contract's artifact.
@@ -1 +1 @@
1
- {"version":3,"file":"Counter.d.ts","sourceRoot":"","sources":["../../../src/artifacts/Counter.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAmB,MAAM,2BAA2B,CAAC;AAC1E,OAAO,EAAgB,KAAK,gBAAgB,EAAE,KAAK,gBAAgB,EAAqD,KAAK,SAAS,EAA6G,KAAK,UAAU,EAAwC,MAAM,qBAAqB,CAAC;AACtU,OAAO,EAAY,YAAY,EAAE,2BAA2B,EAAE,KAAK,cAAc,EAAE,KAAK,qBAAqB,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAG/J,OAAO,EAAkB,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAErD,eAAO,MAAM,uBAAuB,kBAA4E,CAAC;AAIjH;;GAEG;AACH,qBAAa,eAAgB,SAAQ,YAAY;IAE/C,OAAO;IASP;;;;;OAKG;WACW,EAAE,CACd,OAAO,EAAE,YAAY,EACrB,MAAM,EAAE,MAAM,GACb,eAAe;IAKlB;;OAEG;WACW,MAAM,CAAC,MAAM,EAAE,MAAM;IAInC;;OAEG;WACW,oBAAoB,CAAC,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM;IAIzE;;OAEG;WACW,cAAc,CAAC,CAAC,SAAS,MAAM,eAAe,CAAC,SAAS,CAAC,EACrE,IAAI,EAAE;QAAE,UAAU,CAAC,EAAE,UAAU,CAAC;QAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAC7D,GAAG,IAAI,EAAE,UAAU,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IAcpD;;OAEG;IACH,WAAkB,QAAQ,IAAI,gBAAgB,CAE7C;IAED;;OAEG;IACH,WAAkB,iBAAiB,IAAI,gBAAgB,CAEtD;IAGD,WAAkB,OAAO,IAAI,qBAAqB,CAAC,SAAS,CAAC,CAM1D;IAGH,yEAAyE;IAC1D,OAAO,EAAE;QAEtB,oBAAoB;QACpB,WAAW,EAAE,CAAC,MAAM,2BAA2B,CAAC,GAAG,IAAI,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;QAEpF,kBAAkB;QAClB,SAAS,EAAE,CAAC,MAAM,2BAA2B,CAAC,GAAG,IAAI,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;QAElF,yCAAyC;QACzC,gBAAgB,EAAE,CAAC,CAAC,QAAQ,EAAE;YAAE,UAAU,EAAE,SAAS,EAAE,CAAC;YAAC,SAAS,EAAE,gBAAgB,CAAC;YAAC,OAAO,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;YAAC,sBAAsB,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,CAAA;SAAE,EAAE,KAAK,2BAA2B,CAAC,GAAG,IAAI,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;QAExO,uCAAuC;QACvC,eAAe,EAAE,CAAC,CAAC,QAAQ,EAAE,SAAS,KAAK,2BAA2B,CAAC,GAAG,IAAI,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;QAE3G,gCAAgC;QAChC,UAAU,EAAE,CAAC,CAAC,KAAK,EAAE,gBAAgB,KAAK,2BAA2B,CAAC,GAAG,IAAI,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;KAC3G,CAAC;CAGH"}
1
+ {"version":3,"file":"Counter.d.ts","sourceRoot":"","sources":["../../../src/artifacts/Counter.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAmB,MAAM,2BAA2B,CAAC;AAC1E,OAAO,EAAgB,KAAK,gBAAgB,EAAE,KAAK,gBAAgB,EAAqD,KAAK,SAAS,EAA6G,KAAK,UAAU,EAAwC,MAAM,qBAAqB,CAAC;AACtU,OAAO,EAAY,YAAY,EAAE,2BAA2B,EAAE,KAAK,cAAc,EAAE,KAAK,qBAAqB,EAAE,KAAK,0BAA0B,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAIhM,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAErD,eAAO,MAAM,uBAAuB,kBAA4E,CAAC;AAIjH;;GAEG;AACH,qBAAa,eAAgB,SAAQ,YAAY;IAE/C,OAAO;IASP;;;;;OAKG;WACW,EAAE,CACd,OAAO,EAAE,YAAY,EACrB,MAAM,EAAE,MAAM,GACb,eAAe;IAKlB;;;;OAIG;WACW,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,0BAA0B;IAY/E;;OAEG;WACW,cAAc,CAAC,CAAC,SAAS,MAAM,eAAe,CAAC,SAAS,CAAC,EACrE,IAAI,EAAE;QAAE,MAAM,CAAC,EAAE,CAAC,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,0BAA0B,CAAA;KAAE,EAChF,GAAG,IAAI,EAAE,UAAU,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IAgBpD;;OAEG;IACH,WAAkB,QAAQ,IAAI,gBAAgB,CAE7C;IAED;;OAEG;IACH,WAAkB,iBAAiB,IAAI,gBAAgB,CAEtD;IAGD,WAAkB,OAAO,IAAI,qBAAqB,CAAC,SAAS,CAAC,CAM1D;IAGH,yEAAyE;IAC1D,OAAO,EAAE;QAEtB,oBAAoB;QACpB,WAAW,EAAE,CAAC,MAAM,2BAA2B,CAAC,GAAG,IAAI,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;QAEpF,kBAAkB;QAClB,SAAS,EAAE,CAAC,MAAM,2BAA2B,CAAC,GAAG,IAAI,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;QAElF,yCAAyC;QACzC,gBAAgB,EAAE,CAAC,CAAC,QAAQ,EAAE;YAAE,UAAU,EAAE,SAAS,EAAE,CAAC;YAAC,SAAS,EAAE,gBAAgB,CAAC;YAAC,OAAO,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;YAAC,sBAAsB,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,CAAA;SAAE,EAAE,KAAK,2BAA2B,CAAC,GAAG,IAAI,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;QAExO,uCAAuC;QACvC,eAAe,EAAE,CAAC,CAAC,QAAQ,EAAE,SAAS,KAAK,2BAA2B,CAAC,GAAG,IAAI,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;QAE3G,gCAAgC;QAChC,UAAU,EAAE,CAAC,CAAC,KAAK,EAAE,gBAAgB,KAAK,2BAA2B,CAAC,GAAG,IAAI,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;KAC3G,CAAC;CAGH"}
@@ -2,7 +2,6 @@
2
2
  import { loadContractArtifact, loadContractArtifactForPublic } from '@aztec/aztec.js/abi';
3
3
  import { Contract, ContractBase, DeployMethod } from '@aztec/aztec.js/contracts';
4
4
  import { Fr } from '@aztec/aztec.js/fields';
5
- import { PublicKeys } from '@aztec/aztec.js/keys';
6
5
  import CounterContractArtifactJson from '../../target/counter_contract-Counter.json' with { type: 'json' };
7
6
  export const CounterContractArtifact = loadContractArtifact(CounterContractArtifactJson);
8
7
  /**
@@ -23,21 +22,26 @@ export class CounterContract extends ContractBase {
23
22
  }
24
23
  /**
25
24
  * Creates a tx to deploy a new instance of this contract.
25
+ * @param instantiation - Optional address-affecting parameters (salt, deployer / universalDeploy, publicKeys).
26
+ * Salt defaults to a random value; the deployer is locked lazily from the first send-time `from`.
26
27
  */
27
- static deploy(wallet) {
28
- return new DeployMethod(PublicKeys.default(), wallet, CounterContractArtifact, (instance, wallet) => CounterContract.at(instance.address, wallet), Array.from(arguments).slice(1));
29
- }
30
- /**
31
- * Creates a tx to deploy a new instance of this contract using the specified public keys hash to derive the address.
32
- */
33
- static deployWithPublicKeys(publicKeys, wallet) {
34
- return new DeployMethod(publicKeys, wallet, CounterContractArtifact, (instance, wallet) => CounterContract.at(instance.address, wallet), Array.from(arguments).slice(2));
28
+ static deploy(wallet, instantiation) {
29
+ return DeployMethod.create(wallet, {
30
+ artifact: CounterContractArtifact,
31
+ postDeployCtor: (instance, wallet) => CounterContract.at(instance.address, wallet),
32
+ args: [],
33
+ }, instantiation);
35
34
  }
36
35
  /**
37
36
  * Creates a tx to deploy a new instance of this contract using the specified constructor method.
38
37
  */
39
38
  static deployWithOpts(opts, ...args) {
40
- return new DeployMethod(opts.publicKeys ?? PublicKeys.default(), opts.wallet, CounterContractArtifact, (instance, wallet) => CounterContract.at(instance.address, wallet), Array.from(arguments).slice(1), opts.method ?? 'constructor');
39
+ return DeployMethod.create(opts.wallet, {
40
+ artifact: CounterContractArtifact,
41
+ postDeployCtor: (instance, wallet) => CounterContract.at(instance.address, wallet),
42
+ args,
43
+ constructorNameOrArtifact: opts.method ?? 'constructor',
44
+ }, opts.instantiation);
41
45
  }
42
46
  /**
43
47
  * Returns this contract's artifact.
@@ -59,4 +63,4 @@ export class CounterContract extends ContractBase {
59
63
  };
60
64
  }
61
65
  }
62
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ291bnRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcnRpZmFjdHMvQ291bnRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxzQ0FBc0M7QUFJdEMsT0FBTyxFQUE0SixvQkFBb0IsRUFBRSw2QkFBNkIsRUFBb0YsTUFBTSxxQkFBcUIsQ0FBQztBQUN0VSxPQUFPLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBZ0YsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFL0osT0FBTyxFQUFFLEVBQUUsRUFBUyxNQUFNLHdCQUF3QixDQUFDO0FBQ25ELE9BQU8sRUFBa0IsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFbEUsT0FBTywyQkFBMkIsTUFBTSw0Q0FBNEMsQ0FBQyxPQUFPLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQztBQUMzRyxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxvQkFBb0IsQ0FBQywyQkFBbUQsQ0FBQyxDQUFDO0FBSWpIOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGVBQWdCLFNBQVEsWUFBWTtJQUUvQyxZQUNFLE9BQXFCLEVBQ3JCLE1BQWM7UUFFZCxLQUFLLENBQUMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFJRDs7Ozs7T0FLRztJQUNJLE1BQU0sQ0FBQyxFQUFFLENBQ2QsT0FBcUIsRUFDckIsTUFBYztRQUVkLE9BQU8sUUFBUSxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsZUFBZSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQW9CLENBQUM7SUFDbkYsQ0FBQztJQUdEOztPQUVHO0lBQ0ksTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFjO1FBQ2pDLE9BQU8sSUFBSSxZQUFZLENBQWtCLFVBQVUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxNQUFNLEVBQUUsdUJBQXVCLEVBQUUsQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLEVBQUUsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0TSxDQUFDO0lBRUQ7O09BRUc7SUFDSSxNQUFNLENBQUMsb0JBQW9CLENBQUMsVUFBc0IsRUFBRSxNQUFjO1FBQ3ZFLE9BQU8sSUFBSSxZQUFZLENBQWtCLFVBQVUsRUFBRSxNQUFNLEVBQUUsdUJBQXVCLEVBQUUsQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLEVBQUUsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1TCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxNQUFNLENBQUMsY0FBYyxDQUMxQixJQUE2RCxFQUM3RCxHQUFHLElBQStDO1FBRWxELE9BQU8sSUFBSSxZQUFZLENBQ3JCLElBQUksQ0FBQyxVQUFVLElBQUksVUFBVSxDQUFDLE9BQU8sRUFBRSxFQUN2QyxJQUFJLENBQUMsTUFBTSxFQUNYLHVCQUF1QixFQUN2QixDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsRUFDbEUsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQzlCLElBQUksQ0FBQyxNQUFNLElBQUksYUFBYSxDQUM3QixDQUFDO0lBQ0osQ0FBQztJQUlEOztPQUVHO0lBQ0ksTUFBTSxLQUFLLFFBQVE7UUFDeEIsT0FBTyx1QkFBdUIsQ0FBQztJQUNqQyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxNQUFNLEtBQUssaUJBQWlCO1FBQ2pDLE9BQU8sNkJBQTZCLENBQUMsMkJBQW1ELENBQUMsQ0FBQztJQUM1RixDQUFDO0lBR00sTUFBTSxLQUFLLE9BQU87UUFDckIsT0FBTztZQUNMLE9BQU8sRUFBRTtnQkFDWCxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDO2FBQ2pCO1NBQ3NDLENBQUM7SUFDeEMsQ0FBQztDQXVCSiJ9
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ291bnRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcnRpZmFjdHMvQ291bnRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxzQ0FBc0M7QUFJdEMsT0FBTyxFQUE0SixvQkFBb0IsRUFBRSw2QkFBNkIsRUFBb0YsTUFBTSxxQkFBcUIsQ0FBQztBQUN0VSxPQUFPLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBaUgsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFaE0sT0FBTyxFQUFFLEVBQUUsRUFBUyxNQUFNLHdCQUF3QixDQUFDO0FBR25ELE9BQU8sMkJBQTJCLE1BQU0sNENBQTRDLENBQUMsT0FBTyxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUM7QUFDM0csTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsb0JBQW9CLENBQUMsMkJBQW1ELENBQUMsQ0FBQztBQUlqSDs7R0FFRztBQUNILE1BQU0sT0FBTyxlQUFnQixTQUFRLFlBQVk7SUFFL0MsWUFDRSxPQUFxQixFQUNyQixNQUFjO1FBRWQsS0FBSyxDQUFDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBSUQ7Ozs7O09BS0c7SUFDSSxNQUFNLENBQUMsRUFBRSxDQUNkLE9BQXFCLEVBQ3JCLE1BQWM7UUFFZCxPQUFPLFFBQVEsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLGVBQWUsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFvQixDQUFDO0lBQ25GLENBQUM7SUFHRDs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFjLEVBQUUsYUFBMEM7UUFDN0UsT0FBTyxZQUFZLENBQUMsTUFBTSxDQUN4QixNQUFNLEVBQ047WUFDRSxRQUFRLEVBQUUsdUJBQXVCO1lBQ2pDLGNBQWMsRUFBRSxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUM7WUFDbEYsSUFBSSxFQUFFLEVBQUU7U0FDVCxFQUNELGFBQWEsQ0FDZCxDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0ksTUFBTSxDQUFDLGNBQWMsQ0FDMUIsSUFBZ0YsRUFDaEYsR0FBRyxJQUErQztRQUVsRCxPQUFPLFlBQVksQ0FBQyxNQUFNLENBQ3hCLElBQUksQ0FBQyxNQUFNLEVBQ1g7WUFDRSxRQUFRLEVBQUUsdUJBQXVCO1lBQ2pDLGNBQWMsRUFBRSxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUM7WUFDbEYsSUFBSTtZQUNKLHlCQUF5QixFQUFFLElBQUksQ0FBQyxNQUFNLElBQUksYUFBYTtTQUN4RCxFQUNELElBQUksQ0FBQyxhQUFhLENBQ25CLENBQUM7SUFDSixDQUFDO0lBSUQ7O09BRUc7SUFDSSxNQUFNLEtBQUssUUFBUTtRQUN4QixPQUFPLHVCQUF1QixDQUFDO0lBQ2pDLENBQUM7SUFFRDs7T0FFRztJQUNJLE1BQU0sS0FBSyxpQkFBaUI7UUFDakMsT0FBTyw2QkFBNkIsQ0FBQywyQkFBbUQsQ0FBQyxDQUFDO0lBQzVGLENBQUM7SUFHTSxNQUFNLEtBQUssT0FBTztRQUNyQixPQUFPO1lBQ0wsT0FBTyxFQUFFO2dCQUNYLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUM7YUFDakI7U0FDc0MsQ0FBQztJQUN4QyxDQUFDO0NBdUJKIn0=
@@ -1,7 +1,6 @@
1
1
  import { AztecAddress } from '@aztec/aztec.js/addresses';
2
2
  import { type AztecAddressLike, type ContractArtifact, type FieldLike, type OptionLike } from '@aztec/aztec.js/abi';
3
- import { ContractBase, ContractFunctionInteraction, type ContractMethod, type ContractStorageLayout, DeployMethod } from '@aztec/aztec.js/contracts';
4
- import { PublicKeys } from '@aztec/aztec.js/keys';
3
+ import { ContractBase, ContractFunctionInteraction, type ContractMethod, type ContractStorageLayout, type DeployInstantiationOptions, DeployMethod } from '@aztec/aztec.js/contracts';
5
4
  import type { Wallet } from '@aztec/aztec.js/wallet';
6
5
  export declare const PrivateFPCContractArtifact: ContractArtifact;
7
6
  /**
@@ -18,19 +17,17 @@ export declare class PrivateFPCContract extends ContractBase {
18
17
  static at(address: AztecAddress, wallet: Wallet): PrivateFPCContract;
19
18
  /**
20
19
  * Creates a tx to deploy a new instance of this contract.
20
+ * @param instantiation - Optional address-affecting parameters (salt, deployer / universalDeploy, publicKeys).
21
+ * Salt defaults to a random value; the deployer is locked lazily from the first send-time `from`.
21
22
  */
22
- static deploy(wallet: Wallet): DeployMethod<PrivateFPCContract>;
23
- /**
24
- * Creates a tx to deploy a new instance of this contract using the specified public keys hash to derive the address.
25
- */
26
- static deployWithPublicKeys(publicKeys: PublicKeys, wallet: Wallet): DeployMethod<PrivateFPCContract>;
23
+ static deploy(wallet: Wallet, instantiation?: DeployInstantiationOptions): DeployMethod<PrivateFPCContract>;
27
24
  /**
28
25
  * Creates a tx to deploy a new instance of this contract using the specified constructor method.
29
26
  */
30
27
  static deployWithOpts<M extends keyof PrivateFPCContract['methods']>(opts: {
31
- publicKeys?: PublicKeys;
32
28
  method?: M;
33
29
  wallet: Wallet;
30
+ instantiation?: DeployInstantiationOptions;
34
31
  }, ...args: Parameters<PrivateFPCContract['methods'][M]>): DeployMethod<PrivateFPCContract>;
35
32
  /**
36
33
  * Returns this contract's artifact.
@@ -1 +1 @@
1
- {"version":3,"file":"PrivateFPC.d.ts","sourceRoot":"","sources":["../../../src/artifacts/PrivateFPC.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PrivateFPC.d.ts","sourceRoot":"","sources":["../../../src/artifacts/PrivateFPC.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,6 @@
2
2
  import { loadContractArtifact, loadContractArtifactForPublic } from '@aztec/aztec.js/abi';
3
3
  import { Contract, ContractBase, DeployMethod } from '@aztec/aztec.js/contracts';
4
4
  import { Fr } from '@aztec/aztec.js/fields';
5
- import { PublicKeys } from '@aztec/aztec.js/keys';
6
5
  import PrivateFPCContractArtifactJson from '../../target/private_contract-PrivateFPC.json' with { type: 'json' };
7
6
  export const PrivateFPCContractArtifact = loadContractArtifact(PrivateFPCContractArtifactJson);
8
7
  /**
@@ -23,21 +22,26 @@ export class PrivateFPCContract extends ContractBase {
23
22
  }
24
23
  /**
25
24
  * Creates a tx to deploy a new instance of this contract.
25
+ * @param instantiation - Optional address-affecting parameters (salt, deployer / universalDeploy, publicKeys).
26
+ * Salt defaults to a random value; the deployer is locked lazily from the first send-time `from`.
26
27
  */
27
- static deploy(wallet) {
28
- return new DeployMethod(PublicKeys.default(), wallet, PrivateFPCContractArtifact, (instance, wallet) => PrivateFPCContract.at(instance.address, wallet), Array.from(arguments).slice(1));
29
- }
30
- /**
31
- * Creates a tx to deploy a new instance of this contract using the specified public keys hash to derive the address.
32
- */
33
- static deployWithPublicKeys(publicKeys, wallet) {
34
- return new DeployMethod(publicKeys, wallet, PrivateFPCContractArtifact, (instance, wallet) => PrivateFPCContract.at(instance.address, wallet), Array.from(arguments).slice(2));
28
+ static deploy(wallet, instantiation) {
29
+ return DeployMethod.create(wallet, {
30
+ artifact: PrivateFPCContractArtifact,
31
+ postDeployCtor: (instance, wallet) => PrivateFPCContract.at(instance.address, wallet),
32
+ args: [],
33
+ }, instantiation);
35
34
  }
36
35
  /**
37
36
  * Creates a tx to deploy a new instance of this contract using the specified constructor method.
38
37
  */
39
38
  static deployWithOpts(opts, ...args) {
40
- return new DeployMethod(opts.publicKeys ?? PublicKeys.default(), opts.wallet, PrivateFPCContractArtifact, (instance, wallet) => PrivateFPCContract.at(instance.address, wallet), Array.from(arguments).slice(1), opts.method ?? 'constructor');
39
+ return DeployMethod.create(opts.wallet, {
40
+ artifact: PrivateFPCContractArtifact,
41
+ postDeployCtor: (instance, wallet) => PrivateFPCContract.at(instance.address, wallet),
42
+ args,
43
+ constructorNameOrArtifact: opts.method ?? 'constructor',
44
+ }, opts.instantiation);
41
45
  }
42
46
  /**
43
47
  * Returns this contract's artifact.
@@ -59,4 +63,4 @@ export class PrivateFPCContract extends ContractBase {
59
63
  };
60
64
  }
61
65
  }
62
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHJpdmF0ZUZQQy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcnRpZmFjdHMvUHJpdmF0ZUZQQy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxzQ0FBc0M7QUFJdEMsT0FBTyxFQUE0SixvQkFBb0IsRUFBRSw2QkFBNkIsRUFBb0YsTUFBTSxxQkFBcUIsQ0FBQztBQUN0VSxPQUFPLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBZ0YsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFL0osT0FBTyxFQUFFLEVBQUUsRUFBUyxNQUFNLHdCQUF3QixDQUFDO0FBQ25ELE9BQU8sRUFBa0IsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFbEUsT0FBTyw4QkFBOEIsTUFBTSwrQ0FBK0MsQ0FBQyxPQUFPLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQztBQUNqSCxNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBRyxvQkFBb0IsQ0FBQyw4QkFBc0QsQ0FBQyxDQUFDO0FBSXZIOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGtCQUFtQixTQUFRLFlBQVk7SUFFbEQsWUFDRSxPQUFxQixFQUNyQixNQUFjO1FBRWQsS0FBSyxDQUFDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBSUQ7Ozs7O09BS0c7SUFDSSxNQUFNLENBQUMsRUFBRSxDQUNkLE9BQXFCLEVBQ3JCLE1BQWM7UUFFZCxPQUFPLFFBQVEsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLGtCQUFrQixDQUFDLFFBQVEsRUFBRSxNQUFNLENBQXVCLENBQUM7SUFDekYsQ0FBQztJQUdEOztPQUVHO0lBQ0ksTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFjO1FBQ2pDLE9BQU8sSUFBSSxZQUFZLENBQXFCLFVBQVUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxNQUFNLEVBQUUsMEJBQTBCLEVBQUUsQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9NLENBQUM7SUFFRDs7T0FFRztJQUNJLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxVQUFzQixFQUFFLE1BQWM7UUFDdkUsT0FBTyxJQUFJLFlBQVksQ0FBcUIsVUFBVSxFQUFFLE1BQU0sRUFBRSwwQkFBMEIsRUFBRSxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDck0sQ0FBQztJQUVEOztPQUVHO0lBQ0ksTUFBTSxDQUFDLGNBQWMsQ0FDMUIsSUFBNkQsRUFDN0QsR0FBRyxJQUFrRDtRQUVyRCxPQUFPLElBQUksWUFBWSxDQUNyQixJQUFJLENBQUMsVUFBVSxJQUFJLFVBQVUsQ0FBQyxPQUFPLEVBQUUsRUFDdkMsSUFBSSxDQUFDLE1BQU0sRUFDWCwwQkFBMEIsRUFDMUIsQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsRUFDckUsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQzlCLElBQUksQ0FBQyxNQUFNLElBQUksYUFBYSxDQUM3QixDQUFDO0lBQ0osQ0FBQztJQUlEOztPQUVHO0lBQ0ksTUFBTSxLQUFLLFFBQVE7UUFDeEIsT0FBTywwQkFBMEIsQ0FBQztJQUNwQyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxNQUFNLEtBQUssaUJBQWlCO1FBQ2pDLE9BQU8sNkJBQTZCLENBQUMsOEJBQXNELENBQUMsQ0FBQztJQUMvRixDQUFDO0lBR00sTUFBTSxLQUFLLE9BQU87UUFDckIsT0FBTztZQUNMLFFBQVEsRUFBRTtnQkFDWixJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDO2FBQ2pCO1NBQ3VDLENBQUM7SUFDekMsQ0FBQztDQTZCSiJ9
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHJpdmF0ZUZQQy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcnRpZmFjdHMvUHJpdmF0ZUZQQy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxzQ0FBc0M7QUFJdEMsT0FBTyxFQUE0SixvQkFBb0IsRUFBRSw2QkFBNkIsRUFBb0YsTUFBTSxxQkFBcUIsQ0FBQztBQUN0VSxPQUFPLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBaUgsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFaE0sT0FBTyxFQUFFLEVBQUUsRUFBUyxNQUFNLHdCQUF3QixDQUFDO0FBR25ELE9BQU8sOEJBQThCLE1BQU0sK0NBQStDLENBQUMsT0FBTyxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUM7QUFDakgsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUcsb0JBQW9CLENBQUMsOEJBQXNELENBQUMsQ0FBQztBQUl2SDs7R0FFRztBQUNILE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxZQUFZO0lBRWxELFlBQ0UsT0FBcUIsRUFDckIsTUFBYztRQUVkLEtBQUssQ0FBQyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUlEOzs7OztPQUtHO0lBQ0ksTUFBTSxDQUFDLEVBQUUsQ0FDZCxPQUFxQixFQUNyQixNQUFjO1FBRWQsT0FBTyxRQUFRLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUF1QixDQUFDO0lBQ3pGLENBQUM7SUFHRDs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFjLEVBQUUsYUFBMEM7UUFDN0UsT0FBTyxZQUFZLENBQUMsTUFBTSxDQUN4QixNQUFNLEVBQ047WUFDRSxRQUFRLEVBQUUsMEJBQTBCO1lBQ3BDLGNBQWMsRUFBRSxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQztZQUNyRixJQUFJLEVBQUUsRUFBRTtTQUNULEVBQ0QsYUFBYSxDQUNkLENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSSxNQUFNLENBQUMsY0FBYyxDQUMxQixJQUFnRixFQUNoRixHQUFHLElBQWtEO1FBRXJELE9BQU8sWUFBWSxDQUFDLE1BQU0sQ0FDeEIsSUFBSSxDQUFDLE1BQU0sRUFDWDtZQUNFLFFBQVEsRUFBRSwwQkFBMEI7WUFDcEMsY0FBYyxFQUFFLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDO1lBQ3JGLElBQUk7WUFDSix5QkFBeUIsRUFBRSxJQUFJLENBQUMsTUFBTSxJQUFJLGFBQWE7U0FDeEQsRUFDRCxJQUFJLENBQUMsYUFBYSxDQUNuQixDQUFDO0lBQ0osQ0FBQztJQUlEOztPQUVHO0lBQ0ksTUFBTSxLQUFLLFFBQVE7UUFDeEIsT0FBTywwQkFBMEIsQ0FBQztJQUNwQyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxNQUFNLEtBQUssaUJBQWlCO1FBQ2pDLE9BQU8sNkJBQTZCLENBQUMsOEJBQXNELENBQUMsQ0FBQztJQUMvRixDQUFDO0lBR00sTUFBTSxLQUFLLE9BQU87UUFDckIsT0FBTztZQUNMLFFBQVEsRUFBRTtnQkFDWixJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDO2FBQ2pCO1NBQ3VDLENBQUM7SUFDekMsQ0FBQztDQTZCSiJ9
@@ -8,11 +8,11 @@ import { PrivateFPCContract } from "../../artifacts/PrivateFPC.js";
8
8
  * The Aztec protocol allows interacting with such contracts immediately once registered —
9
9
  * no on-chain deployment transaction is required.
10
10
  *
11
- * The contract address is computed deterministically from its class hash and the provided salt,
12
- * with `deployer: AztecAddress.ZERO` so the deployer address is NOT mixed in. This means the same
13
- * salt always produces the same address regardless of who calls this function.
14
- * (`universalDeploy` is only available on `.send()` options; for `.register()` the equivalent
15
- * is setting `deployer` to `AztecAddress.ZERO`.)
11
+ * The contract address is computed deterministically from its class hash and the provided salt.
12
+ * `universalDeploy: true` zeroes the deployer in the address preimage, so the same salt always
13
+ * produces the same address regardless of who calls this function. (Aztec 4.3 moved salt /
14
+ * deployer / universalDeploy from per-call options into the `DeployMethod` instantiation
15
+ * argument, and the `register()` method no longer accepts options.)
16
16
  *
17
17
  * @param wallet The wallet used to register the contract with the PXE
18
18
  * @param salt Salt used to derive the contract address
@@ -1 +1 @@
1
- {"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../../../src/ts/utils/deploy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAGhD,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAEnE;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,EAAE,GACP,OAAO,CAAC,kBAAkB,CAAC,CAM7B"}
1
+ {"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../../../src/ts/utils/deploy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAEhD,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAEnE;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,EAAE,GACP,OAAO,CAAC,kBAAkB,CAAC,CAK7B"}
@@ -1,4 +1,3 @@
1
- import { AztecAddress } from "@aztec/stdlib/aztec-address";
2
1
  import { PrivateFPCContract } from "../../artifacts/PrivateFPC.js";
3
2
  /**
4
3
  * Registers the PrivateFPC contract with the PXE without sending any deployment transaction.
@@ -7,21 +6,20 @@ import { PrivateFPCContract } from "../../artifacts/PrivateFPC.js";
7
6
  * The Aztec protocol allows interacting with such contracts immediately once registered —
8
7
  * no on-chain deployment transaction is required.
9
8
  *
10
- * The contract address is computed deterministically from its class hash and the provided salt,
11
- * with `deployer: AztecAddress.ZERO` so the deployer address is NOT mixed in. This means the same
12
- * salt always produces the same address regardless of who calls this function.
13
- * (`universalDeploy` is only available on `.send()` options; for `.register()` the equivalent
14
- * is setting `deployer` to `AztecAddress.ZERO`.)
9
+ * The contract address is computed deterministically from its class hash and the provided salt.
10
+ * `universalDeploy: true` zeroes the deployer in the address preimage, so the same salt always
11
+ * produces the same address regardless of who calls this function. (Aztec 4.3 moved salt /
12
+ * deployer / universalDeploy from per-call options into the `DeployMethod` instantiation
13
+ * argument, and the `register()` method no longer accepts options.)
15
14
  *
16
15
  * @param wallet The wallet used to register the contract with the PXE
17
16
  * @param salt Salt used to derive the contract address
18
17
  * @returns The registered PrivateFPC contract instance
19
18
  */
20
19
  export async function registerPrivateContract(wallet, salt) {
21
- return PrivateFPCContract.deploy(wallet).register({
22
- contractAddressSalt: salt,
23
- skipInitialization: true,
24
- deployer: AztecAddress.ZERO,
25
- });
20
+ return PrivateFPCContract.deploy(wallet, {
21
+ salt,
22
+ universalDeploy: true,
23
+ }).register();
26
24
  }
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwbG95LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3RzL3V0aWxzL2RlcGxveS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFM0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFbkU7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLHVCQUF1QixDQUMzQyxNQUFjLEVBQ2QsSUFBUTtJQUVSLE9BQU8sa0JBQWtCLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQztRQUNoRCxtQkFBbUIsRUFBRSxJQUFJO1FBQ3pCLGtCQUFrQixFQUFFLElBQUk7UUFDeEIsUUFBUSxFQUFFLFlBQVksQ0FBQyxJQUFJO0tBQzVCLENBQUMsQ0FBQztBQUNMLENBQUMifQ==
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwbG95LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3RzL3V0aWxzL2RlcGxveS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUVuRTs7Ozs7Ozs7Ozs7Ozs7OztHQWdCRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsdUJBQXVCLENBQzNDLE1BQWMsRUFDZCxJQUFRO0lBRVIsT0FBTyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFO1FBQ3ZDLElBQUk7UUFDSixlQUFlLEVBQUUsSUFBSTtLQUN0QixDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7QUFDaEIsQ0FBQyJ9
@@ -1,10 +1,25 @@
1
1
  import type { FeePaymentMethod } from "@aztec/aztec.js/fee";
2
2
  import { AztecAddress } from "@aztec/stdlib/aztec-address";
3
3
  import { Gas, GasFees, GasSettings } from "@aztec/stdlib/gas";
4
- type BaseFeesProvider = {
4
+ type GasEstimationNode = {
5
5
  getCurrentMinFees(): Promise<GasFees>;
6
+ getNodeInfo(): Promise<{
7
+ txsLimits: {
8
+ gas: {
9
+ daGas: number;
10
+ l2Gas: number;
11
+ };
12
+ };
13
+ }>;
14
+ };
15
+ /**
16
+ * Raw gas consumed during simulation, returned by `simulate` when called with
17
+ * `includeMetadata: true`. Replaces the removed `estimatedGas` result field.
18
+ */
19
+ type SimulatedGasUsage = {
20
+ totalGas: Gas;
21
+ teardownGas: Gas;
6
22
  };
7
- type SimulatedGasEstimate = Pick<GasSettings, "gasLimits" | "teardownGasLimits">;
8
23
  type SimulatableInteraction = {
9
24
  simulate(options: {
10
25
  from: AztecAddress;
@@ -12,7 +27,6 @@ type SimulatableInteraction = {
12
27
  includeMetadata?: boolean;
13
28
  fee?: {
14
29
  paymentMethod?: FeePaymentMethod;
15
- estimatedGasPadding?: number;
16
30
  gasSettings?: {
17
31
  gasLimits?: Gas;
18
32
  teardownGasLimits?: Gas;
@@ -21,7 +35,7 @@ type SimulatableInteraction = {
21
35
  };
22
36
  };
23
37
  }): Promise<{
24
- estimatedGas?: SimulatedGasEstimate;
38
+ gasUsed?: SimulatedGasUsage;
25
39
  }>;
26
40
  };
27
41
  export type FeeMultiplier = number | {
@@ -72,16 +86,20 @@ export declare function maxGasCostFor(maxFeesPerGas: GasFees, gasLimits: Gas): b
72
86
  /**
73
87
  * Simulate an interaction to derive tighter gas limits, then combine them with
74
88
  * fee caps based on the node's current minimum fees.
89
+ *
90
+ * The network advertises the maximum gas a single tx may declare via
91
+ * `NodeInfo.txsLimits.gas` (the smaller of the per-tx maximum and the per-block
92
+ * allocation). The simulation runs within that ceiling and the simulated usage
93
+ * is padded and clamped back to it, so the wallet's gas-limit validation never
94
+ * rejects the resulting transaction for over-declaring gas.
75
95
  */
76
- export declare function estimateGasSettings(interaction: SimulatableInteraction, { aztecNode, from, paymentMethod, additionalScopes, maxFeeMultiplier, estimatedGasPadding, gasLimits, teardownGasLimits, }: {
77
- aztecNode: BaseFeesProvider;
96
+ export declare function estimateGasSettings(interaction: SimulatableInteraction, { aztecNode, from, paymentMethod, additionalScopes, maxFeeMultiplier, estimatedGasPadding, }: {
97
+ aztecNode: GasEstimationNode;
78
98
  from: AztecAddress;
79
99
  paymentMethod?: FeePaymentMethod;
80
100
  additionalScopes?: AztecAddress[];
81
101
  maxFeeMultiplier?: FeeMultiplier;
82
102
  estimatedGasPadding?: number;
83
- gasLimits?: Gas;
84
- teardownGasLimits?: Gas;
85
103
  }): Promise<GasSettings>;
86
104
  export {};
87
105
  //# sourceMappingURL=gas.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"gas.d.ts","sourceRoot":"","sources":["../../../../src/ts/utils/gas.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EACL,GAAG,EACH,OAAO,EACP,WAAW,EAIZ,MAAM,mBAAmB,CAAC;AAG3B,KAAK,gBAAgB,GAAG;IACtB,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;CACvC,CAAC;AAEF,KAAK,oBAAoB,GAAG,IAAI,CAC9B,WAAW,EACX,WAAW,GAAG,mBAAmB,CAClC,CAAC;AAEF,KAAK,sBAAsB,GAAG;IAC5B,QAAQ,CAAC,OAAO,EAAE;QAChB,IAAI,EAAE,YAAY,CAAC;QACnB,gBAAgB,CAAC,EAAE,YAAY,EAAE,CAAC;QAClC,eAAe,CAAC,EAAE,OAAO,CAAC;QAC1B,GAAG,CAAC,EAAE;YACJ,aAAa,CAAC,EAAE,gBAAgB,CAAC;YACjC,mBAAmB,CAAC,EAAE,MAAM,CAAC;YAC7B,WAAW,CAAC,EAAE;gBACZ,SAAS,CAAC,EAAE,GAAG,CAAC;gBAChB,iBAAiB,CAAC,EAAE,GAAG,CAAC;gBACxB,aAAa,CAAC,EAAE,OAAO,CAAC;gBACxB,qBAAqB,CAAC,EAAE,OAAO,CAAC;aACjC,CAAC;SACH,CAAC;KACH,GAAG,OAAO,CAAC;QAAE,YAAY,CAAC,EAAE,oBAAoB,CAAA;KAAE,CAAC,CAAC;CACtD,CAAC;AAMF,MAAM,MAAM,aAAa,GACrB,MAAM,GACN;IACE,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAgCN;;;;GAIG;AACH,eAAO,MAAM,sBAAsB;;;CAGzB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,4BAA4B,MAAM,CAAC;AAwBhD;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE;IACR,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IACtC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;CACvC,EACD,UAAU,GAAE,aAAsC,GACjD,OAAO,CAaT;AAED;;;GAGG;AACH,wBAAgB,gCAAgC,CAC9C,aAAa,EAAE,OAAO,GACrB,OAAO,CAET;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,aAAa,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,GAAG,MAAM,CAK5E;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,WAAW,EAAE,sBAAsB,EACnC,EACE,SAAS,EACT,IAAI,EACJ,aAAa,EACb,gBAAgB,EAChB,gBAAyC,EACzC,mBAAkD,EAClD,SAA0B,EAC1B,iBAAgD,GACjD,EAAE;IACD,SAAS,EAAE,gBAAgB,CAAC;IAC5B,IAAI,EAAE,YAAY,CAAC;IACnB,aAAa,CAAC,EAAE,gBAAgB,CAAC;IACjC,gBAAgB,CAAC,EAAE,YAAY,EAAE,CAAC;IAClC,gBAAgB,CAAC,EAAE,aAAa,CAAC;IACjC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,SAAS,CAAC,EAAE,GAAG,CAAC;IAChB,iBAAiB,CAAC,EAAE,GAAG,CAAC;CACzB,GACA,OAAO,CAAC,WAAW,CAAC,CAiCtB"}
1
+ {"version":3,"file":"gas.d.ts","sourceRoot":"","sources":["../../../../src/ts/utils/gas.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAE9D,KAAK,iBAAiB,GAAG;IACvB,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IACtC,WAAW,IAAI,OAAO,CAAC;QACrB,SAAS,EAAE;YAAE,GAAG,EAAE;gBAAE,KAAK,EAAE,MAAM,CAAC;gBAAC,KAAK,EAAE,MAAM,CAAA;aAAE,CAAA;SAAE,CAAC;KACtD,CAAC,CAAC;CACJ,CAAC;AAEF;;;GAGG;AACH,KAAK,iBAAiB,GAAG;IACvB,QAAQ,EAAE,GAAG,CAAC;IACd,WAAW,EAAE,GAAG,CAAC;CAClB,CAAC;AAEF,KAAK,sBAAsB,GAAG;IAC5B,QAAQ,CAAC,OAAO,EAAE;QAChB,IAAI,EAAE,YAAY,CAAC;QACnB,gBAAgB,CAAC,EAAE,YAAY,EAAE,CAAC;QAClC,eAAe,CAAC,EAAE,OAAO,CAAC;QAC1B,GAAG,CAAC,EAAE;YACJ,aAAa,CAAC,EAAE,gBAAgB,CAAC;YACjC,WAAW,CAAC,EAAE;gBACZ,SAAS,CAAC,EAAE,GAAG,CAAC;gBAChB,iBAAiB,CAAC,EAAE,GAAG,CAAC;gBACxB,aAAa,CAAC,EAAE,OAAO,CAAC;gBACxB,qBAAqB,CAAC,EAAE,OAAO,CAAC;aACjC,CAAC;SACH,CAAC;KACH,GAAG,OAAO,CAAC;QAAE,OAAO,CAAC,EAAE,iBAAiB,CAAA;KAAE,CAAC,CAAC;CAC9C,CAAC;AAMF,MAAM,MAAM,aAAa,GACrB,MAAM,GACN;IACE,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAgCN;;;;GAIG;AACH,eAAO,MAAM,sBAAsB;;;CAGzB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,4BAA4B,MAAM,CAAC;AAehD;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE;IACR,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IACtC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;CACvC,EACD,UAAU,GAAE,aAAsC,GACjD,OAAO,CAaT;AAED;;;GAGG;AACH,wBAAgB,gCAAgC,CAC9C,aAAa,EAAE,OAAO,GACrB,OAAO,CAET;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,aAAa,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,GAAG,MAAM,CAK5E;AAED;;;;;;;;;GASG;AACH,wBAAsB,mBAAmB,CACvC,WAAW,EAAE,sBAAsB,EACnC,EACE,SAAS,EACT,IAAI,EACJ,aAAa,EACb,gBAAgB,EAChB,gBAAyC,EACzC,mBAAkD,GACnD,EAAE;IACD,SAAS,EAAE,iBAAiB,CAAC;IAC7B,IAAI,EAAE,YAAY,CAAC;IACnB,aAAa,CAAC,EAAE,gBAAgB,CAAC;IACjC,gBAAgB,CAAC,EAAE,YAAY,EAAE,CAAC;IAClC,gBAAgB,CAAC,EAAE,aAAa,CAAC;IACjC,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B,GACA,OAAO,CAAC,WAAW,CAAC,CA8DtB"}
@@ -1,5 +1,4 @@
1
- import { Gas, GasFees, GasSettings, APPROXIMATE_MAX_DA_GAS_PER_BLOCK, FALLBACK_TEARDOWN_DA_GAS_LIMIT, FALLBACK_TEARDOWN_L2_GAS_LIMIT, } from "@aztec/stdlib/gas";
2
- import { MAX_PROCESSABLE_L2_GAS } from "@aztec/constants";
1
+ import { Gas, GasFees, GasSettings } from "@aztec/stdlib/gas";
3
2
  const FEE_MULTIPLIER_SCALE = 10000n;
4
3
  const DEFAULT_FEE_MULTIPLIER_NUMERATOR = 6n;
5
4
  const DEFAULT_FEE_MULTIPLIER_DENOMINATOR = 5n;
@@ -35,25 +34,17 @@ export const DEFAULT_FEE_MULTIPLIER = {
35
34
  */
36
35
  export const DEFAULT_GAS_ESTIMATE_PADDING = 0.1;
37
36
  /**
38
- * Protocol-maximum gas limits, used as the initial ceiling for
39
- * estimateGasSettings the simulation replaces them with tighter values.
37
+ * Pads each gas dimension by `pad` (e.g. 0.1 = +10%) and caps it at the
38
+ * network's per-tx admission limit, mirroring the framework's getGasLimits.
39
+ * The cap keeps the declared limits within what inbound validation accepts.
40
40
  */
41
- const MAX_GAS_LIMITS = Gas.from({
42
- daGas: APPROXIMATE_MAX_DA_GAS_PER_BLOCK,
43
- l2Gas: MAX_PROCESSABLE_L2_GAS,
44
- });
45
- /**
46
- * Protocol-default teardown gas limits. The protocol bills teardown gas at the
47
- * limit (not actual usage), so these overestimate. estimateGasSettings replaces
48
- * them with simulation output.
49
- *
50
- * Teardown gas is already included in gasLimits by the protocol, so these must
51
- * NOT be passed to maxGasCostFor (that would double-count teardown cost).
52
- */
53
- const FALLBACK_TEARDOWN_GAS_LIMITS = Gas.from({
54
- daGas: FALLBACK_TEARDOWN_DA_GAS_LIMIT,
55
- l2Gas: FALLBACK_TEARDOWN_L2_GAS_LIMIT,
56
- });
41
+ function padAndClampGas(gas, pad, max) {
42
+ const padded = gas.mul(1 + pad);
43
+ return Gas.from({
44
+ daGas: Math.min(padded.daGas, max.daGas),
45
+ l2Gas: Math.min(padded.l2Gas, max.l2Gas),
46
+ });
47
+ }
57
48
  /**
58
49
  * Calculate max fees per gas from the node's minimum fees with a multiplier.
59
50
  * @param baseFees - The current base fees from the node
@@ -90,28 +81,51 @@ export function maxGasCostFor(maxFeesPerGas, gasLimits) {
90
81
  /**
91
82
  * Simulate an interaction to derive tighter gas limits, then combine them with
92
83
  * fee caps based on the node's current minimum fees.
84
+ *
85
+ * The network advertises the maximum gas a single tx may declare via
86
+ * `NodeInfo.txsLimits.gas` (the smaller of the per-tx maximum and the per-block
87
+ * allocation). The simulation runs within that ceiling and the simulated usage
88
+ * is padded and clamped back to it, so the wallet's gas-limit validation never
89
+ * rejects the resulting transaction for over-declaring gas.
93
90
  */
94
- export async function estimateGasSettings(interaction, { aztecNode, from, paymentMethod, additionalScopes, maxFeeMultiplier = DEFAULT_FEE_MULTIPLIER, estimatedGasPadding = DEFAULT_GAS_ESTIMATE_PADDING, gasLimits = MAX_GAS_LIMITS, teardownGasLimits = FALLBACK_TEARDOWN_GAS_LIMITS, }) {
91
+ export async function estimateGasSettings(interaction, { aztecNode, from, paymentMethod, additionalScopes, maxFeeMultiplier = DEFAULT_FEE_MULTIPLIER, estimatedGasPadding = DEFAULT_GAS_ESTIMATE_PADDING, }) {
92
+ // Validate the padding knob at the public boundary so we fail fast before the
93
+ // simulation round-trip, mirroring the maxFeeMultiplier validation in
94
+ // normalizeMultiplier. Zero is allowed (no margin); negatives would
95
+ // under-declare gas and NaN/Infinity would yield invalid limits the node rejects.
96
+ if (!Number.isFinite(estimatedGasPadding) || estimatedGasPadding < 0) {
97
+ throw new Error(`Gas estimate padding must be a non-negative finite number, got ${estimatedGasPadding}`);
98
+ }
95
99
  const maxFeesPerGas = maxFeesPerGasFromBaseFees(await aztecNode.getCurrentMinFees(), maxFeeMultiplier);
96
100
  const maxPriorityFeesPerGas = maxPriorityFeesPerGasFromMaxFees(maxFeesPerGas);
101
+ const { txsLimits: { gas }, } = await aztecNode.getNodeInfo();
102
+ const maxGasLimits = Gas.from({ daGas: gas.daGas, l2Gas: gas.l2Gas });
97
103
  const simulation = await interaction.simulate({
98
104
  from,
99
105
  additionalScopes,
100
106
  includeMetadata: true,
101
107
  fee: {
102
108
  paymentMethod,
103
- estimatedGasPadding,
104
109
  gasSettings: {
105
- gasLimits,
106
- teardownGasLimits,
110
+ gasLimits: maxGasLimits,
111
+ teardownGasLimits: maxGasLimits,
107
112
  maxFeesPerGas,
108
113
  maxPriorityFeesPerGas,
109
114
  },
110
115
  },
111
116
  });
112
- if (!simulation.estimatedGas) {
113
- throw new Error("Gas estimation metadata was not returned by simulation.");
117
+ if (!simulation.gasUsed) {
118
+ throw new Error("Gas usage metadata was not returned by simulation.");
119
+ }
120
+ const { totalGas, teardownGas } = simulation.gasUsed;
121
+ // If simulated usage already exceeds the admission limit the tx can never be
122
+ // included, so fail fast rather than declaring a limit the node would reject.
123
+ if (totalGas.daGas > maxGasLimits.daGas ||
124
+ totalGas.l2Gas > maxGasLimits.l2Gas) {
125
+ throw new Error(`Transaction consumes more gas (DA ${totalGas.daGas}, L2 ${totalGas.l2Gas}) than the network admits per tx (DA ${maxGasLimits.daGas}, L2 ${maxGasLimits.l2Gas}).`);
114
126
  }
115
- return new GasSettings(simulation.estimatedGas.gasLimits, simulation.estimatedGas.teardownGasLimits, maxFeesPerGas, maxPriorityFeesPerGas);
127
+ // gasLimits is the padded total gas (teardown is part of the total); the
128
+ // teardown sub-limit is padded separately. Mirrors the framework's getGasLimits.
129
+ return new GasSettings(padAndClampGas(totalGas, estimatedGasPadding, maxGasLimits), padAndClampGas(teardownGas, estimatedGasPadding, maxGasLimits), maxFeesPerGas, maxPriorityFeesPerGas);
116
130
  }
117
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3RzL3V0aWxzL2dhcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQ0wsR0FBRyxFQUNILE9BQU8sRUFDUCxXQUFXLEVBQ1gsZ0NBQWdDLEVBQ2hDLDhCQUE4QixFQUM5Qiw4QkFBOEIsR0FDL0IsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQTZCMUQsTUFBTSxvQkFBb0IsR0FBRyxNQUFPLENBQUM7QUFDckMsTUFBTSxnQ0FBZ0MsR0FBRyxFQUFFLENBQUM7QUFDNUMsTUFBTSxrQ0FBa0MsR0FBRyxFQUFFLENBQUM7QUFTOUMsU0FBUyxPQUFPLENBQUMsU0FBaUIsRUFBRSxXQUFtQjtJQUNyRCxPQUFPLENBQUMsU0FBUyxHQUFHLFdBQVcsR0FBRyxFQUFFLENBQUMsR0FBRyxXQUFXLENBQUM7QUFDdEQsQ0FBQztBQUVELFNBQVMsbUJBQW1CLENBQUMsVUFBeUI7SUFJcEQsSUFBSSxPQUFPLFVBQVUsS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUNuQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsSUFBSSxVQUFVLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDcEQsTUFBTSxJQUFJLEtBQUssQ0FDYix3REFBd0QsVUFBVSxFQUFFLENBQ3JFLENBQUM7UUFDSixDQUFDO1FBRUQsT0FBTztZQUNMLFNBQVMsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQztZQUN2RSxXQUFXLEVBQUUsb0JBQW9CO1NBQ2xDLENBQUM7SUFDSixDQUFDO0lBRUQsSUFBSSxVQUFVLENBQUMsV0FBVyxJQUFJLEVBQUUsSUFBSSxVQUFVLENBQUMsU0FBUyxJQUFJLEVBQUUsRUFBRSxDQUFDO1FBQy9ELE1BQU0sSUFBSSxLQUFLLENBQ2IsbURBQW1ELFVBQVUsQ0FBQyxTQUFTLElBQUksVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUNwRyxDQUFDO0lBQ0osQ0FBQztJQUVELE9BQU8sVUFBVSxDQUFDO0FBQ3BCLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUc7SUFDcEMsU0FBUyxFQUFFLGdDQUFnQztJQUMzQyxXQUFXLEVBQUUsa0NBQWtDO0NBQ3ZDLENBQUM7QUFFWDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUFHLEdBQUcsQ0FBQztBQUVoRDs7O0dBR0c7QUFDSCxNQUFNLGNBQWMsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDO0lBQzlCLEtBQUssRUFBRSxnQ0FBZ0M7SUFDdkMsS0FBSyxFQUFFLHNCQUFzQjtDQUM5QixDQUFDLENBQUM7QUFFSDs7Ozs7OztHQU9HO0FBQ0gsTUFBTSw0QkFBNEIsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDO0lBQzVDLEtBQUssRUFBRSw4QkFBOEI7SUFDckMsS0FBSyxFQUFFLDhCQUE4QjtDQUN0QyxDQUFDLENBQUM7QUFFSDs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSx5QkFBeUIsQ0FDdkMsUUFHQyxFQUNELGFBQTRCLHNCQUFzQjtJQUVsRCxNQUFNLG9CQUFvQixHQUFHLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRTdELE9BQU8sSUFBSSxPQUFPLENBQ2hCLE9BQU8sQ0FDTCxNQUFNLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxHQUFHLG9CQUFvQixDQUFDLFNBQVMsRUFDN0Qsb0JBQW9CLENBQUMsV0FBVyxDQUNqQyxFQUNELE9BQU8sQ0FDTCxNQUFNLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxHQUFHLG9CQUFvQixDQUFDLFNBQVMsRUFDN0Qsb0JBQW9CLENBQUMsV0FBVyxDQUNqQyxDQUNGLENBQUM7QUFDSixDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLGdDQUFnQyxDQUM5QyxhQUFzQjtJQUV0QixPQUFPLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUMvQixDQUFDO0FBRUQ7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxNQUFNLFVBQVUsYUFBYSxDQUFDLGFBQXNCLEVBQUUsU0FBYztJQUNsRSxPQUFPLENBQ0wsTUFBTSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQztRQUMzRCxNQUFNLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQzVELENBQUM7QUFDSixDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxtQkFBbUIsQ0FDdkMsV0FBbUMsRUFDbkMsRUFDRSxTQUFTLEVBQ1QsSUFBSSxFQUNKLGFBQWEsRUFDYixnQkFBZ0IsRUFDaEIsZ0JBQWdCLEdBQUcsc0JBQXNCLEVBQ3pDLG1CQUFtQixHQUFHLDRCQUE0QixFQUNsRCxTQUFTLEdBQUcsY0FBYyxFQUMxQixpQkFBaUIsR0FBRyw0QkFBNEIsR0FVakQ7SUFFRCxNQUFNLGFBQWEsR0FBRyx5QkFBeUIsQ0FDN0MsTUFBTSxTQUFTLENBQUMsaUJBQWlCLEVBQUUsRUFDbkMsZ0JBQWdCLENBQ2pCLENBQUM7SUFDRixNQUFNLHFCQUFxQixHQUFHLGdDQUFnQyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBRTlFLE1BQU0sVUFBVSxHQUFHLE1BQU0sV0FBVyxDQUFDLFFBQVEsQ0FBQztRQUM1QyxJQUFJO1FBQ0osZ0JBQWdCO1FBQ2hCLGVBQWUsRUFBRSxJQUFJO1FBQ3JCLEdBQUcsRUFBRTtZQUNILGFBQWE7WUFDYixtQkFBbUI7WUFDbkIsV0FBVyxFQUFFO2dCQUNYLFNBQVM7Z0JBQ1QsaUJBQWlCO2dCQUNqQixhQUFhO2dCQUNiLHFCQUFxQjthQUN0QjtTQUNGO0tBQ0YsQ0FBQyxDQUFDO0lBRUgsSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUM3QixNQUFNLElBQUksS0FBSyxDQUFDLHlEQUF5RCxDQUFDLENBQUM7SUFDN0UsQ0FBQztJQUVELE9BQU8sSUFBSSxXQUFXLENBQ3BCLFVBQVUsQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUNqQyxVQUFVLENBQUMsWUFBWSxDQUFDLGlCQUFpQixFQUN6QyxhQUFhLEVBQ2IscUJBQXFCLENBQ3RCLENBQUM7QUFDSixDQUFDIn0=
131
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3RzL3V0aWxzL2dhcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQW1DOUQsTUFBTSxvQkFBb0IsR0FBRyxNQUFPLENBQUM7QUFDckMsTUFBTSxnQ0FBZ0MsR0FBRyxFQUFFLENBQUM7QUFDNUMsTUFBTSxrQ0FBa0MsR0FBRyxFQUFFLENBQUM7QUFTOUMsU0FBUyxPQUFPLENBQUMsU0FBaUIsRUFBRSxXQUFtQjtJQUNyRCxPQUFPLENBQUMsU0FBUyxHQUFHLFdBQVcsR0FBRyxFQUFFLENBQUMsR0FBRyxXQUFXLENBQUM7QUFDdEQsQ0FBQztBQUVELFNBQVMsbUJBQW1CLENBQUMsVUFBeUI7SUFJcEQsSUFBSSxPQUFPLFVBQVUsS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUNuQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsSUFBSSxVQUFVLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDcEQsTUFBTSxJQUFJLEtBQUssQ0FDYix3REFBd0QsVUFBVSxFQUFFLENBQ3JFLENBQUM7UUFDSixDQUFDO1FBRUQsT0FBTztZQUNMLFNBQVMsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQztZQUN2RSxXQUFXLEVBQUUsb0JBQW9CO1NBQ2xDLENBQUM7SUFDSixDQUFDO0lBRUQsSUFBSSxVQUFVLENBQUMsV0FBVyxJQUFJLEVBQUUsSUFBSSxVQUFVLENBQUMsU0FBUyxJQUFJLEVBQUUsRUFBRSxDQUFDO1FBQy9ELE1BQU0sSUFBSSxLQUFLLENBQ2IsbURBQW1ELFVBQVUsQ0FBQyxTQUFTLElBQUksVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUNwRyxDQUFDO0lBQ0os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