@aztec/cli-wallet 4.0.0-nightly.20250907 → 4.0.0-nightly.20260108
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 +30 -0
- package/dest/bin/index.d.ts +1 -1
- package/dest/bin/index.js +38 -23
- package/dest/cmds/authorize_action.d.ts +4 -3
- package/dest/cmds/authorize_action.d.ts.map +1 -1
- package/dest/cmds/authorize_action.js +6 -7
- package/dest/cmds/bridge_fee_juice.d.ts +4 -4
- package/dest/cmds/bridge_fee_juice.d.ts.map +1 -1
- package/dest/cmds/bridge_fee_juice.js +9 -7
- package/dest/cmds/check_tx.d.ts +5 -3
- package/dest/cmds/check_tx.d.ts.map +1 -1
- package/dest/cmds/check_tx.js +144 -6
- package/dest/cmds/create_account.d.ts +7 -6
- package/dest/cmds/create_account.d.ts.map +1 -1
- package/dest/cmds/create_account.js +36 -48
- package/dest/cmds/create_authwit.d.ts +4 -3
- package/dest/cmds/create_authwit.d.ts.map +1 -1
- package/dest/cmds/create_authwit.js +6 -6
- package/dest/cmds/deploy.d.ts +7 -4
- package/dest/cmds/deploy.d.ts.map +1 -1
- package/dest/cmds/deploy.js +57 -46
- package/dest/cmds/deploy_account.d.ts +6 -8
- package/dest/cmds/deploy_account.d.ts.map +1 -1
- package/dest/cmds/deploy_account.js +36 -51
- package/dest/cmds/import_test_accounts.d.ts +3 -3
- package/dest/cmds/import_test_accounts.d.ts.map +1 -1
- package/dest/cmds/import_test_accounts.js +6 -9
- package/dest/cmds/index.d.ts +3 -3
- package/dest/cmds/index.d.ts.map +1 -1
- package/dest/cmds/index.js +73 -112
- package/dest/cmds/profile.d.ts +7 -4
- package/dest/cmds/profile.d.ts.map +1 -1
- package/dest/cmds/profile.js +9 -4
- package/dest/cmds/register_contract.d.ts +7 -3
- package/dest/cmds/register_contract.d.ts.map +1 -1
- package/dest/cmds/register_contract.js +5 -6
- package/dest/cmds/register_sender.d.ts +4 -3
- package/dest/cmds/register_sender.d.ts.map +1 -1
- package/dest/cmds/send.d.ts +8 -9
- package/dest/cmds/send.d.ts.map +1 -1
- package/dest/cmds/send.js +27 -24
- package/dest/cmds/simulate.d.ts +7 -4
- package/dest/cmds/simulate.d.ts.map +1 -1
- package/dest/cmds/simulate.js +9 -4
- package/dest/storage/wallet_db.d.ts +6 -16
- package/dest/storage/wallet_db.d.ts.map +1 -1
- package/dest/storage/wallet_db.js +2 -23
- package/dest/utils/authorizations.d.ts +3 -2
- package/dest/utils/authorizations.d.ts.map +1 -1
- package/dest/utils/authorizations.js +1 -1
- package/dest/utils/cli_wallet_and_node_wrapper.d.ts +12 -0
- package/dest/utils/cli_wallet_and_node_wrapper.d.ts.map +1 -0
- package/dest/utils/cli_wallet_and_node_wrapper.js +25 -0
- package/dest/utils/ecdsa.d.ts +1 -1
- package/dest/utils/options/fees.d.ts +22 -28
- package/dest/utils/options/fees.d.ts.map +1 -1
- package/dest/utils/options/fees.js +66 -133
- package/dest/utils/options/index.d.ts +1 -1
- package/dest/utils/options/options.d.ts +4 -3
- package/dest/utils/options/options.d.ts.map +1 -1
- package/dest/utils/options/options.js +1 -1
- package/dest/utils/profiling.d.ts +1 -1
- package/dest/utils/wallet.d.ts +36 -0
- package/dest/utils/wallet.d.ts.map +1 -0
- package/dest/utils/wallet.js +195 -0
- package/package.json +17 -14
- package/src/bin/index.ts +38 -31
- package/src/cmds/authorize_action.ts +14 -6
- package/src/cmds/bridge_fee_juice.ts +15 -11
- package/src/cmds/check_tx.ts +181 -5
- package/src/cmds/create_account.ts +43 -53
- package/src/cmds/create_authwit.ts +9 -5
- package/src/cmds/deploy.ts +58 -56
- package/src/cmds/deploy_account.ts +43 -51
- package/src/cmds/import_test_accounts.ts +7 -11
- package/src/cmds/index.ts +120 -206
- package/src/cmds/profile.ts +14 -6
- package/src/cmds/register_contract.ts +9 -11
- package/src/cmds/register_sender.ts +3 -2
- package/src/cmds/send.ts +22 -32
- package/src/cmds/simulate.ts +14 -6
- package/src/storage/wallet_db.ts +3 -31
- package/src/utils/authorizations.ts +3 -1
- package/src/utils/cli_wallet_and_node_wrapper.ts +35 -0
- package/src/utils/options/fees.ts +88 -178
- package/src/utils/options/options.ts +3 -2
- package/src/utils/wallet.ts +266 -0
- package/dest/cmds/cancel_tx.d.ts +0 -11
- package/dest/cmds/cancel_tx.d.ts.map +0 -1
- package/dest/cmds/cancel_tx.js +0 -43
- package/dest/utils/accounts.d.ts +0 -9
- package/dest/utils/accounts.d.ts.map +0 -1
- package/dest/utils/accounts.js +0 -61
- package/dest/utils/pxe_wrapper.d.ts +0 -12
- package/dest/utils/pxe_wrapper.d.ts.map +0 -1
- package/dest/utils/pxe_wrapper.js +0 -26
- package/src/cmds/cancel_tx.ts +0 -66
- package/src/utils/accounts.ts +0 -77
- package/src/utils/pxe_wrapper.ts +0 -32
package/dest/cmds/simulate.js
CHANGED
|
@@ -1,14 +1,19 @@
|
|
|
1
|
-
import { Contract } from '@aztec/aztec.js';
|
|
1
|
+
import { Contract } from '@aztec/aztec.js/contracts';
|
|
2
2
|
import { prepTx } from '@aztec/cli/utils';
|
|
3
3
|
import { format } from 'util';
|
|
4
4
|
import { printAuthorizations } from '../utils/authorizations.js';
|
|
5
5
|
import { printProfileResult } from '../utils/profiling.js';
|
|
6
|
-
export async function simulate(wallet, functionName, functionArgsIn, contractArtifactPath, contractAddress, feeOpts, authWitnesses, verbose, log) {
|
|
6
|
+
export async function simulate(wallet, node, from, functionName, functionArgsIn, contractArtifactPath, contractAddress, feeOpts, authWitnesses, verbose, log) {
|
|
7
7
|
const { functionArgs, contractArtifact } = await prepTx(contractArtifactPath, functionName, functionArgsIn, log);
|
|
8
|
-
const contract =
|
|
8
|
+
const contract = Contract.at(contractAddress, contractArtifact, wallet);
|
|
9
9
|
const call = contract.methods[functionName](...functionArgs);
|
|
10
|
+
const { paymentMethod, gasSettings } = await feeOpts.toUserFeeOptions(node, wallet, from);
|
|
10
11
|
const simulationResult = await call.simulate({
|
|
11
|
-
|
|
12
|
+
fee: {
|
|
13
|
+
paymentMethod,
|
|
14
|
+
gasSettings
|
|
15
|
+
},
|
|
16
|
+
from,
|
|
12
17
|
authWitnesses,
|
|
13
18
|
includeMetadata: true
|
|
14
19
|
});
|
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
import { Fr } from '@aztec/foundation/
|
|
1
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
2
2
|
import type { LogFn } from '@aztec/foundation/log';
|
|
3
3
|
import type { AztecAsyncKVStore } from '@aztec/kv-store';
|
|
4
4
|
import type { AuthWitness } from '@aztec/stdlib/auth-witness';
|
|
5
5
|
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
6
|
-
import { GasSettings } from '@aztec/stdlib/gas';
|
|
7
6
|
import type { TxHash } from '@aztec/stdlib/tx';
|
|
8
|
-
import type { AccountType } from '../utils/
|
|
7
|
+
import type { AccountType } from '../utils/wallet.js';
|
|
9
8
|
export declare const Aliases: readonly ["accounts", "contracts", "artifacts", "secrets", "transactions", "authwits"];
|
|
10
9
|
export type AliasType = (typeof Aliases)[number];
|
|
11
10
|
export declare class WalletDB {
|
|
@@ -21,7 +20,7 @@ export declare class WalletDB {
|
|
|
21
20
|
secret: string;
|
|
22
21
|
leafIndex: bigint;
|
|
23
22
|
}>;
|
|
24
|
-
storeAccount(address: AztecAddress, { type, secretKey, salt, alias, publicKey
|
|
23
|
+
storeAccount(address: AztecAddress, { type, secretKey, salt, alias, publicKey }: {
|
|
25
24
|
type: AccountType;
|
|
26
25
|
secretKey: Fr;
|
|
27
26
|
salt: Fr;
|
|
@@ -31,18 +30,9 @@ export declare class WalletDB {
|
|
|
31
30
|
storeSender(address: AztecAddress, alias: string, log: LogFn): Promise<void>;
|
|
32
31
|
storeContract(address: AztecAddress, artifactPath: string, log: LogFn, alias?: string): Promise<void>;
|
|
33
32
|
storeAuthwitness(authWit: AuthWitness, log: LogFn, alias?: string): Promise<void>;
|
|
34
|
-
storeTx({ txHash
|
|
33
|
+
storeTx({ txHash }: {
|
|
35
34
|
txHash: TxHash;
|
|
36
|
-
txNonce: Fr;
|
|
37
|
-
cancellable: boolean;
|
|
38
|
-
gasSettings: GasSettings;
|
|
39
35
|
}, log: LogFn, alias?: string): Promise<void>;
|
|
40
|
-
retrieveTxData(txHash: TxHash): Promise<{
|
|
41
|
-
txHash: TxHash;
|
|
42
|
-
txNonce: Fr;
|
|
43
|
-
cancellable: boolean;
|
|
44
|
-
gasSettings: GasSettings;
|
|
45
|
-
}>;
|
|
46
36
|
tryRetrieveAlias(arg: string): string;
|
|
47
37
|
retrieveAliasFromCache(arg: string): string;
|
|
48
38
|
retrieveAlias(arg: string): Promise<string>;
|
|
@@ -56,8 +46,8 @@ export declare class WalletDB {
|
|
|
56
46
|
address: string | AztecAddress;
|
|
57
47
|
secretKey: Fr;
|
|
58
48
|
salt: Fr;
|
|
59
|
-
type: "
|
|
49
|
+
type: "ecdsasecp256k1" | "ecdsasecp256r1" | "ecdsasecp256r1ssh" | "schnorr";
|
|
60
50
|
}>;
|
|
61
51
|
storeAlias(type: AliasType, key: string, value: Buffer, log: LogFn): Promise<void>;
|
|
62
52
|
}
|
|
63
|
-
//# sourceMappingURL=
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2FsbGV0X2RiLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc3RvcmFnZS93YWxsZXRfZGIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BELE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ25ELE9BQU8sS0FBSyxFQUFFLGlCQUFpQixFQUFpQixNQUFNLGlCQUFpQixDQUFDO0FBQ3hFLE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzlELE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2hFLE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRy9DLE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXRELGVBQU8sTUFBTSxPQUFPLHdGQUF5RixDQUFDO0FBQzlHLE1BQU0sTUFBTSxTQUFTLEdBQUcsQ0FBQyxPQUFPLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBRWpELHFCQUFhLFFBQVE7O0lBS25CLE9BQU8sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFXO0lBRWxDLE9BQU8sQ0FBQyxVQUFVLENBQTZCO0lBRS9DLE1BQU0sQ0FBQyxXQUFXLGFBTWpCO0lBRUssSUFBSSxDQUFDLEtBQUssRUFBRSxpQkFBaUIsaUJBTWxDO1lBRWEsaUJBQWlCO0lBSXpCLG1CQUFtQixDQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEtBQUssaUJBUzNHO0lBRUssa0JBQWtCLENBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUUsS0FBSzs7OztPQVkzRDtJQUVLLFlBQVksQ0FDaEIsT0FBTyxFQUFFLFlBQVksRUFDckIsRUFDRSxJQUFJLEVBQ0osU0FBUyxFQUNULElBQUksRUFDSixLQUFLLEVBQ0wsU0FBUyxFQUNWLEVBQUU7UUFBRSxJQUFJLEVBQUUsV0FBVyxDQUFDO1FBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQztRQUFDLElBQUksRUFBRSxFQUFFLENBQUM7UUFBQyxLQUFLLEVBQUUsTUFBTSxHQUFHLFNBQVMsQ0FBQztRQUFDLFNBQVMsRUFBRSxNQUFNLEdBQUcsU0FBUyxDQUFBO0tBQUUsRUFDM0csR0FBRyxFQUFFLEtBQUssaUJBZ0JYO0lBRUssV0FBVyxDQUFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsS0FBSyxpQkFLakU7SUFFSyxhQUFhLENBQUMsT0FBTyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLEVBQUUsTUFBTSxpQkFXMUY7SUFFSyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLEVBQUUsTUFBTSxpQkFRdEU7SUFFSyxPQUFPLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRTtRQUFFLE1BQU0sRUFBRSxNQUFNLENBQUE7S0FBRSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLEVBQUUsTUFBTSxpQkFRdkU7SUFFRCxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsTUFBTSxVQU0zQjtJQUVNLHNCQUFzQixDQUFDLEdBQUcsRUFBRSxNQUFNLFVBWXhDO0lBRUssYUFBYSxDQUFDLEdBQUcsRUFBRSxNQUFNLG1CQVc5QjtJQUVLLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxTQUFTOzs7U0FXakM7SUFFSyxvQkFBb0IsQ0FBQyxjQUFjLEVBQUUsWUFBWSxHQUFHLE1BQU0sRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUd0RztJQUVLLHVCQUF1QixDQUFDLGNBQWMsRUFBRSxZQUFZLEdBQUcsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLG9DQU92RjtJQUVLLGVBQWUsQ0FBQyxPQUFPLEVBQUUsWUFBWSxHQUFHLE1BQU07Ozs7O09BU25EO0lBRUssVUFBVSxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxLQUFLLGlCQU12RTtDQUNGIn0=
|
|
@@ -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,
|
|
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;AAG/C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEtD,eAAO,MAAM,OAAO,wFAAyF,CAAC;AAC9G,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC;AAEjD,qBAAa,QAAQ;;IAKnB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAW;IAElC,OAAO,CAAC,UAAU,CAA6B;IAE/C,MAAM,CAAC,WAAW,aAMjB;IAEK,IAAI,CAAC,KAAK,EAAE,iBAAiB,iBAMlC;YAEa,iBAAiB;IAIzB,mBAAmB,CAAC,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,iBAS3G;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,iBAgBX;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,iBAW1F;IAEK,gBAAgB,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,MAAM,iBAQtE;IAEK,OAAO,CAAC,EAAE,MAAM,EAAE,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,MAAM,iBAQvE;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,5 +1,4 @@
|
|
|
1
|
-
import { Fr } from '@aztec/foundation/
|
|
2
|
-
import { GasSettings } from '@aztec/stdlib/gas';
|
|
1
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
3
2
|
import { extractECDSAPublicKeyFromBase64String } from '../utils/ecdsa.js';
|
|
4
3
|
export const Aliases = [
|
|
5
4
|
'accounts',
|
|
@@ -13,7 +12,6 @@ export class WalletDB {
|
|
|
13
12
|
#accounts;
|
|
14
13
|
#aliases;
|
|
15
14
|
#bridgedFeeJuice;
|
|
16
|
-
#transactions;
|
|
17
15
|
static instance;
|
|
18
16
|
aliasCache = new Map();
|
|
19
17
|
static getInstance() {
|
|
@@ -26,7 +24,6 @@ export class WalletDB {
|
|
|
26
24
|
this.#accounts = store.openMap('accounts');
|
|
27
25
|
this.#aliases = store.openMap('aliases');
|
|
28
26
|
this.#bridgedFeeJuice = store.openMap('bridgedFeeJuice');
|
|
29
|
-
this.#transactions = store.openMap('transactions');
|
|
30
27
|
await this.refreshAliasCache();
|
|
31
28
|
}
|
|
32
29
|
async refreshAliasCache() {
|
|
@@ -100,32 +97,14 @@ export class WalletDB {
|
|
|
100
97
|
log(`Authorization witness stored in database with alias${alias ? `es last & ${alias}` : ' last'}`);
|
|
101
98
|
await this.refreshAliasCache();
|
|
102
99
|
}
|
|
103
|
-
async storeTx({ txHash
|
|
100
|
+
async storeTx({ txHash }, log, alias) {
|
|
104
101
|
if (alias) {
|
|
105
102
|
await this.#aliases.set(`transactions:${alias}`, Buffer.from(txHash.toString()));
|
|
106
103
|
}
|
|
107
|
-
await this.#transactions.set(`${txHash.toString()}:txNonce`, txNonce.toBuffer());
|
|
108
|
-
await this.#transactions.set(`${txHash.toString()}:cancellable`, Buffer.from(cancellable ? 'true' : 'false'));
|
|
109
|
-
await this.#transactions.set(`${txHash.toString()}:gasSettings`, gasSettings.toBuffer());
|
|
110
104
|
await this.#aliases.set(`transactions:last`, Buffer.from(txHash.toString()));
|
|
111
105
|
log(`Transaction hash stored in database with alias${alias ? `es last & ${alias}` : ' last'}`);
|
|
112
106
|
await this.refreshAliasCache();
|
|
113
107
|
}
|
|
114
|
-
async retrieveTxData(txHash) {
|
|
115
|
-
const txNonceBuffer = await this.#transactions.getAsync(`${txHash.toString()}:txNonce`);
|
|
116
|
-
if (!txNonceBuffer) {
|
|
117
|
-
throw new Error(`Could not find ${txHash.toString()}:txNonce. Transaction with hash "${txHash.toString()}" does not exist on this wallet.`);
|
|
118
|
-
}
|
|
119
|
-
const txNonce = Fr.fromBuffer(txNonceBuffer);
|
|
120
|
-
const cancellable = (await this.#transactions.getAsync(`${txHash.toString()}:cancellable`)).toString() === 'true';
|
|
121
|
-
const gasBuffer = await this.#transactions.getAsync(`${txHash.toString()}:gasSettings`);
|
|
122
|
-
return {
|
|
123
|
-
txHash,
|
|
124
|
-
txNonce,
|
|
125
|
-
cancellable,
|
|
126
|
-
gasSettings: GasSettings.fromBuffer(gasBuffer)
|
|
127
|
-
};
|
|
128
|
-
}
|
|
129
108
|
tryRetrieveAlias(arg) {
|
|
130
109
|
try {
|
|
131
110
|
return this.retrieveAliasFromCache(arg);
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import
|
|
1
|
+
import type { ContractArtifact } from '@aztec/aztec.js/abi';
|
|
2
|
+
import type { AztecAddress } from '@aztec/aztec.js/addresses';
|
|
2
3
|
import type { LogFn } from '@aztec/foundation/log';
|
|
3
4
|
import type { OffchainEffect } from '@aztec/stdlib/tx';
|
|
4
5
|
export declare function printAuthorizations(offchainEffects: OffchainEffect[], artifactRetriever: (address: AztecAddress) => Promise<ContractArtifact | undefined>, log: LogFn): Promise<void>;
|
|
5
|
-
//# sourceMappingURL=
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aG9yaXphdGlvbnMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9hdXRob3JpemF0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzVELE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRTlELE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRW5ELE9BQU8sS0FBSyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBSXZELHdCQUFzQixtQkFBbUIsQ0FDdkMsZUFBZSxFQUFFLGNBQWMsRUFBRSxFQUNqQyxpQkFBaUIsRUFBRSxDQUFDLE9BQU8sRUFBRSxZQUFZLEtBQUssT0FBTyxDQUFDLGdCQUFnQixHQUFHLFNBQVMsQ0FBQyxFQUNuRixHQUFHLEVBQUUsS0FBSyxpQkFzQ1gifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authorizations.d.ts","sourceRoot":"","sources":["../../src/utils/authorizations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"authorizations.d.ts","sourceRoot":"","sources":["../../src/utils/authorizations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAE9D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAEnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAIvD,wBAAsB,mBAAmB,CACvC,eAAe,EAAE,cAAc,EAAE,EACjC,iBAAiB,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,EACnF,GAAG,EAAE,KAAK,iBAsCX"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { CallAuthorizationRequest } from '@aztec/aztec.js';
|
|
1
|
+
import { CallAuthorizationRequest } from '@aztec/aztec.js/authorization';
|
|
2
2
|
import { decodeFromAbi, getFunctionArtifact } from '@aztec/stdlib/abi';
|
|
3
3
|
import { format } from 'util';
|
|
4
4
|
export async function printAuthorizations(offchainEffects, artifactRetriever, log) {
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { AztecNode } from '@aztec/stdlib/interfaces/client';
|
|
2
|
+
import { CLIWallet } from './wallet.js';
|
|
3
|
+
export declare const DEFAULT_TX_TIMEOUT_S = 180;
|
|
4
|
+
export declare class CliWalletAndNodeWrapper {
|
|
5
|
+
private _wallet;
|
|
6
|
+
private _node;
|
|
7
|
+
constructor();
|
|
8
|
+
get wallet(): CLIWallet;
|
|
9
|
+
get node(): AztecNode;
|
|
10
|
+
setNodeAndWallet(node: AztecNode, wallet: CLIWallet): void;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpX3dhbGxldF9hbmRfbm9kZV93cmFwcGVyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvY2xpX3dhbGxldF9hbmRfbm9kZV93cmFwcGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRWpFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFeEMsZUFBTyxNQUFNLG9CQUFvQixNQUFNLENBQUM7QUFNeEMscUJBQWEsdUJBQXVCO0lBQ2xDLE9BQU8sQ0FBQyxPQUFPLENBQXdCO0lBQ3ZDLE9BQU8sQ0FBQyxLQUFLLENBQXdCO0lBRXJDLGNBQWdCO0lBRWhCLElBQUksTUFBTSxjQUtUO0lBRUQsSUFBSSxJQUFJLElBQUksU0FBUyxDQUtwQjtJQUVELGdCQUFnQixDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFNBQVMsUUFHbEQ7Q0FDRiJ9
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli_wallet_and_node_wrapper.d.ts","sourceRoot":"","sources":["../../src/utils/cli_wallet_and_node_wrapper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAEjE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,eAAO,MAAM,oBAAoB,MAAM,CAAC;AAMxC,qBAAa,uBAAuB;IAClC,OAAO,CAAC,OAAO,CAAwB;IACvC,OAAO,CAAC,KAAK,CAAwB;IAErC,cAAgB;IAEhB,IAAI,MAAM,cAKT;IAED,IAAI,IAAI,IAAI,SAAS,CAKpB;IAED,gBAAgB,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,QAGlD;CACF"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export const DEFAULT_TX_TIMEOUT_S = 180;
|
|
2
|
+
/*
|
|
3
|
+
* Wrapper class for CLIWallet and AztecNode, avoids initialization issues due to closures when providing CLIWallet
|
|
4
|
+
* and AztecNode to injected commander.js commands
|
|
5
|
+
*/ export class CliWalletAndNodeWrapper {
|
|
6
|
+
_wallet;
|
|
7
|
+
_node;
|
|
8
|
+
constructor(){}
|
|
9
|
+
get wallet() {
|
|
10
|
+
if (!this._wallet) {
|
|
11
|
+
throw new Error('Wallet not initialized while it should have been initialized in preSubcommand');
|
|
12
|
+
}
|
|
13
|
+
return this._wallet;
|
|
14
|
+
}
|
|
15
|
+
get node() {
|
|
16
|
+
if (!this._node) {
|
|
17
|
+
throw new Error('Node not initialized while it should have been initialized in preSubcommand');
|
|
18
|
+
}
|
|
19
|
+
return this._node;
|
|
20
|
+
}
|
|
21
|
+
setNodeAndWallet(node, wallet) {
|
|
22
|
+
this._node = node;
|
|
23
|
+
this._wallet = wallet;
|
|
24
|
+
}
|
|
25
|
+
}
|
package/dest/utils/ecdsa.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export declare function extractECDSAPublicKeyFromBase64String(base64PublicKey: string): Buffer;
|
|
2
|
-
//# sourceMappingURL=
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNkc2EuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9lY2RzYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx3QkFBZ0IscUNBQXFDLENBQUMsZUFBZSxFQUFFLE1BQU0sR0FBRyxNQUFNLENBY3JGIn0=
|
|
@@ -1,41 +1,35 @@
|
|
|
1
|
-
import
|
|
1
|
+
import type { FeePaymentMethod } from '@aztec/aztec.js/fee';
|
|
2
|
+
import type { AztecNode } from '@aztec/aztec.js/node';
|
|
3
|
+
import type { Wallet } from '@aztec/aztec.js/wallet';
|
|
2
4
|
import type { LogFn } from '@aztec/foundation/log';
|
|
5
|
+
import type { FieldsOf } from '@aztec/foundation/types';
|
|
6
|
+
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
3
7
|
import { GasFees, GasSettings } from '@aztec/stdlib/gas';
|
|
8
|
+
import type { FeeOptions } from '@aztec/wallet-sdk/base-wallet';
|
|
4
9
|
import { Option } from 'commander';
|
|
5
10
|
import type { WalletDB } from '../../storage/wallet_db.js';
|
|
6
|
-
export type
|
|
11
|
+
export type RawCliFeeArgs = {
|
|
7
12
|
estimateGasOnly: boolean;
|
|
8
13
|
gasLimits?: string;
|
|
9
14
|
payment?: string;
|
|
10
15
|
maxFeesPerGas?: string;
|
|
11
16
|
maxPriorityFeesPerGas?: string;
|
|
12
|
-
estimateGas?: boolean;
|
|
13
17
|
};
|
|
14
|
-
export
|
|
15
|
-
|
|
16
|
-
gasSettings
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
export declare function
|
|
21
|
-
export declare class
|
|
18
|
+
export type ParsedFeeOptions = {
|
|
19
|
+
paymentMethod?: FeePaymentMethod;
|
|
20
|
+
gasSettings?: Partial<FieldsOf<GasSettings>>;
|
|
21
|
+
};
|
|
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>;
|
|
24
|
+
export declare function parseGasFees(gasFees: string): GasFees;
|
|
25
|
+
export declare class CLIFeeArgs {
|
|
22
26
|
estimateOnly: boolean;
|
|
23
|
-
|
|
24
|
-
private
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
toSendOpts(sender: AccountWallet): Promise<SendMethodOptions>;
|
|
29
|
-
toDeployAccountOpts(sender: AccountWallet): Promise<DeployAccountOptions>;
|
|
30
|
-
static paymentMethodOption(): Option;
|
|
27
|
+
private paymentMethod;
|
|
28
|
+
private gasSettings;
|
|
29
|
+
constructor(estimateOnly: boolean, paymentMethod: (wallet: Wallet, feePayer: AztecAddress, gasSettings: GasSettings) => Promise<FeePaymentMethod | undefined>, gasSettings: Partial<FieldsOf<GasSettings>>);
|
|
30
|
+
toUserFeeOptions(node: AztecNode, wallet: Wallet, from: AztecAddress): Promise<ParsedFeeOptions>;
|
|
31
|
+
static parse(args: RawCliFeeArgs, log: LogFn, db?: WalletDB): CLIFeeArgs;
|
|
31
32
|
static getOptions(): Option[];
|
|
32
|
-
static fromCli(args: CliFeeArgs, pxe: PXE, log: LogFn, db?: WalletDB): Promise<FeeOpts>;
|
|
33
33
|
}
|
|
34
|
-
export declare
|
|
35
|
-
|
|
36
|
-
static getOptions(): Option[];
|
|
37
|
-
static fromCli(args: CliFeeArgs, pxe: PXE, log: LogFn, db?: WalletDB): Promise<FeeOptsWithFeePayer>;
|
|
38
|
-
}
|
|
39
|
-
export declare function parsePaymentMethod(payment: string, allowCustomFeePayer: boolean, log: LogFn, db?: WalletDB): (sender: AccountWallet) => Promise<FeePaymentMethod>;
|
|
40
|
-
export declare function parseGasFees(gasFees: string): GasFees;
|
|
41
|
-
//# sourceMappingURL=fees.d.ts.map
|
|
34
|
+
export declare function printGasEstimates(feeOpts: FeeOptions, gasEstimates: Pick<GasSettings, 'gasLimits' | 'teardownGasLimits'>, log: LogFn): void;
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVlcy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3V0aWxzL29wdGlvbnMvZmVlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzVELE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3RELE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXJELE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ25ELE9BQU8sS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRCxPQUFPLEVBQU8sT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzlELE9BQU8sS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRWhFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFbkMsT0FBTyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFJM0QsTUFBTSxNQUFNLGFBQWEsR0FBRztJQUMxQixlQUFlLEVBQUUsT0FBTyxDQUFDO0lBQ3pCLFNBQVMsQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUNuQixPQUFPLENBQUMsRUFBRSxNQUFNLENBQUM7SUFDakIsYUFBYSxDQUFDLEVBQUUsTUFBTSxDQUFDO0lBQ3ZCLHFCQUFxQixDQUFDLEVBQUUsTUFBTSxDQUFDO0NBQ2hDLENBQUM7QUFFRixNQUFNLE1BQU0sZ0JBQWdCLEdBQUc7SUFDN0IsYUFBYSxDQUFDLEVBQUUsZ0JBQWdCLENBQUM7SUFDakMsV0FBVyxDQUFDLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0NBQzlDLENBQUM7QUF5REYsd0JBQWdCLHNCQUFzQixXQUdyQztBQTBCRCx3QkFBZ0Isa0JBQWtCLENBQ2hDLE9BQU8sRUFBRSxNQUFNLEVBQ2YsR0FBRyxFQUFFLEtBQUssRUFDVixFQUFFLENBQUMsRUFBRSxRQUFRLEdBQ1osQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLFdBQVcsS0FBSyxPQUFPLENBQUMsZ0JBQWdCLEdBQUcsU0FBUyxDQUFDLENBK0V6RztBQXlCRCx3QkFBZ0IsWUFBWSxDQUFDLE9BQU8sRUFBRSxNQUFNLEdBQUcsT0FBTyxDQWtCckQ7QUFDRCxxQkFBYSxVQUFVO0lBRVosWUFBWSxFQUFFLE9BQU87SUFDNUIsT0FBTyxDQUFDLGFBQWE7SUFLckIsT0FBTyxDQUFDLFdBQVc7SUFQckIsWUFDUyxZQUFZLEVBQUUsT0FBTyxFQUNwQixhQUFhLEVBQUUsQ0FDckIsTUFBTSxFQUFFLE1BQU0sRUFDZCxRQUFRLEVBQUUsWUFBWSxFQUN0QixXQUFXLEVBQUUsV0FBVyxLQUNyQixPQUFPLENBQUMsZ0JBQWdCLEdBQUcsU0FBUyxDQUFDLEVBQ2xDLFdBQVcsRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQ2pEO0lBRUUsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxZQUFZLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBUXJHO0lBRUQsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLEVBQUUsUUFBUSxHQUFHLFVBQVUsQ0FNdkU7SUFFRCxNQUFNLENBQUMsVUFBVSxhQUVoQjtDQUNGO0FBSUQsd0JBQWdCLGlCQUFpQixDQUMvQixPQUFPLEVBQUUsVUFBVSxFQUNuQixZQUFZLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxXQUFXLEdBQUcsbUJBQW1CLENBQUMsRUFDbEUsR0FBRyxFQUFFLEtBQUssUUFJWCJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fees.d.ts","sourceRoot":"","sources":["../../../src/utils/options/fees.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
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,CA+EzG;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,33 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { Fr } from '@aztec/foundation/fields';
|
|
1
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
3
2
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
4
3
|
import { Gas, GasFees, GasSettings } from '@aztec/stdlib/gas';
|
|
5
4
|
import { Option } from 'commander';
|
|
6
|
-
import {
|
|
5
|
+
import { MIN_FEE_PADDING } from '../wallet.js';
|
|
7
6
|
import { aliasedAddressParser } from './options.js';
|
|
8
|
-
export function printGasEstimates(feeOpts, gasEstimates, log) {
|
|
9
|
-
log(`Estimated gas usage: ${formatGasEstimate(gasEstimates)}`);
|
|
10
|
-
log(`Maximum total tx fee: ${getEstimatedCost(gasEstimates, feeOpts.gasSettings.maxFeesPerGas)}`);
|
|
11
|
-
}
|
|
12
|
-
function formatGasEstimate(estimate) {
|
|
13
|
-
return `da=${estimate.gasLimits.daGas},l2=${estimate.gasLimits.l2Gas},teardownDA=${estimate.teardownGasLimits.daGas},teardownL2=${estimate.teardownGasLimits.l2Gas}`;
|
|
14
|
-
}
|
|
15
|
-
function getEstimatedCost(estimate, maxFeesPerGas) {
|
|
16
|
-
return GasSettings.default({
|
|
17
|
-
...estimate,
|
|
18
|
-
maxFeesPerGas
|
|
19
|
-
}).getFeeLimit().toBigInt();
|
|
20
|
-
}
|
|
21
|
-
async function parseGasSettings(args, pxe) {
|
|
22
|
-
const gasLimits = args.gasLimits ? parseGasLimits(args.gasLimits) : {};
|
|
23
|
-
const maxFeesPerGas = args.maxFeesPerGas ? parseGasFees(args.maxFeesPerGas) : await pxe.getCurrentBaseFees();
|
|
24
|
-
const maxPriorityFeesPerGas = args.maxPriorityFeesPerGas ? parseGasFees(args.maxPriorityFeesPerGas) : undefined;
|
|
25
|
-
return GasSettings.default({
|
|
26
|
-
...gasLimits,
|
|
27
|
-
maxFeesPerGas,
|
|
28
|
-
maxPriorityFeesPerGas
|
|
29
|
-
});
|
|
30
|
-
}
|
|
31
7
|
function printOptionParams(params) {
|
|
32
8
|
const paramsWithDescription = Object.keys(params).filter((name)=>params[name].description);
|
|
33
9
|
const maxParamWidth = paramsWithDescription.reduce((v, name)=>Math.max(v, name.length), 0);
|
|
@@ -38,20 +14,13 @@ function printOptionParams(params) {
|
|
|
38
14
|
].join(' '));
|
|
39
15
|
return descriptionList.length ? `\n Parameters:\n${descriptionList.join('\n')}\nFormat: --payment ${Object.keys(params).slice(0, 3).map((name)=>`${name}=${params[name].type}`)} ${Object.keys(params).length > 3 ? '...' : ''}` : '';
|
|
40
16
|
}
|
|
41
|
-
function getFeePaymentMethodParams(
|
|
42
|
-
const feePayer = allowCustomFeePayer ? {
|
|
43
|
-
type: 'address',
|
|
44
|
-
description: 'The account paying the fee.'
|
|
45
|
-
} : undefined;
|
|
17
|
+
function getFeePaymentMethodParams() {
|
|
46
18
|
return {
|
|
47
19
|
method: {
|
|
48
20
|
type: 'name',
|
|
49
21
|
description: 'Valid values: "fee_juice", "fpc-public", "fpc-private", "fpc-sponsored"',
|
|
50
22
|
default: 'fee_juice'
|
|
51
23
|
},
|
|
52
|
-
...feePayer ? {
|
|
53
|
-
feePayer
|
|
54
|
-
} : {},
|
|
55
24
|
asset: {
|
|
56
25
|
type: 'address',
|
|
57
26
|
description: 'The asset used for fee payment. Required for "fpc-public" and "fpc-private".'
|
|
@@ -75,109 +44,33 @@ function getFeePaymentMethodParams(allowCustomFeePayer) {
|
|
|
75
44
|
messageLeafIndex: {
|
|
76
45
|
type: 'bigint',
|
|
77
46
|
description: 'The index of the claim in the l1toL2Message tree.'
|
|
78
|
-
},
|
|
79
|
-
feeRecipient: {
|
|
80
|
-
type: 'string',
|
|
81
|
-
description: 'Recipient of the fee.'
|
|
82
47
|
}
|
|
83
48
|
};
|
|
84
49
|
}
|
|
85
|
-
function getPaymentMethodOption(
|
|
86
|
-
const params = getFeePaymentMethodParams(
|
|
50
|
+
export function getPaymentMethodOption() {
|
|
51
|
+
const params = getFeePaymentMethodParams();
|
|
87
52
|
return new Option(`--payment <options>`, `Fee payment method and arguments.${printOptionParams(params)}`);
|
|
88
53
|
}
|
|
89
|
-
function getFeeOptions(
|
|
54
|
+
function getFeeOptions() {
|
|
90
55
|
return [
|
|
91
|
-
getPaymentMethodOption(
|
|
56
|
+
getPaymentMethodOption(),
|
|
92
57
|
new Option('--gas-limits <da=100,l2=100,teardownDA=10,teardownL2=10>', 'Gas limits for the tx.'),
|
|
93
58
|
new Option('--max-fees-per-gas <da=100,l2=100>', 'Maximum fees per gas unit for DA and L2 computation.'),
|
|
94
59
|
new Option('--max-priority-fees-per-gas <da=0,l2=0>', 'Maximum priority fees per gas unit for DA and L2 computation.'),
|
|
95
|
-
new Option('--estimate-gas', 'Whether to automatically estimate gas limits for the tx.'),
|
|
96
60
|
new Option('--estimate-gas-only', 'Only report gas estimation for the tx, do not send it.')
|
|
97
61
|
];
|
|
98
62
|
}
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
this.paymentMethodFactory = paymentMethodFactory;
|
|
109
|
-
this.getDeployWallet = getDeployWallet;
|
|
110
|
-
this.estimateGas = estimateGas;
|
|
111
|
-
}
|
|
112
|
-
async toSendOpts(sender) {
|
|
113
|
-
return {
|
|
114
|
-
from: sender.getAddress(),
|
|
115
|
-
fee: {
|
|
116
|
-
estimateGas: this.estimateGas,
|
|
117
|
-
gasSettings: this.gasSettings,
|
|
118
|
-
paymentMethod: await this.paymentMethodFactory(sender)
|
|
119
|
-
}
|
|
120
|
-
};
|
|
121
|
-
}
|
|
122
|
-
async toDeployAccountOpts(sender) {
|
|
123
|
-
const paymentMethod = await this.paymentMethodFactory(sender);
|
|
124
|
-
const deployWallet = await this.getDeployWallet(sender, paymentMethod);
|
|
125
|
-
return {
|
|
126
|
-
deployWallet,
|
|
127
|
-
fee: {
|
|
128
|
-
estimateGas: this.estimateGas,
|
|
129
|
-
gasSettings: this.gasSettings,
|
|
130
|
-
paymentMethod
|
|
131
|
-
}
|
|
132
|
-
};
|
|
133
|
-
}
|
|
134
|
-
static paymentMethodOption() {
|
|
135
|
-
return getPaymentMethodOption(false);
|
|
136
|
-
}
|
|
137
|
-
static getOptions() {
|
|
138
|
-
return getFeeOptions(false);
|
|
139
|
-
}
|
|
140
|
-
static async fromCli(args, pxe, log, db) {
|
|
141
|
-
const estimateOnly = args.estimateGasOnly;
|
|
142
|
-
const gasSettings = await parseGasSettings(args, pxe);
|
|
143
|
-
const defaultPaymentMethod = async (sender)=>{
|
|
144
|
-
const { FeeJuicePaymentMethod } = await import('@aztec/aztec.js/fee');
|
|
145
|
-
return new FeeJuicePaymentMethod(sender.getAddress());
|
|
146
|
-
};
|
|
147
|
-
const getDeployWallet = ()=>{
|
|
148
|
-
// Returns undefined. The sender's wallet will be used by default.
|
|
149
|
-
return Promise.resolve(undefined);
|
|
150
|
-
};
|
|
151
|
-
return new FeeOpts(estimateOnly, gasSettings, args.payment ? parsePaymentMethod(args.payment, false, log, db) : defaultPaymentMethod, getDeployWallet, !!args.estimateGas);
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
export class FeeOptsWithFeePayer extends FeeOpts {
|
|
155
|
-
static paymentMethodOption() {
|
|
156
|
-
return getPaymentMethodOption(true);
|
|
157
|
-
}
|
|
158
|
-
static getOptions() {
|
|
159
|
-
return getFeeOptions(true);
|
|
160
|
-
}
|
|
161
|
-
static async fromCli(args, pxe, log, db) {
|
|
162
|
-
const estimateOnly = args.estimateGasOnly;
|
|
163
|
-
const gasSettings = await parseGasSettings(args, pxe);
|
|
164
|
-
const defaultPaymentMethod = async (sender)=>{
|
|
165
|
-
const { FeeJuicePaymentMethod } = await import('@aztec/aztec.js/fee');
|
|
166
|
-
return new FeeJuicePaymentMethod(sender.getAddress());
|
|
167
|
-
};
|
|
168
|
-
const getDeployWallet = async (sender, paymentMethod)=>{
|
|
169
|
-
if (paymentMethod instanceof FeeJuicePaymentMethod) {
|
|
170
|
-
const feePayer = await paymentMethod.getFeePayer();
|
|
171
|
-
if (!sender.getAddress().equals(feePayer)) {
|
|
172
|
-
return (await createOrRetrieveAccount(pxe, feePayer, db)).getWallet();
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
return undefined;
|
|
176
|
-
};
|
|
177
|
-
return new FeeOptsWithFeePayer(estimateOnly, gasSettings, args.payment ? parsePaymentMethod(args.payment, true, log, db) : defaultPaymentMethod, getDeployWallet, !!args.estimateGas);
|
|
178
|
-
}
|
|
63
|
+
function parseGasSettings(args) {
|
|
64
|
+
const gasLimits = args.gasLimits ? parseGasLimits(args.gasLimits) : {};
|
|
65
|
+
const maxFeesPerGas = args.maxFeesPerGas ? parseGasFees(args.maxFeesPerGas) : undefined;
|
|
66
|
+
const maxPriorityFeesPerGas = args.maxPriorityFeesPerGas ? parseGasFees(args.maxPriorityFeesPerGas) : undefined;
|
|
67
|
+
return {
|
|
68
|
+
...gasLimits,
|
|
69
|
+
maxFeesPerGas,
|
|
70
|
+
maxPriorityFeesPerGas
|
|
71
|
+
};
|
|
179
72
|
}
|
|
180
|
-
export function parsePaymentMethod(payment,
|
|
73
|
+
export function parsePaymentMethod(payment, log, db) {
|
|
181
74
|
const parsed = payment.split(',').reduce((acc, item)=>{
|
|
182
75
|
const [dimension, value] = item.split('=');
|
|
183
76
|
acc[dimension] = value ?? 1;
|
|
@@ -195,29 +88,27 @@ export function parsePaymentMethod(payment, allowCustomFeePayer, log, db) {
|
|
|
195
88
|
}
|
|
196
89
|
return AztecAddress.fromString(parsed.asset);
|
|
197
90
|
};
|
|
198
|
-
return async (
|
|
91
|
+
return async (wallet, from, gasSettings)=>{
|
|
199
92
|
switch(parsed.method){
|
|
200
93
|
case 'fee_juice':
|
|
201
94
|
{
|
|
202
95
|
if (parsed.claim || parsed.claimSecret && parsed.claimAmount && parsed.messageLeafIndex) {
|
|
203
96
|
let claimAmount, claimSecret, messageLeafIndex;
|
|
204
97
|
if (parsed.claim && db) {
|
|
205
|
-
({ amount: claimAmount, secret: claimSecret, leafIndex: messageLeafIndex } = await db.popBridgedFeeJuice(
|
|
98
|
+
({ amount: claimAmount, secret: claimSecret, leafIndex: messageLeafIndex } = await db.popBridgedFeeJuice(from, log));
|
|
206
99
|
} else {
|
|
207
100
|
({ claimAmount, claimSecret, messageLeafIndex } = parsed);
|
|
208
101
|
}
|
|
209
102
|
log(`Using Fee Juice for fee payments with claim for ${claimAmount} tokens`);
|
|
210
103
|
const { FeeJuicePaymentMethodWithClaim } = await import('@aztec/aztec.js/fee');
|
|
211
|
-
return new FeeJuicePaymentMethodWithClaim(
|
|
104
|
+
return new FeeJuicePaymentMethodWithClaim(from, {
|
|
212
105
|
claimAmount: (typeof claimAmount === 'string' ? Fr.fromHexString(claimAmount) : new Fr(claimAmount)).toBigInt(),
|
|
213
106
|
claimSecret: Fr.fromHexString(claimSecret),
|
|
214
107
|
messageLeafIndex: BigInt(messageLeafIndex)
|
|
215
108
|
});
|
|
216
109
|
} else {
|
|
217
|
-
log(`Using Fee Juice for fee payment`);
|
|
218
|
-
|
|
219
|
-
const feePayer = parsed.feePayer && allowCustomFeePayer ? aliasedAddressParser('accounts', parsed.feePayer, db) : sender.getAddress();
|
|
220
|
-
return new FeeJuicePaymentMethod(feePayer);
|
|
110
|
+
log(`Using Fee Juice for fee payment with the balance of account ${from}`);
|
|
111
|
+
return;
|
|
221
112
|
}
|
|
222
113
|
}
|
|
223
114
|
case 'fpc-public':
|
|
@@ -226,7 +117,7 @@ export function parsePaymentMethod(payment, allowCustomFeePayer, log, db) {
|
|
|
226
117
|
const asset = getAsset();
|
|
227
118
|
log(`Using public fee payment with asset ${asset} via paymaster ${fpc}`);
|
|
228
119
|
const { PublicFeePaymentMethod } = await import('@aztec/aztec.js/fee');
|
|
229
|
-
return new PublicFeePaymentMethod(fpc,
|
|
120
|
+
return new PublicFeePaymentMethod(fpc, from, wallet, gasSettings);
|
|
230
121
|
}
|
|
231
122
|
case 'fpc-private':
|
|
232
123
|
{
|
|
@@ -234,7 +125,7 @@ export function parsePaymentMethod(payment, allowCustomFeePayer, log, db) {
|
|
|
234
125
|
const asset = getAsset();
|
|
235
126
|
log(`Using private fee payment with asset ${asset} via paymaster ${fpc}`);
|
|
236
127
|
const { PrivateFeePaymentMethod } = await import('@aztec/aztec.js/fee');
|
|
237
|
-
return new PrivateFeePaymentMethod(fpc,
|
|
128
|
+
return new PrivateFeePaymentMethod(fpc, from, wallet, gasSettings);
|
|
238
129
|
}
|
|
239
130
|
case 'fpc-sponsored':
|
|
240
131
|
{
|
|
@@ -289,3 +180,45 @@ export function parseGasFees(gasFees) {
|
|
|
289
180
|
}
|
|
290
181
|
return new GasFees(parsed.da, parsed.l2);
|
|
291
182
|
}
|
|
183
|
+
export class CLIFeeArgs {
|
|
184
|
+
estimateOnly;
|
|
185
|
+
paymentMethod;
|
|
186
|
+
gasSettings;
|
|
187
|
+
constructor(estimateOnly, paymentMethod, gasSettings){
|
|
188
|
+
this.estimateOnly = estimateOnly;
|
|
189
|
+
this.paymentMethod = paymentMethod;
|
|
190
|
+
this.gasSettings = gasSettings;
|
|
191
|
+
}
|
|
192
|
+
async toUserFeeOptions(node, wallet, from) {
|
|
193
|
+
const maxFeesPerGas = (await node.getCurrentMinFees()).mul(1 + MIN_FEE_PADDING);
|
|
194
|
+
const gasSettings = GasSettings.default({
|
|
195
|
+
...this.gasSettings,
|
|
196
|
+
maxFeesPerGas
|
|
197
|
+
});
|
|
198
|
+
const paymentMethod = await this.paymentMethod(wallet, from, gasSettings);
|
|
199
|
+
return {
|
|
200
|
+
paymentMethod,
|
|
201
|
+
gasSettings
|
|
202
|
+
};
|
|
203
|
+
}
|
|
204
|
+
static parse(args, log, db) {
|
|
205
|
+
return new CLIFeeArgs(!!args.estimateGasOnly, parsePaymentMethod(args.payment ?? 'method=fee_juice', log, db), parseGasSettings(args));
|
|
206
|
+
}
|
|
207
|
+
static getOptions() {
|
|
208
|
+
return getFeeOptions();
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
// Printing
|
|
212
|
+
export function printGasEstimates(feeOpts, gasEstimates, log) {
|
|
213
|
+
log(`Estimated gas usage: ${formatGasEstimate(gasEstimates)}`);
|
|
214
|
+
log(`Maximum total tx fee: ${getEstimatedCost(gasEstimates, feeOpts.gasSettings.maxFeesPerGas)}`);
|
|
215
|
+
}
|
|
216
|
+
function formatGasEstimate(estimate) {
|
|
217
|
+
return `da=${estimate.gasLimits.daGas},l2=${estimate.gasLimits.l2Gas},teardownDA=${estimate.teardownGasLimits.daGas},teardownL2=${estimate.teardownGasLimits.l2Gas}`;
|
|
218
|
+
}
|
|
219
|
+
function getEstimatedCost(estimate, maxFeesPerGas) {
|
|
220
|
+
return GasSettings.default({
|
|
221
|
+
...estimate,
|
|
222
|
+
maxFeesPerGas
|
|
223
|
+
}).getFeeLimit().toBigInt();
|
|
224
|
+
}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export * from './fees.js';
|
|
2
2
|
export * from './options.js';
|
|
3
|
-
//# sourceMappingURL=
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91dGlscy9vcHRpb25zL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsV0FBVyxDQUFDO0FBQzFCLGNBQWMsY0FBYyxDQUFDIn0=
|
|
@@ -1,13 +1,14 @@
|
|
|
1
|
+
import { TxHash } from '@aztec/aztec.js/tx';
|
|
1
2
|
import { AuthWitness } from '@aztec/stdlib/auth-witness';
|
|
2
3
|
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
3
4
|
import { Option } from 'commander';
|
|
4
5
|
import type { AliasType, WalletDB } from '../../storage/wallet_db.js';
|
|
5
6
|
export declare const ARTIFACT_DESCRIPTION = "Path to a compiled Aztec contract's artifact in JSON format. If executed inside a nargo workspace, a package and contract name can be specified as package@contract";
|
|
6
7
|
export declare function integerArgParser(value: string, argName: string, min?: number, max?: number): number;
|
|
7
|
-
export declare function aliasedTxHashParser(txHash: string, db?: WalletDB):
|
|
8
|
+
export declare function aliasedTxHashParser(txHash: string, db?: WalletDB): TxHash;
|
|
8
9
|
export declare function aliasedAuthWitParser(witnesses: string, db?: WalletDB): AuthWitness[];
|
|
9
10
|
export declare function aliasedAddressParser(defaultPrefix: AliasType, address: string, db?: WalletDB): AztecAddress;
|
|
10
|
-
export declare function aliasedSecretKeyParser(sk: string, db?: WalletDB): import("
|
|
11
|
+
export declare function aliasedSecretKeyParser(sk: string, db?: WalletDB): import("../../../../foundation/dest/schemas/schemas.js").Fr;
|
|
11
12
|
export declare function createAliasOption(description: string, hide: boolean): Option;
|
|
12
13
|
export declare function createAccountOption(description: string, hide: boolean, db?: WalletDB): Option;
|
|
13
14
|
export declare function createAuthwitnessOption(description: string, hide: boolean, db?: WalletDB): Option;
|
|
@@ -20,4 +21,4 @@ export declare function artifactPathParser(filePath: string, db?: WalletDB): Pro
|
|
|
20
21
|
export declare function artifactPathFromPromiseOrAlias(artifactPathPromise: Promise<string>, contractAddress: AztecAddress, db?: WalletDB): Promise<string>;
|
|
21
22
|
export declare function createArtifactOption(db?: WalletDB): Option;
|
|
22
23
|
export declare function cleanupAuthWitnesses(authWitnesses: AuthWitness[] | undefined): AuthWitness[];
|
|
23
|
-
//# sourceMappingURL=
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9ucy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3V0aWxzL29wdGlvbnMvb3B0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFNUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3pELE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRWhFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFHbkMsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBS3RFLGVBQU8sTUFBTSxvQkFBb0Isd0tBQ3NJLENBQUM7QUFFeEssd0JBQWdCLGdCQUFnQixDQUM5QixLQUFLLEVBQUUsTUFBTSxFQUNiLE9BQU8sRUFBRSxNQUFNLEVBQ2YsR0FBRyxTQUEwQixFQUM3QixHQUFHLFNBQTBCLFVBVTlCO0FBRUQsd0JBQWdCLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDLEVBQUUsUUFBUSxHQUFHLE1BQU0sQ0FRekU7QUFFRCx3QkFBZ0Isb0JBQW9CLENBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQUMsRUFBRSxRQUFRLGlCQVlwRTtBQUVELHdCQUFnQixvQkFBb0IsQ0FBQyxhQUFhLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDLEVBQUUsUUFBUSxnQkFRNUY7QUFFRCx3QkFBZ0Isc0JBQXNCLENBQUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQUMsRUFBRSxRQUFRLCtEQVEvRDtBQUVELHdCQUFnQixpQkFBaUIsQ0FBQyxXQUFXLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxPQUFPLFVBRW5FO0FBRUQsd0JBQWdCLG1CQUFtQixDQUFDLFdBQVcsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsRUFBRSxRQUFRLFVBSXBGO0FBRUQsd0JBQWdCLHVCQUF1QixDQUFDLFdBQVcsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsRUFBRSxRQUFRLFVBSXhGO0FBRUQsd0JBQWdCLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxPQUFPLFVBTWxEO0FBRUQsd0JBQWdCLGdCQUFnQixDQUFDLGFBQWEsRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLEVBQUUsUUFBUSxVQVFyRTtBQUVELHdCQUFnQiwyQkFBMkIsQ0FBQyxFQUFFLENBQUMsRUFBRSxRQUFRLFVBSXhEO0FBRUQsd0JBQWdCLGtDQUFrQyxXQUtqRDtBQUVELHdCQUFnQixtQkFBbUIsV0FLbEM7QUFFRCx3QkFBZ0Isa0JBQWtCLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQUMsRUFBRSxRQUFRLG1CQWFqRTtBQUVELHdCQUFzQiw4QkFBOEIsQ0FDbEQsbUJBQW1CLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUNwQyxlQUFlLEVBQUUsWUFBWSxFQUM3QixFQUFFLENBQUMsRUFBRSxRQUFRLG1CQVdkO0FBRUQsd0JBQWdCLG9CQUFvQixDQUFDLEVBQUUsQ0FBQyxFQUFFLFFBQVEsVUFJakQ7QUE2QkQsd0JBQWdCLG9CQUFvQixDQUFDLGFBQWEsRUFBRSxXQUFXLEVBQUUsR0FBRyxTQUFTLEdBQUcsV0FBVyxFQUFFLENBRTVGIn0=
|