@aztec/aztec.js 0.1.0-alpha30 → 0.1.0-alpha31
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/.tsbuildinfo +1 -1
- package/dest/account_impl/account_collection.d.ts +4 -4
- package/dest/account_impl/account_collection.d.ts.map +1 -1
- package/dest/account_impl/account_collection.js +4 -5
- package/dest/account_impl/entrypoint_payload.d.ts +2 -2
- package/dest/account_impl/entrypoint_payload.d.ts.map +1 -1
- package/dest/account_impl/entrypoint_payload.js +4 -4
- package/dest/account_impl/index.d.ts +11 -6
- package/dest/account_impl/index.d.ts.map +1 -1
- package/dest/account_impl/index.js +2 -2
- package/dest/account_impl/single_key_account_contract.d.ts +7 -7
- package/dest/account_impl/single_key_account_contract.d.ts.map +1 -1
- package/dest/account_impl/single_key_account_contract.js +11 -18
- package/dest/account_impl/stored_key_account_contract.d.ts +7 -7
- package/dest/account_impl/stored_key_account_contract.d.ts.map +1 -1
- package/dest/account_impl/stored_key_account_contract.js +11 -18
- package/dest/aztec_rpc_client/wallet.d.ts +5 -5
- package/dest/aztec_rpc_client/wallet.d.ts.map +1 -1
- package/dest/aztec_rpc_client/wallet.js +3 -3
- package/dest/contract/base_contract_interaction.d.ts +46 -0
- package/dest/contract/base_contract_interaction.d.ts.map +1 -0
- package/dest/contract/base_contract_interaction.js +37 -0
- package/dest/contract/batch_call.d.ts +16 -0
- package/dest/contract/batch_call.d.ts.map +1 -0
- package/dest/contract/batch_call.js +22 -0
- package/dest/contract/contract.test.js +6 -7
- package/dest/contract/contract_function_interaction.d.ts +10 -47
- package/dest/contract/contract_function_interaction.d.ts.map +1 -1
- package/dest/contract/contract_function_interaction.js +14 -59
- package/dest/contract/index.d.ts +1 -0
- package/dest/contract/index.d.ts.map +1 -1
- package/dest/contract/index.js +2 -1
- package/dest/contract_deployer/deploy_method.d.ts +8 -15
- package/dest/contract_deployer/deploy_method.d.ts.map +1 -1
- package/dest/contract_deployer/deploy_method.js +28 -53
- package/dest/contract_deployer/deploy_sent_tx.js +2 -2
- package/dest/index.d.ts +1 -1
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +2 -2
- package/dest/main.js +1 -1
- package/dest/utils/defaults.d.ts +5 -0
- package/dest/utils/defaults.d.ts.map +1 -0
- package/dest/utils/defaults.js +5 -0
- package/package.json +4 -4
- package/src/account_impl/account_collection.ts +8 -9
- package/src/account_impl/entrypoint_payload.ts +5 -5
- package/src/account_impl/index.ts +12 -6
- package/src/account_impl/single_key_account_contract.ts +12 -23
- package/src/account_impl/stored_key_account_contract.ts +17 -24
- package/src/aztec_rpc_client/wallet.ts +8 -9
- package/src/contract/base_contract_interaction.ts +62 -0
- package/src/contract/batch_call.ts +22 -0
- package/src/contract/contract.test.ts +5 -8
- package/src/contract/contract_function_interaction.ts +15 -82
- package/src/contract/index.ts +1 -0
- package/src/contract_deployer/deploy_method.ts +31 -62
- package/src/contract_deployer/deploy_sent_tx.ts +1 -1
- package/src/index.ts +2 -2
- package/src/utils/defaults.ts +4 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entrypoint_payload.d.ts","sourceRoot":"","sources":["../../src/account_impl/entrypoint_payload.ts"],"names":[],"mappings":";AAAA,OAAO,EAAgB,EAAE,EAAE,MAAM,oBAAoB,CAAC;AAGtD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"entrypoint_payload.d.ts","sourceRoot":"","sources":["../../src/account_impl/entrypoint_payload.ts"],"names":[],"mappings":";AAAA,OAAO,EAAgB,EAAE,EAAE,MAAM,oBAAoB,CAAC;AAGtD,OAAO,EAAE,YAAY,EAAE,eAAe,EAAqB,MAAM,cAAc,CAAC;AAMhF,0DAA0D;AAC1D,MAAM,MAAM,iBAAiB,GAAG;IAE9B,4CAA4C;IAC5C,qBAAqB,EAAE,EAAE,EAAE,CAAC;IAE5B,4CAA4C;IAC5C,mBAAmB,EAAE,EAAE,EAAE,CAAC;IAE1B,mDAAmD;IACnD,iBAAiB,EAAE,EAAE,EAAE,CAAC;IACxB,oCAAoC;IACpC,KAAK,EAAE,EAAE,CAAC;CACX,CAAC;AAEF,sFAAsF;AACtF,wBAAsB,YAAY,CAChC,YAAY,EAAE,YAAY,EAAE,EAC5B,WAAW,EAAE,YAAY,EAAE,GAC1B,OAAO,CAAC;IACT,8CAA8C;IAC9C,OAAO,EAAE,iBAAiB,CAAC;IAC3B,+CAA+C;IAC/C,eAAe,EAAE,eAAe,EAAE,CAAC;CACpC,CAAC,CA2BD;AAED,wDAAwD;AACxD,wBAAgB,WAAW,CAAC,OAAO,EAAE,iBAAiB,UAGrD;AAED,qCAAqC;AACrC,wBAAgB,cAAc,CAAC,OAAO,EAAE,iBAAiB,QAOxD"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { CircuitsWasm, Fr } from '@aztec/circuits.js';
|
|
2
2
|
import { padArrayEnd } from '@aztec/foundation/collection';
|
|
3
3
|
import { sha256 } from '@aztec/foundation/crypto';
|
|
4
|
-
import { PackedArguments,
|
|
4
|
+
import { PackedArguments, emptyFunctionCall } from '@aztec/types';
|
|
5
5
|
// These must match the values defined in yarn-project/noir-libs/noir-aztec/src/entrypoint.nr
|
|
6
6
|
const ACCOUNT_MAX_PRIVATE_CALLS = 2;
|
|
7
7
|
const ACCOUNT_MAX_PUBLIC_CALLS = 2;
|
|
@@ -9,8 +9,8 @@ const ACCOUNT_MAX_PUBLIC_CALLS = 2;
|
|
|
9
9
|
export async function buildPayload(privateCalls, publicCalls) {
|
|
10
10
|
const nonce = Fr.random();
|
|
11
11
|
const calls = [
|
|
12
|
-
...padArrayEnd(privateCalls,
|
|
13
|
-
...padArrayEnd(publicCalls,
|
|
12
|
+
...padArrayEnd(privateCalls, emptyFunctionCall(), ACCOUNT_MAX_PRIVATE_CALLS),
|
|
13
|
+
...padArrayEnd(publicCalls, emptyFunctionCall(), ACCOUNT_MAX_PUBLIC_CALLS),
|
|
14
14
|
];
|
|
15
15
|
const packedArguments = [];
|
|
16
16
|
const wasm = await CircuitsWasm.get();
|
|
@@ -44,4 +44,4 @@ export function flattenPayload(payload) {
|
|
|
44
44
|
payload.nonce,
|
|
45
45
|
];
|
|
46
46
|
}
|
|
47
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50cnlwb2ludF9wYXlsb2FkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FjY291bnRfaW1wbC9lbnRyeXBvaW50X3BheWxvYWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxFQUFFLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDM0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2xELE9BQU8sRUFBZ0IsZUFBZSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRWhGLDZGQUE2RjtBQUM3RixNQUFNLHlCQUF5QixHQUFHLENBQUMsQ0FBQztBQUNwQyxNQUFNLHdCQUF3QixHQUFHLENBQUMsQ0FBQztBQWlCbkMsc0ZBQXNGO0FBQ3RGLE1BQU0sQ0FBQyxLQUFLLFVBQVUsWUFBWSxDQUNoQyxZQUE0QixFQUM1QixXQUEyQjtJQU8zQixNQUFNLEtBQUssR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUM7SUFFMUIsTUFBTSxLQUFLLEdBQUc7UUFDWixHQUFHLFdBQVcsQ0FBQyxZQUFZLEVBQUUsaUJBQWlCLEVBQUUsRUFBRSx5QkFBeUIsQ0FBQztRQUM1RSxHQUFHLFdBQVcsQ0FBQyxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsRUFBRSx3QkFBd0IsQ0FBQztLQUMzRSxDQUFDO0lBRUYsTUFBTSxlQUFlLEdBQUcsRUFBRSxDQUFDO0lBQzNCLE1BQU0sSUFBSSxHQUFHLE1BQU0sWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBRXRDLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFO1FBQ3hCLGVBQWUsQ0FBQyxJQUFJLENBQUMsTUFBTSxlQUFlLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztLQUN2RTtJQUVELE9BQU87UUFDTCxPQUFPLEVBQUU7WUFDUCxxQ0FBcUM7WUFDckMscUJBQXFCLEVBQUUsZUFBZSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDN0QscUNBQXFDO1lBQ3JDLG1CQUFtQixFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsc0JBQXNCLENBQUMsQ0FBQztZQUMvRixxQ0FBcUM7WUFDckMsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDdkQsS0FBSztTQUNOO1FBQ0QsZUFBZTtLQUNoQixDQUFDO0FBQ0osQ0FBQztBQUVELHdEQUF3RDtBQUN4RCxNQUFNLFVBQVUsV0FBVyxDQUFDLE9BQTBCO0lBQ3BELCtDQUErQztJQUMvQyxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDakYsQ0FBQztBQUVELHFDQUFxQztBQUNyQyxNQUFNLFVBQVUsY0FBYyxDQUFDLE9BQTBCO0lBQ3ZELE9BQU87UUFDTCxHQUFHLE9BQU8sQ0FBQyxxQkFBcUI7UUFDaEMsR0FBRyxPQUFPLENBQUMsbUJBQW1CO1FBQzlCLEdBQUcsT0FBTyxDQUFDLGlCQUFpQjtRQUM1QixPQUFPLENBQUMsS0FBSztLQUNkLENBQUM7QUFDSixDQUFDIn0=
|
|
@@ -1,8 +1,13 @@
|
|
|
1
|
-
import { AztecAddress
|
|
2
|
-
import {
|
|
1
|
+
import { AztecAddress } from '@aztec/circuits.js';
|
|
2
|
+
import { FunctionCall, TxExecutionRequest } from '@aztec/types';
|
|
3
|
+
export * from './account_collection.js';
|
|
3
4
|
export * from './single_key_account_contract.js';
|
|
4
5
|
export * from './stored_key_account_contract.js';
|
|
5
|
-
|
|
6
|
+
/** Options for creating a tx request out of a set of function calls. */
|
|
7
|
+
export type CreateTxRequestOpts = {
|
|
8
|
+
/** Origin of the tx. Needs to be an address managed by this account. */
|
|
9
|
+
origin?: AztecAddress;
|
|
10
|
+
};
|
|
6
11
|
/** Represents an implementation for a user account contract. Knows how to encode and sign a tx for that particular implementation. */
|
|
7
12
|
export interface AccountImplementation {
|
|
8
13
|
/**
|
|
@@ -12,10 +17,10 @@ export interface AccountImplementation {
|
|
|
12
17
|
getAddress(): AztecAddress;
|
|
13
18
|
/**
|
|
14
19
|
* Generates an authenticated request out of set of intents
|
|
15
|
-
* @param executions - The execution
|
|
16
|
-
* @param
|
|
20
|
+
* @param executions - The execution intents to be run.
|
|
21
|
+
* @param opts - Options.
|
|
17
22
|
* @returns The authenticated transaction execution request.
|
|
18
23
|
*/
|
|
19
|
-
|
|
24
|
+
createTxExecutionRequest(executions: FunctionCall[], opts?: CreateTxRequestOpts): Promise<TxExecutionRequest>;
|
|
20
25
|
}
|
|
21
26
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/account_impl/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/account_impl/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAEhE,cAAc,yBAAyB,CAAC;AACxC,cAAc,kCAAkC,CAAC;AACjD,cAAc,kCAAkC,CAAC;AAEjD,wEAAwE;AACxE,MAAM,MAAM,mBAAmB,GAAG;IAChC,wEAAwE;IACxE,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB,CAAC;AAEF,sIAAsI;AACtI,MAAM,WAAW,qBAAqB;IACpC;;;OAGG;IACH,UAAU,IAAI,YAAY,CAAC;IAE3B;;;;;OAKG;IACH,wBAAwB,CAAC,UAAU,EAAE,YAAY,EAAE,EAAE,IAAI,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;CAC/G"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
+
export * from './account_collection.js';
|
|
1
2
|
export * from './single_key_account_contract.js';
|
|
2
3
|
export * from './stored_key_account_contract.js';
|
|
3
|
-
|
|
4
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYWNjb3VudF9pbXBsL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLGNBQWMsa0NBQWtDLENBQUM7QUFDakQsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLHlCQUF5QixDQUFDIn0=
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYWNjb3VudF9pbXBsL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLGtDQUFrQyxDQUFDIn0=
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { AztecAddress, PartialContractAddress, PrivateKey
|
|
1
|
+
import { AztecAddress, PartialContractAddress, PrivateKey } from '@aztec/circuits.js';
|
|
2
2
|
import { Signer } from '@aztec/circuits.js/barretenberg';
|
|
3
|
-
import {
|
|
4
|
-
import { AccountImplementation } from './index.js';
|
|
3
|
+
import { FunctionCall, TxExecutionRequest } from '@aztec/types';
|
|
4
|
+
import { AccountImplementation, CreateTxRequestOpts } from './index.js';
|
|
5
5
|
/**
|
|
6
6
|
* Account contract implementation that uses a single key for signing and encryption. This public key is not
|
|
7
7
|
* stored in the contract, but rather verified against the contract address. Note that this approach is not
|
|
@@ -12,11 +12,11 @@ export declare class SingleKeyAccountContract implements AccountImplementation {
|
|
|
12
12
|
private partialContractAddress;
|
|
13
13
|
private privateKey;
|
|
14
14
|
private signer;
|
|
15
|
-
|
|
15
|
+
private chainId;
|
|
16
|
+
private version;
|
|
17
|
+
constructor(address: AztecAddress, partialContractAddress: PartialContractAddress, privateKey: PrivateKey, signer: Signer, chainId?: number, version?: number);
|
|
16
18
|
getAddress(): AztecAddress;
|
|
17
|
-
|
|
19
|
+
createTxExecutionRequest(executions: FunctionCall[], opts?: CreateTxRequestOpts): Promise<TxExecutionRequest>;
|
|
18
20
|
private getEntrypointAbi;
|
|
19
|
-
private checkIsNotDeployment;
|
|
20
|
-
private checkSender;
|
|
21
21
|
}
|
|
22
22
|
//# sourceMappingURL=single_key_account_contract.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"single_key_account_contract.d.ts","sourceRoot":"","sources":["../../src/account_impl/single_key_account_contract.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EAGZ,sBAAsB,EACtB,UAAU,
|
|
1
|
+
{"version":3,"file":"single_key_account_contract.d.ts","sourceRoot":"","sources":["../../src/account_impl/single_key_account_contract.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EAGZ,sBAAsB,EACtB,UAAU,EAEX,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,MAAM,EAAE,MAAM,iCAAiC,CAAC;AAEzD,OAAO,EAAE,YAAY,EAAmB,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAQjF,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAExE;;;;GAIG;AACH,qBAAa,wBAAyB,YAAW,qBAAqB;IAElE,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,sBAAsB;IAC9B,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,OAAO;gBALP,OAAO,EAAE,YAAY,EACrB,sBAAsB,EAAE,sBAAsB,EAC9C,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,MAAyB,EAClC,OAAO,GAAE,MAAwB;IAG3C,UAAU,IAAI,YAAY;IAIpB,wBAAwB,CAC5B,UAAU,EAAE,YAAY,EAAE,EAC1B,IAAI,GAAE,mBAAwB,GAC7B,OAAO,CAAC,kBAAkB,CAAC;IA0B9B,OAAO,CAAC,gBAAgB;CAQzB"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { CircuitsWasm, FunctionData, } from '@aztec/circuits.js';
|
|
1
|
+
import { CircuitsWasm, FunctionData, TxContext, } from '@aztec/circuits.js';
|
|
2
2
|
import { encodeArguments } from '@aztec/foundation/abi';
|
|
3
3
|
import { PackedArguments, TxExecutionRequest } from '@aztec/types';
|
|
4
4
|
import partition from 'lodash.partition';
|
|
5
5
|
import SchnorrSingleKeyAccountContractAbi from '../abis/schnorr_single_key_account_contract.json' assert { type: 'json' };
|
|
6
6
|
import { generatePublicKey } from '../index.js';
|
|
7
|
+
import { DEFAULT_CHAIN_ID, DEFAULT_VERSION } from '../utils/defaults.js';
|
|
7
8
|
import { buildPayload, hashPayload } from './entrypoint_payload.js';
|
|
8
9
|
/**
|
|
9
10
|
* Account contract implementation that uses a single key for signing and encryption. This public key is not
|
|
@@ -11,18 +12,21 @@ import { buildPayload, hashPayload } from './entrypoint_payload.js';
|
|
|
11
12
|
* secure and should not be used in real use cases.
|
|
12
13
|
*/
|
|
13
14
|
export class SingleKeyAccountContract {
|
|
14
|
-
constructor(address, partialContractAddress, privateKey, signer) {
|
|
15
|
+
constructor(address, partialContractAddress, privateKey, signer, chainId = DEFAULT_CHAIN_ID, version = DEFAULT_VERSION) {
|
|
15
16
|
this.address = address;
|
|
16
17
|
this.partialContractAddress = partialContractAddress;
|
|
17
18
|
this.privateKey = privateKey;
|
|
18
19
|
this.signer = signer;
|
|
20
|
+
this.chainId = chainId;
|
|
21
|
+
this.version = version;
|
|
19
22
|
}
|
|
20
23
|
getAddress() {
|
|
21
24
|
return this.address;
|
|
22
25
|
}
|
|
23
|
-
async
|
|
24
|
-
this.
|
|
25
|
-
|
|
26
|
+
async createTxExecutionRequest(executions, opts = {}) {
|
|
27
|
+
if (opts.origin && !opts.origin.equals(this.address)) {
|
|
28
|
+
throw new Error(`Sender ${opts.origin.toString()} does not match account address ${this.address.toString()}`);
|
|
29
|
+
}
|
|
26
30
|
const [privateCalls, publicCalls] = partition(executions, exec => exec.functionData.isPrivate);
|
|
27
31
|
const wasm = await CircuitsWasm.get();
|
|
28
32
|
const { payload, packedArguments: callsPackedArguments } = await buildPayload(privateCalls, publicCalls);
|
|
@@ -36,7 +40,7 @@ export class SingleKeyAccountContract {
|
|
|
36
40
|
argsHash: packedArgs.hash,
|
|
37
41
|
origin: this.address,
|
|
38
42
|
functionData: FunctionData.fromAbi(abi),
|
|
39
|
-
txContext,
|
|
43
|
+
txContext: TxContext.empty(this.chainId, this.version),
|
|
40
44
|
packedArguments: [...callsPackedArguments, packedArgs],
|
|
41
45
|
});
|
|
42
46
|
return txRequest;
|
|
@@ -50,16 +54,5 @@ export class SingleKeyAccountContract {
|
|
|
50
54
|
throw new Error(`Entrypoint abi for account contract not found`);
|
|
51
55
|
return abi;
|
|
52
56
|
}
|
|
53
|
-
checkIsNotDeployment(txContext) {
|
|
54
|
-
if (txContext.isContractDeploymentTx) {
|
|
55
|
-
throw new Error(`Cannot yet deploy contracts from an account contract`);
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
checkSender(executions) {
|
|
59
|
-
const wrongSender = executions.find(e => !e.from.equals(this.address));
|
|
60
|
-
if (wrongSender) {
|
|
61
|
-
throw new Error(`Sender ${wrongSender.from.toString()} does not match account address ${this.address.toString()}`);
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
57
|
}
|
|
65
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2luZ2xlX2tleV9hY2NvdW50X2NvbnRyYWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FjY291bnRfaW1wbC9zaW5nbGVfa2V5X2FjY291bnRfY29udHJhY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFlBQVksRUFDWixZQUFZLEVBR1osU0FBUyxHQUNWLE1BQU0sb0JBQW9CLENBQUM7QUFFNUIsT0FBTyxFQUFlLGVBQWUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3JFLE9BQU8sRUFBZ0IsZUFBZSxFQUFFLGtCQUFrQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRWpGLE9BQU8sU0FBUyxNQUFNLGtCQUFrQixDQUFDO0FBRXpDLE9BQU8sa0NBQWtDLE1BQU0sa0RBQWtELENBQUMsU0FBUyxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUM7QUFDMUgsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBR3BFOzs7O0dBSUc7QUFDSCxNQUFNLE9BQU8sd0JBQXdCO0lBQ25DLFlBQ1UsT0FBcUIsRUFDckIsc0JBQThDLEVBQzlDLFVBQXNCLEVBQ3RCLE1BQWMsRUFDZCxVQUFrQixnQkFBZ0IsRUFDbEMsVUFBa0IsZUFBZTtRQUxqQyxZQUFPLEdBQVAsT0FBTyxDQUFjO1FBQ3JCLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBd0I7UUFDOUMsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsWUFBTyxHQUFQLE9BQU8sQ0FBMkI7UUFDbEMsWUFBTyxHQUFQLE9BQU8sQ0FBMEI7SUFDeEMsQ0FBQztJQUVKLFVBQVU7UUFDUixPQUFPLElBQUksQ0FBQyxPQUFP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
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { AztecAddress, PrivateKey
|
|
1
|
+
import { AztecAddress, PrivateKey } from '@aztec/circuits.js';
|
|
2
2
|
import { Signer } from '@aztec/circuits.js/barretenberg';
|
|
3
|
-
import {
|
|
4
|
-
import { AccountImplementation } from './index.js';
|
|
3
|
+
import { FunctionCall, TxExecutionRequest } from '@aztec/types';
|
|
4
|
+
import { AccountImplementation, CreateTxRequestOpts } from './index.js';
|
|
5
5
|
/**
|
|
6
6
|
* Account contract implementation that keeps a signing public key in storage, and is retrieved on
|
|
7
7
|
* every new request in order to validate the payload signature.
|
|
@@ -10,12 +10,12 @@ export declare class StoredKeyAccountContract implements AccountImplementation {
|
|
|
10
10
|
private address;
|
|
11
11
|
private privateKey;
|
|
12
12
|
private signer;
|
|
13
|
+
private chainId;
|
|
14
|
+
private version;
|
|
13
15
|
private log;
|
|
14
|
-
constructor(address: AztecAddress, privateKey: PrivateKey, signer: Signer);
|
|
16
|
+
constructor(address: AztecAddress, privateKey: PrivateKey, signer: Signer, chainId?: number, version?: number);
|
|
15
17
|
getAddress(): AztecAddress;
|
|
16
|
-
|
|
18
|
+
createTxExecutionRequest(executions: FunctionCall[], opts?: CreateTxRequestOpts): Promise<TxExecutionRequest>;
|
|
17
19
|
private getEntrypointAbi;
|
|
18
|
-
private checkIsNotDeployment;
|
|
19
|
-
private checkSender;
|
|
20
20
|
}
|
|
21
21
|
//# sourceMappingURL=stored_key_account_contract.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stored_key_account_contract.d.ts","sourceRoot":"","sources":["../../src/account_impl/stored_key_account_contract.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAA8B,UAAU,
|
|
1
|
+
{"version":3,"file":"stored_key_account_contract.d.ts","sourceRoot":"","sources":["../../src/account_impl/stored_key_account_contract.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAA8B,UAAU,EAAa,MAAM,oBAAoB,CAAC;AACrG,OAAO,EAAE,MAAM,EAAE,MAAM,iCAAiC,CAAC;AAGzD,OAAO,EAAE,YAAY,EAAmB,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAOjF,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAExE;;;GAGG;AACH,qBAAa,wBAAyB,YAAW,qBAAqB;IAIlE,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,OAAO;IAPjB,OAAO,CAAC,GAAG,CAAc;gBAGf,OAAO,EAAE,YAAY,EACrB,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,MAAyB,EAClC,OAAO,GAAE,MAAwB;IAK3C,UAAU,IAAI,YAAY;IAIpB,wBAAwB,CAC5B,UAAU,EAAE,YAAY,EAAE,EAC1B,IAAI,GAAE,mBAAwB,GAC7B,OAAO,CAAC,kBAAkB,CAAC;IA0B9B,OAAO,CAAC,gBAAgB;CAQzB"}
|
|
@@ -1,27 +1,31 @@
|
|
|
1
|
-
import { CircuitsWasm, FunctionData } from '@aztec/circuits.js';
|
|
1
|
+
import { CircuitsWasm, FunctionData, TxContext } from '@aztec/circuits.js';
|
|
2
2
|
import { encodeArguments } from '@aztec/foundation/abi';
|
|
3
3
|
import { createDebugLogger } from '@aztec/foundation/log';
|
|
4
4
|
import { PackedArguments, TxExecutionRequest } from '@aztec/types';
|
|
5
5
|
import partition from 'lodash.partition';
|
|
6
6
|
import EcdsaAccountContractAbi from '../abis/ecdsa_account_contract.json' assert { type: 'json' };
|
|
7
|
+
import { DEFAULT_CHAIN_ID, DEFAULT_VERSION } from '../utils/defaults.js';
|
|
7
8
|
import { buildPayload, hashPayload } from './entrypoint_payload.js';
|
|
8
9
|
/**
|
|
9
10
|
* Account contract implementation that keeps a signing public key in storage, and is retrieved on
|
|
10
11
|
* every new request in order to validate the payload signature.
|
|
11
12
|
*/
|
|
12
13
|
export class StoredKeyAccountContract {
|
|
13
|
-
constructor(address, privateKey, signer) {
|
|
14
|
+
constructor(address, privateKey, signer, chainId = DEFAULT_CHAIN_ID, version = DEFAULT_VERSION) {
|
|
14
15
|
this.address = address;
|
|
15
16
|
this.privateKey = privateKey;
|
|
16
17
|
this.signer = signer;
|
|
18
|
+
this.chainId = chainId;
|
|
19
|
+
this.version = version;
|
|
17
20
|
this.log = createDebugLogger('aztec:client:accounts:stored_key');
|
|
18
21
|
}
|
|
19
22
|
getAddress() {
|
|
20
23
|
return this.address;
|
|
21
24
|
}
|
|
22
|
-
async
|
|
23
|
-
this.
|
|
24
|
-
|
|
25
|
+
async createTxExecutionRequest(executions, opts = {}) {
|
|
26
|
+
if (opts.origin && !opts.origin.equals(this.address)) {
|
|
27
|
+
throw new Error(`Sender ${opts.origin.toString()} does not match account address ${this.address.toString()}`);
|
|
28
|
+
}
|
|
25
29
|
const [privateCalls, publicCalls] = partition(executions, exec => exec.functionData.isPrivate);
|
|
26
30
|
const wasm = await CircuitsWasm.get();
|
|
27
31
|
const { payload, packedArguments: callsPackedArguments } = await buildPayload(privateCalls, publicCalls);
|
|
@@ -35,7 +39,7 @@ export class StoredKeyAccountContract {
|
|
|
35
39
|
argsHash: packedArgs.hash,
|
|
36
40
|
origin: this.address,
|
|
37
41
|
functionData: FunctionData.fromAbi(abi),
|
|
38
|
-
txContext,
|
|
42
|
+
txContext: TxContext.empty(this.chainId, this.version),
|
|
39
43
|
packedArguments: [...callsPackedArguments, packedArgs],
|
|
40
44
|
});
|
|
41
45
|
return txRequest;
|
|
@@ -49,16 +53,5 @@ export class StoredKeyAccountContract {
|
|
|
49
53
|
throw new Error(`Entrypoint abi for account contract not found`);
|
|
50
54
|
return abi;
|
|
51
55
|
}
|
|
52
|
-
checkIsNotDeployment(txContext) {
|
|
53
|
-
if (txContext.isContractDeploymentTx) {
|
|
54
|
-
throw new Error(`Cannot yet deploy contracts from an account contract`);
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
checkSender(executions) {
|
|
58
|
-
const wrongSender = executions.find(e => !e.from.equals(this.address));
|
|
59
|
-
if (wrongSender) {
|
|
60
|
-
throw new Error(`Sender ${wrongSender.from.toString()} does not match account address ${this.address.toString()}`);
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
56
|
}
|
|
64
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmVkX2tleV9hY2NvdW50X2NvbnRyYWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FjY291bnRfaW1wbC9zdG9yZWRfa2V5X2FjY291bnRfY29udHJhY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQixZQUFZLEVBQUUsWUFBWSxFQUFjLFNBQVMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXJHLE9BQU8sRUFBZSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRSxPQUFPLEVBQWUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN2RSxPQUFPLEVBQWdCLGVBQWUsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUVqRixPQUFPLFNBQVMsTUFBTSxrQkFBa0IsQ0FBQztBQUV6QyxPQUFPLHVCQUF1QixNQUFNLHFDQUFxQyxDQUFDLFNBQVMsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDO0FBQ2xHLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBR3BFOzs7R0FHRztBQUNILE1BQU0sT0FBTyx3QkFBd0I7SUFHbkMsWUFDVSxPQUFxQixFQUNyQixVQUFzQixFQUN0QixNQUFjLEVBQ2QsVUFBa0IsZ0JBQWdCLEVBQ2xDLFVBQWtCLGVBQWU7UUFKakMsWUFBTyxHQUFQLE9BQU8sQ0FBYztRQUNyQixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxZQUFPLEdBQVAsT0FBTyxDQUEyQjtRQUNsQyxZQUFPLEdBQVAsT0FBTyxDQUEwQjtRQUV6QyxJQUFJLENBQUMsR0FBRyxHQUFHLGlCQUFpQixDQUFDLGtDQUFrQyxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVELFVBQVU7UUFDUixPQUFPLElB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
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { AztecAddress, Fr, PartialContractAddress, PrivateKey, PublicKey
|
|
2
|
-
import { AztecRPC, ContractData, ContractPublicData, DeployedContract,
|
|
3
|
-
import { AccountImplementation } from '../account_impl/index.js';
|
|
1
|
+
import { AztecAddress, Fr, PartialContractAddress, PrivateKey, PublicKey } from '@aztec/circuits.js';
|
|
2
|
+
import { AztecRPC, ContractData, ContractPublicData, DeployedContract, FunctionCall, L2BlockL2Logs, NodeInfo, SyncStatus, Tx, TxExecutionRequest, TxHash, TxReceipt } from '@aztec/types';
|
|
3
|
+
import { AccountImplementation, CreateTxRequestOpts } from '../account_impl/index.js';
|
|
4
4
|
/**
|
|
5
5
|
* The wallet interface.
|
|
6
6
|
*/
|
|
@@ -12,7 +12,7 @@ export declare abstract class BaseWallet implements Wallet {
|
|
|
12
12
|
protected readonly rpc: AztecRPC;
|
|
13
13
|
constructor(rpc: AztecRPC);
|
|
14
14
|
abstract getAddress(): AztecAddress;
|
|
15
|
-
abstract
|
|
15
|
+
abstract createTxExecutionRequest(execs: FunctionCall[], opts?: CreateTxRequestOpts): Promise<TxExecutionRequest>;
|
|
16
16
|
addAccount(privKey: PrivateKey, address: AztecAddress, partialContractAddress: Fr): Promise<AztecAddress>;
|
|
17
17
|
addPublicKeyAndPartialAddress(address: AztecAddress, publicKey: PublicKey, partialAddress: PartialContractAddress): Promise<void>;
|
|
18
18
|
getAccounts(): Promise<AztecAddress[]>;
|
|
@@ -42,6 +42,6 @@ export declare class AccountWallet extends BaseWallet {
|
|
|
42
42
|
protected accountImpl: AccountImplementation;
|
|
43
43
|
constructor(rpc: AztecRPC, accountImpl: AccountImplementation);
|
|
44
44
|
getAddress(): AztecAddress;
|
|
45
|
-
|
|
45
|
+
createTxExecutionRequest(executions: FunctionCall[], opts?: CreateTxRequestOpts): Promise<TxExecutionRequest>;
|
|
46
46
|
}
|
|
47
47
|
//# sourceMappingURL=wallet.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wallet.d.ts","sourceRoot":"","sources":["../../src/aztec_rpc_client/wallet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,EAAE,EAAE,sBAAsB,EAAE,UAAU,EAAE,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"wallet.d.ts","sourceRoot":"","sources":["../../src/aztec_rpc_client/wallet.ts"],"names":[],"mappings":"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"}
|
|
@@ -80,8 +80,8 @@ export class AccountWallet extends BaseWallet {
|
|
|
80
80
|
getAddress() {
|
|
81
81
|
return this.accountImpl.getAddress();
|
|
82
82
|
}
|
|
83
|
-
|
|
84
|
-
return this.accountImpl.
|
|
83
|
+
createTxExecutionRequest(executions, opts = {}) {
|
|
84
|
+
return this.accountImpl.createTxExecutionRequest(executions, opts);
|
|
85
85
|
}
|
|
86
86
|
}
|
|
87
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
87
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2FsbGV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2F6dGVjX3JwY19jbGllbnQvd2FsbGV0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXVCQTs7R0FFRztBQUNILE1BQU0sT0FBZ0IsVUFBVTtJQUM5QixZQUErQixHQUFhO1FBQWIsUUFBRyxHQUFILEdBQUcsQ0FBVTtJQUFHLENBQUM7SUFLaEQsVUFBVSxDQUFDLE9BQW1CLEVBQUUsT0FBcUIsRUFBRSxzQkFBMEI7UUFDL0UsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLHNCQUFzQixDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUNELDZCQUE2QixDQUMzQixPQUFxQixFQUNyQixTQUFvQixFQUNwQixjQUFzQztRQUV0QyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsNkJBQTZCLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxjQUFjLENBQUMsQ0FBQztJQUNwRixDQUFDO0lBQ0QsV0FBVztRQUNULE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBQ0QsWUFBWSxDQUFDLE9BQXFCO1FBQ2hDLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUNELFlBQVksQ0FBQyxTQUE2QjtRQUN4QyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFDRCxrQkFBa0IsQ0FBQyxRQUFzQjtRQUN2QyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUNELFVBQVUsQ0FBQyxTQUE2QjtRQUN0QyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7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
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { AztecAddress } from '@aztec/circuits.js';
|
|
2
|
+
import { AztecRPC, Tx, TxExecutionRequest } from '@aztec/types';
|
|
3
|
+
import { SentTx } from './sent_tx.js';
|
|
4
|
+
/**
|
|
5
|
+
* Represents options for calling a (constrained) function in a contract.
|
|
6
|
+
* Allows the user to specify the sender address and nonce for a transaction.
|
|
7
|
+
*/
|
|
8
|
+
export interface SendMethodOptions {
|
|
9
|
+
/**
|
|
10
|
+
* Sender's address initiating the transaction.
|
|
11
|
+
*/
|
|
12
|
+
origin?: AztecAddress;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Base class for an interaction with a contract, be it a deployment, a function call, or a batch.
|
|
16
|
+
* Implements the sequence create/simulate/send.
|
|
17
|
+
*/
|
|
18
|
+
export declare abstract class BaseContractInteraction {
|
|
19
|
+
protected rpc: AztecRPC;
|
|
20
|
+
protected tx?: Tx;
|
|
21
|
+
protected txRequest?: TxExecutionRequest;
|
|
22
|
+
constructor(rpc: AztecRPC);
|
|
23
|
+
/**
|
|
24
|
+
* Create a transaction execution request ready to be simulated.
|
|
25
|
+
* @param options - An optional object containing additional configuration for the transaction.
|
|
26
|
+
* @returns A transaction execution request.
|
|
27
|
+
*/
|
|
28
|
+
abstract create(options?: SendMethodOptions): Promise<TxExecutionRequest>;
|
|
29
|
+
/**
|
|
30
|
+
* Simulates a transaction execution request and returns a tx object ready to be sent.
|
|
31
|
+
* @param options - optional arguments to be used in the creation of the transaction
|
|
32
|
+
* @returns The resulting transaction
|
|
33
|
+
*/
|
|
34
|
+
simulate(options?: SendMethodOptions): Promise<Tx>;
|
|
35
|
+
/**
|
|
36
|
+
* Sends a transaction to the contract function with the specified options.
|
|
37
|
+
* This function throws an error if called on an unconstrained function.
|
|
38
|
+
* It creates and signs the transaction if necessary, and returns a SentTx instance,
|
|
39
|
+
* which can be used to track the transaction status, receipt, and events.
|
|
40
|
+
* @param options - An optional object containing 'from' property representing
|
|
41
|
+
* the AztecAddress of the sender. If not provided, the default address is used.
|
|
42
|
+
* @returns A SentTx instance for tracking the transaction status and information.
|
|
43
|
+
*/
|
|
44
|
+
send(options?: SendMethodOptions): SentTx;
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=base_contract_interaction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base_contract_interaction.d.ts","sourceRoot":"","sources":["../../src/contract/base_contract_interaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAEhE,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB;AAED;;;GAGG;AACH,8BAAsB,uBAAuB;IAI/B,SAAS,CAAC,GAAG,EAAE,QAAQ;IAHnC,SAAS,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;IAClB,SAAS,CAAC,SAAS,CAAC,EAAE,kBAAkB,CAAC;gBAEnB,GAAG,EAAE,QAAQ;IAEnC;;;;OAIG;aACa,MAAM,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAEhF;;;;OAIG;IACU,QAAQ,CAAC,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,EAAE,CAAC;IAMnE;;;;;;;;OAQG;IACI,IAAI,CAAC,OAAO,GAAE,iBAAsB;CAQ5C"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { SentTx } from './sent_tx.js';
|
|
2
|
+
/**
|
|
3
|
+
* Base class for an interaction with a contract, be it a deployment, a function call, or a batch.
|
|
4
|
+
* Implements the sequence create/simulate/send.
|
|
5
|
+
*/
|
|
6
|
+
export class BaseContractInteraction {
|
|
7
|
+
constructor(rpc) {
|
|
8
|
+
this.rpc = rpc;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Simulates a transaction execution request and returns a tx object ready to be sent.
|
|
12
|
+
* @param options - optional arguments to be used in the creation of the transaction
|
|
13
|
+
* @returns The resulting transaction
|
|
14
|
+
*/
|
|
15
|
+
async simulate(options = {}) {
|
|
16
|
+
const txRequest = this.txRequest ?? (await this.create(options));
|
|
17
|
+
this.tx = await this.rpc.simulateTx(txRequest);
|
|
18
|
+
return this.tx;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Sends a transaction to the contract function with the specified options.
|
|
22
|
+
* This function throws an error if called on an unconstrained function.
|
|
23
|
+
* It creates and signs the transaction if necessary, and returns a SentTx instance,
|
|
24
|
+
* which can be used to track the transaction status, receipt, and events.
|
|
25
|
+
* @param options - An optional object containing 'from' property representing
|
|
26
|
+
* the AztecAddress of the sender. If not provided, the default address is used.
|
|
27
|
+
* @returns A SentTx instance for tracking the transaction status and information.
|
|
28
|
+
*/
|
|
29
|
+
send(options = {}) {
|
|
30
|
+
const promise = (async () => {
|
|
31
|
+
const tx = this.tx ?? (await this.simulate(options));
|
|
32
|
+
return this.rpc.sendTx(tx);
|
|
33
|
+
})();
|
|
34
|
+
return new SentTx(this.rpc, promise);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZV9jb250cmFjdF9pbnRlcmFjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250cmFjdC9iYXNlX2NvbnRyYWN0X2ludGVyYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFhdEM7OztHQUdHO0FBQ0gsTUFBTSxPQUFnQix1QkFBdUI7SUFJM0MsWUFBc0IsR0FBYTtRQUFiLFFBQUcsR0FBSCxHQUFHLENBQVU7SUFBRyxDQUFDO0lBU3ZDOzs7O09BSUc7SUFDSSxLQUFLLENBQUMsUUFBUSxDQUFDLFVBQTZCLEVBQUU7UUFDbkQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQ2pFLElBQUksQ0FBQyxFQUFFLEdBQUcsTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMvQyxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0ksSUFBSSxDQUFDLFVBQTZCLEVBQUU7UUFDekMsTUFBTSxPQUFPLEdBQUcsQ0FBQyxLQUFLLElBQUksRUFBRTtZQUMxQixNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDckQsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM3QixDQUFDLENBQUMsRUFBRSxDQUFDO1FBRUwsT0FBTyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7Q0FDRiJ9
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { FunctionCall, TxExecutionRequest, Wallet } from '../index.js';
|
|
2
|
+
import { BaseContractInteraction, SendMethodOptions } from './base_contract_interaction.js';
|
|
3
|
+
/** A batch of function calls to be sent as a single transaction through a wallet. */
|
|
4
|
+
export declare class BatchCall extends BaseContractInteraction {
|
|
5
|
+
protected wallet: Wallet;
|
|
6
|
+
protected calls: FunctionCall[];
|
|
7
|
+
constructor(wallet: Wallet, calls: FunctionCall[]);
|
|
8
|
+
/**
|
|
9
|
+
* Create a transaction execution request that represents this batch, encoded and authenticated by the
|
|
10
|
+
* user's wallet, ready to be simulated.
|
|
11
|
+
* @param options - An optional object containing additional configuration for the transaction.
|
|
12
|
+
* @returns A Promise that resolves to a transaction instance.
|
|
13
|
+
*/
|
|
14
|
+
create(options?: SendMethodOptions | undefined): Promise<TxExecutionRequest>;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=batch_call.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"batch_call.d.ts","sourceRoot":"","sources":["../../src/contract/batch_call.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACvE,OAAO,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAE5F,qFAAqF;AACrF,qBAAa,SAAU,SAAQ,uBAAuB;IACxC,SAAS,CAAC,MAAM,EAAE,MAAM;IAAE,SAAS,CAAC,KAAK,EAAE,YAAY,EAAE;gBAA/C,MAAM,EAAE,MAAM,EAAY,KAAK,EAAE,YAAY,EAAE;IAIrE;;;;;OAKG;IACU,MAAM,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,SAAS,GAAG,OAAO,CAAC,kBAAkB,CAAC;CAM1F"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { BaseContractInteraction } from './base_contract_interaction.js';
|
|
2
|
+
/** A batch of function calls to be sent as a single transaction through a wallet. */
|
|
3
|
+
export class BatchCall extends BaseContractInteraction {
|
|
4
|
+
constructor(wallet, calls) {
|
|
5
|
+
super(wallet);
|
|
6
|
+
this.wallet = wallet;
|
|
7
|
+
this.calls = calls;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Create a transaction execution request that represents this batch, encoded and authenticated by the
|
|
11
|
+
* user's wallet, ready to be simulated.
|
|
12
|
+
* @param options - An optional object containing additional configuration for the transaction.
|
|
13
|
+
* @returns A Promise that resolves to a transaction instance.
|
|
14
|
+
*/
|
|
15
|
+
async create(options) {
|
|
16
|
+
if (!this.txRequest) {
|
|
17
|
+
this.txRequest = await this.wallet.createTxExecutionRequest(this.calls, options);
|
|
18
|
+
}
|
|
19
|
+
return this.txRequest;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmF0Y2hfY2FsbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250cmFjdC9iYXRjaF9jYWxsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSx1QkFBdUIsRUFBcUIsTUFBTSxnQ0FBZ0MsQ0FBQztBQUU1RixxRkFBcUY7QUFDckYsTUFBTSxPQUFPLFNBQVUsU0FBUSx1QkFBdUI7SUFDcEQsWUFBc0IsTUFBYyxFQUFZLEtBQXFCO1FBQ25FLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQURNLFdBQU0sR0FBTixNQUFNLENBQVE7UUFBWSxVQUFLLEdBQUwsS0FBSyxDQUFnQjtJQUVyRSxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQXVDO1FBQ3pELElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ25CLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7U0FDbEY7UUFDRCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztDQUNGIn0=
|
|
@@ -82,13 +82,14 @@ describe('Contract Class', () => {
|
|
|
82
82
|
});
|
|
83
83
|
beforeEach(() => {
|
|
84
84
|
wallet = mock();
|
|
85
|
-
wallet.
|
|
85
|
+
wallet.createTxExecutionRequest.mockResolvedValue(mockTxRequest);
|
|
86
86
|
wallet.isContractDeployed.mockResolvedValue(true);
|
|
87
87
|
wallet.sendTx.mockResolvedValue(mockTxHash);
|
|
88
88
|
wallet.viewTx.mockResolvedValue(mockViewResultValue);
|
|
89
89
|
wallet.getTxReceipt.mockResolvedValue(mockTxReceipt);
|
|
90
90
|
wallet.getNodeInfo.mockResolvedValue(mockNodeInfo);
|
|
91
91
|
wallet.simulateTx.mockResolvedValue(mockTx);
|
|
92
|
+
wallet.getAccounts.mockResolvedValue([account]);
|
|
92
93
|
});
|
|
93
94
|
it('should create and send a contract method tx', async () => {
|
|
94
95
|
const fooContract = await Contract.create(contractAddress, defaultAbi, wallet);
|
|
@@ -101,7 +102,7 @@ describe('Contract Class', () => {
|
|
|
101
102
|
const receipt = await sentTx.getReceipt();
|
|
102
103
|
expect(txHash).toBe(mockTxHash);
|
|
103
104
|
expect(receipt).toBe(mockTxReceipt);
|
|
104
|
-
expect(wallet.
|
|
105
|
+
expect(wallet.createTxExecutionRequest).toHaveBeenCalledTimes(1);
|
|
105
106
|
expect(wallet.sendTx).toHaveBeenCalledTimes(1);
|
|
106
107
|
expect(wallet.sendTx).toHaveBeenCalledWith(mockTx);
|
|
107
108
|
});
|
|
@@ -114,11 +115,9 @@ describe('Contract Class', () => {
|
|
|
114
115
|
expect(wallet.viewTx).toHaveBeenCalledWith('qux', [123n], contractAddress, account);
|
|
115
116
|
expect(result).toBe(mockViewResultValue);
|
|
116
117
|
});
|
|
117
|
-
it('should not call
|
|
118
|
+
it('should not call create on an unconstrained function', async () => {
|
|
118
119
|
const fooContract = await Contract.create(contractAddress, defaultAbi, wallet);
|
|
119
|
-
expect(
|
|
120
|
-
origin: account,
|
|
121
|
-
})).toThrow();
|
|
120
|
+
await expect(fooContract.methods.qux().create({ origin: account })).rejects.toThrow();
|
|
122
121
|
});
|
|
123
122
|
it('should not call view on a secret or open function', async () => {
|
|
124
123
|
const fooContract = await Contract.create(contractAddress, defaultAbi, wallet);
|
|
@@ -142,4 +141,4 @@ describe('Contract Class', () => {
|
|
|
142
141
|
}
|
|
143
142
|
});
|
|
144
143
|
});
|
|
145
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
144
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJhY3QudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250cmFjdC9jb250cmFjdC50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDOUQsT0FBTyxFQUFFLHNCQUFzQixFQUFlLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUd2RCxPQUFPLEVBQWEsSUFBSSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFHckQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6QyxRQUFRLENBQUMsZ0JBQWdCLEVBQUUsR0FBRyxFQUFFO0lBQzlCLElBQUksTUFBeUIsQ0FBQztJQUU5QixNQUFNLGVBQWUsR0FBRyxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDOUMsTUFBTSxPQUFPLEdBQUcsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBRXRDLE1BQU0sTUFBTSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBZSxDQUFDO0lBQzNDLE1BQU0sYUFBYSxHQUFHLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBK0IsQ0FBQztJQUN6RSxNQUFNLFVBQVUsR0FBRyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQW1CLENBQUM7SUFDdkQsTUFBTSxhQUFhLEdBQUcsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFzQixDQUFDO0lBQ2hFLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxDQUFDO0lBQzlCLE1BQU0sWUFBWSxHQUFhLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFFMUQsTUFBTSxVQUFVLEdBQWdCO1FBQzlCLElBQUksRUFBRSxhQUFhO1FBQ25CLFNBQVMsRUFBRTtZQUNUO2dCQUNFLElBQUksRUFBRSxLQUFLO2dCQUNYLFlBQVksRUFBRSxZQUFZLENBQUMsTUFBTTtnQkFDakMsVUFBVSxFQUFFLEtBQUs7Z0JBQ2pCLFVBQVUsRUFBRTtvQkFDVjt3QkFDRSxJQUFJLEVBQUUsT0FBTzt3QkFDYixJQUFJLEVBQUU7NEJBQ0osSUFBSSxFQUFFLE9BQU87eUJBQ2Q7d0JBQ0QsVUFBVSxFQUFFLHNCQUFzQixDQUFDLE1BQU07cUJBQzFDO29CQUNEO3dCQUNFLElBQUksRUFBRSxPQUFPO3dCQUNiLElBQUksRUFBRTs0QkFDSixJQUFJLEVBQUUsT0FBTzt5QkFDZDt3QkFDRCxVQUFVLEVBQUUsc0JBQXNCLENBQUMsTUFBTTtxQkFDMUM7aUJBQ0Y7Z0JBQ0QsV0FBVyxFQUFFLEVBQUU7Z0JBQ2YsUUFBUSxFQUFFLEtBQUs7YUFDaEI7WUFDRDtnQkFDRSxJQUFJLEVBQUUsS0FBSztnQkFDWCxZQUFZLEVBQUUsWUFBWSxDQUFDLElBQUk7Z0JBQy9CLFVBQVUsRUFBRSxLQUFLO2dCQUNqQixVQUFVLEVBQUUsRUFBRTtnQkFDZCxXQUFXLEVBQUUsRUFBRTtnQkFDZixRQUFRLEVBQUUsS0FBSzthQUNoQjtZQUNEO2dCQUNFLElBQUksRUFBRSxLQUFLO2dCQUNYLFlBQVksRUFBRSxZQUFZLENBQUMsYUFBYTtnQkFDeEMsVUFBVSxFQUFFLEtBQUs7Z0JBQ2pCLFVBQVUsRUFBRTtvQkFDVjt3QkFDRSxJQUFJLEVBQUUsT0FBTzt3QkFDYixJQUFJLEVBQUU7NEJBQ0osSUFBSSxFQUFFLE9BQU87eUJBQ2Q7d0JBQ0QsVUFBVSxFQUFFLHNCQUFzQixDQUFDLE1BQU07cUJBQzFDO2lCQUNGO2dCQUNELFdBQVcsRUFBRTtvQkFDWDt3QkFDRSxJQUFJLEVBQUUsU0FBUzt3QkFDZixJQUFJLEVBQUUsRUFBRTt3QkFDUixLQUFLLEVBQUUsRUFBRTtxQkFDVjtpQkFDRjtnQkFDRCxRQUFRLEVBQUUsS0FBSzthQUNoQjtTQUNGO0tBQ0YsQ0FBQztJQUVGLE1BQU0saUJBQWlCLEdBQUcsR0FBZ0IsRUFBRSxDQUFDLENBQUM7UUFDNUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO1FBQ3BDLFNBQVMsRUFBRSxFQUFFO0tBQ2QsQ0FBQyxDQUFDO0lBRUgsTUFBTSxvQkFBb0IsR0FBRyxHQUFxQixFQUFFLENBQUMsQ0FBQztRQUNwRCxHQUFHLEVBQUUsaUJBQWlCLEVBQUU7UUFDeEIsT0FBTyxFQUFFLFlBQVksQ0FBQyxNQUFNLEVBQUU7UUFDOUIsY0FBYyxFQUFFLFVBQVUsQ0FBQyxNQUFNLEVBQUU7S0FDcEMsQ0FBQyxDQUFDO0lBRUgsVUFBVSxDQUFDLEdBQUcsRUFBRTtRQUNkLE1BQU0sR0FBRyxJQUFJLEVBQVUsQ0FBQztRQUN4QixNQUFNLENBQUMsd0JBQXdCLENBQUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDakUsTUFBTSxDQUFDLGtCQUFrQixDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xELE1BQU0sQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDNUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ3JELE1BQU0sQ0FBQyxZQUFZLENBQUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDckQsTUFBTSxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNuRCxNQUFNLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzVDLE1BQU0sQ0FBQyxXQUFXLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ2xELENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLDZDQUE2QyxFQUFFLEtBQUssSUFBSSxFQUFFO1FBQzNELE1BQU0sV0FBVyxHQUFHLE1BQU0sUUFBUSxDQUFDLE1BQU0sQ0FBQyxlQUFlLEVBQUUsVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQy9FLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUNsQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDcEIsTUFBTSxNQUFNLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQztZQUMxRCxNQUFNLEVBQUUsT0FBTztTQUNoQixDQUFDLENBQUM7UUFDSCxNQUFNLE1BQU0sR0FBRyxNQUFNLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUN4QyxNQUFNLE9BQU8sR0FBRyxNQUFNLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUUxQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2hDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDcEMsTUFBTSxDQUFDLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2pFLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDL0MsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNyRCxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQywrQ0FBK0MsRUFBRSxLQUFLLElBQUksRUFBRTtRQUM3RCxNQUFNLFdBQVcsR0FBRyxNQUFNLFFBQVEsQ0FBQyxNQUFNLENBQUMsZUFBZSxFQUFFLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUMvRSxNQUFNLE1BQU0sR0FBRyxNQUFNLFdBQVcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQztZQUN0RCxJQUFJLEVBQUUsT0FBTztTQUNkLENBQUMsQ0FBQztRQUNILE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDL0MsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxlQUFlLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDcEYsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQzNDLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLHFEQUFxRCxFQUFFLEtBQUssSUFBSSxFQUFFO1FBQ25FLE1BQU0sV0FBVyxHQUFHLE1BQU0sUUFBUSxDQUFDLE1BQU0sQ0FBQyxlQUFlLEVBQUUsVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQy9FLE1BQU0sTUFBTSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDeEYsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsbURBQW1ELEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDakUsTUFBTSxXQUFXLEdBQUcsTUFBTSxRQUFRLENBQUMsTUFBTSxDQUFDLGVBQWUsRUFBRSxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDL0UsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUN6RCxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQzNELENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLG1EQUFtRCxFQUFFLEtBQUssSUFBSSxFQUFFO1FBQ2pFLE1BQU0sS0FBSyxHQUFHLG9CQUFvQixFQUFFLENBQUM7UUFDckMsTUFBTSxRQUFRLEdBQUcsTUFBTSxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUV6RTtZQUNFLE1BQU0sUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDNUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNyRCxNQUFNLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLG9CQUFvQixDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUMxRCxNQUFNLENBQUMsWUFBWSxDQUFDLFNBQVMsRUFBRSxDQUFDO1NBQ2pDO1FBRUQ7WUFDRSxNQUFNLFlBQVksR0FBRyxDQUFDLG9CQUFvQixFQUFFLEVBQUUsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDO1lBQ3RFLE1BQU0sUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsY0FBYyxFQUFFLFlBQVksQ0FBQyxDQUFDO1lBQzFELE1BQU0sQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDckQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLEtBQUssRUFBRSxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUM7U0FDNUU7SUFDSCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIn0=
|