@rhinestone/sdk 1.0.0-alpha.14 → 1.0.0-alpha.16

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 (87) hide show
  1. package/dist/src/accounts/custom.d.ts +18 -0
  2. package/dist/src/accounts/custom.d.ts.map +1 -0
  3. package/dist/src/accounts/custom.js +121 -0
  4. package/dist/src/accounts/custom.test.d.ts +2 -0
  5. package/dist/src/accounts/custom.test.d.ts.map +1 -0
  6. package/dist/src/accounts/custom.test.js +64 -0
  7. package/dist/src/accounts/index.d.ts +1 -1
  8. package/dist/src/accounts/index.d.ts.map +1 -1
  9. package/dist/src/accounts/index.js +37 -6
  10. package/dist/src/accounts/index.test.js +3 -3
  11. package/dist/src/accounts/json-rpc/index.d.ts +5 -0
  12. package/dist/src/accounts/json-rpc/index.d.ts.map +1 -0
  13. package/dist/src/accounts/json-rpc/index.js +16 -0
  14. package/dist/src/accounts/json-rpc/index.test.d.ts +2 -0
  15. package/dist/src/accounts/json-rpc/index.test.d.ts.map +1 -0
  16. package/dist/src/accounts/json-rpc/index.test.js +16 -0
  17. package/dist/src/accounts/json-rpc/providers.d.ts +4 -0
  18. package/dist/src/accounts/json-rpc/providers.d.ts.map +1 -0
  19. package/dist/src/accounts/json-rpc/providers.js +14 -0
  20. package/dist/src/accounts/json-rpc/providers.test.d.ts +2 -0
  21. package/dist/src/accounts/json-rpc/providers.test.d.ts.map +1 -0
  22. package/dist/src/accounts/json-rpc/providers.test.js +15 -0
  23. package/dist/src/accounts/kernel.test.js +8 -8
  24. package/dist/src/accounts/nexus.d.ts.map +1 -1
  25. package/dist/src/accounts/nexus.js +34 -8
  26. package/dist/src/accounts/nexus.test.js +12 -12
  27. package/dist/src/accounts/safe.d.ts.map +1 -1
  28. package/dist/src/accounts/safe.js +2 -0
  29. package/dist/src/accounts/safe.test.js +8 -8
  30. package/dist/src/accounts/signing/common.d.ts +10 -6
  31. package/dist/src/accounts/signing/common.d.ts.map +1 -1
  32. package/dist/src/accounts/signing/common.js +41 -12
  33. package/dist/src/accounts/signing/message.d.ts +2 -2
  34. package/dist/src/accounts/signing/message.d.ts.map +1 -1
  35. package/dist/src/accounts/signing/message.js +7 -11
  36. package/dist/src/accounts/signing/passkeys.d.ts +29 -0
  37. package/dist/src/accounts/signing/passkeys.d.ts.map +1 -0
  38. package/dist/src/accounts/signing/passkeys.js +90 -0
  39. package/dist/src/accounts/signing/passkeys.test.d.ts +2 -0
  40. package/dist/src/accounts/signing/passkeys.test.d.ts.map +1 -0
  41. package/dist/src/accounts/signing/passkeys.test.js +73 -0
  42. package/dist/src/accounts/signing/typedData.d.ts +2 -2
  43. package/dist/src/accounts/signing/typedData.d.ts.map +1 -1
  44. package/dist/src/accounts/signing/typedData.js +7 -11
  45. package/dist/src/accounts/startale.test.js +8 -8
  46. package/dist/src/accounts/utils.d.ts +3 -3
  47. package/dist/src/accounts/utils.d.ts.map +1 -1
  48. package/dist/src/accounts/utils.js +3 -40
  49. package/dist/src/actions/index.d.ts +45 -1
  50. package/dist/src/actions/index.d.ts.map +1 -1
  51. package/dist/src/actions/index.js +174 -9
  52. package/dist/src/actions/index.test.js +16 -16
  53. package/dist/src/execution/index.d.ts.map +1 -1
  54. package/dist/src/execution/index.js +3 -6
  55. package/dist/src/execution/utils.d.ts +1 -1
  56. package/dist/src/execution/utils.d.ts.map +1 -1
  57. package/dist/src/execution/utils.js +17 -16
  58. package/dist/src/index.d.ts +2 -2
  59. package/dist/src/index.d.ts.map +1 -1
  60. package/dist/src/index.js +7 -1
  61. package/dist/src/modules/index.d.ts +2 -17
  62. package/dist/src/modules/index.d.ts.map +1 -1
  63. package/dist/src/modules/index.js +4 -55
  64. package/dist/src/modules/index.test.js +2 -16
  65. package/dist/src/modules/omni-account.d.ts +2 -1
  66. package/dist/src/modules/omni-account.d.ts.map +1 -1
  67. package/dist/src/modules/omni-account.js +3 -1
  68. package/dist/src/modules/read.d.ts.map +1 -1
  69. package/dist/src/modules/read.js +1 -0
  70. package/dist/src/modules/validators/core.d.ts +4 -3
  71. package/dist/src/modules/validators/core.d.ts.map +1 -1
  72. package/dist/src/modules/validators/core.js +46 -37
  73. package/dist/src/modules/validators/core.test.js +6 -6
  74. package/dist/src/modules/validators/smart-sessions.test.js +4 -4
  75. package/dist/src/orchestrator/consts.d.ts +2 -1
  76. package/dist/src/orchestrator/consts.d.ts.map +1 -1
  77. package/dist/src/orchestrator/consts.js +3 -1
  78. package/dist/src/orchestrator/registry.d.ts +1 -23
  79. package/dist/src/orchestrator/registry.d.ts.map +1 -1
  80. package/dist/src/orchestrator/registry.js +22 -24
  81. package/dist/src/orchestrator/registry.test.js +4 -4
  82. package/dist/src/orchestrator/types.d.ts +1 -6
  83. package/dist/src/orchestrator/types.d.ts.map +1 -1
  84. package/dist/src/types.d.ts +29 -7
  85. package/dist/src/types.d.ts.map +1 -1
  86. package/package.json +1 -1
  87. package/dist/src/orchestrator/registry.json +0 -365
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const vitest_1 = require("vitest");
4
+ const passkeys_1 = require("./passkeys");
5
+ (0, vitest_1.describe)('Passkeys', () => {
6
+ (0, vitest_1.describe)('Parse Public Key', () => {
7
+ (0, vitest_1.test)('default', () => {
8
+ const parsed = (0, passkeys_1.parsePublicKey)('0x7a2b9234dbc079da984e021acb76cf230dff5c03f2c5668024ddaeeb388520294bd61dcef34cade4d3bca405e63179ef022948ac45d0b0530cb125977c118ad7');
9
+ (0, vitest_1.expect)(parsed.x).toEqual(55259151030970399927675340420359705684663366332711724388150056154288143802409n);
10
+ (0, vitest_1.expect)(parsed.y).toEqual(34301774645623054632612895881498878184566570389017277955884655401641769536215n);
11
+ });
12
+ });
13
+ (0, vitest_1.describe)('Parse Signature', () => {
14
+ (0, vitest_1.test)('default', () => {
15
+ const parsed = (0, passkeys_1.parseSignature)('0xf60f80fe3fd029d1b380d631f0b659bfbc8f8f60921a88e1e123c159aa540f920ed337464d1bb813dc5f9c3e81998185370da49cc525e9f42cdf805f1030aff8');
16
+ (0, vitest_1.expect)(parsed.r).toEqual(111296353735534357766084082487308191701889898756402773464442570100570127077266n);
17
+ (0, vitest_1.expect)(parsed.s).toEqual(6705566102199758127831148650668918567109283965479844611524279039128750829560n);
18
+ });
19
+ });
20
+ (0, vitest_1.describe)('Generate Credential ID', () => {
21
+ (0, vitest_1.test)('default', () => {
22
+ const id = (0, passkeys_1.generateCredentialId)(55259151030970399927675340420359705684663366332711724388150056154288143802409n, 34301774645623054632612895881498878184566570389017277955884655401641769536215n, '0xb975975c9f381b5df3b4af93bdd1ba739698bc37');
23
+ (0, vitest_1.expect)(id).toEqual('0x9437809df26444a849d303b1174543f0851df5fae657da19f3bb0d92356426ea');
24
+ });
25
+ });
26
+ (0, vitest_1.describe)('Pack Signature', () => {
27
+ (0, vitest_1.test)('single', () => {
28
+ const credIds = [
29
+ '0x9437809df26444a849d303b1174543f0851df5fae657da19f3bb0d92356426ea',
30
+ ];
31
+ const usePrecompile = false;
32
+ const webAuthns = [
33
+ {
34
+ authenticatorData: '0x49960de5880e8c687434170f6476605b8fe4aeb9a28632c7995cf3ba831d97631d00000000',
35
+ clientDataJSON: '{"type":"webauthn.get","challenge":"4p2TiZpTooLCFFYTC2HmMPVMiVjZGghCJ0dz7zUDEeA","origin":"http://localhost:5173","crossOrigin":false}',
36
+ challengeIndex: 23n,
37
+ typeIndex: 1n,
38
+ r: 111296353735534357766084082487308191701889898756402773464442570100570127077266n,
39
+ s: 6705566102199758127831148650668918567109283965479844611524279039128750829560n,
40
+ },
41
+ ];
42
+ const packed = (0, passkeys_1.packSignature)(credIds, usePrecompile, webAuthns);
43
+ (0, vitest_1.expect)(packed).toEqual('0x0000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000019437809df26444a849d303b1174543f0851df5fae657da19f3bb0d92356426ea0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000170000000000000000000000000000000000000000000000000000000000000001f60f80fe3fd029d1b380d631f0b659bfbc8f8f60921a88e1e123c159aa540f920ed337464d1bb813dc5f9c3e81998185370da49cc525e9f42cdf805f1030aff8000000000000000000000000000000000000000000000000000000000000002549960de5880e8c687434170f6476605b8fe4aeb9a28632c7995cf3ba831d97631d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000867b2274797065223a22776562617574686e2e676574222c226368616c6c656e6765223a2234703254695a70546f6f4c43464659544332486d4d50564d69566a5a476768434a30647a377a5544456541222c226f726967696e223a22687474703a2f2f6c6f63616c686f73743a35313733222c2263726f73734f726967696e223a66616c73657d0000000000000000000000000000000000000000000000000000');
44
+ });
45
+ (0, vitest_1.test)('multisig', () => {
46
+ const credIds = [
47
+ '0x9437809df26444a849d303b1174543f0851df5fae657da19f3bb0d92356426ea',
48
+ '0x6be9646e4d64132d1a1789a467d0501e948d23afce6792d963f401434d7bef33',
49
+ ];
50
+ const usePrecompile = true;
51
+ const webAuthns = [
52
+ {
53
+ authenticatorData: '0x49960de5880e8c687434170f6476605b8fe4aeb9a28632c7995cf3ba831d97631d00000000',
54
+ clientDataJSON: '{"type":"webauthn.get","challenge":"4p2TiZpTooLCFFYTC2HmMPVMiVjZGghCJ0dz7zUDEeA","origin":"http://localhost:5173","crossOrigin":false}',
55
+ challengeIndex: 23n,
56
+ typeIndex: 1n,
57
+ r: 111296353735534357766084082487308191701889898756402773464442570100570127077266n,
58
+ s: 6705566102199758127831148650668918567109283965479844611524279039128750829560n,
59
+ },
60
+ {
61
+ authenticatorData: '0x49960de5880e8c687434170f6476605b8fe4aeb9a28632c7995cf3ba831d97631d00000000',
62
+ clientDataJSON: '{"type":"webauthn.get","challenge":"19qAcQAVCeucFt8tQSizBBdbxW6Jkex_3nAejdRuVek","origin":"http://localhost:5173","crossOrigin":false}',
63
+ challengeIndex: 23n,
64
+ typeIndex: 1n,
65
+ r: 52674584175531096231012948456392242307658490190760877544141461393264453154030n,
66
+ s: 1045924358482323524717958171193057427003444327614976707002321626568131749413n,
67
+ },
68
+ ];
69
+ const packed = (0, passkeys_1.packSignature)(credIds, usePrecompile, webAuthns);
70
+ (0, vitest_1.expect)(packed).toEqual('0x0000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000026be9646e4d64132d1a1789a467d0501e948d23afce6792d963f401434d7bef339437809df26444a849d303b1174543f0851df5fae657da19f3bb0d92356426ea00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000022000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000001700000000000000000000000000000000000000000000000000000000000000017474c214167b8a4704cf06f75287a738e7ddbcca9cc0383db6dac6a7d090f4ee024ff8e2a2e8c54aa8cf5f36e3b6125016c3d58d896e3a85c5cd2cd0027a2625000000000000000000000000000000000000000000000000000000000000002549960de5880e8c687434170f6476605b8fe4aeb9a28632c7995cf3ba831d97631d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000867b2274797065223a22776562617574686e2e676574222c226368616c6c656e6765223a22313971416351415643657563467438745153697a424264627857364a6b65785f336e41656a64527556656b222c226f726967696e223a22687474703a2f2f6c6f63616c686f73743a35313733222c2263726f73734f726967696e223a66616c73657d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000170000000000000000000000000000000000000000000000000000000000000001f60f80fe3fd029d1b380d631f0b659bfbc8f8f60921a88e1e123c159aa540f920ed337464d1bb813dc5f9c3e81998185370da49cc525e9f42cdf805f1030aff8000000000000000000000000000000000000000000000000000000000000002549960de5880e8c687434170f6476605b8fe4aeb9a28632c7995cf3ba831d97631d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000867b2274797065223a22776562617574686e2e676574222c226368616c6c656e6765223a2234703254695a70546f6f4c43464659544332486d4d50564d69566a5a476768434a30647a377a5544456541222c226f726967696e223a22687474703a2f2f6c6f63616c686f73743a35313733222c2263726f73734f726967696e223a66616c73657d0000000000000000000000000000000000000000000000000000');
71
+ });
72
+ });
73
+ });
@@ -1,5 +1,5 @@
1
- import type { Chain, HashTypedDataParameters, Hex, TypedData } from 'viem';
1
+ import type { Address, Chain, HashTypedDataParameters, Hex, TypedData } from 'viem';
2
2
  import type { SignerSet } from '../../types';
3
- declare function sign<typedData extends TypedData | Record<string, unknown> = TypedData, primaryType extends keyof typedData | 'EIP712Domain' = keyof typedData>(signers: SignerSet, chain: Chain, parameters: HashTypedDataParameters<typedData, primaryType>): Promise<Hex>;
3
+ declare function sign<typedData extends TypedData | Record<string, unknown> = TypedData, primaryType extends keyof typedData | 'EIP712Domain' = keyof typedData>(signers: SignerSet, chain: Chain, address: Address, parameters: HashTypedDataParameters<typedData, primaryType>): Promise<Hex>;
4
4
  export { sign };
5
5
  //# sourceMappingURL=typedData.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"typedData.d.ts","sourceRoot":"","sources":["../../../../accounts/signing/typedData.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,KAAK,EACL,uBAAuB,EACvB,GAAG,EACH,SAAS,EACV,MAAM,MAAM,CAAA;AAMb,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAS5C,iBAAe,IAAI,CACjB,SAAS,SAAS,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EACjE,WAAW,SAAS,MAAM,SAAS,GAAG,cAAc,GAAG,MAAM,SAAS,EAEtE,OAAO,EAAE,SAAS,EAClB,KAAK,EAAE,KAAK,EACZ,UAAU,EAAE,uBAAuB,CAAC,SAAS,EAAE,WAAW,CAAC,GAC1D,OAAO,CAAC,GAAG,CAAC,CAoBd;AAiCD,OAAO,EAAE,IAAI,EAAE,CAAA"}
1
+ {"version":3,"file":"typedData.d.ts","sourceRoot":"","sources":["../../../../accounts/signing/typedData.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,OAAO,EACP,KAAK,EACL,uBAAuB,EACvB,GAAG,EACH,SAAS,EACV,MAAM,MAAM,CAAA;AAEb,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAS5C,iBAAe,IAAI,CACjB,SAAS,SAAS,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EACjE,WAAW,SAAS,MAAM,SAAS,GAAG,cAAc,GAAG,MAAM,SAAS,EAEtE,OAAO,EAAE,SAAS,EAClB,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,uBAAuB,CAAC,SAAS,EAAE,WAAW,CAAC,GAC1D,OAAO,CAAC,GAAG,CAAC,CA0Bd;AA6BD,OAAO,EAAE,IAAI,EAAE,CAAA"}
@@ -1,20 +1,19 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.sign = sign;
4
- const modules_1 = require("../../modules");
5
4
  const error_1 = require("../error");
6
5
  const common_1 = require("./common");
7
- async function sign(signers, chain, parameters) {
6
+ async function sign(signers, chain, address, parameters) {
8
7
  const signingFunctions = {
9
8
  signEcdsa: (account, params) => signEcdsa(account, params),
10
- signPasskey: (account, chain, params) => signPasskey(account, chain, params),
9
+ signPasskey: (account, params) => signPasskey(account, params),
11
10
  };
12
11
  switch (signers.type) {
13
12
  case 'owner': {
14
- return (0, common_1.signWithOwners)(signers, chain, parameters, signingFunctions, sign);
13
+ return (0, common_1.signWithOwners)(signers, chain, address, parameters, signingFunctions, sign);
15
14
  }
16
15
  case 'session': {
17
- return (0, common_1.signWithSession)(signers, chain, parameters, sign);
16
+ return (0, common_1.signWithSession)(signers, chain, address, parameters, sign);
18
17
  }
19
18
  case 'guardians': {
20
19
  return (0, common_1.signWithGuardians)(signers, parameters, signingFunctions);
@@ -27,13 +26,10 @@ async function signEcdsa(account, parameters) {
27
26
  }
28
27
  return await account.signTypedData(parameters);
29
28
  }
30
- async function signPasskey(account, chain, parameters) {
29
+ async function signPasskey(account, parameters) {
31
30
  const { webauthn, signature } = await account.signTypedData(parameters);
32
- const usePrecompiled = (0, modules_1.isRip7212SupportedNetwork)(chain);
33
- const encodedSignature = (0, modules_1.getWebauthnValidatorSignature)({
31
+ return {
34
32
  webauthn,
35
33
  signature,
36
- usePrecompiled,
37
- });
38
- return encodedSignature;
34
+ };
39
35
  }
@@ -19,10 +19,10 @@ const MOCK_MODULE_ADDRESS = '0x28de6501fa86f2e6cd0b33c3aabdaeb4a1b93f3f';
19
19
  rhinestoneApiKey: consts_1.MOCK_API_KEY,
20
20
  });
21
21
  (0, vitest_1.expect)(factory).toEqual('0x0000003B3E7b530b4f981aE80d9350392Defef90');
22
- (0, vitest_1.expect)(factoryData).toEqual('0xea6d13ac0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003a0000000000000000000000000000000552a5fae3db7a8f3917c435448f49ba6a9000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000003240984b2f700000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000001e0000000000000000000000000000000000000000000000000000000000000028000000000000000000000000000000000000000000000000000000000000002e000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000020c008719ba9d8aa14c7d07d122cd5e965aa8da5000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000020000000000000000000000006092086a3dc0020cd604a68fcf5d430007d51bb7000000000000000000000000f6c02c78ded62973b43bfa523b247da0994869360000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000005ad9ce1f5035fd62ca96cef16adaaf000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000');
22
+ (0, vitest_1.expect)(factoryData).toEqual('0xea6d13ac0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003a0000000000000000000000000000000552a5fae3db7a8f3917c435448f49ba6a9000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000003240984b2f700000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000001e0000000000000000000000000000000000000000000000000000000000000028000000000000000000000000000000000000000000000000000000000000002e0000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000013fdb5234e4e3162a810f54d9f7e98000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000020000000000000000000000006092086a3dc0020cd604a68fcf5d430007d51bb7000000000000000000000000f6c02c78ded62973b43bfa523b247da0994869360000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000005ad9ce1f5035fd62ca96cef16adaaf000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000');
23
23
  (0, vitest_1.expect)(salt).toEqual('0x0000000000000000000000000000000000000000000000000000000000000000');
24
24
  (0, vitest_1.expect)(implementation).toEqual('0x000000b8f5f723a680d3d7ee624fe0bc84a6e05a');
25
- (0, vitest_1.expect)(initializationCallData).toEqual('0x4b6a1419000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000003a0000000000000000000000000000000552a5fae3db7a8f3917c435448f49ba6a9000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000003240984b2f700000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000001e0000000000000000000000000000000000000000000000000000000000000028000000000000000000000000000000000000000000000000000000000000002e000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000020c008719ba9d8aa14c7d07d122cd5e965aa8da5000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000020000000000000000000000006092086a3dc0020cd604a68fcf5d430007d51bb7000000000000000000000000f6c02c78ded62973b43bfa523b247da0994869360000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000005ad9ce1f5035fd62ca96cef16adaaf000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000');
25
+ (0, vitest_1.expect)(initializationCallData).toEqual('0x4b6a1419000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000003a0000000000000000000000000000000552a5fae3db7a8f3917c435448f49ba6a9000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000003240984b2f700000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000001e0000000000000000000000000000000000000000000000000000000000000028000000000000000000000000000000000000000000000000000000000000002e0000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000013fdb5234e4e3162a810f54d9f7e98000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000020000000000000000000000006092086a3dc0020cd604a68fcf5d430007d51bb7000000000000000000000000f6c02c78ded62973b43bfa523b247da0994869360000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000005ad9ce1f5035fd62ca96cef16adaaf000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000');
26
26
  });
27
27
  (0, vitest_1.test)('Passkey owner', () => {
28
28
  const { factory, factoryData, salt, implementation, initializationCallData, } = (0, startale_1.getDeployArgs)({
@@ -31,15 +31,15 @@ const MOCK_MODULE_ADDRESS = '0x28de6501fa86f2e6cd0b33c3aabdaeb4a1b93f3f';
31
31
  },
32
32
  owners: {
33
33
  type: 'passkey',
34
- account: consts_1.passkeyAccount,
34
+ accounts: [consts_1.passkeyAccount],
35
35
  },
36
36
  rhinestoneApiKey: consts_1.MOCK_API_KEY,
37
37
  });
38
38
  (0, vitest_1.expect)(factory).toEqual('0x0000003B3E7b530b4f981aE80d9350392Defef90');
39
- (0, vitest_1.expect)(factoryData).toEqual('0xea6d13ac000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000360000000000000000000000000000000552a5fae3db7a8f3917c435448f49ba6a9000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000002e40984b2f700000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000001a0000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002c0000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000578c4cb0e472a5462da43c495c3f3300000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000060580a9af0569ad3905b26a703201b358aa0904236642ebe79b22a19d00d3737637d46f725a5427ae45a9569259bf67e1e16b187d7b3ad1ed70138c4f0409677d19c9a01073b202db2ed56e604ad11db557d8c3ad75181619597f21b830f2da82a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000005ad9ce1f5035fd62ca96cef16adaaf000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000');
39
+ (0, vitest_1.expect)(factoryData).toEqual('0xea6d13ac0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003c0000000000000000000000000000000552a5fae3db7a8f3917c435448f49ba6a9000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000003440984b2f700000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000320000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000578c4cb0e472a5462da43c495c3f33000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000001580a9af0569ad3905b26a703201b358aa0904236642ebe79b22a19d00d3737637d46f725a5427ae45a9569259bf67e1e16b187d7b3ad1ed70138c4f0409677d100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000005ad9ce1f5035fd62ca96cef16adaaf000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000');
40
40
  (0, vitest_1.expect)(salt).toEqual('0x0000000000000000000000000000000000000000000000000000000000000000');
41
41
  (0, vitest_1.expect)(implementation).toEqual('0x000000b8f5f723a680d3d7ee624fe0bc84a6e05a');
42
- (0, vitest_1.expect)(initializationCallData).toEqual('0x4b6a141900000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000360000000000000000000000000000000552a5fae3db7a8f3917c435448f49ba6a9000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000002e40984b2f700000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000001a0000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002c0000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000578c4cb0e472a5462da43c495c3f3300000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000060580a9af0569ad3905b26a703201b358aa0904236642ebe79b22a19d00d3737637d46f725a5427ae45a9569259bf67e1e16b187d7b3ad1ed70138c4f0409677d19c9a01073b202db2ed56e604ad11db557d8c3ad75181619597f21b830f2da82a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000005ad9ce1f5035fd62ca96cef16adaaf000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000');
42
+ (0, vitest_1.expect)(initializationCallData).toEqual('0x4b6a1419000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000003c0000000000000000000000000000000552a5fae3db7a8f3917c435448f49ba6a9000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000003440984b2f700000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000320000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000578c4cb0e472a5462da43c495c3f33000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000001580a9af0569ad3905b26a703201b358aa0904236642ebe79b22a19d00d3737637d46f725a5427ae45a9569259bf67e1e16b187d7b3ad1ed70138c4f0409677d100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000005ad9ce1f5035fd62ca96cef16adaaf000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000');
43
43
  });
44
44
  });
45
45
  (0, vitest_1.describe)('Get Address', () => {
@@ -54,7 +54,7 @@ const MOCK_MODULE_ADDRESS = '0x28de6501fa86f2e6cd0b33c3aabdaeb4a1b93f3f';
54
54
  },
55
55
  rhinestoneApiKey: consts_1.MOCK_API_KEY,
56
56
  });
57
- (0, vitest_1.expect)(address).toEqual('0xf7782b971b6d4c38f99cbb1420993c244f957ed0');
57
+ (0, vitest_1.expect)(address).toEqual('0x614ea8885429c480a83deddd2e050d411da36d4b');
58
58
  });
59
59
  (0, vitest_1.test)('Passkey owner', () => {
60
60
  const address = (0, startale_1.getAddress)({
@@ -63,11 +63,11 @@ const MOCK_MODULE_ADDRESS = '0x28de6501fa86f2e6cd0b33c3aabdaeb4a1b93f3f';
63
63
  },
64
64
  owners: {
65
65
  type: 'passkey',
66
- account: consts_1.passkeyAccount,
66
+ accounts: [consts_1.passkeyAccount],
67
67
  },
68
68
  rhinestoneApiKey: consts_1.MOCK_API_KEY,
69
69
  });
70
- (0, vitest_1.expect)(address).toEqual('0x08759d60a42860ddd3b3dd903165a08aa0312813');
70
+ (0, vitest_1.expect)(address).toEqual('0x4d78f6b273d07f2fd24433ebc7a90d89f0d061ae');
71
71
  });
72
72
  });
73
73
  (0, vitest_1.describe)('Get Install Data', () => {
@@ -1,5 +1,6 @@
1
- import type { Address, Chain, Client, Hex, Transport } from 'viem';
2
- import type { ProviderConfig, RhinestoneAccountConfig } from '../types';
1
+ import type { Address, Client, Hex } from 'viem';
2
+ import type { RhinestoneAccountConfig } from '../types';
3
+ import { createTransport } from './json-rpc';
3
4
  type CallType = 'call' | 'delegatecall' | 'batchcall';
4
5
  interface ValidatorConfig {
5
6
  address: Address;
@@ -27,7 +28,6 @@ interface GetAccountNonceParams {
27
28
  declare function encode7579Calls<callType extends CallType>({ mode, callData, }: EncodeCallDataParams<callType>): Hex;
28
29
  declare function getAccountNonce(client: Client, args: GetAccountNonceParams): Promise<bigint>;
29
30
  declare function getBundlerClient(config: RhinestoneAccountConfig, client: Client): import("viem/account-abstraction").BundlerClient<import("viem").HttpTransport<undefined, false>, undefined, undefined, Client, undefined>;
30
- declare function createTransport(chain: Chain, provider?: ProviderConfig): Transport;
31
31
  export { encode7579Calls, getAccountNonce, getBundlerClient, createTransport };
32
32
  export type { ValidatorConfig };
33
33
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../accounts/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,MAAM,CAAA;AA8BlE,OAAO,KAAK,EAGV,cAAc,EACd,uBAAuB,EACxB,MAAM,UAAU,CAAA;AAEjB,KAAK,QAAQ,GAAG,MAAM,GAAG,cAAc,GAAG,WAAW,CAAA;AAErD,UAAU,eAAe;IACvB,OAAO,EAAE,OAAO,CAAA;IAChB,MAAM,EAAE,OAAO,CAAA;CAChB;AAED,UAAU,aAAa,CAAC,QAAQ,SAAS,QAAQ;IAC/C,IAAI,EAAE,QAAQ,CAAA;IACd,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,QAAQ,CAAC,EAAE,GAAG,CAAA;IACd,OAAO,CAAC,EAAE,GAAG,CAAA;CACd;AAED,UAAU,oBAAoB,CAAC,QAAQ,SAAS,QAAQ;IACtD,IAAI,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAA;IAC7B,QAAQ,EAAE,SAAS;QACjB,EAAE,EAAE,OAAO,CAAA;QACX,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;QAC1B,IAAI,CAAC,EAAE,GAAG,GAAG,SAAS,CAAA;KACvB,EAAE,CAAA;CACJ;AAED,UAAU,qBAAqB;IAC7B,OAAO,EAAE,OAAO,CAAA;IAChB,iBAAiB,EAAE,OAAO,CAAA;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAA;CACb;AAkDD,iBAAS,eAAe,CAAC,QAAQ,SAAS,QAAQ,EAAE,EAClD,IAAI,EACJ,QAAQ,GACT,EAAE,oBAAoB,CAAC,QAAQ,CAAC,GAAG,GAAG,CAuFtC;AAED,iBAAe,eAAe,CAC5B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,qBAAqB,GAC1B,OAAO,CAAC,MAAM,CAAC,CAmCjB;AAED,iBAAS,gBAAgB,CAAC,MAAM,EAAE,uBAAuB,EAAE,MAAM,EAAE,MAAM,6IA2CxE;AAyBD,iBAAS,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,EAAE,cAAc,GAAG,SAAS,CAY3E;AA6BD,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,gBAAgB,EAAE,eAAe,EAAE,CAAA;AAC9E,YAAY,EAAE,eAAe,EAAE,CAAA"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../accounts/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,MAAM,CAAA;AAgBhD,OAAO,KAAK,EAGV,uBAAuB,EACxB,MAAM,UAAU,CAAA;AACjB,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAE5C,KAAK,QAAQ,GAAG,MAAM,GAAG,cAAc,GAAG,WAAW,CAAA;AAErD,UAAU,eAAe;IACvB,OAAO,EAAE,OAAO,CAAA;IAChB,MAAM,EAAE,OAAO,CAAA;CAChB;AAED,UAAU,aAAa,CAAC,QAAQ,SAAS,QAAQ;IAC/C,IAAI,EAAE,QAAQ,CAAA;IACd,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,QAAQ,CAAC,EAAE,GAAG,CAAA;IACd,OAAO,CAAC,EAAE,GAAG,CAAA;CACd;AAED,UAAU,oBAAoB,CAAC,QAAQ,SAAS,QAAQ;IACtD,IAAI,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAA;IAC7B,QAAQ,EAAE,SAAS;QACjB,EAAE,EAAE,OAAO,CAAA;QACX,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;QAC1B,IAAI,CAAC,EAAE,GAAG,GAAG,SAAS,CAAA;KACvB,EAAE,CAAA;CACJ;AAED,UAAU,qBAAqB;IAC7B,OAAO,EAAE,OAAO,CAAA;IAChB,iBAAiB,EAAE,OAAO,CAAA;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAA;CACb;AAkDD,iBAAS,eAAe,CAAC,QAAQ,SAAS,QAAQ,EAAE,EAClD,IAAI,EACJ,QAAQ,GACT,EAAE,oBAAoB,CAAC,QAAQ,CAAC,GAAG,GAAG,CAuFtC;AAED,iBAAe,eAAe,CAC5B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,qBAAqB,GAC1B,OAAO,CAAC,MAAM,CAAC,CAmCjB;AAED,iBAAS,gBAAgB,CAAC,MAAM,EAAE,uBAAuB,EAAE,MAAM,EAAE,MAAM,6IA2CxE;AAyBD,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,gBAAgB,EAAE,eAAe,EAAE,CAAA;AAC9E,YAAY,EAAE,eAAe,EAAE,CAAA"}
@@ -1,14 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createTransport = void 0;
3
4
  exports.encode7579Calls = encode7579Calls;
4
5
  exports.getAccountNonce = getAccountNonce;
5
6
  exports.getBundlerClient = getBundlerClient;
6
- exports.createTransport = createTransport;
7
7
  const viem_1 = require("viem");
8
8
  const account_abstraction_1 = require("viem/account-abstraction");
9
9
  const actions_1 = require("viem/actions");
10
- const chains_1 = require("viem/chains");
11
10
  const utils_1 = require("viem/utils");
11
+ const json_rpc_1 = require("./json-rpc");
12
+ Object.defineProperty(exports, "createTransport", { enumerable: true, get: function () { return json_rpc_1.createTransport; } });
12
13
  function parseCallType(callType) {
13
14
  switch (callType) {
14
15
  case 'call':
@@ -198,41 +199,3 @@ async function getGasPriceEstimate(bundlerUrl) {
198
199
  maxPriorityFeePerGas: BigInt(json.result.fast.maxPriorityFeePerGas),
199
200
  };
200
201
  }
201
- function createTransport(chain, provider) {
202
- if (!provider) {
203
- return (0, viem_1.http)();
204
- }
205
- switch (provider.type) {
206
- case 'alchemy': {
207
- const alchemyNetwork = getAlchemyNetworkName(chain.id);
208
- const jsonRpcEndpoint = `https://${alchemyNetwork}.g.alchemy.com/v2/${provider.apiKey}`;
209
- return (0, viem_1.http)(jsonRpcEndpoint);
210
- }
211
- }
212
- }
213
- function getAlchemyNetworkName(chainId) {
214
- switch (chainId) {
215
- case chains_1.mainnet.id:
216
- return 'eth-mainnet';
217
- case chains_1.sepolia.id:
218
- return 'eth-sepolia';
219
- case chains_1.polygon.id:
220
- return 'polygon-mainnet';
221
- case chains_1.optimism.id:
222
- return 'opt-mainnet';
223
- case chains_1.optimismSepolia.id:
224
- return 'opt-sepolia';
225
- case chains_1.arbitrum.id:
226
- return 'arb-mainnet';
227
- case chains_1.arbitrumSepolia.id:
228
- return 'arb-sepolia';
229
- case chains_1.base.id:
230
- return 'base-mainnet';
231
- case chains_1.baseSepolia.id:
232
- return 'base-sepolia';
233
- case chains_1.zksync.id:
234
- return 'zksync-mainnet';
235
- case chains_1.soneium.id:
236
- return 'soneium-mainnet';
237
- }
238
- }
@@ -20,6 +20,7 @@ declare function setUpRecovery({ rhinestoneAccount, guardians, threshold, }: {
20
20
  * @param chain Chain to recover ownership on
21
21
  * @param provider Provider to use for the recovery
22
22
  * @returns Calls to recover ownership
23
+ * @deprecated Use `recoverEcdsaOwnership` or `recoverPasskeyOwnership` instead
23
24
  */
24
25
  declare function recover(address: Address, newOwners: OwnerSet, chain: Chain, provider?: ProviderConfig): Promise<Call[]>;
25
26
  /**
@@ -79,6 +80,49 @@ declare function removeOwner(prevOwner: Address, ownerToRemove: Address): Call;
79
80
  * @returns Call to change the threshold
80
81
  */
81
82
  declare function changeThreshold(newThreshold: number): Call;
83
+ /**
84
+ * Add a passkey owner
85
+ * @param pubKeyX Public key X
86
+ * @param pubKeyY Public key Y
87
+ * @param requireUserVerification Whether to require user verification
88
+ * @returns Call to add the passkey owner
89
+ */
90
+ declare function addPasskeyOwner(pubKeyX: bigint, pubKeyY: bigint, requireUserVerification: boolean): Call;
91
+ /**
92
+ * Remove a passkey owner
93
+ * @param pubKeyX Public key X
94
+ * @param pubKeyY Public key Y
95
+ * @returns Call to remove the passkey owner
96
+ */
97
+ declare function removePasskeyOwner(pubKeyX: bigint, pubKeyY: bigint): Call;
98
+ /**
99
+ * Change an account's signer threshold (passkey)
100
+ * @param newThreshold New threshold
101
+ * @returns Call to change the threshold
102
+ */
103
+ declare function changePasskeyThreshold(newThreshold: number): Call;
104
+ /**
105
+ * Recover an account's ownership (ECDSA)
106
+ * @param address Account address
107
+ * @param newOwners New owners
108
+ * @param chain Chain to recover ownership on
109
+ * @param provider Provider to use for the recovery
110
+ * @returns Calls to recover ownership
111
+ */
112
+ declare function recoverEcdsaOwnership(address: Address, newOwners: OwnableValidatorConfig, chain: Chain, provider?: ProviderConfig, validatorAddress?: Address): Promise<Call[]>;
113
+ /**
114
+ * Recover an account's ownership (Passkey)
115
+ * @param address Account address
116
+ * @param oldCredentials Old credentials to be replaced (with pubKeyX, pubKeyY)
117
+ * @param newOwners New passkey owners
118
+ * @param chain Chain to recover ownership on
119
+ * @param provider Provider to use for the recovery
120
+ * @returns Calls to recover ownership
121
+ */
122
+ declare function recoverPasskeyOwnership(address: Address, oldCredentials: {
123
+ pubKeyX: bigint;
124
+ pubKeyY: bigint;
125
+ }[], newOwners: WebauthnValidatorConfig, chain: Chain, provider?: ProviderConfig): Promise<Call[]>;
82
126
  /**
83
127
  * Enable multi-factor authentication
84
128
  * @param rhinestoneAccount Account to enable multi-factor authentication on
@@ -119,5 +163,5 @@ declare function setSubValidator(id: Hex | number, validator: OwnableValidatorCo
119
163
  * @returns Call to remove the sub-validator
120
164
  */
121
165
  declare function removeSubValidator(id: Hex | number, validator: OwnableValidatorConfig | WebauthnValidatorConfig): Call;
122
- export { enableEcdsa, enablePasskeys, disableEcdsa, disablePasskeys, addOwner, removeOwner, changeThreshold, recover, setUpRecovery, encodeSmartSessionSignature, enableMultiFactor, disableMultiFactor, changeMultiFactorThreshold, setSubValidator, removeSubValidator, };
166
+ export { enableEcdsa, enablePasskeys, disableEcdsa, disablePasskeys, addOwner, removeOwner, changeThreshold, addPasskeyOwner, removePasskeyOwner, changePasskeyThreshold, recover, recoverEcdsaOwnership, recoverPasskeyOwnership, setUpRecovery, encodeSmartSessionSignature, enableMultiFactor, disableMultiFactor, changeMultiFactorThreshold, setSubValidator, removeSubValidator, };
123
167
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../actions/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../actions/index.ts"],"names":[],"mappings":"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"}
@@ -8,7 +8,12 @@ exports.disablePasskeys = disablePasskeys;
8
8
  exports.addOwner = addOwner;
9
9
  exports.removeOwner = removeOwner;
10
10
  exports.changeThreshold = changeThreshold;
11
+ exports.addPasskeyOwner = addPasskeyOwner;
12
+ exports.removePasskeyOwner = removePasskeyOwner;
13
+ exports.changePasskeyThreshold = changePasskeyThreshold;
11
14
  exports.recover = recover;
15
+ exports.recoverEcdsaOwnership = recoverEcdsaOwnership;
16
+ exports.recoverPasskeyOwnership = recoverPasskeyOwnership;
12
17
  exports.setUpRecovery = setUpRecovery;
13
18
  exports.enableMultiFactor = enableMultiFactor;
14
19
  exports.disableMultiFactor = disableMultiFactor;
@@ -40,12 +45,16 @@ function setUpRecovery({ rhinestoneAccount, guardians, threshold = 1, }) {
40
45
  * @param chain Chain to recover ownership on
41
46
  * @param provider Provider to use for the recovery
42
47
  * @returns Calls to recover ownership
48
+ * @deprecated Use `recoverEcdsaOwnership` or `recoverPasskeyOwnership` instead
43
49
  */
44
50
  async function recover(address, newOwners, chain, provider) {
45
51
  switch (newOwners.type) {
46
52
  case 'ecdsa': {
47
53
  return recoverEcdsaOwnership(address, newOwners, chain, provider);
48
54
  }
55
+ case 'ecdsa-v0': {
56
+ return recoverEcdsaOwnership(address, newOwners, chain, provider, core_1.OWNABLE_V0_VALIDATOR_ADDRESS);
57
+ }
49
58
  case 'passkey': {
50
59
  throw new Error('Passkey ownership recovery is not yet supported');
51
60
  }
@@ -74,7 +83,7 @@ function enableEcdsa({ rhinestoneAccount, owners, threshold = 1, }) {
74
83
  * @returns Calls to enable passkeys authentication
75
84
  */
76
85
  function enablePasskeys({ rhinestoneAccount, pubKey, authenticatorId, }) {
77
- const module = (0, core_1.getWebAuthnValidator)({ pubKey, authenticatorId });
86
+ const module = (0, core_1.getWebAuthnValidator)(1, [{ pubKey, authenticatorId }]);
78
87
  const calls = (0, accounts_1.getModuleInstallationCalls)(rhinestoneAccount.config, module);
79
88
  return calls;
80
89
  }
@@ -94,11 +103,13 @@ function disableEcdsa({ rhinestoneAccount, }) {
94
103
  * @returns Calls to disable passkeys authentication
95
104
  */
96
105
  function disablePasskeys({ rhinestoneAccount, }) {
97
- const module = (0, core_1.getWebAuthnValidator)({
98
- // Mocked values
99
- pubKey: '0x580a9af0569ad3905b26a703201b358aa0904236642ebe79b22a19d00d3737637d46f725a5427ae45a9569259bf67e1e16b187d7b3ad1ed70138c4f0409677d1',
100
- authenticatorId: '0x',
101
- });
106
+ const module = (0, core_1.getWebAuthnValidator)(1, [
107
+ {
108
+ // Mocked values
109
+ pubKey: '0x580a9af0569ad3905b26a703201b358aa0904236642ebe79b22a19d00d3737637d46f725a5427ae45a9569259bf67e1e16b187d7b3ad1ed70138c4f0409677d1',
110
+ authenticatorId: '0x',
111
+ },
112
+ ]);
102
113
  const calls = (0, accounts_1.getModuleUninstallationCalls)(rhinestoneAccount.config, module);
103
114
  return calls;
104
115
  }
@@ -180,6 +191,93 @@ function changeThreshold(newThreshold) {
180
191
  }),
181
192
  };
182
193
  }
194
+ /**
195
+ * Add a passkey owner
196
+ * @param pubKeyX Public key X
197
+ * @param pubKeyY Public key Y
198
+ * @param requireUserVerification Whether to require user verification
199
+ * @returns Call to add the passkey owner
200
+ */
201
+ function addPasskeyOwner(pubKeyX, pubKeyY, requireUserVerification) {
202
+ return {
203
+ to: core_1.WEBAUTHN_VALIDATOR_ADDRESS,
204
+ value: 0n,
205
+ data: (0, viem_1.encodeFunctionData)({
206
+ abi: [
207
+ {
208
+ inputs: [
209
+ { name: 'pubKeyX', type: 'uint256' },
210
+ { name: 'pubKeyY', type: 'uint256' },
211
+ {
212
+ name: 'requireUserVerification',
213
+ type: 'bool',
214
+ },
215
+ ],
216
+ name: 'addCredential',
217
+ outputs: [],
218
+ stateMutability: 'nonpayable',
219
+ type: 'function',
220
+ },
221
+ ],
222
+ functionName: 'addCredential',
223
+ args: [pubKeyX, pubKeyY, requireUserVerification],
224
+ }),
225
+ };
226
+ }
227
+ /**
228
+ * Remove a passkey owner
229
+ * @param pubKeyX Public key X
230
+ * @param pubKeyY Public key Y
231
+ * @returns Call to remove the passkey owner
232
+ */
233
+ function removePasskeyOwner(pubKeyX, pubKeyY) {
234
+ return {
235
+ to: core_1.WEBAUTHN_VALIDATOR_ADDRESS,
236
+ value: 0n,
237
+ data: (0, viem_1.encodeFunctionData)({
238
+ abi: [
239
+ {
240
+ inputs: [
241
+ { name: 'pubKeyX', type: 'uint256' },
242
+ { name: 'pubKeyY', type: 'uint256' },
243
+ ],
244
+ name: 'removeCredential',
245
+ outputs: [],
246
+ stateMutability: 'nonpayable',
247
+ type: 'function',
248
+ },
249
+ ],
250
+ functionName: 'removeCredential',
251
+ args: [pubKeyX, pubKeyY],
252
+ }),
253
+ };
254
+ }
255
+ /**
256
+ * Change an account's signer threshold (passkey)
257
+ * @param newThreshold New threshold
258
+ * @returns Call to change the threshold
259
+ */
260
+ function changePasskeyThreshold(newThreshold) {
261
+ return {
262
+ to: core_1.WEBAUTHN_VALIDATOR_ADDRESS,
263
+ value: 0n,
264
+ data: (0, viem_1.encodeFunctionData)({
265
+ abi: [
266
+ {
267
+ inputs: [
268
+ { internalType: 'uint256', name: '_threshold', type: 'uint256' },
269
+ ],
270
+ name: 'setThreshold',
271
+ outputs: [],
272
+ stateMutability: 'nonpayable',
273
+ type: 'function',
274
+ },
275
+ ],
276
+ functionName: 'setThreshold',
277
+ args: [BigInt(newThreshold)],
278
+ }),
279
+ };
280
+ }
183
281
  /**
184
282
  * Recover an account's ownership (ECDSA)
185
283
  * @param address Account address
@@ -188,7 +286,7 @@ function changeThreshold(newThreshold) {
188
286
  * @param provider Provider to use for the recovery
189
287
  * @returns Calls to recover ownership
190
288
  */
191
- async function recoverEcdsaOwnership(address, newOwners, chain, provider) {
289
+ async function recoverEcdsaOwnership(address, newOwners, chain, provider, validatorAddress) {
192
290
  const publicClient = (0, viem_1.createPublicClient)({
193
291
  chain,
194
292
  transport: (0, utils_1.createTransport)(chain, provider),
@@ -197,7 +295,7 @@ async function recoverEcdsaOwnership(address, newOwners, chain, provider) {
197
295
  const results = await publicClient.multicall({
198
296
  contracts: [
199
297
  {
200
- address: core_1.OWNABLE_VALIDATOR_ADDRESS,
298
+ address: validatorAddress ?? core_1.OWNABLE_VALIDATOR_ADDRESS,
201
299
  abi: [
202
300
  {
203
301
  inputs: [
@@ -219,7 +317,7 @@ async function recoverEcdsaOwnership(address, newOwners, chain, provider) {
219
317
  args: [address],
220
318
  },
221
319
  {
222
- address: core_1.OWNABLE_VALIDATOR_ADDRESS,
320
+ address: validatorAddress ?? core_1.OWNABLE_VALIDATOR_ADDRESS,
223
321
  abi: [
224
322
  {
225
323
  inputs: [
@@ -278,6 +376,73 @@ async function recoverEcdsaOwnership(address, newOwners, chain, provider) {
278
376
  }
279
377
  return calls;
280
378
  }
379
+ /**
380
+ * Recover an account's ownership (Passkey)
381
+ * @param address Account address
382
+ * @param oldCredentials Old credentials to be replaced (with pubKeyX, pubKeyY)
383
+ * @param newOwners New passkey owners
384
+ * @param chain Chain to recover ownership on
385
+ * @param provider Provider to use for the recovery
386
+ * @returns Calls to recover ownership
387
+ */
388
+ async function recoverPasskeyOwnership(address, oldCredentials, newOwners, chain, provider) {
389
+ const publicClient = (0, viem_1.createPublicClient)({
390
+ chain,
391
+ transport: (0, utils_1.createTransport)(chain, provider),
392
+ });
393
+ const existingThreshold = await publicClient.readContract({
394
+ address: core_1.WEBAUTHN_VALIDATOR_ADDRESS,
395
+ abi: [
396
+ {
397
+ inputs: [{ internalType: 'address', name: 'account', type: 'address' }],
398
+ name: 'threshold',
399
+ outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
400
+ stateMutability: 'view',
401
+ type: 'function',
402
+ },
403
+ ],
404
+ functionName: 'threshold',
405
+ args: [address],
406
+ });
407
+ const calls = [];
408
+ // Convert new owners config to credentials and threshold
409
+ const newCredentials = newOwners.accounts.map((account) => {
410
+ const publicKey = account.publicKey;
411
+ // Parse the public key hex string to extract x and y coordinates
412
+ const publicKeyBytes = publicKey.startsWith('0x')
413
+ ? publicKey.slice(2)
414
+ : publicKey;
415
+ // The public key is 64 bytes: 32 bytes for x, 32 bytes for y
416
+ const x = BigInt(`0x${publicKeyBytes.slice(0, 64)}`);
417
+ const y = BigInt(`0x${publicKeyBytes.slice(64, 128)}`);
418
+ return {
419
+ pubKeyX: x,
420
+ pubKeyY: y,
421
+ requireUV: false, // Default to false for now
422
+ };
423
+ });
424
+ const newThreshold = newOwners.threshold ?? 1;
425
+ // Check if threshold needs to be updated
426
+ if (Number(existingThreshold) !== newThreshold) {
427
+ calls.push(changePasskeyThreshold(newThreshold));
428
+ }
429
+ // Compare existing and new credentials to determine what to add/remove
430
+ const existingCredentialKeys = oldCredentials.map((cred) => `${cred.pubKeyX.toString()}-${cred.pubKeyY.toString()}`);
431
+ const newCredentialKeys = newCredentials.map((cred) => `${cred.pubKeyX.toString()}-${cred.pubKeyY.toString()}`);
432
+ // Find credentials to add (new ones not in existing)
433
+ const credentialsToAdd = newCredentials.filter((cred) => !existingCredentialKeys.includes(`${cred.pubKeyX.toString()}-${cred.pubKeyY.toString()}`));
434
+ // Find credentials to remove (existing ones not in new)
435
+ const credentialsToRemove = oldCredentials.filter((cred) => !newCredentialKeys.includes(`${cred.pubKeyX.toString()}-${cred.pubKeyY.toString()}`));
436
+ // Remove old credentials first (important for security in recovery scenarios)
437
+ for (const credential of credentialsToRemove) {
438
+ calls.push(removePasskeyOwner(credential.pubKeyX, credential.pubKeyY));
439
+ }
440
+ // Then add new credentials
441
+ for (const credential of credentialsToAdd) {
442
+ calls.push(addPasskeyOwner(credential.pubKeyX, credential.pubKeyY, credential.requireUV));
443
+ }
444
+ return calls;
445
+ }
281
446
  /**
282
447
  * Enable multi-factor authentication
283
448
  * @param rhinestoneAccount Account to enable multi-factor authentication on