@aztec/aztec.js 0.7.10 → 0.8.4
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 +25 -23
- package/dest/abis/ecdsa_account_contract.json +20 -8
- package/dest/abis/schnorr_account_contract.json +20 -8
- package/dest/abis/schnorr_single_key_account_contract.json +19 -7
- package/dest/account/defaults/default_entrypoint.js +3 -3
- package/dest/account/index.d.ts +33 -11
- package/dest/account/index.d.ts.map +1 -1
- package/dest/account/index.js +40 -18
- package/dest/account/manager/index.d.ts +8 -8
- package/dest/account/manager/index.d.ts.map +1 -1
- package/dest/account/manager/index.js +12 -12
- package/dest/{utils/account.d.ts → account/utils.d.ts} +10 -10
- package/dest/account/utils.d.ts.map +1 -0
- package/dest/account/utils.js +40 -0
- package/dest/contract/base_contract_interaction.d.ts +5 -5
- package/dest/contract/base_contract_interaction.d.ts.map +1 -1
- package/dest/contract/base_contract_interaction.js +6 -6
- package/dest/contract/contract.d.ts +1 -1
- package/dest/contract/contract.js +1 -1
- package/dest/contract/contract_base.d.ts +3 -3
- package/dest/contract/contract_base.d.ts.map +1 -1
- package/dest/contract/contract_base.js +2 -2
- package/dest/contract/contract_function_interaction.d.ts +2 -2
- package/dest/contract/contract_function_interaction.d.ts.map +1 -1
- package/dest/contract/index.d.ts +37 -0
- package/dest/contract/index.d.ts.map +1 -1
- package/dest/contract/index.js +38 -1
- package/dest/contract/sent_tx.d.ts +6 -6
- package/dest/contract/sent_tx.d.ts.map +1 -1
- package/dest/contract/sent_tx.js +9 -9
- package/dest/contract_deployer/contract_deployer.d.ts +4 -4
- package/dest/contract_deployer/contract_deployer.d.ts.map +1 -1
- package/dest/contract_deployer/contract_deployer.js +5 -5
- package/dest/contract_deployer/deploy_method.d.ts +5 -5
- package/dest/contract_deployer/deploy_method.d.ts.map +1 -1
- package/dest/contract_deployer/deploy_method.js +7 -7
- package/dest/contract_deployer/deploy_sent_tx.d.ts +2 -2
- package/dest/contract_deployer/deploy_sent_tx.d.ts.map +1 -1
- package/dest/contract_deployer/deploy_sent_tx.js +3 -3
- package/dest/index.d.ts +2 -2
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +3 -3
- package/dest/pxe_client.d.ts +4 -0
- package/dest/pxe_client.d.ts.map +1 -0
- package/dest/pxe_client.js +20 -0
- package/dest/sandbox/index.d.ts +8 -8
- package/dest/sandbox/index.d.ts.map +1 -1
- package/dest/sandbox/index.js +13 -13
- package/dest/utils/abi_types.d.ts +9 -1
- package/dest/utils/abi_types.d.ts.map +1 -1
- package/dest/utils/authwit.d.ts +12 -0
- package/dest/utils/authwit.d.ts.map +1 -0
- package/dest/utils/authwit.js +20 -0
- package/dest/utils/cheat_codes.d.ts +8 -8
- package/dest/utils/cheat_codes.d.ts.map +1 -1
- package/dest/utils/cheat_codes.js +11 -11
- package/dest/utils/index.d.ts +1 -1
- package/dest/utils/index.d.ts.map +1 -1
- package/dest/utils/index.js +2 -2
- package/dest/utils/l1_contracts.d.ts +1 -30
- package/dest/utils/l1_contracts.d.ts.map +1 -1
- package/dest/utils/l1_contracts.js +5 -6
- package/dest/utils/l2_contracts.d.ts +3 -3
- package/dest/utils/l2_contracts.d.ts.map +1 -1
- package/dest/utils/l2_contracts.js +4 -4
- package/dest/wallet/account_wallet.d.ts +2 -2
- package/dest/wallet/account_wallet.d.ts.map +1 -1
- package/dest/wallet/account_wallet.js +4 -4
- package/dest/wallet/base_wallet.d.ts +7 -5
- package/dest/wallet/base_wallet.d.ts.map +1 -1
- package/dest/wallet/base_wallet.js +35 -29
- package/dest/wallet/index.d.ts +2 -2
- package/dest/wallet/index.d.ts.map +1 -1
- package/dest/wallet/signerless_wallet.js +1 -1
- package/package.json +69 -6
- package/src/abis/ecdsa_account_contract.json +20 -8
- package/src/abis/schnorr_account_contract.json +20 -8
- package/src/abis/schnorr_single_key_account_contract.json +19 -7
- package/src/account/defaults/default_entrypoint.ts +2 -2
- package/src/account/index.ts +40 -18
- package/src/account/manager/index.ts +11 -11
- package/src/{utils/account.ts → account/utils.ts} +12 -12
- package/src/contract/base_contract_interaction.ts +7 -7
- package/src/contract/contract.ts +1 -1
- package/src/contract/contract_base.ts +2 -2
- package/src/contract/contract_function_interaction.ts +2 -2
- package/src/contract/index.ts +37 -0
- package/src/contract/sent_tx.ts +9 -9
- package/src/contract_deployer/contract_deployer.ts +4 -4
- package/src/contract_deployer/deploy_method.ts +8 -8
- package/src/contract_deployer/deploy_sent_tx.ts +4 -4
- package/src/index.ts +4 -2
- package/src/{aztec_rpc_client.ts → pxe_client.ts} +5 -3
- package/src/sandbox/index.ts +12 -12
- package/src/utils/abi_types.ts +7 -1
- package/src/utils/authwit.ts +24 -0
- package/src/utils/cheat_codes.ts +10 -10
- package/src/utils/index.ts +1 -1
- package/src/utils/l1_contracts.ts +5 -44
- package/src/utils/l2_contracts.ts +4 -4
- package/src/wallet/account_wallet.ts +4 -4
- package/src/wallet/base_wallet.ts +42 -28
- package/src/wallet/index.ts +2 -2
- package/src/wallet/signerless_wallet.ts +1 -1
- package/.eslintrc.cjs +0 -1
- package/.tsbuildinfo +0 -1
- package/dest/aztec_rpc_client.d.ts +0 -4
- package/dest/aztec_rpc_client.d.ts.map +0 -1
- package/dest/aztec_rpc_client.js +0 -19
- package/dest/contract/checker.test.d.ts +0 -2
- package/dest/contract/checker.test.d.ts.map +0 -1
- package/dest/contract/checker.test.js +0 -169
- package/dest/contract/contract.test.d.ts +0 -2
- package/dest/contract/contract.test.d.ts.map +0 -1
- package/dest/contract/contract.test.js +0 -147
- package/dest/contract/sent_tx.test.d.ts +0 -2
- package/dest/contract/sent_tx.test.d.ts.map +0 -1
- package/dest/contract/sent_tx.test.js +0 -42
- package/dest/contract_deployer/contract_deployer.test.d.ts +0 -2
- package/dest/contract_deployer/contract_deployer.test.d.ts.map +0 -1
- package/dest/contract_deployer/contract_deployer.test.js +0 -46
- package/dest/main.js +0 -2
- package/dest/main.js.LICENSE.txt +0 -10
- package/dest/utils/account.d.ts.map +0 -1
- package/dest/utils/account.js +0 -40
- package/package.local.json +0 -5
- package/src/contract/checker.test.ts +0 -178
- package/src/contract/contract.test.ts +0 -172
- package/src/contract/sent_tx.test.ts +0 -52
- package/src/contract_deployer/contract_deployer.test.ts +0 -55
- package/tsconfig.dest.json +0 -15
- package/tsconfig.json +0 -20
- package/webpack.config.js +0 -74
|
@@ -1,147 +0,0 @@
|
|
|
1
|
-
import { CompleteAddress, EthAddress } from '@aztec/circuits.js';
|
|
2
|
-
import { ABIParameterVisibility, FunctionType } from '@aztec/foundation/abi';
|
|
3
|
-
import { ExtendedContractData, randomContractAbi, randomDeployedContract, } from '@aztec/types';
|
|
4
|
-
import { mock } from 'jest-mock-extended';
|
|
5
|
-
import { Contract } from './contract.js';
|
|
6
|
-
describe('Contract Class', () => {
|
|
7
|
-
let wallet;
|
|
8
|
-
let resolvedExtendedContractData;
|
|
9
|
-
let contractAddress;
|
|
10
|
-
let account;
|
|
11
|
-
const mockTx = { type: 'Tx' };
|
|
12
|
-
const mockTxRequest = { type: 'TxRequest' };
|
|
13
|
-
const mockTxHash = { type: 'TxHash' };
|
|
14
|
-
const mockTxReceipt = { type: 'TxReceipt' };
|
|
15
|
-
const mockViewResultValue = 1;
|
|
16
|
-
const mockNodeInfo = {
|
|
17
|
-
sandboxVersion: 'vx.x.x',
|
|
18
|
-
compatibleNargoVersion: 'vx.x.x-aztec.x',
|
|
19
|
-
protocolVersion: 1,
|
|
20
|
-
chainId: 2,
|
|
21
|
-
rollupAddress: EthAddress.random(),
|
|
22
|
-
};
|
|
23
|
-
const defaultAbi = {
|
|
24
|
-
name: 'FooContract',
|
|
25
|
-
functions: [
|
|
26
|
-
{
|
|
27
|
-
name: 'bar',
|
|
28
|
-
functionType: FunctionType.SECRET,
|
|
29
|
-
isInternal: false,
|
|
30
|
-
parameters: [
|
|
31
|
-
{
|
|
32
|
-
name: 'value',
|
|
33
|
-
type: {
|
|
34
|
-
kind: 'field',
|
|
35
|
-
},
|
|
36
|
-
visibility: ABIParameterVisibility.PUBLIC,
|
|
37
|
-
},
|
|
38
|
-
{
|
|
39
|
-
name: 'value',
|
|
40
|
-
type: {
|
|
41
|
-
kind: 'field',
|
|
42
|
-
},
|
|
43
|
-
visibility: ABIParameterVisibility.SECRET,
|
|
44
|
-
},
|
|
45
|
-
],
|
|
46
|
-
returnTypes: [],
|
|
47
|
-
bytecode: '0af',
|
|
48
|
-
},
|
|
49
|
-
{
|
|
50
|
-
name: 'baz',
|
|
51
|
-
functionType: FunctionType.OPEN,
|
|
52
|
-
isInternal: false,
|
|
53
|
-
parameters: [],
|
|
54
|
-
returnTypes: [],
|
|
55
|
-
bytecode: '0be',
|
|
56
|
-
},
|
|
57
|
-
{
|
|
58
|
-
name: 'qux',
|
|
59
|
-
functionType: FunctionType.UNCONSTRAINED,
|
|
60
|
-
isInternal: false,
|
|
61
|
-
parameters: [
|
|
62
|
-
{
|
|
63
|
-
name: 'value',
|
|
64
|
-
type: {
|
|
65
|
-
kind: 'field',
|
|
66
|
-
},
|
|
67
|
-
visibility: ABIParameterVisibility.PUBLIC,
|
|
68
|
-
},
|
|
69
|
-
],
|
|
70
|
-
returnTypes: [
|
|
71
|
-
{
|
|
72
|
-
kind: 'integer',
|
|
73
|
-
sign: '',
|
|
74
|
-
width: 32,
|
|
75
|
-
},
|
|
76
|
-
],
|
|
77
|
-
bytecode: '0cd',
|
|
78
|
-
},
|
|
79
|
-
],
|
|
80
|
-
};
|
|
81
|
-
beforeEach(async () => {
|
|
82
|
-
resolvedExtendedContractData = ExtendedContractData.random();
|
|
83
|
-
contractAddress = resolvedExtendedContractData.contractData.contractAddress;
|
|
84
|
-
account = await CompleteAddress.random();
|
|
85
|
-
wallet = mock();
|
|
86
|
-
wallet.createTxExecutionRequest.mockResolvedValue(mockTxRequest);
|
|
87
|
-
wallet.getExtendedContractData.mockResolvedValue(resolvedExtendedContractData);
|
|
88
|
-
wallet.sendTx.mockResolvedValue(mockTxHash);
|
|
89
|
-
wallet.viewTx.mockResolvedValue(mockViewResultValue);
|
|
90
|
-
wallet.getTxReceipt.mockResolvedValue(mockTxReceipt);
|
|
91
|
-
wallet.getNodeInfo.mockResolvedValue(mockNodeInfo);
|
|
92
|
-
wallet.simulateTx.mockResolvedValue(mockTx);
|
|
93
|
-
wallet.getRegisteredAccounts.mockResolvedValue([account]);
|
|
94
|
-
});
|
|
95
|
-
it('should create and send a contract method tx', async () => {
|
|
96
|
-
const fooContract = await Contract.at(contractAddress, defaultAbi, wallet);
|
|
97
|
-
const param0 = 12;
|
|
98
|
-
const param1 = 345n;
|
|
99
|
-
const sentTx = fooContract.methods.bar(param0, param1).send();
|
|
100
|
-
const txHash = await sentTx.getTxHash();
|
|
101
|
-
const receipt = await sentTx.getReceipt();
|
|
102
|
-
expect(txHash).toBe(mockTxHash);
|
|
103
|
-
expect(receipt).toBe(mockTxReceipt);
|
|
104
|
-
expect(wallet.createTxExecutionRequest).toHaveBeenCalledTimes(1);
|
|
105
|
-
expect(wallet.sendTx).toHaveBeenCalledTimes(1);
|
|
106
|
-
expect(wallet.sendTx).toHaveBeenCalledWith(mockTx);
|
|
107
|
-
});
|
|
108
|
-
it('should call view on an unconstrained function', async () => {
|
|
109
|
-
const fooContract = await Contract.at(contractAddress, defaultAbi, wallet);
|
|
110
|
-
const result = await fooContract.methods.qux(123n).view({
|
|
111
|
-
from: account.address,
|
|
112
|
-
});
|
|
113
|
-
expect(wallet.viewTx).toHaveBeenCalledTimes(1);
|
|
114
|
-
expect(wallet.viewTx).toHaveBeenCalledWith('qux', [123n], contractAddress, account.address);
|
|
115
|
-
expect(result).toBe(mockViewResultValue);
|
|
116
|
-
});
|
|
117
|
-
it('should not call create on an unconstrained function', async () => {
|
|
118
|
-
const fooContract = await Contract.at(contractAddress, defaultAbi, wallet);
|
|
119
|
-
await expect(fooContract.methods.qux().create()).rejects.toThrow();
|
|
120
|
-
});
|
|
121
|
-
it('should not call view on a secret or open function', async () => {
|
|
122
|
-
const fooContract = await Contract.at(contractAddress, defaultAbi, wallet);
|
|
123
|
-
expect(() => fooContract.methods.bar().view()).toThrow();
|
|
124
|
-
expect(() => fooContract.methods.baz().view()).toThrow();
|
|
125
|
-
});
|
|
126
|
-
it('should add contract and dependencies to aztec rpc', async () => {
|
|
127
|
-
const entry = {
|
|
128
|
-
abi: randomContractAbi(),
|
|
129
|
-
completeAddress: resolvedExtendedContractData.getCompleteAddress(),
|
|
130
|
-
portalContract: EthAddress.random(),
|
|
131
|
-
};
|
|
132
|
-
const contract = await Contract.at(entry.completeAddress.address, entry.abi, wallet);
|
|
133
|
-
{
|
|
134
|
-
await contract.attach(entry.portalContract);
|
|
135
|
-
expect(wallet.addContracts).toHaveBeenCalledTimes(1);
|
|
136
|
-
expect(wallet.addContracts).toHaveBeenCalledWith([entry]);
|
|
137
|
-
wallet.addContracts.mockClear();
|
|
138
|
-
}
|
|
139
|
-
{
|
|
140
|
-
const dependencies = [await randomDeployedContract(), await randomDeployedContract()];
|
|
141
|
-
await contract.attach(entry.portalContract, dependencies);
|
|
142
|
-
expect(wallet.addContracts).toHaveBeenCalledTimes(1);
|
|
143
|
-
expect(wallet.addContracts).toHaveBeenCalledWith([entry, ...dependencies]);
|
|
144
|
-
}
|
|
145
|
-
});
|
|
146
|
-
});
|
|
147
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJhY3QudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250cmFjdC9jb250cmFjdC50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0IsZUFBZSxFQUFFLFVBQVUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQy9FLE9BQU8sRUFBRSxzQkFBc0IsRUFBZSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRixPQUFPLEVBRUwsb0JBQW9CLEVBTXBCLGlCQUFpQixFQUNqQixzQkFBc0IsR0FDdkIsTUFBTSxjQUFjLENBQUM7QUFFdEIsT0FBTyxFQUFhLElBQUksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBR3JELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFekMsUUFBUSxDQUFDLGdCQUFnQixFQUFFLEdBQUcsRUFBRTtJQUM5QixJQUFJLE1BQXlCLENBQUM7SUFDOUIsSUFBSSw0QkFBa0QsQ0FBQztJQUN2RCxJQUFJLGVBQTZCLENBQUM7SUFDbEMsSUFBSSxPQUF3QixDQUFDO0lBRTdCLE1BQU0sTUFBTSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBZSxDQUFDO0lBQzNDLE1BQU0sYUFBYSxHQUFHLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBK0IsQ0FBQztJQUN6RSxNQUFNLFVBQVUsR0FBRyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQW1CLENBQUM7SUFDdkQsTUFBTSxhQUFhLEdBQUcsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFzQixDQUFDO0lBQ2hFLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxDQUFDO0lBQzlCLE1BQU0sWUFBWSxHQUFhO1FBQzdCLGNBQWMsRUFBRSxRQUFRO1FBQ3hCLHNCQUFzQixFQUFFLGdCQUFnQjtRQUN4QyxlQUFlLEVBQUUsQ0FBQztRQUNsQixPQUFPLEVBQUUsQ0FBQztRQUNWLGFBQWEsRUFBRSxVQUFVLENBQUMsTUFBTSxFQUFF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
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sent_tx.test.d.ts","sourceRoot":"","sources":["../../src/contract/sent_tx.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import { TxHash, TxStatus } from '@aztec/types';
|
|
2
|
-
import { mock } from 'jest-mock-extended';
|
|
3
|
-
import { SentTx } from './sent_tx.js';
|
|
4
|
-
describe('SentTx', () => {
|
|
5
|
-
let rpc;
|
|
6
|
-
let txHashPromise;
|
|
7
|
-
let sentTx;
|
|
8
|
-
beforeEach(() => {
|
|
9
|
-
rpc = mock();
|
|
10
|
-
txHashPromise = Promise.resolve(TxHash.fromBigInt(1n));
|
|
11
|
-
sentTx = new SentTx(rpc, txHashPromise);
|
|
12
|
-
});
|
|
13
|
-
describe('wait', () => {
|
|
14
|
-
let txReceipt;
|
|
15
|
-
beforeEach(() => {
|
|
16
|
-
txReceipt = { status: TxStatus.MINED, blockNumber: 20 };
|
|
17
|
-
rpc.getTxReceipt.mockResolvedValue(txReceipt);
|
|
18
|
-
});
|
|
19
|
-
it('waits for all notes accounts to be synced', async () => {
|
|
20
|
-
rpc.getSyncStatus
|
|
21
|
-
.mockResolvedValueOnce({ blocks: 25, notes: { '0x1': 19, '0x2': 20 } })
|
|
22
|
-
.mockResolvedValueOnce({ blocks: 25, notes: { '0x1': 20, '0x2': 20 } });
|
|
23
|
-
const actual = await sentTx.wait({ timeout: 1, interval: 0.4 });
|
|
24
|
-
expect(actual).toEqual(txReceipt);
|
|
25
|
-
});
|
|
26
|
-
it('fails if an account is not synced', async () => {
|
|
27
|
-
rpc.getSyncStatus.mockResolvedValue({ blocks: 25, notes: { '0x1': 19, '0x2': 20 } });
|
|
28
|
-
await expect(sentTx.wait({ timeout: 1, interval: 0.4 })).rejects.toThrowError(/timeout/i);
|
|
29
|
-
});
|
|
30
|
-
it('does not wait for notes sync', async () => {
|
|
31
|
-
rpc.getSyncStatus.mockResolvedValue({ blocks: 19, notes: { '0x1': 19, '0x2': 19 } });
|
|
32
|
-
const actual = await sentTx.wait({ timeout: 1, interval: 0.4, waitForNotesSync: false });
|
|
33
|
-
expect(actual).toEqual(txReceipt);
|
|
34
|
-
});
|
|
35
|
-
it('throws if tx is dropped', async () => {
|
|
36
|
-
rpc.getTxReceipt.mockResolvedValue({ ...txReceipt, status: TxStatus.DROPPED });
|
|
37
|
-
rpc.getSyncStatus.mockResolvedValue({ blocks: 19, notes: { '0x1': 19, '0x2': 19 } });
|
|
38
|
-
await expect(sentTx.wait({ timeout: 1, interval: 0.4 })).rejects.toThrowError(/dropped/);
|
|
39
|
-
});
|
|
40
|
-
});
|
|
41
|
-
});
|
|
42
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VudF90eC50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnRyYWN0L3NlbnRfdHgudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQVksTUFBTSxFQUFhLFFBQVEsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUVyRSxPQUFPLEVBQWEsSUFBSSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFckQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUV0QyxRQUFRLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRTtJQUN0QixJQUFJLEdBQXdCLENBQUM7SUFDN0IsSUFBSSxhQUE4QixDQUFDO0lBRW5DLElBQUksTUFBYyxDQUFDO0lBRW5CLFVBQVUsQ0FBQyxHQUFHLEVBQUU7UUFDZCxHQUFHLEdBQUcsSUFBSSxFQUFFLENBQUM7UUFDYixhQUFhLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDdkQsTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLEdBQUcsRUFBRSxhQUFhLENBQUMsQ0FBQztJQUMxQyxDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFO1FBQ3BCLElBQUksU0FBb0IsQ0FBQztRQUN6QixVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsU0FBUyxHQUFHLEVBQUUsTUFBTSxFQUFFLFFBQVEsQ0FBQyxLQUFLLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBZSxDQUFDO1lBQ3JFLEdBQUcsQ0FBQyxZQUFZLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDaEQsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsMkNBQTJDLEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDekQsR0FBRyxDQUFDLGFBQWE7aUJBQ2QscUJBQXFCLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFB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
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"contract_deployer.test.d.ts","sourceRoot":"","sources":["../../src/contract_deployer/contract_deployer.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
import { EthAddress, Fr, Point } from '@aztec/circuits.js';
|
|
2
|
-
import { FunctionType } from '@aztec/foundation/abi';
|
|
3
|
-
import { mock } from 'jest-mock-extended';
|
|
4
|
-
import { ContractDeployer } from './contract_deployer.js';
|
|
5
|
-
describe.skip('Contract Deployer', () => {
|
|
6
|
-
let arc;
|
|
7
|
-
const abi = {
|
|
8
|
-
name: 'MyContract',
|
|
9
|
-
functions: [
|
|
10
|
-
{
|
|
11
|
-
name: 'constructor',
|
|
12
|
-
functionType: FunctionType.SECRET,
|
|
13
|
-
isInternal: false,
|
|
14
|
-
parameters: [],
|
|
15
|
-
returnTypes: [],
|
|
16
|
-
bytecode: '0af',
|
|
17
|
-
},
|
|
18
|
-
],
|
|
19
|
-
};
|
|
20
|
-
const publicKey = Point.random();
|
|
21
|
-
const portalContract = EthAddress.random();
|
|
22
|
-
const contractAddressSalt = Fr.random();
|
|
23
|
-
const args = [12, 345n];
|
|
24
|
-
const mockTx = { type: 'Tx' };
|
|
25
|
-
const mockTxHash = { type: 'TxHash' };
|
|
26
|
-
const mockTxReceipt = { type: 'TxReceipt' };
|
|
27
|
-
beforeEach(() => {
|
|
28
|
-
arc = mock();
|
|
29
|
-
arc.sendTx.mockResolvedValue(mockTxHash);
|
|
30
|
-
arc.getTxReceipt.mockResolvedValue(mockTxReceipt);
|
|
31
|
-
});
|
|
32
|
-
it('should create and send a contract deployment tx', async () => {
|
|
33
|
-
const deployer = new ContractDeployer(abi, arc, publicKey);
|
|
34
|
-
const sentTx = deployer.deploy(args[0], args[1]).send({
|
|
35
|
-
portalContract,
|
|
36
|
-
contractAddressSalt,
|
|
37
|
-
});
|
|
38
|
-
const txHash = await sentTx.getTxHash();
|
|
39
|
-
const receipt = await sentTx.getReceipt();
|
|
40
|
-
expect(txHash).toBe(mockTxHash);
|
|
41
|
-
expect(receipt).toBe(mockTxReceipt);
|
|
42
|
-
expect(arc.sendTx).toHaveBeenCalledTimes(1);
|
|
43
|
-
expect(arc.sendTx).toHaveBeenCalledWith(mockTx);
|
|
44
|
-
});
|
|
45
|
-
});
|
|
46
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJhY3RfZGVwbG95ZXIudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250cmFjdF9kZXBsb3llci9jb250cmFjdF9kZXBsb3llci50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzNELE9BQU8sRUFBZSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUdsRSxPQUFPLEVBQWEsSUFBSSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFckQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFMUQsUUFBUSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxHQUFHLEVBQUU7SUFDdEMsSUFBSSxHQUF3QixDQUFDO0lBRTdCLE1BQU0sR0FBRyxHQUFnQjtRQUN2QixJQUFJLEVBQUUsWUFBWTtRQUNsQixTQUFTLEVBQUU7WUFDVDtnQkFDRSxJQUFJLEVBQUUsYUFBYTtnQkFDbkIsWUFBWSxFQUFFLFlBQVksQ0FBQyxNQUFNO2dCQUNqQyxVQUFVLEVBQUUsS0FBSztnQkFDakIsVUFBVSxFQUFFLEVBQUU7Z0JBQ2QsV0FBVyxFQUFFLEVBQUU7Z0JBQ2YsUUFBUSxFQUFFLEtBQUs7YUFDaEI7U0FDRjtLQUNGLENBQUM7SUFFRixNQUFNLFNBQVMsR0FBYyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDNUMsTUFBTSxjQUFjLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQzNDLE1BQU0sbUJBQW1CLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ3hDLE1BQU0sSUFBSSxHQUFHLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBRXhCLE1BQU0sTUFBTSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBZSxDQUFDO0lBQzNDLE1BQU0sVUFBVSxHQUFHLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBbUIsQ0FBQztJQUN2RCxNQUFNLGFBQWEsR0FBRyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQXNCLENBQUM7SUFFaEUsVUFBVSxDQUFDLEdBQUcsRUFBRTtRQUNkLEdBQUcsR0FBRyxJQUFJLEVBQVksQ0FBQztRQUN2QixHQUFHLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3pDLEdBQUcsQ0FBQyxZQUFZLENBQUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDcEQsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsaURBQWlELEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDL0QsTUFBTSxRQUFRLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQzNELE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUNwRCxjQUFjO1lBQ2QsbUJBQW1CO1NBQ3BCLENBQUMsQ0FBQztRQUNILE1BQU0sTUFBTSxHQUFHLE1BQU0sTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3hDLE1BQU0sT0FBTyxHQUFHLE1BQU0sTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBRTFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDaEMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNwQyxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzVDLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbEQsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyJ9
|