@aztec/accounts 0.76.4 → 0.77.0-testnet-ignition.21

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 (111) hide show
  1. package/README.md +11 -8
  2. package/artifacts/EcdsaKAccount.d.json.ts +1 -1
  3. package/artifacts/EcdsaKAccount.json +850 -690
  4. package/artifacts/EcdsaRAccount.d.json.ts +1 -1
  5. package/artifacts/EcdsaRAccount.json +684 -524
  6. package/artifacts/SchnorrAccount.d.json.ts +1 -1
  7. package/artifacts/SchnorrAccount.json +692 -459
  8. package/artifacts/SchnorrSingleKeyAccount.d.json.ts +1 -1
  9. package/artifacts/SchnorrSingleKeyAccount.json +227 -301
  10. package/dest/dapp/dapp_interface.d.ts +1 -2
  11. package/dest/dapp/dapp_interface.d.ts.map +1 -1
  12. package/dest/dapp/dapp_interface.js +3 -5
  13. package/dest/dapp/index.js +0 -1
  14. package/dest/defaults/account_contract.d.ts +5 -7
  15. package/dest/defaults/account_contract.d.ts.map +1 -1
  16. package/dest/defaults/account_contract.js +2 -9
  17. package/dest/defaults/account_interface.d.ts +8 -4
  18. package/dest/defaults/account_interface.d.ts.map +1 -1
  19. package/dest/defaults/account_interface.js +8 -5
  20. package/dest/defaults/index.js +1 -3
  21. package/dest/ecdsa/ecdsa_k/account_contract.d.ts +5 -3
  22. package/dest/ecdsa/ecdsa_k/account_contract.d.ts.map +1 -1
  23. package/dest/ecdsa/ecdsa_k/account_contract.js +19 -14
  24. package/dest/ecdsa/ecdsa_k/index.d.ts +15 -5
  25. package/dest/ecdsa/ecdsa_k/index.d.ts.map +1 -1
  26. package/dest/ecdsa/ecdsa_k/index.js +21 -10
  27. package/dest/ecdsa/ecdsa_k/lazy.d.ts +47 -0
  28. package/dest/ecdsa/ecdsa_k/lazy.d.ts.map +1 -0
  29. package/dest/ecdsa/ecdsa_k/lazy.js +52 -0
  30. package/dest/ecdsa/index.js +0 -1
  31. package/dest/ecdsa/lazy.d.ts +3 -0
  32. package/dest/ecdsa/lazy.d.ts.map +1 -0
  33. package/dest/ecdsa/lazy.js +2 -0
  34. package/dest/ecdsa/ssh_ecdsa_r/account_contract.d.ts +5 -3
  35. package/dest/ecdsa/ssh_ecdsa_r/account_contract.d.ts.map +1 -1
  36. package/dest/ecdsa/ssh_ecdsa_r/account_contract.js +55 -51
  37. package/dest/ecdsa/ssh_ecdsa_r/index.d.ts +18 -5
  38. package/dest/ecdsa/ssh_ecdsa_r/index.d.ts.map +1 -1
  39. package/dest/ecdsa/ssh_ecdsa_r/index.js +24 -10
  40. package/dest/ecdsa/ssh_ecdsa_r/lazy.d.ts +49 -0
  41. package/dest/ecdsa/ssh_ecdsa_r/lazy.d.ts.map +1 -0
  42. package/dest/ecdsa/ssh_ecdsa_r/lazy.js +57 -0
  43. package/dest/schnorr/account_contract.d.ts +13 -4
  44. package/dest/schnorr/account_contract.d.ts.map +1 -1
  45. package/dest/schnorr/account_contract.js +18 -14
  46. package/dest/schnorr/index.d.ts +32 -6
  47. package/dest/schnorr/index.d.ts.map +1 -1
  48. package/dest/schnorr/index.js +43 -10
  49. package/dest/schnorr/lazy.d.ts +61 -0
  50. package/dest/schnorr/lazy.d.ts.map +1 -0
  51. package/dest/schnorr/lazy.js +74 -0
  52. package/dest/single_key/account_contract.d.ts +6 -3
  53. package/dest/single_key/account_contract.d.ts.map +1 -1
  54. package/dest/single_key/account_contract.js +17 -13
  55. package/dest/single_key/index.d.ts +16 -8
  56. package/dest/single_key/index.d.ts.map +1 -1
  57. package/dest/single_key/index.js +23 -13
  58. package/dest/single_key/lazy.d.ts +43 -0
  59. package/dest/single_key/lazy.d.ts.map +1 -0
  60. package/dest/single_key/lazy.js +53 -0
  61. package/dest/testing/configuration.d.ts +23 -24
  62. package/dest/testing/configuration.d.ts.map +1 -1
  63. package/dest/testing/configuration.js +8 -79
  64. package/dest/testing/create_account.d.ts +38 -15
  65. package/dest/testing/create_account.d.ts.map +1 -1
  66. package/dest/testing/create_account.js +53 -49
  67. package/dest/testing/index.d.ts +28 -4
  68. package/dest/testing/index.d.ts.map +1 -1
  69. package/dest/testing/index.js +42 -6
  70. package/dest/testing/lazy.d.ts +34 -0
  71. package/dest/testing/lazy.d.ts.map +1 -0
  72. package/dest/testing/lazy.js +46 -0
  73. package/dest/utils/index.js +0 -1
  74. package/dest/utils/ssh_agent.js +75 -31
  75. package/package.json +12 -10
  76. package/src/dapp/dapp_interface.ts +7 -2
  77. package/src/defaults/account_contract.ts +5 -9
  78. package/src/defaults/account_interface.ts +8 -4
  79. package/src/ecdsa/ecdsa_k/account_contract.ts +9 -8
  80. package/src/ecdsa/ecdsa_k/index.ts +25 -5
  81. package/src/ecdsa/ecdsa_k/lazy.ts +71 -0
  82. package/src/ecdsa/lazy.ts +2 -0
  83. package/src/ecdsa/ssh_ecdsa_r/account_contract.ts +9 -8
  84. package/src/ecdsa/ssh_ecdsa_r/index.ts +29 -5
  85. package/src/ecdsa/ssh_ecdsa_r/lazy.ts +78 -0
  86. package/src/schnorr/account_contract.ts +10 -9
  87. package/src/schnorr/index.ts +56 -7
  88. package/src/schnorr/lazy.ts +107 -0
  89. package/src/single_key/account_contract.ts +9 -8
  90. package/src/single_key/index.ts +29 -11
  91. package/src/single_key/lazy.ts +71 -0
  92. package/src/testing/configuration.ts +21 -103
  93. package/src/testing/create_account.ts +79 -57
  94. package/src/testing/index.ts +85 -4
  95. package/src/testing/lazy.ts +86 -0
  96. package/dest/ecdsa/ecdsa_k/artifact.d.ts +0 -3
  97. package/dest/ecdsa/ecdsa_k/artifact.d.ts.map +0 -1
  98. package/dest/ecdsa/ecdsa_k/artifact.js +0 -4
  99. package/dest/ecdsa/ssh_ecdsa_r/artifact.d.ts +0 -2
  100. package/dest/ecdsa/ssh_ecdsa_r/artifact.d.ts.map +0 -1
  101. package/dest/ecdsa/ssh_ecdsa_r/artifact.js +0 -4
  102. package/dest/schnorr/artifact.d.ts +0 -2
  103. package/dest/schnorr/artifact.d.ts.map +0 -1
  104. package/dest/schnorr/artifact.js +0 -4
  105. package/dest/single_key/artifact.d.ts +0 -2
  106. package/dest/single_key/artifact.d.ts.map +0 -1
  107. package/dest/single_key/artifact.js +0 -4
  108. package/src/ecdsa/ecdsa_k/artifact.ts +0 -7
  109. package/src/ecdsa/ssh_ecdsa_r/artifact.ts +0 -5
  110. package/src/schnorr/artifact.ts +0 -5
  111. package/src/single_key/artifact.ts +0 -7
@@ -1,54 +1,58 @@
1
- import { Fr, deriveSigningKey } from '@aztec/circuits.js';
2
- import { getSchnorrAccount } from '../schnorr/index.js';
1
+ import { FeeJuicePaymentMethod } from '@aztec/aztec.js';
2
+ import { Fr } from '@aztec/foundation/fields';
3
+ import { deriveSigningKey } from '@aztec/stdlib/keys';
4
+ import { getSchnorrAccount, getSchnorrAccountContractAddress } from '../schnorr/index.js';
3
5
  /**
4
- * Deploys and registers a new account using random private keys and returns the associated Schnorr account wallet. Useful for testing.
5
- * @param pxe - PXE.
6
- * @returns - A wallet for a fresh account.
7
- */
8
- export async function createAccount(pxe) {
9
- const secretKey = Fr.random();
10
- const signingKey = deriveSigningKey(secretKey);
11
- const account = await getSchnorrAccount(pxe, secretKey, signingKey);
12
- return account.waitSetup();
6
+ * Generate a fixed amount of random schnorr account contract instance.
7
+ */ export async function generateSchnorrAccounts(numberOfAccounts) {
8
+ const secrets = Array.from({
9
+ length: numberOfAccounts
10
+ }, ()=>Fr.random());
11
+ return await Promise.all(secrets.map(async (secret)=>{
12
+ const salt = Fr.random();
13
+ return {
14
+ secret,
15
+ signingKey: deriveSigningKey(secret),
16
+ salt,
17
+ address: await getSchnorrAccountContractAddress(secret, salt)
18
+ };
19
+ }));
13
20
  }
14
21
  /**
15
- * Creates a given number of random accounts using the Schnorr account wallet.
16
- * @param pxe - PXE.
17
- * @param numberOfAccounts - How many accounts to create.
18
- * @param secrets - Optional array of secrets to use for the accounts. If empty, random secrets will be generated.
19
- * @throws If the secrets array is not empty and does not have the same length as the number of accounts.
20
- * @returns The created account wallets.
21
- */
22
- export async function createAccounts(pxe, numberOfAccounts = 1, secrets = [], waitOpts = { interval: 0.1 }) {
23
- if (secrets.length == 0) {
24
- secrets = Array.from({ length: numberOfAccounts }, () => Fr.random());
25
- }
26
- else if (secrets.length > 0 && secrets.length !== numberOfAccounts) {
27
- throw new Error('Secrets array must be empty or have the same length as the number of accounts');
28
- }
29
- // Prepare deployments
30
- const accountsAndDeployments = await Promise.all(secrets.map(async (secret, index) => {
31
- const signingKey = deriveSigningKey(secret);
32
- const account = await getSchnorrAccount(pxe, secret, signingKey);
33
- // only register the contract class once
34
- let skipClassRegistration = true;
35
- if (index === 0) {
36
- // for the first account, check if the contract class is already registered, otherwise we should register now
37
- if (!(await pxe.getContractClassMetadata(account.getInstance().contractClassId)).isContractClassPubliclyRegistered) {
38
- skipClassRegistration = false;
39
- }
22
+ * Deploy schnorr account contract.
23
+ * It will pay for the fee for the deployment itself. So it must be funded with the prefilled public data.
24
+ */ export async function deployFundedSchnorrAccount(pxe, account, opts = {
25
+ interval: 0.1,
26
+ skipClassRegistration: false
27
+ }) {
28
+ const signingKey = account.signingKey ?? deriveSigningKey(account.secret);
29
+ const accountManager = await getSchnorrAccount(pxe, account.secret, signingKey, account.salt);
30
+ // Pay the fee by the account itself.
31
+ // This only works when the world state is prefilled with the balance for the account in test environment.
32
+ const paymentMethod = new FeeJuicePaymentMethod(accountManager.getAddress());
33
+ await accountManager.deploy({
34
+ skipClassRegistration: opts.skipClassRegistration,
35
+ skipPublicDeployment: true,
36
+ fee: {
37
+ paymentMethod
40
38
  }
41
- const deployMethod = await account.getDeployMethod();
42
- const provenTx = await deployMethod.prove({
43
- contractAddressSalt: new Fr(account.salt),
44
- skipClassRegistration,
45
- skipPublicDeployment: true,
46
- universalDeploy: true,
47
- });
48
- return { account, provenTx };
49
- }));
50
- // Send them and await them to be mined
51
- await Promise.all(accountsAndDeployments.map(({ provenTx }) => provenTx.send().wait(waitOpts)));
52
- return Promise.all(accountsAndDeployments.map(({ account }) => account.getWallet()));
39
+ }).wait(opts);
40
+ return accountManager;
41
+ }
42
+ /**
43
+ * Deploy schnorr account contracts.
44
+ * They will pay for the fees for the deployment themselves. So they must be funded with the prefilled public data.
45
+ */ export async function deployFundedSchnorrAccounts(pxe, accounts, opts = {
46
+ interval: 0.1,
47
+ skipClassRegistration: false
48
+ }) {
49
+ const accountManagers = [];
50
+ // Serial due to https://github.com/AztecProtocol/aztec-packages/issues/12045
51
+ for(let i = 0; i < accounts.length; i++){
52
+ accountManagers.push(await deployFundedSchnorrAccount(pxe, accounts[i], {
53
+ ...opts,
54
+ skipClassRegistration: i !== 0 || opts.skipClassRegistration
55
+ }));
56
+ }
57
+ return accountManagers;
53
58
  }
54
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlX2FjY291bnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVzdGluZy9jcmVhdGVfYWNjb3VudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUUsRUFBRSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFMUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFeEQ7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsYUFBYSxDQUFDLEdBQVE7SUFDMUMsTUFBTSxTQUFTLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQzlCLE1BQU0sVUFBVSxHQUFHLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQy9DLE1BQU0sT0FBTyxHQUFHLE1BQU0saUJBQWlCLENBQUMsR0FBRyxFQUFFLFNBQVMsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUNwRSxPQUFPLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQztBQUM3QixDQUFDO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsY0FBYyxDQUNsQyxHQUFRLEVBQ1IsZ0JBQWdCLEdBQUcsQ0FBQyxFQUNwQixVQUFnQixFQUFFLEVBQ2xCLFdBQXFCLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRTtJQUV0QyxJQUFJLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDeEIsT0FBTyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsZ0JBQWdCLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUN4RSxDQUFDO1NBQU0sSUFBSSxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxPQUFPLENBQUMsTUFBTSxLQUFLLGdCQUFnQixFQUFFLENBQUM7UUFDckUsTUFBTSxJQUFJLEtBQUssQ0FBQywrRUFBK0UsQ0FBQyxDQUFDO0lBQ25HLENBQUM7SUFFRCxzQkFBc0I7SUFDdEIsTUFBTSxzQkFBc0IsR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQzlDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRTtRQUNsQyxNQUFNLFVBQVUsR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM1QyxNQUFNLE9BQU8sR0FBRyxNQUFNLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFFakUsd0NBQXdDO1FBQ3hDLElBQUkscUJBQXFCLEdBQUcsSUFBSSxDQUFDO1FBQ2pDLElBQUksS0FBSyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ2hCLDZHQUE2RztZQUM3RyxJQUNFLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyx3QkFBd0IsQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxpQ0FBaUMsRUFDOUcsQ0FBQztnQkFDRCxxQkFBcUIsR0FBRyxLQUFLLENBQUM7WUFDaEMsQ0FBQztRQUNILENBQUM7UUFFRCxNQUFNLFlBQVksR0FBRyxNQUFNLE9BQU8sQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUNyRCxNQUFNLFFBQVEsR0FBRyxNQUFNLFlBQVksQ0FBQyxLQUFLLENBQUM7WUFDeEMsbUJBQW1CLEVBQUUsSUFBSSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztZQUN6QyxxQkFBcUI7WUFDckIsb0JBQW9CLEVBQUUsSUFBSTtZQUMxQixlQUFlLEVBQUUsSUFBSTtTQUN0QixDQUFDLENBQUM7UUFDSCxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxDQUFDO0lBQy9CLENBQUMsQ0FBQyxDQUNILENBQUM7SUFFRix1Q0FBdUM7SUFDdkMsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hHLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3ZGLENBQUMifQ==
@@ -1,11 +1,35 @@
1
1
  /**
2
2
  * The `@aztec/accounts/testing` export provides utility methods for testing, in particular in a Sandbox environment.
3
3
  *
4
- * Use the {@link createAccount} and {@link createAccounts} methods to create new sample accounts for testing,
5
- * or use {@link getInitialTestAccountsWallets} to obtain a list of wallets for the Sandbox pre-seeded accounts.
4
+ * Use {@link getInitialTestAccountsWallets} to obtain a list of wallets for the Sandbox pre-seeded accounts.
6
5
  *
7
6
  * @packageDocumentation
8
7
  */
9
- export * from './create_account.js';
10
- export * from './configuration.js';
8
+ import type { PXE } from '@aztec/aztec.js';
9
+ import type { AccountWalletWithSecretKey } from '@aztec/aztec.js/wallet';
10
+ import type { InitialAccountData } from './configuration.js';
11
+ export { type InitialAccountData, INITIAL_TEST_ACCOUNT_SALTS, INITIAL_TEST_ENCRYPTION_KEYS, INITIAL_TEST_SECRET_KEYS, INITIAL_TEST_SIGNING_KEYS, } from './configuration.js';
12
+ /**
13
+ * Gets the basic information for initial test accounts.
14
+ */
15
+ export declare function getInitialTestAccounts(): Promise<InitialAccountData[]>;
16
+ /**
17
+ * Gets a collection of wallets for the Aztec accounts that are initially stored in the test environment.
18
+ * @param pxe - PXE instance.
19
+ * @returns A set of AccountWallet implementations for each of the initial accounts.
20
+ */
21
+ export declare function getInitialTestAccountsWallets(pxe: PXE): Promise<AccountWalletWithSecretKey[]>;
22
+ /**
23
+ * Queries a PXE for it's registered accounts.
24
+ * @param pxe - PXE instance.
25
+ * @returns A set of key data for each of the initial accounts.
26
+ */
27
+ export declare function getDeployedTestAccounts(pxe: PXE): Promise<InitialAccountData[]>;
28
+ /**
29
+ * Queries a PXE for it's registered accounts and returns wallets for those accounts using keys in the initial test accounts.
30
+ * @param pxe - PXE instance.
31
+ * @returns A set of AccountWallet implementations for each of the initial accounts.
32
+ */
33
+ export declare function getDeployedTestAccountsWallets(pxe: PXE): Promise<AccountWalletWithSecretKey[]>;
34
+ export { deployFundedSchnorrAccount, deployFundedSchnorrAccounts, generateSchnorrAccounts } from './create_account.js';
11
35
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/testing/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/testing/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AAOzE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAQ7D,OAAO,EACL,KAAK,kBAAkB,EACvB,0BAA0B,EAC1B,4BAA4B,EAC5B,wBAAwB,EACxB,yBAAyB,GAC1B,MAAM,oBAAoB,CAAC;AAE5B;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAatE;AAED;;;;GAIG;AACH,wBAAgB,6BAA6B,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,0BAA0B,EAAE,CAAC,CAY7F;AAED;;;;GAIG;AACH,wBAAsB,uBAAuB,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAIrF;AAED;;;;GAIG;AACH,wBAAsB,8BAA8B,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,0BAA0B,EAAE,CAAC,CAKpG;AAED,OAAO,EAAE,0BAA0B,EAAE,2BAA2B,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC"}
@@ -1,11 +1,47 @@
1
1
  /**
2
2
  * The `@aztec/accounts/testing` export provides utility methods for testing, in particular in a Sandbox environment.
3
3
  *
4
- * Use the {@link createAccount} and {@link createAccounts} methods to create new sample accounts for testing,
5
- * or use {@link getInitialTestAccountsWallets} to obtain a list of wallets for the Sandbox pre-seeded accounts.
4
+ * Use {@link getInitialTestAccountsWallets} to obtain a list of wallets for the Sandbox pre-seeded accounts.
6
5
  *
7
6
  * @packageDocumentation
8
- */
9
- export * from './create_account.js';
10
- export * from './configuration.js';
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVzdGluZy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7OztHQU9HO0FBRUgsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLG9CQUFvQixDQUFDIn0=
7
+ */ import { getSchnorrAccount, getSchnorrAccountContractAddress, getSchnorrWalletWithSecretKey } from '../schnorr/index.js';
8
+ import { INITIAL_TEST_ACCOUNT_SALTS, INITIAL_TEST_ENCRYPTION_KEYS, INITIAL_TEST_SECRET_KEYS, INITIAL_TEST_SIGNING_KEYS } from './configuration.js';
9
+ export { INITIAL_TEST_ACCOUNT_SALTS, INITIAL_TEST_ENCRYPTION_KEYS, INITIAL_TEST_SECRET_KEYS, INITIAL_TEST_SIGNING_KEYS } from './configuration.js';
10
+ /**
11
+ * Gets the basic information for initial test accounts.
12
+ */ export function getInitialTestAccounts() {
13
+ return Promise.all(INITIAL_TEST_SECRET_KEYS.map(async (secret, i)=>({
14
+ secret,
15
+ signingKey: INITIAL_TEST_ENCRYPTION_KEYS[i],
16
+ salt: INITIAL_TEST_ACCOUNT_SALTS[i],
17
+ address: await getSchnorrAccountContractAddress(secret, INITIAL_TEST_ACCOUNT_SALTS[i], INITIAL_TEST_SIGNING_KEYS[i])
18
+ })));
19
+ }
20
+ /**
21
+ * Gets a collection of wallets for the Aztec accounts that are initially stored in the test environment.
22
+ * @param pxe - PXE instance.
23
+ * @returns A set of AccountWallet implementations for each of the initial accounts.
24
+ */ export function getInitialTestAccountsWallets(pxe) {
25
+ return Promise.all(INITIAL_TEST_SECRET_KEYS.map(async (encryptionKey, i)=>{
26
+ const account = await getSchnorrAccount(pxe, encryptionKey, INITIAL_TEST_SIGNING_KEYS[i], INITIAL_TEST_ACCOUNT_SALTS[i]);
27
+ return account.getWallet();
28
+ }));
29
+ }
30
+ /**
31
+ * Queries a PXE for it's registered accounts.
32
+ * @param pxe - PXE instance.
33
+ * @returns A set of key data for each of the initial accounts.
34
+ */ export async function getDeployedTestAccounts(pxe) {
35
+ const registeredAccounts = await pxe.getRegisteredAccounts();
36
+ const testAccounts = await getInitialTestAccounts();
37
+ return testAccounts.filter((t)=>registeredAccounts.some((r)=>r.address.equals(t.address)));
38
+ }
39
+ /**
40
+ * Queries a PXE for it's registered accounts and returns wallets for those accounts using keys in the initial test accounts.
41
+ * @param pxe - PXE instance.
42
+ * @returns A set of AccountWallet implementations for each of the initial accounts.
43
+ */ export async function getDeployedTestAccountsWallets(pxe) {
44
+ const testAccounts = await getDeployedTestAccounts(pxe);
45
+ return Promise.all(testAccounts.map(({ secret, signingKey, salt })=>getSchnorrWalletWithSecretKey(pxe, secret, signingKey, salt)));
46
+ }
47
+ export { deployFundedSchnorrAccount, deployFundedSchnorrAccounts, generateSchnorrAccounts } from './create_account.js';
@@ -0,0 +1,34 @@
1
+ /**
2
+ * The `@aztec/accounts/testing/lazy` export provides utility methods for testing, in particular in a Sandbox environment.
3
+ *
4
+ * Use {@link getInitialTestAccountsWallets} to obtain a list of wallets for the Sandbox pre-seeded accounts.
5
+ *
6
+ * @packageDocumentation
7
+ */
8
+ import type { PXE } from '@aztec/aztec.js';
9
+ import type { AccountWalletWithSecretKey } from '@aztec/aztec.js/wallet';
10
+ import { type InitialAccountData } from './configuration.js';
11
+ export { type InitialAccountData, INITIAL_TEST_ACCOUNT_SALTS, INITIAL_TEST_ENCRYPTION_KEYS, INITIAL_TEST_SECRET_KEYS, INITIAL_TEST_SIGNING_KEYS, } from './configuration.js';
12
+ /**
13
+ * Gets the basic information for initial test accounts.
14
+ */
15
+ export declare function getInitialTestAccounts(): Promise<InitialAccountData[]>;
16
+ /**
17
+ * Gets a collection of wallets for the Aztec accounts that are initially stored in the test environment.
18
+ * @param pxe - PXE instance.
19
+ * @returns A set of AccountWallet implementations for each of the initial accounts.
20
+ */
21
+ export declare function getInitialTestAccountsWallets(pxe: PXE): Promise<AccountWalletWithSecretKey[]>;
22
+ /**
23
+ * Queries a PXE for it's registered accounts.
24
+ * @param pxe - PXE instance.
25
+ * @returns A set of key data for each of the initial accounts.
26
+ */
27
+ export declare function getDeployedTestAccounts(pxe: PXE): Promise<InitialAccountData[]>;
28
+ /**
29
+ * Queries a PXE for it's registered accounts and returns wallets for those accounts using keys in the initial test accounts.
30
+ * @param pxe - PXE instance.
31
+ * @returns A set of AccountWallet implementations for each of the initial accounts.
32
+ */
33
+ export declare function getDeployedTestAccountsWallets(pxe: PXE): Promise<AccountWalletWithSecretKey[]>;
34
+ //# sourceMappingURL=lazy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lazy.d.ts","sourceRoot":"","sources":["../../src/testing/lazy.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AAGzE,OAAO,EAKL,KAAK,kBAAkB,EACxB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,KAAK,kBAAkB,EACvB,0BAA0B,EAC1B,4BAA4B,EAC5B,wBAAwB,EACxB,yBAAyB,GAC1B,MAAM,oBAAoB,CAAC;AAE5B;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAatE;AAED;;;;GAIG;AACH,wBAAgB,6BAA6B,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,0BAA0B,EAAE,CAAC,CAY7F;AAED;;;;GAIG;AACH,wBAAsB,uBAAuB,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAIrF;AAED;;;;GAIG;AACH,wBAAsB,8BAA8B,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,0BAA0B,EAAE,CAAC,CAKpG"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * The `@aztec/accounts/testing/lazy` export provides utility methods for testing, in particular in a Sandbox environment.
3
+ *
4
+ * Use {@link getInitialTestAccountsWallets} to obtain a list of wallets for the Sandbox pre-seeded accounts.
5
+ *
6
+ * @packageDocumentation
7
+ */ import { getSchnorrAccount, getSchnorrAccountContractAddress, getSchnorrWalletWithSecretKey } from '../schnorr/lazy.js';
8
+ import { INITIAL_TEST_ACCOUNT_SALTS, INITIAL_TEST_ENCRYPTION_KEYS, INITIAL_TEST_SECRET_KEYS, INITIAL_TEST_SIGNING_KEYS } from './configuration.js';
9
+ export { INITIAL_TEST_ACCOUNT_SALTS, INITIAL_TEST_ENCRYPTION_KEYS, INITIAL_TEST_SECRET_KEYS, INITIAL_TEST_SIGNING_KEYS } from './configuration.js';
10
+ /**
11
+ * Gets the basic information for initial test accounts.
12
+ */ export function getInitialTestAccounts() {
13
+ return Promise.all(INITIAL_TEST_SECRET_KEYS.map(async (secret, i)=>({
14
+ secret,
15
+ signingKey: INITIAL_TEST_ENCRYPTION_KEYS[i],
16
+ salt: INITIAL_TEST_ACCOUNT_SALTS[i],
17
+ address: await getSchnorrAccountContractAddress(secret, INITIAL_TEST_ACCOUNT_SALTS[i], INITIAL_TEST_SIGNING_KEYS[i])
18
+ })));
19
+ }
20
+ /**
21
+ * Gets a collection of wallets for the Aztec accounts that are initially stored in the test environment.
22
+ * @param pxe - PXE instance.
23
+ * @returns A set of AccountWallet implementations for each of the initial accounts.
24
+ */ export function getInitialTestAccountsWallets(pxe) {
25
+ return Promise.all(INITIAL_TEST_SECRET_KEYS.map(async (encryptionKey, i)=>{
26
+ const account = await getSchnorrAccount(pxe, encryptionKey, INITIAL_TEST_SIGNING_KEYS[i], INITIAL_TEST_ACCOUNT_SALTS[i]);
27
+ return account.getWallet();
28
+ }));
29
+ }
30
+ /**
31
+ * Queries a PXE for it's registered accounts.
32
+ * @param pxe - PXE instance.
33
+ * @returns A set of key data for each of the initial accounts.
34
+ */ export async function getDeployedTestAccounts(pxe) {
35
+ const registeredAccounts = await pxe.getRegisteredAccounts();
36
+ const testAccounts = await getInitialTestAccounts();
37
+ return testAccounts.filter((t)=>registeredAccounts.some((r)=>r.address.equals(t.address)));
38
+ }
39
+ /**
40
+ * Queries a PXE for it's registered accounts and returns wallets for those accounts using keys in the initial test accounts.
41
+ * @param pxe - PXE instance.
42
+ * @returns A set of AccountWallet implementations for each of the initial accounts.
43
+ */ export async function getDeployedTestAccountsWallets(pxe) {
44
+ const testAccounts = await getDeployedTestAccounts(pxe);
45
+ return Promise.all(testAccounts.map(({ secret, signingKey, salt })=>getSchnorrWalletWithSecretKey(pxe, secret, signingKey, salt)));
46
+ }
@@ -1,2 +1 @@
1
1
  export * from './ssh_agent.js';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxnQkFBZ0IsQ0FBQyJ9
@@ -6,8 +6,7 @@ const SSH_AGENT_SIGN_REQUEST = 13;
6
6
  const SSH_AGENT_SIGN_RESPONSE = 14;
7
7
  /**
8
8
  * Connect to the SSH agent via a TCP socket using the standard env variable
9
- */
10
- export function connectToAgent() {
9
+ */ export function connectToAgent() {
11
10
  const socketPath = process.env.SSH_AUTH_SOCK;
12
11
  if (!socketPath) {
13
12
  throw new Error('SSH_AUTH_SOCK is not set');
@@ -16,26 +15,37 @@ export function connectToAgent() {
16
15
  }
17
16
  /**
18
17
  * Retrieve the identities stored in the SSH agent.
19
- */
20
- export function getIdentities() {
21
- return new Promise((resolve, reject) => {
18
+ */ export function getIdentities() {
19
+ return new Promise((resolve, reject)=>{
22
20
  const stream = connectToAgent();
23
- stream.on('connect', () => {
21
+ stream.on('connect', ()=>{
24
22
  const request = Buffer.concat([
25
- Buffer.from([0, 0, 0, 5 + 4]), // length
26
- Buffer.from([SSH_AGENT_IDENTITIES_REQUEST]),
27
- Buffer.from([0, 0, 0, 0]), // flags
23
+ Buffer.from([
24
+ 0,
25
+ 0,
26
+ 0,
27
+ 5 + 4
28
+ ]),
29
+ Buffer.from([
30
+ SSH_AGENT_IDENTITIES_REQUEST
31
+ ]),
32
+ Buffer.from([
33
+ 0,
34
+ 0,
35
+ 0,
36
+ 0
37
+ ])
28
38
  ]);
29
39
  stream.write(request);
30
40
  });
31
- stream.on('data', data => {
41
+ stream.on('data', (data)=>{
32
42
  const responseType = data[4];
33
43
  if (responseType === SSH_AGENT_IDENTITIES_RESPONSE) {
34
44
  let offset = 5;
35
45
  const numKeys = data.readUInt32BE(offset);
36
46
  offset += 4;
37
47
  const keys = [];
38
- for (let i = 0; i < numKeys; i++) {
48
+ for(let i = 0; i < numKeys; i++){
39
49
  const keyLength = data.readUInt32BE(offset);
40
50
  offset += 4;
41
51
  const key = data.subarray(offset, offset + keyLength);
@@ -51,13 +61,12 @@ export function getIdentities() {
51
61
  keys.push({
52
62
  type: type.toString('ascii'),
53
63
  publicKey: key.toString('base64'),
54
- comment: comment.toString('utf8'),
64
+ comment: comment.toString('utf8')
55
65
  });
56
66
  }
57
67
  stream.end();
58
68
  resolve(keys);
59
- }
60
- else {
69
+ } else {
61
70
  stream.end();
62
71
  reject(`Unexpected response type: ${responseType}`);
63
72
  }
@@ -66,44 +75,79 @@ export function getIdentities() {
66
75
  }
67
76
  /**
68
77
  * Sign data using a key stored in the SSH agent. The private signing key is identified by its corresponding public key.
69
- */
70
- export function signWithAgent(keyType, curveName, publicKey, data) {
71
- return new Promise((resolve, reject) => {
78
+ */ export function signWithAgent(keyType, curveName, publicKey, data) {
79
+ return new Promise((resolve, reject)=>{
72
80
  const stream = connectToAgent();
73
- stream.on('connect', () => {
81
+ stream.on('connect', ()=>{
74
82
  // Construct the key blob
75
83
  const keyBlob = Buffer.concat([
76
- Buffer.from([0, 0, 0, keyType.length]),
84
+ Buffer.from([
85
+ 0,
86
+ 0,
87
+ 0,
88
+ keyType.length
89
+ ]),
77
90
  keyType,
78
- Buffer.from([0, 0, 0, curveName.length]),
91
+ Buffer.from([
92
+ 0,
93
+ 0,
94
+ 0,
95
+ curveName.length
96
+ ]),
79
97
  curveName,
80
- Buffer.from([0, 0, 0, publicKey.length + 1, 4]),
81
- publicKey,
98
+ Buffer.from([
99
+ 0,
100
+ 0,
101
+ 0,
102
+ publicKey.length + 1,
103
+ 4
104
+ ]),
105
+ publicKey
82
106
  ]);
83
107
  const request = Buffer.concat([
84
- Buffer.from([0, 0, 0, 5 + keyBlob.length + 4 + data.length + 4]), // length
85
- Buffer.from([SSH_AGENT_SIGN_REQUEST]),
86
- Buffer.from([0, 0, 0, keyBlob.length]), // key blob length
108
+ Buffer.from([
109
+ 0,
110
+ 0,
111
+ 0,
112
+ 5 + keyBlob.length + 4 + data.length + 4
113
+ ]),
114
+ Buffer.from([
115
+ SSH_AGENT_SIGN_REQUEST
116
+ ]),
117
+ Buffer.from([
118
+ 0,
119
+ 0,
120
+ 0,
121
+ keyBlob.length
122
+ ]),
87
123
  keyBlob,
88
- Buffer.from([0, 0, 0, data.length]), // data length
124
+ Buffer.from([
125
+ 0,
126
+ 0,
127
+ 0,
128
+ data.length
129
+ ]),
89
130
  data,
90
- Buffer.from([0, 0, 0, 0]), // flags
131
+ Buffer.from([
132
+ 0,
133
+ 0,
134
+ 0,
135
+ 0
136
+ ])
91
137
  ]);
92
138
  stream.write(request);
93
139
  });
94
- stream.on('data', data => {
140
+ stream.on('data', (data)=>{
95
141
  const type = data[4];
96
142
  if (type === SSH_AGENT_SIGN_RESPONSE) {
97
143
  const signatureLength = data.readUInt32BE(5);
98
144
  const signature = data.subarray(9, 9 + signatureLength);
99
145
  stream.end();
100
146
  resolve(signature);
101
- }
102
- else {
147
+ } else {
103
148
  stream.end();
104
149
  reject(`Unexpected response type: ${type}`);
105
150
  }
106
151
  });
107
152
  });
108
153
  }
109
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3NoX2FnZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL3NzaF9hZ2VudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ2hDLE9BQU8sR0FBRyxNQUFNLEtBQUssQ0FBQztBQUV0QixNQUFNLDRCQUE0QixHQUFHLEVBQUUsQ0FBQztBQUN4QyxNQUFNLDZCQUE2QixHQUFHLEVBQUUsQ0FBQztBQUN6QyxNQUFNLHNCQUFzQixHQUFHLEVBQUUsQ0FBQztBQUNsQyxNQUFNLHVCQUF1QixHQUFHLEVBQUUsQ0FBQztBQUVuQzs7R0FFRztBQUNILE1BQU0sVUFBVSxjQUFjO0lBQzVCLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDO0lBQzdDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNoQixNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUNELE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUNqQyxDQUFDO0FBb0JEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLGFBQWE7SUFDM0IsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtRQUNyQyxNQUFNLE1BQU0sR0FBRyxjQUFjLEVBQUUsQ0FBQztRQUNoQyxNQUFNLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBRSxHQUFHLEVBQUU7WUFDeEIsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztnQkFDNUIsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVM7Z0JBQ3hDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFD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
package/package.json CHANGED
@@ -2,15 +2,19 @@
2
2
  "name": "@aztec/accounts",
3
3
  "homepage": "https://github.com/AztecProtocol/aztec-packages/tree/master/yarn-project/accounts",
4
4
  "description": "Implementation of sample account contracts for Aztec Network",
5
- "version": "0.76.4",
5
+ "version": "0.77.0-testnet-ignition.21",
6
6
  "type": "module",
7
7
  "exports": {
8
8
  "./dapp": "./dest/dapp/index.js",
9
9
  "./defaults": "./dest/defaults/index.js",
10
10
  "./ecdsa": "./dest/ecdsa/index.js",
11
+ "./ecdsa/lazy": "./dest/ecdsa/lazy.js",
11
12
  "./schnorr": "./dest/schnorr/index.js",
13
+ "./schnorr/lazy": "./dest/schnorr/lazy.js",
12
14
  "./single_key": "./dest/single_key/index.js",
15
+ "./single_key/lazy": "./dest/single_key/lazy.js",
13
16
  "./testing": "./dest/testing/index.js",
17
+ "./testing/lazy": "./dest/testing/lazy.js",
14
18
  "./utils": "./dest/utils/index.js"
15
19
  },
16
20
  "typedocOptions": {
@@ -33,7 +37,7 @@
33
37
  "clean": "rm -rf ./dest .tsbuildinfo ./artifacts",
34
38
  "formatting": "run -T prettier --check ./src && run -T eslint ./src",
35
39
  "formatting:fix": "run -T eslint --fix ./src && run -T prettier -w ./src",
36
- "test": "HARDWARE_CONCURRENCY=${HARDWARE_CONCURRENCY:-16} RAYON_NUM_THREADS=${RAYON_NUM_THREADS:-4} NODE_NO_WARNINGS=1 node --experimental-vm-modules ../node_modules/.bin/jest --passWithNoTests --maxWorkers=${JEST_MAX_WORKERS:-8}"
40
+ "test": "NODE_NO_WARNINGS=1 node --experimental-vm-modules ../node_modules/.bin/jest --passWithNoTests --maxWorkers=${JEST_MAX_WORKERS:-8}"
37
41
  },
38
42
  "inherits": [
39
43
  "../package.common.json",
@@ -67,19 +71,17 @@
67
71
  "reporters": [
68
72
  "default"
69
73
  ],
70
- "testTimeout": 30000,
74
+ "testTimeout": 120000,
71
75
  "setupFiles": [
72
76
  "../../foundation/src/jest/setup.mjs"
73
77
  ]
74
78
  },
75
79
  "dependencies": {
76
- "@aztec/aztec.js": "0.76.4",
77
- "@aztec/circuit-types": "0.76.4",
78
- "@aztec/circuits.js": "0.76.4",
79
- "@aztec/entrypoints": "0.76.4",
80
- "@aztec/ethereum": "0.76.4",
81
- "@aztec/foundation": "0.76.4",
82
- "@aztec/types": "0.76.4",
80
+ "@aztec/aztec.js": "0.77.0-testnet-ignition.21",
81
+ "@aztec/entrypoints": "0.77.0-testnet-ignition.21",
82
+ "@aztec/ethereum": "0.77.0-testnet-ignition.21",
83
+ "@aztec/foundation": "0.77.0-testnet-ignition.21",
84
+ "@aztec/stdlib": "0.77.0-testnet-ignition.21",
83
85
  "tslib": "^2.4.0"
84
86
  },
85
87
  "devDependencies": {
@@ -1,5 +1,10 @@
1
- import { type AccountWallet, type AuthWitnessProvider } from '@aztec/aztec.js';
2
- import { type AztecAddress, type CompleteAddress, type NodeInfo } from '@aztec/circuits.js';
1
+ import {
2
+ type AccountWallet,
3
+ type AuthWitnessProvider,
4
+ AztecAddress,
5
+ CompleteAddress,
6
+ type NodeInfo,
7
+ } from '@aztec/aztec.js';
3
8
  import { DefaultDappEntrypoint } from '@aztec/entrypoints/dapp';
4
9
 
5
10
  import { DefaultAccountInterface } from '../defaults/account_interface.js';
@@ -1,7 +1,6 @@
1
- import { type AccountContract, type AccountInterface, type AuthWitnessProvider } from '@aztec/aztec.js/account';
2
- import { type CompleteAddress } from '@aztec/circuit-types';
3
- import { type NodeInfo } from '@aztec/circuits.js';
4
- import { type ContractArtifact } from '@aztec/foundation/abi';
1
+ import type { AccountContract, AccountInterface, AuthWitnessProvider } from '@aztec/aztec.js/account';
2
+ import type { ContractArtifact } from '@aztec/stdlib/abi';
3
+ import type { CompleteAddress, NodeInfo } from '@aztec/stdlib/contract';
5
4
 
6
5
  import { DefaultAccountInterface } from '../defaults/account_interface.js';
7
6
 
@@ -12,12 +11,9 @@ import { DefaultAccountInterface } from '../defaults/account_interface.js';
12
11
  export abstract class DefaultAccountContract implements AccountContract {
13
12
  abstract getAuthWitnessProvider(address: CompleteAddress): AuthWitnessProvider;
14
13
  abstract getDeploymentArgs(): Promise<any[] | undefined>;
14
+ abstract getContractArtifact(): Promise<ContractArtifact>;
15
15
 
16
- constructor(private artifact: ContractArtifact) {}
17
-
18
- getContractArtifact(): ContractArtifact {
19
- return this.artifact;
20
- }
16
+ constructor() {}
21
17
 
22
18
  getInterface(address: CompleteAddress, nodeInfo: NodeInfo): AccountInterface {
23
19
  return new DefaultAccountInterface(this.getAuthWitnessProvider(address), address, nodeInfo);
@@ -1,8 +1,12 @@
1
- import { type AccountInterface, type AuthWitnessProvider } from '@aztec/aztec.js/account';
2
- import { type EntrypointInterface, type ExecutionRequestInit } from '@aztec/aztec.js/entrypoint';
3
- import { type AuthWitness, type TxExecutionRequest } from '@aztec/circuit-types';
4
- import { type AztecAddress, type CompleteAddress, Fr, type NodeInfo } from '@aztec/circuits.js';
1
+ import type { AccountInterface, AuthWitnessProvider } from '@aztec/aztec.js/account';
2
+ import type { EntrypointInterface, ExecutionRequestInit } from '@aztec/aztec.js/entrypoint';
5
3
  import { DefaultAccountEntrypoint } from '@aztec/entrypoints/account';
4
+ import { Fr } from '@aztec/foundation/fields';
5
+ import type { AuthWitness } from '@aztec/stdlib/auth-witness';
6
+ import type { AztecAddress } from '@aztec/stdlib/aztec-address';
7
+ import { CompleteAddress } from '@aztec/stdlib/contract';
8
+ import type { NodeInfo } from '@aztec/stdlib/contract';
9
+ import type { TxExecutionRequest } from '@aztec/stdlib/tx';
6
10
 
7
11
  /**
8
12
  * Default implementation for an account interface. Requires that the account uses the default
@@ -1,19 +1,20 @@
1
- import { type AuthWitnessProvider } from '@aztec/aztec.js/account';
2
- import { AuthWitness, type CompleteAddress } from '@aztec/circuit-types';
3
- import { Ecdsa } from '@aztec/circuits.js/barretenberg';
4
- import { type ContractArtifact } from '@aztec/foundation/abi';
5
- import { type Fr } from '@aztec/foundation/fields';
1
+ import type { AuthWitnessProvider } from '@aztec/aztec.js/account';
2
+ import { Ecdsa } from '@aztec/foundation/crypto';
3
+ import type { Fr } from '@aztec/foundation/fields';
4
+ import { AuthWitness } from '@aztec/stdlib/auth-witness';
5
+ import { CompleteAddress } from '@aztec/stdlib/contract';
6
6
 
7
7
  import { DefaultAccountContract } from '../../defaults/account_contract.js';
8
- import { EcdsaKAccountContractArtifact } from './artifact.js';
9
8
 
10
9
  /**
11
10
  * Account contract that authenticates transactions using ECDSA signatures
12
11
  * verified against a secp256k1 public key stored in an immutable encrypted note.
12
+ * This abstract version does not provide a way to retrieve the artifact, as it
13
+ * can be implemented with or without lazy loading.
13
14
  */
14
- export class EcdsaKAccountContract extends DefaultAccountContract {
15
+ export abstract class EcdsaKBaseAccountContract extends DefaultAccountContract {
15
16
  constructor(private signingPrivateKey: Buffer) {
16
- super(EcdsaKAccountContractArtifact as ContractArtifact);
17
+ super();
17
18
  }
18
19
 
19
20
  async getDeploymentArgs() {