@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.
Files changed (133) hide show
  1. package/README.md +25 -23
  2. package/dest/abis/ecdsa_account_contract.json +20 -8
  3. package/dest/abis/schnorr_account_contract.json +20 -8
  4. package/dest/abis/schnorr_single_key_account_contract.json +19 -7
  5. package/dest/account/defaults/default_entrypoint.js +3 -3
  6. package/dest/account/index.d.ts +33 -11
  7. package/dest/account/index.d.ts.map +1 -1
  8. package/dest/account/index.js +40 -18
  9. package/dest/account/manager/index.d.ts +8 -8
  10. package/dest/account/manager/index.d.ts.map +1 -1
  11. package/dest/account/manager/index.js +12 -12
  12. package/dest/{utils/account.d.ts → account/utils.d.ts} +10 -10
  13. package/dest/account/utils.d.ts.map +1 -0
  14. package/dest/account/utils.js +40 -0
  15. package/dest/contract/base_contract_interaction.d.ts +5 -5
  16. package/dest/contract/base_contract_interaction.d.ts.map +1 -1
  17. package/dest/contract/base_contract_interaction.js +6 -6
  18. package/dest/contract/contract.d.ts +1 -1
  19. package/dest/contract/contract.js +1 -1
  20. package/dest/contract/contract_base.d.ts +3 -3
  21. package/dest/contract/contract_base.d.ts.map +1 -1
  22. package/dest/contract/contract_base.js +2 -2
  23. package/dest/contract/contract_function_interaction.d.ts +2 -2
  24. package/dest/contract/contract_function_interaction.d.ts.map +1 -1
  25. package/dest/contract/index.d.ts +37 -0
  26. package/dest/contract/index.d.ts.map +1 -1
  27. package/dest/contract/index.js +38 -1
  28. package/dest/contract/sent_tx.d.ts +6 -6
  29. package/dest/contract/sent_tx.d.ts.map +1 -1
  30. package/dest/contract/sent_tx.js +9 -9
  31. package/dest/contract_deployer/contract_deployer.d.ts +4 -4
  32. package/dest/contract_deployer/contract_deployer.d.ts.map +1 -1
  33. package/dest/contract_deployer/contract_deployer.js +5 -5
  34. package/dest/contract_deployer/deploy_method.d.ts +5 -5
  35. package/dest/contract_deployer/deploy_method.d.ts.map +1 -1
  36. package/dest/contract_deployer/deploy_method.js +7 -7
  37. package/dest/contract_deployer/deploy_sent_tx.d.ts +2 -2
  38. package/dest/contract_deployer/deploy_sent_tx.d.ts.map +1 -1
  39. package/dest/contract_deployer/deploy_sent_tx.js +3 -3
  40. package/dest/index.d.ts +2 -2
  41. package/dest/index.d.ts.map +1 -1
  42. package/dest/index.js +3 -3
  43. package/dest/pxe_client.d.ts +4 -0
  44. package/dest/pxe_client.d.ts.map +1 -0
  45. package/dest/pxe_client.js +20 -0
  46. package/dest/sandbox/index.d.ts +8 -8
  47. package/dest/sandbox/index.d.ts.map +1 -1
  48. package/dest/sandbox/index.js +13 -13
  49. package/dest/utils/abi_types.d.ts +9 -1
  50. package/dest/utils/abi_types.d.ts.map +1 -1
  51. package/dest/utils/authwit.d.ts +12 -0
  52. package/dest/utils/authwit.d.ts.map +1 -0
  53. package/dest/utils/authwit.js +20 -0
  54. package/dest/utils/cheat_codes.d.ts +8 -8
  55. package/dest/utils/cheat_codes.d.ts.map +1 -1
  56. package/dest/utils/cheat_codes.js +11 -11
  57. package/dest/utils/index.d.ts +1 -1
  58. package/dest/utils/index.d.ts.map +1 -1
  59. package/dest/utils/index.js +2 -2
  60. package/dest/utils/l1_contracts.d.ts +1 -30
  61. package/dest/utils/l1_contracts.d.ts.map +1 -1
  62. package/dest/utils/l1_contracts.js +5 -6
  63. package/dest/utils/l2_contracts.d.ts +3 -3
  64. package/dest/utils/l2_contracts.d.ts.map +1 -1
  65. package/dest/utils/l2_contracts.js +4 -4
  66. package/dest/wallet/account_wallet.d.ts +2 -2
  67. package/dest/wallet/account_wallet.d.ts.map +1 -1
  68. package/dest/wallet/account_wallet.js +4 -4
  69. package/dest/wallet/base_wallet.d.ts +7 -5
  70. package/dest/wallet/base_wallet.d.ts.map +1 -1
  71. package/dest/wallet/base_wallet.js +35 -29
  72. package/dest/wallet/index.d.ts +2 -2
  73. package/dest/wallet/index.d.ts.map +1 -1
  74. package/dest/wallet/signerless_wallet.js +1 -1
  75. package/package.json +69 -6
  76. package/src/abis/ecdsa_account_contract.json +20 -8
  77. package/src/abis/schnorr_account_contract.json +20 -8
  78. package/src/abis/schnorr_single_key_account_contract.json +19 -7
  79. package/src/account/defaults/default_entrypoint.ts +2 -2
  80. package/src/account/index.ts +40 -18
  81. package/src/account/manager/index.ts +11 -11
  82. package/src/{utils/account.ts → account/utils.ts} +12 -12
  83. package/src/contract/base_contract_interaction.ts +7 -7
  84. package/src/contract/contract.ts +1 -1
  85. package/src/contract/contract_base.ts +2 -2
  86. package/src/contract/contract_function_interaction.ts +2 -2
  87. package/src/contract/index.ts +37 -0
  88. package/src/contract/sent_tx.ts +9 -9
  89. package/src/contract_deployer/contract_deployer.ts +4 -4
  90. package/src/contract_deployer/deploy_method.ts +8 -8
  91. package/src/contract_deployer/deploy_sent_tx.ts +4 -4
  92. package/src/index.ts +4 -2
  93. package/src/{aztec_rpc_client.ts → pxe_client.ts} +5 -3
  94. package/src/sandbox/index.ts +12 -12
  95. package/src/utils/abi_types.ts +7 -1
  96. package/src/utils/authwit.ts +24 -0
  97. package/src/utils/cheat_codes.ts +10 -10
  98. package/src/utils/index.ts +1 -1
  99. package/src/utils/l1_contracts.ts +5 -44
  100. package/src/utils/l2_contracts.ts +4 -4
  101. package/src/wallet/account_wallet.ts +4 -4
  102. package/src/wallet/base_wallet.ts +42 -28
  103. package/src/wallet/index.ts +2 -2
  104. package/src/wallet/signerless_wallet.ts +1 -1
  105. package/.eslintrc.cjs +0 -1
  106. package/.tsbuildinfo +0 -1
  107. package/dest/aztec_rpc_client.d.ts +0 -4
  108. package/dest/aztec_rpc_client.d.ts.map +0 -1
  109. package/dest/aztec_rpc_client.js +0 -19
  110. package/dest/contract/checker.test.d.ts +0 -2
  111. package/dest/contract/checker.test.d.ts.map +0 -1
  112. package/dest/contract/checker.test.js +0 -169
  113. package/dest/contract/contract.test.d.ts +0 -2
  114. package/dest/contract/contract.test.d.ts.map +0 -1
  115. package/dest/contract/contract.test.js +0 -147
  116. package/dest/contract/sent_tx.test.d.ts +0 -2
  117. package/dest/contract/sent_tx.test.d.ts.map +0 -1
  118. package/dest/contract/sent_tx.test.js +0 -42
  119. package/dest/contract_deployer/contract_deployer.test.d.ts +0 -2
  120. package/dest/contract_deployer/contract_deployer.test.d.ts.map +0 -1
  121. package/dest/contract_deployer/contract_deployer.test.js +0 -46
  122. package/dest/main.js +0 -2
  123. package/dest/main.js.LICENSE.txt +0 -10
  124. package/dest/utils/account.d.ts.map +0 -1
  125. package/dest/utils/account.js +0 -40
  126. package/package.local.json +0 -5
  127. package/src/contract/checker.test.ts +0 -178
  128. package/src/contract/contract.test.ts +0 -172
  129. package/src/contract/sent_tx.test.ts +0 -52
  130. package/src/contract_deployer/contract_deployer.test.ts +0 -55
  131. package/tsconfig.dest.json +0 -15
  132. package/tsconfig.json +0 -20
  133. 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,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=sent_tx.test.d.ts.map
@@ -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,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=contract_deployer.test.d.ts.map
@@ -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