@charterlabs/rhinestone-sdk 0.3.9 → 0.4.2

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 (155) hide show
  1. package/README.md +89 -1
  2. package/dist/src/accounts/index.d.ts +6 -3
  3. package/dist/src/accounts/index.d.ts.map +1 -1
  4. package/dist/src/accounts/index.js +8 -2
  5. package/dist/src/accounts/json-rpc/providers.d.ts.map +1 -1
  6. package/dist/src/accounts/json-rpc/providers.js +3 -3
  7. package/dist/src/accounts/safe.d.ts.map +1 -1
  8. package/dist/src/accounts/safe.js +4 -1
  9. package/dist/src/accounts/signing/common.d.ts +10 -5
  10. package/dist/src/accounts/signing/common.d.ts.map +1 -1
  11. package/dist/src/accounts/signing/common.js +21 -7
  12. package/dist/src/accounts/signing/message.d.ts +3 -1
  13. package/dist/src/accounts/signing/message.d.ts.map +1 -1
  14. package/dist/src/accounts/signing/mfa-webauthn.d.ts +30 -0
  15. package/dist/src/accounts/signing/mfa-webauthn.d.ts.map +1 -0
  16. package/dist/src/accounts/signing/mfa-webauthn.js +119 -0
  17. package/dist/src/accounts/startale.js +1 -1
  18. package/dist/src/accounts/utils.d.ts +1 -1
  19. package/dist/src/accounts/utils.d.ts.map +1 -1
  20. package/dist/src/actions/mfa.d.ts +6 -2
  21. package/dist/src/actions/mfa.d.ts.map +1 -1
  22. package/dist/src/actions/mfa.js +14 -4
  23. package/dist/src/auth/provider.d.ts +7 -0
  24. package/dist/src/auth/provider.d.ts.map +1 -0
  25. package/dist/src/auth/provider.js +41 -0
  26. package/dist/src/errors/index.d.ts +2 -2
  27. package/dist/src/errors/index.d.ts.map +1 -1
  28. package/dist/src/errors/index.js +2 -1
  29. package/dist/src/execution/error.d.ts +9 -1
  30. package/dist/src/execution/error.d.ts.map +1 -1
  31. package/dist/src/execution/error.js +12 -1
  32. package/dist/src/execution/index.d.ts +6 -4
  33. package/dist/src/execution/index.d.ts.map +1 -1
  34. package/dist/src/execution/index.js +17 -13
  35. package/dist/src/execution/utils.d.ts +17 -6
  36. package/dist/src/execution/utils.d.ts.map +1 -1
  37. package/dist/src/execution/utils.js +193 -43
  38. package/dist/src/index.d.ts +5 -5
  39. package/dist/src/index.d.ts.map +1 -1
  40. package/dist/src/index.js +13 -11
  41. package/dist/src/jwt-server/digest.d.ts +11 -0
  42. package/dist/src/jwt-server/digest.d.ts.map +1 -0
  43. package/dist/src/jwt-server/digest.js +22 -0
  44. package/dist/src/jwt-server/express.d.ts +16 -0
  45. package/dist/src/jwt-server/express.d.ts.map +1 -0
  46. package/dist/src/jwt-server/express.js +24 -0
  47. package/dist/src/jwt-server/handlers.d.ts +10 -0
  48. package/dist/src/jwt-server/handlers.d.ts.map +1 -0
  49. package/dist/src/jwt-server/handlers.js +41 -0
  50. package/dist/src/jwt-server/index.d.ts +8 -0
  51. package/dist/src/jwt-server/index.d.ts.map +1 -0
  52. package/dist/src/jwt-server/index.js +18 -0
  53. package/dist/src/jwt-server/jcs.d.ts +12 -0
  54. package/dist/src/jwt-server/jcs.d.ts.map +1 -0
  55. package/dist/src/jwt-server/jcs.js +60 -0
  56. package/dist/src/jwt-server/signer.d.ts +18 -0
  57. package/dist/src/jwt-server/signer.d.ts.map +1 -0
  58. package/dist/src/jwt-server/signer.js +71 -0
  59. package/dist/src/jwt-server/sponsorship.d.ts +19 -0
  60. package/dist/src/jwt-server/sponsorship.d.ts.map +1 -0
  61. package/dist/src/jwt-server/sponsorship.js +56 -0
  62. package/dist/src/jwt-server/web.d.ts +4 -0
  63. package/dist/src/jwt-server/web.d.ts.map +1 -0
  64. package/dist/src/jwt-server/web.js +27 -0
  65. package/dist/src/modules/validators/core.d.ts +6 -2
  66. package/dist/src/modules/validators/core.d.ts.map +1 -1
  67. package/dist/src/modules/validators/core.js +46 -21
  68. package/dist/src/modules/validators/index.d.ts +2 -2
  69. package/dist/src/modules/validators/index.d.ts.map +1 -1
  70. package/dist/src/modules/validators/index.js +5 -1
  71. package/dist/src/modules/validators/policies/claim/permit2.d.ts +55 -0
  72. package/dist/src/modules/validators/policies/claim/permit2.d.ts.map +1 -0
  73. package/dist/src/modules/validators/policies/claim/permit2.js +239 -0
  74. package/dist/src/modules/validators/policies/claim/types.d.ts +12 -0
  75. package/dist/src/modules/validators/policies/claim/types.d.ts.map +1 -0
  76. package/dist/src/modules/validators/policies/claim/types.js +18 -0
  77. package/dist/src/modules/validators/smart-sessions.d.ts +22 -7
  78. package/dist/src/modules/validators/smart-sessions.d.ts.map +1 -1
  79. package/dist/src/modules/validators/smart-sessions.js +82 -22
  80. package/dist/src/orchestrator/client.d.ts +9 -4
  81. package/dist/src/orchestrator/client.d.ts.map +1 -1
  82. package/dist/src/orchestrator/client.js +29 -17
  83. package/dist/src/orchestrator/consts.d.ts +3 -2
  84. package/dist/src/orchestrator/consts.d.ts.map +1 -1
  85. package/dist/src/orchestrator/consts.js +4 -2
  86. package/dist/src/orchestrator/index.d.ts +4 -3
  87. package/dist/src/orchestrator/index.d.ts.map +1 -1
  88. package/dist/src/orchestrator/index.js +2 -2
  89. package/dist/src/orchestrator/registry.d.ts +2 -1
  90. package/dist/src/orchestrator/registry.d.ts.map +1 -1
  91. package/dist/src/orchestrator/registry.js +17 -1
  92. package/dist/src/orchestrator/types.d.ts +6 -1
  93. package/dist/src/orchestrator/types.d.ts.map +1 -1
  94. package/dist/src/types.d.ts +88 -5
  95. package/dist/src/types.d.ts.map +1 -1
  96. package/dist/src/utils/index.d.ts +3 -9
  97. package/dist/src/utils/index.d.ts.map +1 -1
  98. package/package.json +18 -4
  99. package/dist/src/accounts/index.test.d.ts +0 -2
  100. package/dist/src/accounts/index.test.d.ts.map +0 -1
  101. package/dist/src/accounts/index.test.js +0 -33
  102. package/dist/src/accounts/json-rpc/index.test.d.ts +0 -2
  103. package/dist/src/accounts/json-rpc/index.test.d.ts.map +0 -1
  104. package/dist/src/accounts/json-rpc/index.test.js +0 -35
  105. package/dist/src/accounts/json-rpc/providers.test.d.ts +0 -2
  106. package/dist/src/accounts/json-rpc/providers.test.d.ts.map +0 -1
  107. package/dist/src/accounts/json-rpc/providers.test.js +0 -43
  108. package/dist/src/accounts/kernel.test.d.ts +0 -2
  109. package/dist/src/accounts/kernel.test.d.ts.map +0 -1
  110. package/dist/src/accounts/kernel.test.js +0 -132
  111. package/dist/src/accounts/nexus.test.d.ts +0 -2
  112. package/dist/src/accounts/nexus.test.d.ts.map +0 -1
  113. package/dist/src/accounts/nexus.test.js +0 -118
  114. package/dist/src/accounts/safe.test.d.ts +0 -2
  115. package/dist/src/accounts/safe.test.d.ts.map +0 -1
  116. package/dist/src/accounts/safe.test.js +0 -118
  117. package/dist/src/accounts/signing/passkeys.test.d.ts +0 -2
  118. package/dist/src/accounts/signing/passkeys.test.d.ts.map +0 -1
  119. package/dist/src/accounts/signing/passkeys.test.js +0 -88
  120. package/dist/src/accounts/startale.test.d.ts +0 -2
  121. package/dist/src/accounts/startale.test.d.ts.map +0 -1
  122. package/dist/src/accounts/startale.test.js +0 -189
  123. package/dist/src/accounts/utils.test.d.ts +0 -2
  124. package/dist/src/accounts/utils.test.d.ts.map +0 -1
  125. package/dist/src/accounts/utils.test.js +0 -49
  126. package/dist/src/actions/ecdsa.test.d.ts +0 -2
  127. package/dist/src/actions/ecdsa.test.d.ts.map +0 -1
  128. package/dist/src/actions/ecdsa.test.js +0 -99
  129. package/dist/src/actions/passkeys.test.d.ts +0 -2
  130. package/dist/src/actions/passkeys.test.d.ts.map +0 -1
  131. package/dist/src/actions/passkeys.test.js +0 -54
  132. package/dist/src/actions/recovery.test.d.ts +0 -2
  133. package/dist/src/actions/recovery.test.d.ts.map +0 -1
  134. package/dist/src/actions/recovery.test.js +0 -168
  135. package/dist/src/execution/utils.test.d.ts +0 -2
  136. package/dist/src/execution/utils.test.d.ts.map +0 -1
  137. package/dist/src/execution/utils.test.js +0 -150
  138. package/dist/src/modules/index.test.d.ts +0 -2
  139. package/dist/src/modules/index.test.d.ts.map +0 -1
  140. package/dist/src/modules/index.test.js +0 -81
  141. package/dist/src/modules/validators/core.test.d.ts +0 -2
  142. package/dist/src/modules/validators/core.test.d.ts.map +0 -1
  143. package/dist/src/modules/validators/core.test.js +0 -101
  144. package/dist/src/modules/validators/smart-sessions.test.d.ts +0 -2
  145. package/dist/src/modules/validators/smart-sessions.test.d.ts.map +0 -1
  146. package/dist/src/modules/validators/smart-sessions.test.js +0 -61
  147. package/dist/src/orchestrator/registry.test.d.ts +0 -2
  148. package/dist/src/orchestrator/registry.test.d.ts.map +0 -1
  149. package/dist/src/orchestrator/registry.test.js +0 -154
  150. package/dist/test/consts.d.ts +0 -10
  151. package/dist/test/consts.d.ts.map +0 -1
  152. package/dist/test/consts.js +0 -22
  153. package/dist/test/utils/utils.d.ts +0 -5
  154. package/dist/test/utils/utils.d.ts.map +0 -1
  155. package/dist/test/utils/utils.js +0 -20
package/README.md CHANGED
@@ -31,6 +31,94 @@ npm install viem @rhinestone/sdk
31
31
  bun install viem @rhinestone/sdk
32
32
  ```
33
33
 
34
+ ## Authentication
35
+
36
+ The SDK supports two authentication modes: **API key** and **JWT**.
37
+
38
+ ### API Key
39
+
40
+ Pass the API key from the [Rhinestone dashboard](https://dashboard.rhinestone.dev):
41
+
42
+ ```ts
43
+ const rhinestone = new RhinestoneSDK({
44
+ auth: {
45
+ mode: 'apiKey',
46
+ apiKey: 'your-api-key',
47
+ },
48
+ })
49
+ ```
50
+
51
+ ### JWT (Experimental)
52
+
53
+ JWT authentication uses RS256-signed tokens for fine-grained access control. There are two integration patterns depending on your architecture:
54
+
55
+ #### Client-server (SDK runs in browser/client)
56
+
57
+ When the SDK runs on the client and a separate backend holds the signing key, fetch tokens via HTTP:
58
+
59
+ ```ts
60
+ const rhinestone = new RhinestoneSDK({
61
+ auth: {
62
+ mode: 'experimental_jwt',
63
+ accessToken: async () => {
64
+ const res = await fetch('/api/auth/token')
65
+ const { token } = await res.json()
66
+ return token
67
+ },
68
+ // Only needed for sponsored intents:
69
+ getIntentExtensionToken: async (intentInput) => {
70
+ const res = await fetch('/api/auth/extension-token', {
71
+ method: 'POST',
72
+ headers: { 'Content-Type': 'application/json' },
73
+ body: JSON.stringify({ intentInput }),
74
+ })
75
+ const { token } = await res.json()
76
+ return token
77
+ },
78
+ },
79
+ })
80
+ ```
81
+
82
+ Your backend is responsible for signing JWTs with the correct claims. See the [JWT documentation](https://docs.rhinestone.dev) for the required token format.
83
+
84
+ #### Same-host (SDK and signing key on the same server)
85
+
86
+ When the SDK runs server-side with access to the private key, use `createJwtSigner` to sign tokens in-process without an HTTP round-trip:
87
+
88
+ ```ts
89
+ import { createJwtSigner } from '@rhinestone/sdk/jwt-server'
90
+
91
+ const signer = createJwtSigner({
92
+ jwt: {
93
+ privateKey: myJwk, // RS256 private key in JWK format
94
+ integratorId: 'int_abc',
95
+ projectId: 'proj_xyz',
96
+ appId: 'app_prod',
97
+ keyId: 'key_1',
98
+ },
99
+ })
100
+
101
+ const rhinestone = new RhinestoneSDK({
102
+ auth: { mode: 'experimental_jwt', ...signer },
103
+ })
104
+ ```
105
+
106
+ `createJwtSigner` returns `{ accessToken, getIntentExtensionToken }` — the same shape as the `auth` config, so you can spread it directly. It handles all claim structure, key caching, and intent digest computation internally.
107
+
108
+ To control which intents your backend sponsors, pass `shouldSponsor` filters. The signer checks them before signing — denied requests throw a `SponsorshipDeniedError`:
109
+
110
+ ```ts
111
+ import { createJwtSigner } from '@rhinestone/sdk/jwt-server'
112
+
113
+ const signer = createJwtSigner({
114
+ // ...
115
+ shouldSponsor: {
116
+ chain: ({ id }) => [1, 8453, 10].includes(id),
117
+ account: async (address) => isUser(address),
118
+ },
119
+ })
120
+ ```
121
+
34
122
  ## Quickstart
35
123
 
36
124
  Create a smart account:
@@ -38,7 +126,7 @@ Create a smart account:
38
126
  ```ts
39
127
  import { RhinestoneSDK } from '@rhinestone/sdk'
40
128
 
41
- const rhinestone = new RhinestoneSDK()
129
+ const rhinestone = new RhinestoneSDK({ apiKey: 'your-api-key' })
42
130
  const account = await rhinestone.createAccount({
43
131
  owners: {
44
132
  type: 'ecdsa',
@@ -1,8 +1,10 @@
1
1
  import { type Account, type Chain, type HashTypedDataParameters, type Hex, type PublicClient, type TypedData } from 'viem';
2
2
  import type { Module } from '../modules/common';
3
+ import type { ResolvedSessionSignerSet } from '../modules/validators/smart-sessions';
3
4
  import type { AccountProviderConfig, Call, OwnerSet, RhinestoneConfig, SignerSet } from '../types';
4
5
  import { AccountConfigurationNotSupportedError, AccountError, Eip712DomainNotAvailableError, Eip7702AccountMustHaveEoaError, Eip7702NotSupportedForAccountError, EoaAccountMustHaveAccountError, EoaSigningMethodNotConfiguredError, EoaSigningNotSupportedError, ExistingEip7702AccountsNotSupportedError, FactoryArgsNotAvailableError, isAccountError, ModuleInstallationNotSupportedError, OwnersFieldRequiredError, SigningNotSupportedForAccountError, SmartSessionsNotEnabledError, WalletClientNoConnectedAccountError } from './error';
5
6
  import { type ValidatorConfig } from './utils';
7
+ type InternalSignerSet = SignerSet | ResolvedSessionSignerSet;
6
8
  declare function getInitCode(config: RhinestoneConfig): {
7
9
  address: import("viem").Address;
8
10
  } | {
@@ -31,12 +33,13 @@ declare function getModuleInstallationCalls(config: RhinestoneConfig, module: Mo
31
33
  declare function getModuleUninstallationCalls(config: RhinestoneConfig, module: Module): Call[];
32
34
  declare function getAddress(config: RhinestoneConfig): `0x${string}`;
33
35
  declare function checkAddress(config: RhinestoneConfig): boolean;
34
- declare function getEip1271Signature(config: RhinestoneConfig, signers: SignerSet | undefined, chain: Chain, validator: ValidatorConfig, hash: Hex, transformSignature?: (signature: Hex) => Hex): Promise<Hex>;
35
- declare function getEmissarySignature(config: RhinestoneConfig, signers: SignerSet | undefined, chain: Chain, hash: Hex, transformSignature?: (signature: Hex) => Hex): Promise<Hex>;
36
- declare function getTypedDataPackedSignature<typedData extends TypedData | Record<string, unknown> = TypedData, primaryType extends keyof typedData | 'EIP712Domain' = keyof typedData>(config: RhinestoneConfig, signers: SignerSet | undefined, chain: Chain, validator: ValidatorConfig, parameters: HashTypedDataParameters<typedData, primaryType>, transformSignature?: (signature: Hex) => Hex): Promise<Hex>;
36
+ declare function getEip1271Signature(config: RhinestoneConfig, signers: InternalSignerSet | undefined, chain: Chain, validator: ValidatorConfig, hash: Hex, transformSignature?: (signature: Hex) => Hex): Promise<Hex>;
37
+ declare function getEmissarySignature(config: RhinestoneConfig, signers: InternalSignerSet | undefined, chain: Chain, hash: Hex, transformSignature?: (signature: Hex) => Hex): Promise<Hex>;
38
+ declare function getTypedDataPackedSignature<typedData extends TypedData | Record<string, unknown> = TypedData, primaryType extends keyof typedData | 'EIP712Domain' = keyof typedData>(config: RhinestoneConfig, signers: InternalSignerSet | undefined, chain: Chain, validator: ValidatorConfig, parameters: HashTypedDataParameters<typedData, primaryType>, transformSignature?: (signature: Hex) => Hex): Promise<Hex>;
37
39
  declare function isDeployed(config: RhinestoneConfig, chain: Chain): Promise<boolean>;
38
40
  declare function deploy(config: RhinestoneConfig, chain: Chain, params?: {
39
41
  sponsored?: boolean;
42
+ eip7702InitSignature?: Hex;
40
43
  }): Promise<boolean>;
41
44
  declare function setup(config: RhinestoneConfig, chain: Chain): Promise<boolean>;
42
45
  declare function deployStandaloneWithEoa(chain: Chain, config: RhinestoneConfig, deployer: Account): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../accounts/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../accounts/index.ts"],"names":[],"mappings":"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"}
@@ -434,7 +434,7 @@ async function deploy(config, chain, params) {
434
434
  await deployWithBundler(chain, config);
435
435
  }
436
436
  else {
437
- await deployWithIntent(chain, config, params?.sponsored ?? false);
437
+ await deployWithIntent(chain, config, params?.sponsored ?? false, params?.eip7702InitSignature);
438
438
  }
439
439
  return true;
440
440
  }
@@ -504,7 +504,7 @@ async function setup(config, chain) {
504
504
  await (0, execution_1.waitForExecution)(config, result, true);
505
505
  return true;
506
506
  }
507
- async function deployWithIntent(chain, config, sponsored) {
507
+ async function deployWithIntent(chain, config, sponsored, eip7702InitSignature) {
508
508
  const publicClient = (0, viem_1.createPublicClient)({
509
509
  chain,
510
510
  transport: (0, utils_1.createTransport)(chain, config.provider),
@@ -515,11 +515,17 @@ async function deployWithIntent(chain, config, sponsored) {
515
515
  // Already deployed
516
516
  return;
517
517
  }
518
+ // For EIP-7702 accounts, auto-sign if no signature was provided
519
+ let initSignature = eip7702InitSignature;
520
+ if (!initSignature && is7702(config)) {
521
+ initSignature = await signEip7702InitData(config);
522
+ }
518
523
  const result = await (0, execution_1.sendTransaction)(config, {
519
524
  sourceChains: [chain],
520
525
  targetChain: chain,
521
526
  calls: [],
522
527
  sponsored,
528
+ eip7702InitSignature: initSignature,
523
529
  });
524
530
  await (0, execution_1.waitForExecution)(config, result, true);
525
531
  }
@@ -1 +1 @@
1
- {"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../../../../accounts/json-rpc/providers.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAExD,iBAAS,aAAa,CAAC,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAetE;AAED,iBAAS,YAAY,CACnB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC3B,MAAM,GAAG,SAAS,CAEpB;AAED,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,CAAA"}
1
+ {"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../../../../accounts/json-rpc/providers.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAIxD,iBAAS,aAAa,CAAC,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAiBtE;AAED,iBAAS,YAAY,CACnB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC3B,MAAM,GAAG,SAAS,CAEpB;AAED,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,CAAA"}
@@ -36,19 +36,19 @@ Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.getAlchemyUrl = getAlchemyUrl;
37
37
  exports.getCustomUrl = getCustomUrl;
38
38
  const sharedConfigs = __importStar(require("@rhinestone/shared-configs"));
39
+ const ALCHEMY_API_KEY_PLACEHOLDER = '$' + '{ALCHEMY_API_KEY}';
39
40
  function getAlchemyUrl(chainId, apiKey) {
40
41
  const providers = sharedConfigs.providerRegistry ||
41
42
  sharedConfigs.ProviderRegistry;
42
43
  const urlTemplate = providers.Alchemy.url_template;
43
- const mapping = providers.Alchemy
44
- .chain_mapping;
44
+ const mapping = providers.Alchemy.chain_mapping;
45
45
  const chainParam = mapping[chainId];
46
46
  if (!chainParam) {
47
47
  throw new Error(`Unsupported chain: ${chainId}`);
48
48
  }
49
49
  return urlTemplate
50
50
  .replace('{{chain_param}}', chainParam)
51
- .split('${ALCHEMY_API_KEY}')
51
+ .split(ALCHEMY_API_KEY_PLACEHOLDER)
52
52
  .join(apiKey);
53
53
  }
54
54
  function getCustomUrl(chainId, urls) {
@@ -1 +1 @@
1
- {"version":3,"file":"safe.d.ts","sourceRoot":"","sources":["../../../accounts/safe.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,GAAG,EACR,KAAK,OAAO,EACZ,KAAK,KAAK,EAOV,KAAK,GAAG,EAER,KAAK,YAAY,EAKlB,MAAM,MAAM,CAAA;AACb,OAAO,EAIL,KAAK,YAAY,EACjB,KAAK,0BAA0B,EAEhC,MAAM,0BAA0B,CAAA;AAGjC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAM/C,OAAO,KAAK,EAAE,QAAQ,EAAE,uBAAuB,EAAe,MAAM,UAAU,CAAA;AAM9E,OAAO,EAAoC,KAAK,eAAe,EAAE,MAAM,SAAS,CAAA;AAoBhF,iBAAS,aAAa,CAAC,MAAM,EAAE,uBAAuB;;;;;;SAmGrD;AAED,iBAAS,eAAe,CAAC,MAAM,EAAE,uBAAuB;;;;;;EAgFvD;AAED,iBAAS,UAAU,CAAC,MAAM,EAAE,uBAAuB,iBAiBlD;AAED,iBAAS,eAAe,CAAC,MAAM,EAAE,uBAAuB,EAAE,KAAK,EAAE,KAAK;;;;;;EAarE;AAED,iBAAS,cAAc,CAAC,MAAM,EAAE,MAAM,iBA2BrC;AAED,iBAAe,aAAa,CAC1B,SAAS,EAAE,GAAG,EACd,SAAS,EAAE,eAAe,EAC1B,kBAAkB,GAAE,CAAC,SAAS,EAAE,GAAG,KAAK,GAA8B,0BAMvE;AAED,iBAAe,eAAe,CAC5B,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,QAAQ,EAChB,gBAAgB,EAAE,OAAO,EACzB,IAAI,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,iEAWlC;AAED,iBAAe,uBAAuB,CACpC,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,QAAQ,EACnB,gBAAgB,EAAE,OAAO,EACzB,IAAI,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,iEAalC;AA0GD,OAAO,EACL,eAAe,EACf,cAAc,EACd,UAAU,EACV,aAAa,EACb,aAAa,EACb,eAAe,EACf,eAAe,EACf,uBAAuB,GACxB,CAAA"}
1
+ {"version":3,"file":"safe.d.ts","sourceRoot":"","sources":["../../../accounts/safe.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,GAAG,EACR,KAAK,OAAO,EACZ,KAAK,KAAK,EAOV,KAAK,GAAG,EAER,KAAK,YAAY,EAKlB,MAAM,MAAM,CAAA;AACb,OAAO,EAIL,KAAK,YAAY,EACjB,KAAK,0BAA0B,EAEhC,MAAM,0BAA0B,CAAA;AAGjC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAM/C,OAAO,KAAK,EAAE,QAAQ,EAAE,uBAAuB,EAAe,MAAM,UAAU,CAAA;AAM9E,OAAO,EAAoC,KAAK,eAAe,EAAE,MAAM,SAAS,CAAA;AAoBhF,iBAAS,aAAa,CAAC,MAAM,EAAE,uBAAuB;;;;;;SAmGrD;AAED,iBAAS,eAAe,CAAC,MAAM,EAAE,uBAAuB;;;;;;EAgFvD;AAED,iBAAS,UAAU,CAAC,MAAM,EAAE,uBAAuB,iBAoBlD;AAED,iBAAS,eAAe,CAAC,MAAM,EAAE,uBAAuB,EAAE,KAAK,EAAE,KAAK;;;;;;EAarE;AAED,iBAAS,cAAc,CAAC,MAAM,EAAE,MAAM,iBA2BrC;AAED,iBAAe,aAAa,CAC1B,SAAS,EAAE,GAAG,EACd,SAAS,EAAE,eAAe,EAC1B,kBAAkB,GAAE,CAAC,SAAS,EAAE,GAAG,KAAK,GAA8B,0BAMvE;AAED,iBAAe,eAAe,CAC5B,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,QAAQ,EAChB,gBAAgB,EAAE,OAAO,EACzB,IAAI,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,iEAWlC;AAED,iBAAe,uBAAuB,CACpC,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,QAAQ,EACnB,gBAAgB,EAAE,OAAO,EACzB,IAAI,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,iEAalC;AA0GD,OAAO,EACL,eAAe,EACf,cAAc,EACd,UAAU,EACV,aAAa,EACb,aAAa,EACb,eAAe,EACf,eAAe,EACf,uBAAuB,GACxB,CAAA"}
@@ -186,6 +186,9 @@ function getV0DeployArgs(config) {
186
186
  function getAddress(config) {
187
187
  const deployArgs = getDeployArgs(config);
188
188
  if (!deployArgs) {
189
+ if (config.initData?.address) {
190
+ return config.initData.address;
191
+ }
189
192
  throw new Error('Cannot derive address: deploy args not available');
190
193
  }
191
194
  const { factory, implementation, salt } = deployArgs;
@@ -199,7 +202,7 @@ function getAddress(config) {
199
202
  return address;
200
203
  }
201
204
  function getEip712Domain(config, chain) {
202
- if (config.initData) {
205
+ if (config.initData && !('factory' in config.initData)) {
203
206
  throw new error_1.Eip712DomainNotAvailableError('Existing Safe-7579 accounts are not yet supported');
204
207
  }
205
208
  return {
@@ -1,12 +1,19 @@
1
- import type { WebAuthnP256 } from 'ox';
2
1
  import { type Account, type Address, type Chain, type Hex } from 'viem';
3
2
  import type { WebAuthnAccount } from 'viem/account-abstraction';
3
+ import { type ResolvedSessionSignerSet } from '../../modules/validators/smart-sessions';
4
4
  import type { OwnerSet, SignerSet } from '../../types';
5
5
  declare function convertOwnerSetToSignerSet(owners: OwnerSet): SignerSet;
6
+ type WebAuthnSignMetadata = {
7
+ authenticatorData: Hex;
8
+ challengeIndex?: number | undefined;
9
+ clientDataJSON: string;
10
+ typeIndex?: number | undefined;
11
+ userVerificationRequired?: boolean | undefined;
12
+ };
6
13
  type SigningFunctions<T> = {
7
14
  signEcdsa: (account: Account, params: T, updateV: boolean) => Promise<Hex>;
8
15
  signPasskey: (account: WebAuthnAccount, params: T) => Promise<{
9
- webauthn: WebAuthnP256.SignMetadata;
16
+ webauthn: WebAuthnSignMetadata;
10
17
  signature: Hex;
11
18
  }>;
12
19
  };
@@ -14,9 +21,7 @@ declare function signWithMultiFactorAuth<T>(signers: SignerSet & {
14
21
  type: 'owner';
15
22
  kind: 'multi-factor';
16
23
  }, chain: Chain, address: Address, params: T, isUserOpHash: boolean, signMain: (signers: SignerSet, chain: Chain, address: Address, params: T, isUserOpHash: boolean) => Promise<Hex>): Promise<Hex>;
17
- declare function signWithSession(signers: SignerSet & {
18
- type: 'experimental_session';
19
- }, chain: Chain, address: Address, hash: Hex, signMain: (signers: SignerSet, chain: Chain, address: Address, hash: Hex, isUserOpHash: boolean) => Promise<Hex>): Promise<Hex>;
24
+ declare function signWithSession(signers: ResolvedSessionSignerSet, chain: Chain, address: Address, hash: Hex, signMain: (signers: SignerSet, chain: Chain, address: Address, hash: Hex, isUserOpHash: boolean) => Promise<Hex>): Promise<Hex>;
20
25
  declare function signWithGuardians<T>(signers: SignerSet & {
21
26
  type: 'guardians';
22
27
  }, params: T, signingFunctions: SigningFunctions<T>): Promise<Hex>;
@@ -1 +1 @@
1
- {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../../accounts/signing/common.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,IAAI,CAAA;AACtC,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,OAAO,EACZ,KAAK,KAAK,EAMV,KAAK,GAAG,EAKT,MAAM,MAAM,CAAA;AACb,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAS/D,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAStD,iBAAS,0BAA0B,CAAC,MAAM,EAAE,QAAQ,GAAG,SAAS,CAkE/D;AAED,KAAK,gBAAgB,CAAC,CAAC,IAAI;IACzB,SAAS,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,GAAG,CAAC,CAAA;IAC1E,WAAW,EAAE,CACX,OAAO,EAAE,eAAe,EACxB,MAAM,EAAE,CAAC,KACN,OAAO,CAAC;QACX,QAAQ,EAAE,YAAY,CAAC,YAAY,CAAA;QACnC,SAAS,EAAE,GAAG,CAAA;KACf,CAAC,CAAA;CACH,CAAA;AAED,iBAAe,uBAAuB,CAAC,CAAC,EACtC,OAAO,EAAE,SAAS,GAAG;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,cAAc,CAAA;CAAE,EAC5D,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,CAAC,EACT,YAAY,EAAE,OAAO,EACrB,QAAQ,EAAE,CACR,OAAO,EAAE,SAAS,EAClB,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,CAAC,EACT,YAAY,EAAE,OAAO,KAClB,OAAO,CAAC,GAAG,CAAC,GAChB,OAAO,CAAC,GAAG,CAAC,CA0Cd;AAED,iBAAe,eAAe,CAC5B,OAAO,EAAE,SAAS,GAAG;IAAE,IAAI,EAAE,sBAAsB,CAAA;CAAE,EACrD,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,GAAG,EACT,QAAQ,EAAE,CACR,OAAO,EAAE,SAAS,EAClB,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,GAAG,EACT,YAAY,EAAE,OAAO,KAClB,OAAO,CAAC,GAAG,CAAC,GAChB,OAAO,CAAC,GAAG,CAAC,CAiBd;AAED,iBAAe,iBAAiB,CAAC,CAAC,EAChC,OAAO,EAAE,SAAS,GAAG;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,EAC1C,MAAM,EAAE,CAAC,EACT,gBAAgB,EAAE,gBAAgB,CAAC,CAAC,CAAC,GACpC,OAAO,CAAC,GAAG,CAAC,CAOd;AAED,iBAAe,cAAc,CAAC,CAAC,EAC7B,OAAO,EAAE,SAAS,GAAG;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,EACtC,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,CAAC,EACT,gBAAgB,EAAE,gBAAgB,CAAC,CAAC,CAAC,EACrC,YAAY,EAAE,OAAO,EACrB,QAAQ,EAAE,CACR,OAAO,EAAE,SAAS,EAClB,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,CAAC,EACT,YAAY,EAAE,OAAO,KAClB,OAAO,CAAC,GAAG,CAAC,GAChB,OAAO,CAAC,GAAG,CAAC,CAqFd;AAED,OAAO,EACL,0BAA0B,EAC1B,uBAAuB,EACvB,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,KAAK,gBAAgB,GACtB,CAAA"}
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../../accounts/signing/common.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,OAAO,EACZ,KAAK,KAAK,EAMV,KAAK,GAAG,EAKT,MAAM,MAAM,CAAA;AACb,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAQ/D,OAAO,EAEL,KAAK,wBAAwB,EAC9B,MAAM,yCAAyC,CAAA;AAChD,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAUtD,iBAAS,0BAA0B,CAAC,MAAM,EAAE,QAAQ,GAAG,SAAS,CAkE/D;AAED,KAAK,oBAAoB,GAAG;IAC1B,iBAAiB,EAAE,GAAG,CAAA;IACtB,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACnC,cAAc,EAAE,MAAM,CAAA;IACtB,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC9B,wBAAwB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;CAC/C,CAAA;AAED,KAAK,gBAAgB,CAAC,CAAC,IAAI;IACzB,SAAS,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,GAAG,CAAC,CAAA;IAC1E,WAAW,EAAE,CACX,OAAO,EAAE,eAAe,EACxB,MAAM,EAAE,CAAC,KACN,OAAO,CAAC;QACX,QAAQ,EAAE,oBAAoB,CAAA;QAC9B,SAAS,EAAE,GAAG,CAAA;KACf,CAAC,CAAA;CACH,CAAA;AAgDD,iBAAe,uBAAuB,CAAC,CAAC,EACtC,OAAO,EAAE,SAAS,GAAG;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,cAAc,CAAA;CAAE,EAC5D,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,CAAC,EACT,YAAY,EAAE,OAAO,EACrB,QAAQ,EAAE,CACR,OAAO,EAAE,SAAS,EAClB,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,CAAC,EACT,YAAY,EAAE,OAAO,KAClB,OAAO,CAAC,GAAG,CAAC,GAChB,OAAO,CAAC,GAAG,CAAC,CA6Cd;AAED,iBAAe,eAAe,CAC5B,OAAO,EAAE,wBAAwB,EACjC,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,GAAG,EACT,QAAQ,EAAE,CACR,OAAO,EAAE,SAAS,EAClB,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,GAAG,EACT,YAAY,EAAE,OAAO,KAClB,OAAO,CAAC,GAAG,CAAC,GAChB,OAAO,CAAC,GAAG,CAAC,CAiBd;AAED,iBAAe,iBAAiB,CAAC,CAAC,EAChC,OAAO,EAAE,SAAS,GAAG;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,EAC1C,MAAM,EAAE,CAAC,EACT,gBAAgB,EAAE,gBAAgB,CAAC,CAAC,CAAC,GACpC,OAAO,CAAC,GAAG,CAAC,CAOd;AAED,iBAAe,cAAc,CAAC,CAAC,EAC7B,OAAO,EAAE,SAAS,GAAG;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,EACtC,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,CAAC,EACT,gBAAgB,EAAE,gBAAgB,CAAC,CAAC,CAAC,EACrC,YAAY,EAAE,OAAO,EACrB,QAAQ,EAAE,CACR,OAAO,EAAE,SAAS,EAClB,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,CAAC,EACT,YAAY,EAAE,OAAO,KAClB,OAAO,CAAC,GAAG,CAAC,GAChB,OAAO,CAAC,GAAG,CAAC,CAqFd;AAED,OAAO,EACL,0BAA0B,EAC1B,uBAAuB,EACvB,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,KAAK,gBAAgB,GACtB,CAAA"}
@@ -9,6 +9,7 @@ const viem_1 = require("viem");
9
9
  const modules_1 = require("../../modules");
10
10
  const core_1 = require("../../modules/validators/core");
11
11
  const smart_sessions_1 = require("../../modules/validators/smart-sessions");
12
+ const mfa_webauthn_1 = require("./mfa-webauthn");
12
13
  const passkeys_1 = require("./passkeys");
13
14
  function convertOwnerSetToSignerSet(owners) {
14
15
  switch (owners.type) {
@@ -75,14 +76,27 @@ function convertOwnerSetToSignerSet(owners) {
75
76
  }
76
77
  }
77
78
  }
79
+ async function signMfaSubValidator(validator, chain, address, params, isUserOpHash, signMain) {
80
+ if (validator === null) {
81
+ return '0x';
82
+ }
83
+ if (validator.type === 'passkey') {
84
+ const signature = await signMain({
85
+ type: 'owner',
86
+ kind: 'passkey',
87
+ accounts: validator.accounts,
88
+ }, chain, address, params, isUserOpHash);
89
+ return (0, mfa_webauthn_1.encodeMfaWebAuthnSignatureForAccounts)({
90
+ passkeySignature: signature,
91
+ accounts: validator.accounts,
92
+ accountAddress: address,
93
+ });
94
+ }
95
+ const validatorSigners = convertOwnerSetToSignerSet(validator);
96
+ return signMain(validatorSigners, chain, address, params, isUserOpHash);
97
+ }
78
98
  async function signWithMultiFactorAuth(signers, chain, address, params, isUserOpHash, signMain) {
79
- const signatures = await Promise.all(signers.validators.map(async (validator) => {
80
- if (validator === null) {
81
- return '0x';
82
- }
83
- const validatorSigners = convertOwnerSetToSignerSet(validator);
84
- return signMain(validatorSigners, chain, address, params, isUserOpHash);
85
- }));
99
+ const signatures = await Promise.all(signers.validators.map((validator) => signMfaSubValidator(validator, chain, address, params, isUserOpHash, signMain)));
86
100
  const data = (0, viem_1.encodeAbiParameters)([
87
101
  {
88
102
  components: [
@@ -1,5 +1,7 @@
1
1
  import { type Address, type Chain, type Hex } from 'viem';
2
+ import type { ResolvedSessionSignerSet } from '../../modules/validators/smart-sessions';
2
3
  import type { SignerSet } from '../../types';
3
- declare function sign(signers: SignerSet, chain: Chain, address: Address, hash: Hex, isUserOpHash: boolean): Promise<Hex>;
4
+ type InternalSignerSet = SignerSet | ResolvedSessionSignerSet;
5
+ declare function sign(signers: InternalSignerSet, chain: Chain, address: Address, hash: Hex, isUserOpHash: boolean): Promise<Hex>;
4
6
  export { sign };
5
7
  //# sourceMappingURL=message.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../../../../accounts/signing/message.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,OAAO,EACZ,KAAK,KAAK,EAEV,KAAK,GAAG,EAGT,MAAM,MAAM,CAAA;AAEb,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAS5C,iBAAe,IAAI,CACjB,OAAO,EAAE,SAAS,EAClB,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,GAAG,EACT,YAAY,EAAE,OAAO,GACpB,OAAO,CAAC,GAAG,CAAC,CAyBd;AA4BD,OAAO,EAAE,IAAI,EAAE,CAAA"}
1
+ {"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../../../../accounts/signing/message.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,OAAO,EACZ,KAAK,KAAK,EAEV,KAAK,GAAG,EAGT,MAAM,MAAM,CAAA;AAEb,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,yCAAyC,CAAA;AACvF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAS5C,KAAK,iBAAiB,GAAG,SAAS,GAAG,wBAAwB,CAAA;AAE7D,iBAAe,IAAI,CACjB,OAAO,EAAE,iBAAiB,EAC1B,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,GAAG,EACT,YAAY,EAAE,OAAO,GACpB,OAAO,CAAC,GAAG,CAAC,CA+Bd;AA4BD,OAAO,EAAE,IAAI,EAAE,CAAA"}
@@ -0,0 +1,30 @@
1
+ import { type Address, type Hex } from 'viem';
2
+ import type { WebAuthnAccount } from 'viem/account-abstraction';
3
+ import { type WebAuthnSignature } from './passkeys';
4
+ type WebAuthnCredentialData = {
5
+ pubKeyX: bigint;
6
+ pubKeyY: bigint;
7
+ requireUV?: boolean;
8
+ };
9
+ type DecodedPasskeySignature = {
10
+ credIds: Hex[];
11
+ usePrecompile: boolean;
12
+ webAuthns: WebAuthnSignature[];
13
+ };
14
+ declare function generateMfaWebAuthnCredentialId(pubKeyX: bigint, pubKeyY: bigint): Hex;
15
+ declare function encodeMfaWebAuthnValidatorData(input: {
16
+ usePrecompile: boolean;
17
+ threshold: number;
18
+ credentials: WebAuthnCredentialData[];
19
+ }): Hex;
20
+ declare function decodePasskeySignature(signature: Hex): DecodedPasskeySignature;
21
+ declare function encodeMfaWebAuthnSignature(webAuthns: WebAuthnSignature[]): Hex;
22
+ declare function extractMfaWebAuthnSignatureFromPasskeySignature(signature: Hex): Hex;
23
+ declare function encodeMfaWebAuthnSignatureForAccounts(input: {
24
+ passkeySignature: Hex;
25
+ accounts: WebAuthnAccount[];
26
+ accountAddress: Address;
27
+ }): Hex;
28
+ export { decodePasskeySignature, encodeMfaWebAuthnSignature, encodeMfaWebAuthnSignatureForAccounts, encodeMfaWebAuthnValidatorData, extractMfaWebAuthnSignatureFromPasskeySignature, generateMfaWebAuthnCredentialId, };
29
+ export type { WebAuthnCredentialData };
30
+ //# sourceMappingURL=mfa-webauthn.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mfa-webauthn.d.ts","sourceRoot":"","sources":["../../../../accounts/signing/mfa-webauthn.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,OAAO,EAGZ,KAAK,GAAG,EAET,MAAM,MAAM,CAAA;AACb,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAC/D,OAAO,EAGL,KAAK,iBAAiB,EACvB,MAAM,YAAY,CAAA;AAEnB,KAAK,sBAAsB,GAAG;IAC5B,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB,CAAA;AAED,KAAK,uBAAuB,GAAG;IAC7B,OAAO,EAAE,GAAG,EAAE,CAAA;IACd,aAAa,EAAE,OAAO,CAAA;IACtB,SAAS,EAAE,iBAAiB,EAAE,CAAA;CAC/B,CAAA;AAwCD,iBAAS,+BAA+B,CACtC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACd,GAAG,CAcL;AAED,iBAAS,8BAA8B,CAAC,KAAK,EAAE;IAC7C,aAAa,EAAE,OAAO,CAAA;IACtB,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,sBAAsB,EAAE,CAAA;CACtC,GAAG,GAAG,CA4BN;AAED,iBAAS,sBAAsB,CAAC,SAAS,EAAE,GAAG,GAAG,uBAAuB,CAkBvE;AAED,iBAAS,0BAA0B,CAAC,SAAS,EAAE,iBAAiB,EAAE,GAAG,GAAG,CAEvE;AAED,iBAAS,+CAA+C,CAAC,SAAS,EAAE,GAAG,GAAG,GAAG,CAE5E;AAED,iBAAS,qCAAqC,CAAC,KAAK,EAAE;IACpD,gBAAgB,EAAE,GAAG,CAAA;IACrB,QAAQ,EAAE,eAAe,EAAE,CAAA;IAC3B,cAAc,EAAE,OAAO,CAAA;CACxB,GAAG,GAAG,CA8BN;AAED,OAAO,EACL,sBAAsB,EACtB,0BAA0B,EAC1B,qCAAqC,EACrC,8BAA8B,EAC9B,+CAA+C,EAC/C,+BAA+B,GAChC,CAAA;AACD,YAAY,EAAE,sBAAsB,EAAE,CAAA"}
@@ -0,0 +1,119 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.decodePasskeySignature = decodePasskeySignature;
4
+ exports.encodeMfaWebAuthnSignature = encodeMfaWebAuthnSignature;
5
+ exports.encodeMfaWebAuthnSignatureForAccounts = encodeMfaWebAuthnSignatureForAccounts;
6
+ exports.encodeMfaWebAuthnValidatorData = encodeMfaWebAuthnValidatorData;
7
+ exports.extractMfaWebAuthnSignatureFromPasskeySignature = extractMfaWebAuthnSignatureFromPasskeySignature;
8
+ exports.generateMfaWebAuthnCredentialId = generateMfaWebAuthnCredentialId;
9
+ const viem_1 = require("viem");
10
+ const passkeys_1 = require("./passkeys");
11
+ const webAuthnAuthAbiParameter = {
12
+ type: 'tuple[]',
13
+ name: 'webAuthns',
14
+ components: [
15
+ { type: 'bytes', name: 'authenticatorData' },
16
+ { type: 'string', name: 'clientDataJSON' },
17
+ { type: 'uint256', name: 'challengeIndex' },
18
+ { type: 'uint256', name: 'typeIndex' },
19
+ { type: 'uint256', name: 'r' },
20
+ { type: 'uint256', name: 's' },
21
+ ],
22
+ };
23
+ const passkeySignatureAbiParameters = [
24
+ { type: 'bytes32[]', name: 'credIds' },
25
+ { type: 'bool', name: 'usePrecompile' },
26
+ webAuthnAuthAbiParameter,
27
+ ];
28
+ const webAuthnMfaContextAbiParameter = {
29
+ type: 'tuple',
30
+ name: 'context',
31
+ components: [
32
+ { type: 'bool', name: 'usePrecompile' },
33
+ { type: 'uint256', name: 'threshold' },
34
+ { type: 'bytes32[]', name: 'credentialIds' },
35
+ {
36
+ type: 'tuple[]',
37
+ name: 'credentialData',
38
+ components: [
39
+ { type: 'uint256', name: 'pubKeyX' },
40
+ { type: 'uint256', name: 'pubKeyY' },
41
+ { type: 'bool', name: 'requireUV' },
42
+ ],
43
+ },
44
+ ],
45
+ };
46
+ function generateMfaWebAuthnCredentialId(pubKeyX, pubKeyY) {
47
+ return (0, viem_1.keccak256)((0, viem_1.encodeAbiParameters)([
48
+ {
49
+ type: 'uint256',
50
+ },
51
+ {
52
+ type: 'uint256',
53
+ },
54
+ ], [pubKeyX, pubKeyY]));
55
+ }
56
+ function encodeMfaWebAuthnValidatorData(input) {
57
+ const credentials = input.credentials
58
+ .map((credential) => ({
59
+ credentialId: generateMfaWebAuthnCredentialId(credential.pubKeyX, credential.pubKeyY),
60
+ credentialData: {
61
+ pubKeyX: credential.pubKeyX,
62
+ pubKeyY: credential.pubKeyY,
63
+ requireUV: credential.requireUV ?? false,
64
+ },
65
+ }))
66
+ .sort((left, right) => left.credentialId.localeCompare(right.credentialId));
67
+ return (0, viem_1.encodeAbiParameters)([webAuthnMfaContextAbiParameter], [
68
+ {
69
+ usePrecompile: input.usePrecompile,
70
+ threshold: BigInt(input.threshold),
71
+ credentialIds: credentials.map((credential) => credential.credentialId),
72
+ credentialData: credentials.map((credential) => credential.credentialData),
73
+ },
74
+ ]);
75
+ }
76
+ function decodePasskeySignature(signature) {
77
+ const [credIds, usePrecompile, webAuthns] = (0, viem_1.decodeAbiParameters)(passkeySignatureAbiParameters, signature);
78
+ return {
79
+ credIds: [...credIds],
80
+ usePrecompile,
81
+ webAuthns: webAuthns.map((webAuthn) => ({
82
+ authenticatorData: webAuthn.authenticatorData,
83
+ clientDataJSON: webAuthn.clientDataJSON,
84
+ challengeIndex: BigInt(webAuthn.challengeIndex),
85
+ typeIndex: BigInt(webAuthn.typeIndex),
86
+ r: BigInt(webAuthn.r),
87
+ s: BigInt(webAuthn.s),
88
+ })),
89
+ };
90
+ }
91
+ function encodeMfaWebAuthnSignature(webAuthns) {
92
+ return (0, viem_1.encodeAbiParameters)([webAuthnAuthAbiParameter], [webAuthns]);
93
+ }
94
+ function extractMfaWebAuthnSignatureFromPasskeySignature(signature) {
95
+ return encodeMfaWebAuthnSignature(decodePasskeySignature(signature).webAuthns);
96
+ }
97
+ function encodeMfaWebAuthnSignatureForAccounts(input) {
98
+ const decoded = decodePasskeySignature(input.passkeySignature);
99
+ const authByStatefulCredentialId = new Map(decoded.credIds.map((credId, index) => [
100
+ credId.toLowerCase(),
101
+ decoded.webAuthns[index],
102
+ ]));
103
+ const webAuthns = input.accounts
104
+ .map((account) => {
105
+ const { x, y } = (0, passkeys_1.parsePublicKey)(account.publicKey);
106
+ const statefulCredentialId = (0, passkeys_1.generateCredentialId)(x, y, input.accountAddress).toLowerCase();
107
+ const webAuthn = authByStatefulCredentialId.get(statefulCredentialId);
108
+ if (!webAuthn) {
109
+ throw new Error('Missing WebAuthn signature for MFA credential');
110
+ }
111
+ return {
112
+ credentialId: generateMfaWebAuthnCredentialId(x, y),
113
+ webAuthn,
114
+ };
115
+ })
116
+ .sort((left, right) => left.credentialId.localeCompare(right.credentialId))
117
+ .map(({ webAuthn }) => webAuthn);
118
+ return encodeMfaWebAuthnSignature(webAuthns);
119
+ }
@@ -108,7 +108,7 @@ function getK1InitData(config, moduleSetup) {
108
108
  })),
109
109
  {
110
110
  module: viem_1.zeroAddress,
111
- initData: '0x',
111
+ initData: viem_1.zeroHash,
112
112
  },
113
113
  moduleSetup.fallbacks.map((f) => ({
114
114
  module: f.address,
@@ -27,7 +27,7 @@ interface GetAccountNonceParams {
27
27
  }
28
28
  declare function encode7579Calls<callType extends CallType>({ mode, callData, }: EncodeCallDataParams<callType>): Hex;
29
29
  declare function getAccountNonce(client: Client, args: GetAccountNonceParams): Promise<bigint>;
30
- declare function getBundlerClient(config: RhinestoneConfig, client: Client): import("viem/account-abstraction").BundlerClient<import("viem").HttpTransport<undefined, false>, undefined, undefined, Client, undefined>;
30
+ declare function getBundlerClient(config: RhinestoneConfig, client: Client): import("viem/_types/account-abstraction").BundlerClient<import("viem").HttpTransport<undefined, false>, undefined, undefined, Client, undefined>;
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,MAAM,EAAE,GAAG,EAAE,MAAM,MAAM,CAAA;AAgBhD,OAAO,KAAK,EAAkC,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAChF,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,gBAAgB,EAAE,MAAM,EAAE,MAAM,6IAuDjE;AAyBD,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,EAAkC,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAChF,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,gBAAgB,EAAE,MAAM,EAAE,MAAM,oJAuDjE;AAyBD,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,gBAAgB,EAAE,eAAe,EAAE,CAAA;AAC9E,YAAY,EAAE,eAAe,EAAE,CAAA"}
@@ -1,5 +1,9 @@
1
- import { type Hex } from 'viem';
1
+ import { type Chain, type Hex } from 'viem';
2
2
  import type { CalldataInput, LazyCallInput, OwnableValidatorConfig, WebauthnValidatorConfig } from '../types';
3
+ type MfaSubValidatorDataOptions = {
4
+ chain?: Chain;
5
+ useWebAuthnPrecompile?: boolean;
6
+ };
3
7
  /**
4
8
  * Enable multi-factor authentication
5
9
  * @param validators List of validators to use
@@ -25,7 +29,7 @@ declare function disable(): LazyCallInput;
25
29
  * @param validator Validator module
26
30
  * @returns Call to set the sub-validator
27
31
  */
28
- declare function setSubValidator(id: Hex | number, validator: OwnableValidatorConfig | WebauthnValidatorConfig): CalldataInput;
32
+ declare function setSubValidator(id: Hex | number, validator: OwnableValidatorConfig | WebauthnValidatorConfig, options?: MfaSubValidatorDataOptions): CalldataInput;
29
33
  /**
30
34
  * Remove a sub-validator (multi-factor)
31
35
  * @param id Validator ID
@@ -1 +1 @@
1
- {"version":3,"file":"mfa.d.ts","sourceRoot":"","sources":["../../../actions/mfa.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,KAAK,GAAG,EAAiB,MAAM,MAAM,CAAA;AAUlE,OAAO,KAAK,EACV,aAAa,EACb,aAAa,EACb,sBAAsB,EACtB,uBAAuB,EACxB,MAAM,UAAU,CAAA;AAEjB;;;;;GAKG;AACH,iBAAS,MAAM,CACb,UAAU,EAAE,CAAC,sBAAsB,GAAG,uBAAuB,GAAG,IAAI,CAAC,EAAE,EACvE,SAAS,SAAI,GACZ,aAAa,CAOf;AAED;;;;GAIG;AACH,iBAAS,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,aAAa,CAkB5D;AAED;;;;GAIG;AACH,iBAAS,OAAO,IAAI,aAAa,CAOhC;AAED;;;;;GAKG;AACH,iBAAS,eAAe,CACtB,EAAE,EAAE,GAAG,GAAG,MAAM,EAChB,SAAS,EAAE,sBAAsB,GAAG,uBAAuB,GAC1D,aAAa,CA+Bf;AAED;;;;;GAKG;AACH,iBAAS,kBAAkB,CACzB,EAAE,EAAE,GAAG,GAAG,MAAM,EAChB,SAAS,EAAE,sBAAsB,GAAG,uBAAuB,GAC1D,aAAa,CA2Bf;AAED,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,CAAA"}
1
+ {"version":3,"file":"mfa.d.ts","sourceRoot":"","sources":["../../../actions/mfa.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,KAAK,EAAsB,KAAK,GAAG,EAAiB,MAAM,MAAM,CAAA;AAY9E,OAAO,KAAK,EACV,aAAa,EACb,aAAa,EACb,sBAAsB,EACtB,uBAAuB,EACxB,MAAM,UAAU,CAAA;AAEjB,KAAK,0BAA0B,GAAG;IAChC,KAAK,CAAC,EAAE,KAAK,CAAA;IACb,qBAAqB,CAAC,EAAE,OAAO,CAAA;CAChC,CAAA;AASD;;;;;GAKG;AACH,iBAAS,MAAM,CACb,UAAU,EAAE,CAAC,sBAAsB,GAAG,uBAAuB,GAAG,IAAI,CAAC,EAAE,EACvE,SAAS,SAAI,GACZ,aAAa,CASf;AAED;;;;GAIG;AACH,iBAAS,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,aAAa,CAkB5D;AAED;;;;GAIG;AACH,iBAAS,OAAO,IAAI,aAAa,CAOhC;AAED;;;;;GAKG;AACH,iBAAS,eAAe,CACtB,EAAE,EAAE,GAAG,GAAG,MAAM,EAChB,SAAS,EAAE,sBAAsB,GAAG,uBAAuB,EAC3D,OAAO,CAAC,EAAE,0BAA0B,GACnC,aAAa,CAkCf;AAED;;;;;GAKG;AACH,iBAAS,kBAAkB,CACzB,EAAE,EAAE,GAAG,GAAG,MAAM,EAChB,SAAS,EAAE,sBAAsB,GAAG,uBAAuB,GAC1D,aAAa,CA2Bf;AAED,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,CAAA"}
@@ -7,7 +7,12 @@ exports.setSubValidator = setSubValidator;
7
7
  exports.removeSubValidator = removeSubValidator;
8
8
  const viem_1 = require("viem");
9
9
  const accounts_1 = require("../accounts");
10
+ const modules_1 = require("../modules");
10
11
  const core_1 = require("../modules/validators/core");
12
+ function resolveUseWebAuthnPrecompile(options) {
13
+ return (options?.useWebAuthnPrecompile ??
14
+ (options?.chain ? (0, modules_1.isRip7212SupportedNetwork)(options.chain) : false));
15
+ }
11
16
  /**
12
17
  * Enable multi-factor authentication
13
18
  * @param validators List of validators to use
@@ -15,9 +20,11 @@ const core_1 = require("../modules/validators/core");
15
20
  * @returns Calls to enable multi-factor authentication
16
21
  */
17
22
  function enable(validators, threshold = 1) {
18
- const module = (0, core_1.getMultiFactorValidator)(threshold, validators);
19
23
  return {
20
- async resolve({ config }) {
24
+ async resolve({ config, chain }) {
25
+ const module = (0, core_1.getMultiFactorValidator)(threshold, validators, {
26
+ useWebAuthnPrecompile: (0, modules_1.isRip7212SupportedNetwork)(chain),
27
+ });
21
28
  return (0, accounts_1.getModuleInstallationCalls)(config, module);
22
29
  },
23
30
  };
@@ -65,9 +72,12 @@ function disable() {
65
72
  * @param validator Validator module
66
73
  * @returns Call to set the sub-validator
67
74
  */
68
- function setSubValidator(id, validator) {
75
+ function setSubValidator(id, validator, options) {
69
76
  const validatorId = (0, viem_1.padHex)((0, viem_1.toHex)(id), { size: 12 });
70
77
  const validatorModule = (0, core_1.getValidator)(validator);
78
+ const validatorData = (0, core_1.getMultiFactorSubValidatorData)(validator, {
79
+ useWebAuthnPrecompile: resolveUseWebAuthnPrecompile(options),
80
+ });
71
81
  return {
72
82
  to: core_1.MULTI_FACTOR_VALIDATOR_ADDRESS,
73
83
  value: 0n,
@@ -93,7 +103,7 @@ function setSubValidator(id, validator) {
93
103
  },
94
104
  ],
95
105
  functionName: 'setValidator',
96
- args: [validatorModule.address, validatorId, validatorModule.initData],
106
+ args: [validatorModule.address, validatorId, validatorData],
97
107
  }),
98
108
  };
99
109
  }
@@ -0,0 +1,7 @@
1
+ import type { RhinestoneConfig, RhinestoneSDKConfig } from '../types';
2
+ export interface AuthProvider {
3
+ getHeaders(): Promise<Record<string, string>>;
4
+ getSubmitHeaders(intentInput: unknown, isSponsored: boolean): Promise<Record<string, string>>;
5
+ }
6
+ export declare function createAuthProvider(config: RhinestoneSDKConfig | RhinestoneConfig): AuthProvider;
7
+ //# sourceMappingURL=provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../auth/provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,gBAAgB,EAChB,mBAAmB,EACpB,MAAM,UAAU,CAAA;AAEjB,MAAM,WAAW,YAAY;IAC3B,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;IAC7C,gBAAgB,CACd,WAAW,EAAE,OAAO,EACpB,WAAW,EAAE,OAAO,GACnB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;CACnC;AAED,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,mBAAmB,GAAG,gBAAgB,GAC7C,YAAY,CAqCd"}