@charterlabs/rhinestone-sdk 0.0.8 → 0.1.0

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 (54) hide show
  1. package/dist/accounts/index.d.ts +5 -3
  2. package/dist/accounts/index.d.ts.map +1 -1
  3. package/dist/accounts/index.js +25 -22
  4. package/dist/accounts/kernel.d.ts +2 -1
  5. package/dist/accounts/kernel.d.ts.map +1 -1
  6. package/dist/accounts/kernel.js +7 -1
  7. package/dist/accounts/nexus.d.ts +2 -1
  8. package/dist/accounts/nexus.d.ts.map +1 -1
  9. package/dist/accounts/nexus.js +7 -1
  10. package/dist/accounts/safe.d.ts +2 -1
  11. package/dist/accounts/safe.d.ts.map +1 -1
  12. package/dist/accounts/safe.js +7 -1
  13. package/dist/accounts/utils.d.ts.map +1 -1
  14. package/dist/accounts/utils.js +15 -2
  15. package/dist/actions/index.d.ts +3 -1
  16. package/dist/actions/index.d.ts.map +1 -1
  17. package/dist/actions/index.js +5 -0
  18. package/dist/actions/registry.d.ts +7 -0
  19. package/dist/actions/registry.d.ts.map +1 -0
  20. package/dist/actions/registry.js +7 -0
  21. package/dist/actions/smart-session.d.ts +5 -0
  22. package/dist/actions/smart-session.d.ts.map +1 -0
  23. package/dist/actions/smart-session.js +7 -0
  24. package/dist/execution/index.d.ts +2 -2
  25. package/dist/execution/index.d.ts.map +1 -1
  26. package/dist/execution/index.js +4 -1
  27. package/dist/execution/smart-session.d.ts +11 -1
  28. package/dist/execution/smart-session.d.ts.map +1 -1
  29. package/dist/execution/smart-session.js +264 -0
  30. package/dist/execution/utils.d.ts +3 -3
  31. package/dist/execution/utils.d.ts.map +1 -1
  32. package/dist/execution/utils.js +81 -7
  33. package/dist/index.d.ts +11 -3
  34. package/dist/index.d.ts.map +1 -1
  35. package/dist/index.js +25 -1
  36. package/dist/modules/index.d.ts +10 -3
  37. package/dist/modules/index.d.ts.map +1 -1
  38. package/dist/modules/index.js +38 -32
  39. package/dist/modules/read.d.ts +10 -0
  40. package/dist/modules/read.d.ts.map +1 -0
  41. package/dist/modules/read.js +152 -0
  42. package/dist/modules/validators/core.d.ts +2 -1
  43. package/dist/modules/validators/core.d.ts.map +1 -1
  44. package/dist/modules/validators/core.js +2 -1
  45. package/dist/modules/validators/smart-sessions.d.ts +49 -5
  46. package/dist/modules/validators/smart-sessions.d.ts.map +1 -1
  47. package/dist/modules/validators/smart-sessions.js +176 -4
  48. package/dist/orchestrator/client.js +1 -1
  49. package/dist/orchestrator/registry.d.ts +2 -2
  50. package/dist/orchestrator/registry.d.ts.map +1 -1
  51. package/dist/orchestrator/registry.js +4 -2
  52. package/dist/types.d.ts +12 -2
  53. package/dist/types.d.ts.map +1 -1
  54. package/package.json +1 -1
@@ -3,12 +3,276 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.enableSmartSession = enableSmartSession;
4
4
  exports.hashErc7739 = hashErc7739;
5
5
  exports.getSessionSignature = getSessionSignature;
6
+ exports.getSessionDetails = getSessionDetails;
7
+ exports.getMultichainDigest = getMultichainDigest;
6
8
  const viem_1 = require("viem");
7
9
  const accounts_1 = require("../accounts");
8
10
  const utils_1 = require("../accounts/utils");
9
11
  const modules_1 = require("../modules");
10
12
  const validators_1 = require("../modules/validators");
13
+ const smart_sessions_1 = require("../modules/validators/smart-sessions");
11
14
  const utils_2 = require("../orchestrator/utils");
15
+ async function getSessionDetails(config, sessions, sessionIndex, signature) {
16
+ const account = (0, accounts_1.getAccountProvider)(config);
17
+ const accountAddress = (0, accounts_1.getAddress)(config);
18
+ const sessionDetails = await getEnableSessionDetails(account.type, sessions, sessionIndex, accountAddress);
19
+ const chain = sessions[sessionIndex].chain;
20
+ if (!chain) {
21
+ throw new Error('Session chain is required');
22
+ }
23
+ const validator = {
24
+ address: sessionDetails.enableSessionData.validator,
25
+ isRoot: true,
26
+ };
27
+ sessionDetails.enableSessionData.signature =
28
+ signature ??
29
+ (await (0, accounts_1.getPackedSignature)(config, config.owners, chain, validator, sessionDetails.permissionEnableHash));
30
+ return sessionDetails;
31
+ }
32
+ async function getEnableSessionDetails(accountType, sessions, sessionIndex, accountAddress) {
33
+ const chainDigests = [];
34
+ const chainSessions = [];
35
+ for (const session of sessions) {
36
+ const permissionId = (0, validators_1.getPermissionId)(session);
37
+ const publicClient = (0, viem_1.createPublicClient)({
38
+ chain: session.chain,
39
+ transport: (0, viem_1.http)(),
40
+ });
41
+ const sessionChain = session.chain;
42
+ if (!sessionChain) {
43
+ throw new Error('Session chain is required');
44
+ }
45
+ const sessionNonce = await getSessionNonce(publicClient, accountAddress, permissionId);
46
+ const sessionData = await (0, smart_sessions_1.getSessionData)(sessionChain, session);
47
+ const sessionDigest = await getSessionDigest(publicClient, accountAddress, sessionData, permissionId, validators_1.SMART_SESSION_MODE_ENABLE);
48
+ chainDigests.push({
49
+ chainId: BigInt(sessionChain.id),
50
+ sessionDigest,
51
+ });
52
+ chainSessions.push({
53
+ chainId: BigInt(sessionChain.id),
54
+ session: {
55
+ permissions: {
56
+ permitGenericPolicy: false,
57
+ permitAdminAccess: false,
58
+ ignoreSecurityAttestations: false,
59
+ permitERC4337Paymaster: sessionData.permitERC4337Paymaster,
60
+ userOpPolicies: sessionData.userOpPolicies,
61
+ erc7739Policies: sessionData.erc7739Policies,
62
+ actions: sessionData.actions,
63
+ },
64
+ salt: sessionData.salt,
65
+ sessionValidator: sessionData.sessionValidator,
66
+ sessionValidatorInitData: sessionData.sessionValidatorInitData,
67
+ account: accountAddress,
68
+ smartSession: validators_1.SMART_SESSIONS_VALIDATOR_ADDRESS,
69
+ nonce: sessionNonce,
70
+ },
71
+ });
72
+ }
73
+ const permissionEnableHash = getMultichainDigest(chainDigests);
74
+ const sessionToEnable = sessions[sessionIndex || 0];
75
+ const sessionChain = sessionToEnable.chain;
76
+ if (!sessionChain) {
77
+ throw new Error('Session chain is required');
78
+ }
79
+ const sessionData = await (0, smart_sessions_1.getSessionData)(sessionChain, sessionToEnable);
80
+ return {
81
+ permissionEnableHash,
82
+ mode: validators_1.SMART_SESSION_MODE_ENABLE,
83
+ hashesAndChainIds: chainDigests,
84
+ enableSessionData: {
85
+ permissionId: (0, validators_1.getPermissionId)(sessionToEnable),
86
+ validator: sessionData.sessionValidator,
87
+ accountType,
88
+ chainDigestIndex: sessionIndex,
89
+ hashesAndChainIds: chainDigests,
90
+ sessionToEnable: sessionData,
91
+ signature: '0x',
92
+ },
93
+ };
94
+ }
95
+ function getMultichainDigest(chainDigests) {
96
+ function hashChainDigestMimicRPC(chainDigest) {
97
+ const CHAIN_SESSION_TYPEHASH = '0x1ea7e4bc398fa0ccd68d92b5d8931a3fd93eebe1cf0391b4ba28935801af7c80';
98
+ return (0, viem_1.keccak256)((0, viem_1.encodePacked)(['bytes32', 'uint256', 'bytes32'], [
99
+ CHAIN_SESSION_TYPEHASH,
100
+ chainDigest.chainId,
101
+ chainDigest.sessionDigest,
102
+ ]));
103
+ }
104
+ function hashChainDigestArray(chainDigests) {
105
+ const hashes = chainDigests.map((digest) => hashChainDigestMimicRPC(digest));
106
+ return (0, viem_1.keccak256)((0, viem_1.concat)(hashes));
107
+ }
108
+ const MULTICHAIN_SESSION_TYPEHASH = '0x0c9d02fb89a1da34d66ea2088dc9ee6a58efee71cef6f1bb849ed74fc6003d98';
109
+ const MULTICHAIN_DOMAIN_SEPARATOR = '0x057501e891776d1482927e5f094ae44049a4d893ba2d7b334dd7db8d38d3a0e1';
110
+ const structHash = (0, viem_1.keccak256)((0, viem_1.encodePacked)(['bytes32', 'bytes32'], [MULTICHAIN_SESSION_TYPEHASH, hashChainDigestArray(chainDigests)]));
111
+ return (0, viem_1.keccak256)((0, viem_1.concat)(['0x1901', MULTICHAIN_DOMAIN_SEPARATOR, structHash]));
112
+ }
113
+ async function getSessionNonce(client, account, permissionId) {
114
+ return (await client.readContract({
115
+ address: validators_1.SMART_SESSIONS_VALIDATOR_ADDRESS,
116
+ abi: [
117
+ {
118
+ type: 'function',
119
+ name: 'getNonce',
120
+ inputs: [
121
+ {
122
+ name: 'permissionId',
123
+ type: 'bytes32',
124
+ internalType: 'PermissionId',
125
+ },
126
+ { name: 'account', type: 'address', internalType: 'address' },
127
+ ],
128
+ outputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],
129
+ stateMutability: 'view',
130
+ },
131
+ ],
132
+ functionName: 'getNonce',
133
+ args: [permissionId, account],
134
+ }));
135
+ }
136
+ async function getSessionDigest(client, account, session, permissionId, mode) {
137
+ return (await client.readContract({
138
+ address: validators_1.SMART_SESSIONS_VALIDATOR_ADDRESS,
139
+ abi: [
140
+ {
141
+ type: 'function',
142
+ name: 'getSessionDigest',
143
+ inputs: [
144
+ {
145
+ name: 'permissionId',
146
+ type: 'bytes32',
147
+ internalType: 'PermissionId',
148
+ },
149
+ { name: 'account', type: 'address', internalType: 'address' },
150
+ {
151
+ name: 'data',
152
+ type: 'tuple',
153
+ internalType: 'struct Session',
154
+ components: [
155
+ {
156
+ name: 'sessionValidator',
157
+ type: 'address',
158
+ internalType: 'contract ISessionValidator',
159
+ },
160
+ {
161
+ name: 'sessionValidatorInitData',
162
+ type: 'bytes',
163
+ internalType: 'bytes',
164
+ },
165
+ { name: 'salt', type: 'bytes32', internalType: 'bytes32' },
166
+ {
167
+ name: 'userOpPolicies',
168
+ type: 'tuple[]',
169
+ internalType: 'struct PolicyData[]',
170
+ components: [
171
+ {
172
+ name: 'policy',
173
+ type: 'address',
174
+ internalType: 'address',
175
+ },
176
+ { name: 'initData', type: 'bytes', internalType: 'bytes' },
177
+ ],
178
+ },
179
+ {
180
+ name: 'erc7739Policies',
181
+ type: 'tuple',
182
+ internalType: 'struct ERC7739Data',
183
+ components: [
184
+ {
185
+ name: 'allowedERC7739Content',
186
+ type: 'tuple[]',
187
+ internalType: 'struct ERC7739Context[]',
188
+ components: [
189
+ {
190
+ name: 'appDomainSeparator',
191
+ type: 'bytes32',
192
+ internalType: 'bytes32',
193
+ },
194
+ {
195
+ name: 'contentName',
196
+ type: 'string[]',
197
+ internalType: 'string[]',
198
+ },
199
+ ],
200
+ },
201
+ {
202
+ name: 'erc1271Policies',
203
+ type: 'tuple[]',
204
+ internalType: 'struct PolicyData[]',
205
+ components: [
206
+ {
207
+ name: 'policy',
208
+ type: 'address',
209
+ internalType: 'address',
210
+ },
211
+ {
212
+ name: 'initData',
213
+ type: 'bytes',
214
+ internalType: 'bytes',
215
+ },
216
+ ],
217
+ },
218
+ ],
219
+ },
220
+ {
221
+ name: 'actions',
222
+ type: 'tuple[]',
223
+ internalType: 'struct ActionData[]',
224
+ components: [
225
+ {
226
+ name: 'actionTargetSelector',
227
+ type: 'bytes4',
228
+ internalType: 'bytes4',
229
+ },
230
+ {
231
+ name: 'actionTarget',
232
+ type: 'address',
233
+ internalType: 'address',
234
+ },
235
+ {
236
+ name: 'actionPolicies',
237
+ type: 'tuple[]',
238
+ internalType: 'struct PolicyData[]',
239
+ components: [
240
+ {
241
+ name: 'policy',
242
+ type: 'address',
243
+ internalType: 'address',
244
+ },
245
+ {
246
+ name: 'initData',
247
+ type: 'bytes',
248
+ internalType: 'bytes',
249
+ },
250
+ ],
251
+ },
252
+ ],
253
+ },
254
+ {
255
+ name: 'permitERC4337Paymaster',
256
+ type: 'bool',
257
+ internalType: 'bool',
258
+ },
259
+ ],
260
+ },
261
+ {
262
+ name: 'mode',
263
+ type: 'uint8',
264
+ internalType: 'enum SmartSessionMode',
265
+ },
266
+ ],
267
+ outputs: [{ name: '', type: 'bytes32', internalType: 'bytes32' }],
268
+ stateMutability: 'view',
269
+ },
270
+ ],
271
+ functionName: 'getSessionDigest',
272
+ // @ts-ignore Viem fails to infer the type of "session"
273
+ args: [permissionId, account, session, Number(mode)],
274
+ }));
275
+ }
12
276
  async function enableSmartSession(chain, config, session) {
13
277
  const publicClient = (0, viem_1.createPublicClient)({
14
278
  chain,
@@ -15,7 +15,7 @@ type TransactionResult = {
15
15
  };
16
16
  interface BundleData {
17
17
  hash: Hex;
18
- orderPath: OrderPath;
18
+ orderPath?: OrderPath;
19
19
  userOp?: UserOperation;
20
20
  }
21
21
  interface PreparedTransactionData {
@@ -30,8 +30,8 @@ declare function signTransaction(config: RhinestoneAccountConfig, preparedTransa
30
30
  declare function submitTransaction(config: RhinestoneAccountConfig, signedTransaction: SignedTransactionData): Promise<TransactionResult>;
31
31
  declare function prepareTransactionAsIntent(config: RhinestoneAccountConfig, sourceChain: Chain | undefined, targetChain: Chain, calls: Call[], gasLimit: bigint | undefined, tokenRequests: TokenRequest[], accountAddress: Address): Promise<BundleData>;
32
32
  declare function signIntent(config: RhinestoneAccountConfig, sourceChain: Chain | undefined, targetChain: Chain, bundleHash: Hex, signers?: SignerSet): Promise<`0x${string}`>;
33
- declare function signUserOp(config: RhinestoneAccountConfig, sourceChain: Chain, targetChain: Chain, accountAddress: Address, signers: SignerSet | undefined, userOp: UserOperation, orderPath: OrderPath): Promise<`0x${string}`>;
34
- declare function submitUserOp(config: RhinestoneAccountConfig, sourceChain: Chain, targetChain: Chain, userOp: UserOperation, orderPath: OrderPath, signature: Hex): Promise<TransactionResult>;
33
+ declare function signUserOp(config: RhinestoneAccountConfig, sourceChain: Chain, targetChain: Chain, accountAddress: Address, signers: SignerSet | undefined, userOp: UserOperation, orderPath?: OrderPath): Promise<`0x${string}`>;
34
+ declare function submitUserOp(config: RhinestoneAccountConfig, sourceChain: Chain, targetChain: Chain, userOp: UserOperation, signature: Hex, orderPath?: OrderPath): Promise<TransactionResult>;
35
35
  declare function getOrchestratorByChain(chainId: number, apiKey: string): import("../orchestrator").Orchestrator;
36
36
  declare function getUserOpOrderPath(sourceChain: Chain, targetChain: Chain, tokenRequests: TokenRequest[], accountAddress: Address, gasLimit: bigint | undefined, rhinestoneApiKey: string): Promise<OrderPath>;
37
37
  declare function getUserOp(config: RhinestoneAccountConfig, targetChain: Chain, signers: SignerSet | undefined, orderPath: OrderPath, calls: Call[], tokenRequests: TokenRequest[], accountAddress: Address): Promise<{
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../execution/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../execution/utils.ts"],"names":[],"mappings":"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"}
@@ -80,10 +80,14 @@ async function submitTransaction(config, signedTransaction) {
80
80
  throw new Error(`User operation is required when using smart sessions`);
81
81
  }
82
82
  // Smart sessions require a UserOp flow
83
- return await submitUserOp(config, sourceChain, targetChain, userOp, bundleData.orderPath, signature);
83
+ return await submitUserOp(config, sourceChain, targetChain, userOp, signature, bundleData.orderPath);
84
84
  }
85
85
  else {
86
- return await submitIntent(config, sourceChain, targetChain, bundleData.orderPath, signature);
86
+ const orderPath = bundleData.orderPath;
87
+ if (!orderPath) {
88
+ throw new Error('Order path is required when using intents');
89
+ }
90
+ return await submitIntent(config, sourceChain, targetChain, orderPath, signature);
87
91
  }
88
92
  }
89
93
  function getTransactionParams(transaction) {
@@ -109,7 +113,29 @@ function getTransactionParams(transaction) {
109
113
  }
110
114
  async function prepareTransactionAsUserOp(config, sourceChain, targetChain, calls, gasLimit, tokenRequests, accountAddress, signers) {
111
115
  if (sourceChain.id === targetChain.id) {
112
- throw new Error('Source and target chains cannot be the same when using user operations');
116
+ const chain = sourceChain;
117
+ const publicClient = (0, viem_1.createPublicClient)({
118
+ chain,
119
+ transport: (0, viem_1.http)(),
120
+ });
121
+ const validatorAccount = await getValidatorAccount(config, signers, publicClient, chain);
122
+ if (!validatorAccount) {
123
+ throw new Error('No validator account found');
124
+ }
125
+ const bundlerClient = (0, utils_1.getBundlerClient)(config, publicClient);
126
+ const userOp = await bundlerClient.prepareUserOperation({
127
+ account: validatorAccount,
128
+ calls,
129
+ });
130
+ return {
131
+ userOp,
132
+ hash: (0, account_abstraction_1.getUserOperationHash)({
133
+ userOperation: userOp,
134
+ chainId: chain.id,
135
+ entryPointAddress: account_abstraction_1.entryPoint07Address,
136
+ entryPointVersion: '0.7',
137
+ }),
138
+ };
113
139
  }
114
140
  const orderPath = await getUserOpOrderPath(sourceChain, targetChain, tokenRequests, accountAddress, gasLimit, config.rhinestoneApiKey);
115
141
  const userOp = await getUserOp(config, targetChain, signers, orderPath, calls, tokenRequests, accountAddress);
@@ -189,6 +215,9 @@ async function signUserOp(config, sourceChain, targetChain, accountAddress, sign
189
215
  throw new Error('No account found');
190
216
  }
191
217
  userOp.signature = await targetAccount.signUserOperation(userOp);
218
+ if (!orderPath) {
219
+ return userOp.signature;
220
+ }
192
221
  const userOpHash = (0, account_abstraction_1.getUserOperationHash)({
193
222
  userOperation: userOp,
194
223
  chainId: targetChain.id,
@@ -212,7 +241,47 @@ async function signUserOp(config, sourceChain, targetChain, accountAddress, sign
212
241
  });
213
242
  return signature;
214
243
  }
215
- async function submitUserOp(config, sourceChain, targetChain, userOp, orderPath, signature) {
244
+ async function submitUserOp(config, sourceChain, targetChain, userOp, signature, orderPath) {
245
+ if (!orderPath) {
246
+ const publicClient = (0, viem_1.createPublicClient)({
247
+ chain: sourceChain,
248
+ transport: (0, viem_1.http)(),
249
+ });
250
+ const bundlerClient = (0, utils_1.getBundlerClient)(config, publicClient);
251
+ const hash = await bundlerClient.request({
252
+ method: 'eth_sendUserOperation',
253
+ params: [
254
+ {
255
+ sender: userOp.sender,
256
+ nonce: (0, viem_1.toHex)(userOp.nonce),
257
+ factory: userOp.factory,
258
+ factoryData: userOp.factoryData,
259
+ callData: userOp.callData,
260
+ callGasLimit: (0, viem_1.toHex)(userOp.callGasLimit),
261
+ verificationGasLimit: (0, viem_1.toHex)(userOp.verificationGasLimit),
262
+ preVerificationGas: (0, viem_1.toHex)(userOp.preVerificationGas),
263
+ maxPriorityFeePerGas: (0, viem_1.toHex)(userOp.maxPriorityFeePerGas),
264
+ maxFeePerGas: (0, viem_1.toHex)(userOp.maxFeePerGas),
265
+ paymaster: userOp.paymaster,
266
+ paymasterVerificationGasLimit: userOp.paymasterVerificationGasLimit
267
+ ? (0, viem_1.toHex)(userOp.paymasterVerificationGasLimit)
268
+ : undefined,
269
+ paymasterPostOpGasLimit: userOp.paymasterPostOpGasLimit
270
+ ? (0, viem_1.toHex)(userOp.paymasterPostOpGasLimit)
271
+ : undefined,
272
+ paymasterData: userOp.paymasterData,
273
+ signature,
274
+ },
275
+ account_abstraction_1.entryPoint07Address,
276
+ ],
277
+ });
278
+ return {
279
+ type: 'userop',
280
+ hash,
281
+ sourceChain: sourceChain.id,
282
+ targetChain: targetChain.id,
283
+ };
284
+ }
216
285
  const signedOrderBundle = {
217
286
  ...orderPath[0].orderBundle,
218
287
  originSignatures: Array(orderPath[0].orderBundle.segments.length).fill(signature),
@@ -280,7 +349,7 @@ async function getUserOp(config, targetChain, signers, orderPath, calls, tokenRe
280
349
  const rootBalanceSlot = (0, registry_1.getTokenRootBalanceSlot)(targetChain, request.address);
281
350
  const balanceSlot = rootBalanceSlot
282
351
  ? (0, viem_1.keccak256)((0, viem_1.encodeAbiParameters)([{ type: 'address' }, { type: 'uint256' }], [accountAddress, rootBalanceSlot]))
283
- : '0x';
352
+ : viem_1.zeroHash;
284
353
  return {
285
354
  address: request.address,
286
355
  stateDiff: [
@@ -322,10 +391,10 @@ async function getValidatorAccount(config, signers, publicClient, chain) {
322
391
  if (!signers) {
323
392
  return undefined;
324
393
  }
325
- const withSession = signers.type === 'session' ? signers.session : null;
394
+ const withSession = signers.type === 'session' ? signers : null;
326
395
  const withGuardians = signers.type === 'guardians' ? signers : null;
327
396
  return withSession
328
- ? await (0, accounts_1.getSmartSessionSmartAccount)(config, publicClient, chain, withSession)
397
+ ? await (0, accounts_1.getSmartSessionSmartAccount)(config, publicClient, chain, withSession.session, withSession.enableData || null)
329
398
  : withGuardians
330
399
  ? await (0, accounts_1.getGuardianSmartAccount)(config, publicClient, chain, {
331
400
  type: 'ecdsa',
@@ -385,9 +454,14 @@ function getOwners(config, signers) {
385
454
  }
386
455
  // Passkeys (WebAuthn)
387
456
  if (withOwner.kind === 'passkey') {
457
+ // Pull credentialIds from config.owners, which should be a WebauthnValidatorConfig
458
+ const credentialIds = config.owners.type === 'passkey'
459
+ ? config.owners.credentialIds
460
+ : [];
388
461
  return {
389
462
  type: 'passkey',
390
463
  account: withOwner.account,
464
+ credentialIds: credentialIds,
391
465
  };
392
466
  }
393
467
  }
package/dist/index.d.ts CHANGED
@@ -1,7 +1,8 @@
1
- import type { Address, Chain } from 'viem';
1
+ import type { Address, Chain, Hex } from 'viem';
2
2
  import { UserOperationReceipt } from 'viem/account-abstraction';
3
- import { addOwner, changeThreshold, disableEcdsa, disablePasskeys, enableEcdsa, enablePasskeys, recover, removeOwner, setUpRecovery } from './actions';
3
+ import { addOwner, changeThreshold, disableEcdsa, disablePasskeys, enableEcdsa, enablePasskeys, encodeSmartSessionSignature, recover, removeOwner, setUpRecovery, trustAttester } from './actions';
4
4
  import type { TransactionResult } from './execution';
5
+ import { SessionDetails } from './execution/smart-session';
5
6
  import { BundleData, PreparedTransactionData, SignedTransactionData } from './execution/utils';
6
7
  import type { BundleResult, BundleStatus, MetaIntent, MultiChainCompact, PostOrderBundleResult, SignedMultiChainCompact, UserTokenBalance } from './orchestrator';
7
8
  import type { Call, Execution, RhinestoneAccountConfig, Session, Transaction } from './types';
@@ -17,6 +18,13 @@ interface RhinestoneAccount {
17
18
  getPortfolio: (onTestnets?: boolean) => Promise<UserTokenBalance[]>;
18
19
  getMaxSpendableAmount: (chain: Chain, tokenAddress: Address, gasUnits: bigint) => Promise<bigint>;
19
20
  deploySource: (chain: Chain) => Promise<void>;
21
+ getSessionDetails: (sessions: Session[], sessionIndex: number, signature?: Hex) => Promise<SessionDetails>;
22
+ areAttestersTrusted: (chain: Chain) => Promise<boolean>;
23
+ getOwners: (chain: Chain) => Promise<{
24
+ accounts: Address[];
25
+ threshold: number;
26
+ } | null>;
27
+ getValidators: (chain: Chain) => Promise<Address[]>;
20
28
  }
21
29
  /**
22
30
  * Initialize a Rhinestone account
@@ -25,6 +33,6 @@ interface RhinestoneAccount {
25
33
  * @returns account
26
34
  */
27
35
  declare function createRhinestoneAccount(config: RhinestoneAccountConfig): Promise<RhinestoneAccount>;
28
- export { createRhinestoneAccount, addOwner, changeThreshold, disableEcdsa, disablePasskeys, enableEcdsa, enablePasskeys, recover, removeOwner, setUpRecovery, };
36
+ export { createRhinestoneAccount, addOwner, changeThreshold, disableEcdsa, disablePasskeys, enableEcdsa, enablePasskeys, recover, removeOwner, setUpRecovery, encodeSmartSessionSignature, trustAttester, };
29
37
  export type { RhinestoneAccount, BundleStatus, Session, Call, Execution, MetaIntent, MultiChainCompact, PostOrderBundleResult, SignedMultiChainCompact, BundleData, PreparedTransactionData, SignedTransactionData, TransactionResult, };
30
38
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,MAAM,CAAA;AAC1C,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAA;AAM/D,OAAO,EACL,QAAQ,EACR,eAAe,EACf,YAAY,EACZ,eAAe,EACf,WAAW,EACX,cAAc,EACd,OAAO,EACP,WAAW,EACX,aAAa,EACd,MAAM,WAAW,CAAA;AAClB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAOpD,OAAO,EACL,UAAU,EACV,uBAAuB,EAEvB,qBAAqB,EAGtB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,KAAK,EACV,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,iBAAiB,EACjB,qBAAqB,EACrB,uBAAuB,EACvB,gBAAgB,EACjB,MAAM,gBAAgB,CAAA;AACvB,OAAO,KAAK,EACV,IAAI,EACJ,SAAS,EACT,uBAAuB,EACvB,OAAO,EACP,WAAW,EACZ,MAAM,SAAS,CAAA;AAEhB,UAAU,iBAAiB;IACzB,MAAM,EAAE,uBAAuB,CAAA;IAC/B,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC1D,kBAAkB,EAAE,CAClB,WAAW,EAAE,WAAW,KACrB,OAAO,CAAC,uBAAuB,CAAC,CAAA;IACrC,eAAe,EAAE,CACf,mBAAmB,EAAE,uBAAuB,KACzC,OAAO,CAAC,qBAAqB,CAAC,CAAA;IACnC,iBAAiB,EAAE,CACjB,iBAAiB,EAAE,qBAAqB,KACrC,OAAO,CAAC,iBAAiB,CAAC,CAAA;IAC/B,eAAe,EAAE,CAAC,WAAW,EAAE,WAAW,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAA;IACzE,gBAAgB,EAAE,CAChB,MAAM,EAAE,iBAAiB,EACzB,uBAAuB,CAAC,EAAE,OAAO,KAC9B,OAAO,CAAC,YAAY,GAAG,oBAAoB,CAAC,CAAA;IACjD,UAAU,EAAE,MAAM,OAAO,CAAA;IACzB,YAAY,EAAE,CAAC,UAAU,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAA;IACnE,qBAAqB,EAAE,CACrB,KAAK,EAAE,KAAK,EACZ,YAAY,EAAE,OAAO,EACrB,QAAQ,EAAE,MAAM,KACb,OAAO,CAAC,MAAM,CAAC,CAAA;IACpB,YAAY,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CAC9C;AAED;;;;;GAKG;AACH,iBAAe,uBAAuB,CACpC,MAAM,EAAE,uBAAuB,GAC9B,OAAO,CAAC,iBAAiB,CAAC,CAwF5B;AAED,OAAO,EACL,uBAAuB,EACvB,QAAQ,EACR,eAAe,EACf,YAAY,EACZ,eAAe,EACf,WAAW,EACX,cAAc,EACd,OAAO,EACP,WAAW,EACX,aAAa,GACd,CAAA;AACD,YAAY,EACV,iBAAiB,EACjB,YAAY,EACZ,OAAO,EACP,IAAI,EACJ,SAAS,EACT,UAAU,EACV,iBAAiB,EACjB,qBAAqB,EACrB,uBAAuB,EACvB,UAAU,EACV,uBAAuB,EACvB,qBAAqB,EACrB,iBAAiB,GAClB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.setUpRecovery = exports.removeOwner = exports.recover = exports.enablePasskeys = exports.enableEcdsa = exports.disablePasskeys = exports.disableEcdsa = exports.changeThreshold = exports.addOwner = void 0;
3
+ exports.trustAttester = exports.encodeSmartSessionSignature = exports.setUpRecovery = exports.removeOwner = exports.recover = exports.enablePasskeys = exports.enableEcdsa = exports.disablePasskeys = exports.disableEcdsa = exports.changeThreshold = exports.addOwner = void 0;
4
4
  exports.createRhinestoneAccount = createRhinestoneAccount;
5
5
  const accounts_1 = require("./accounts");
6
6
  const actions_1 = require("./actions");
@@ -10,11 +10,15 @@ Object.defineProperty(exports, "disableEcdsa", { enumerable: true, get: function
10
10
  Object.defineProperty(exports, "disablePasskeys", { enumerable: true, get: function () { return actions_1.disablePasskeys; } });
11
11
  Object.defineProperty(exports, "enableEcdsa", { enumerable: true, get: function () { return actions_1.enableEcdsa; } });
12
12
  Object.defineProperty(exports, "enablePasskeys", { enumerable: true, get: function () { return actions_1.enablePasskeys; } });
13
+ Object.defineProperty(exports, "encodeSmartSessionSignature", { enumerable: true, get: function () { return actions_1.encodeSmartSessionSignature; } });
13
14
  Object.defineProperty(exports, "recover", { enumerable: true, get: function () { return actions_1.recover; } });
14
15
  Object.defineProperty(exports, "removeOwner", { enumerable: true, get: function () { return actions_1.removeOwner; } });
15
16
  Object.defineProperty(exports, "setUpRecovery", { enumerable: true, get: function () { return actions_1.setUpRecovery; } });
17
+ Object.defineProperty(exports, "trustAttester", { enumerable: true, get: function () { return actions_1.trustAttester; } });
16
18
  const execution_1 = require("./execution");
19
+ const smart_session_1 = require("./execution/smart-session");
17
20
  const utils_1 = require("./execution/utils");
21
+ const modules_1 = require("./modules");
18
22
  /**
19
23
  * Initialize a Rhinestone account
20
24
  * Note: accounts are deployed onchain only when the first transaction is sent.
@@ -79,6 +83,22 @@ async function createRhinestoneAccount(config) {
79
83
  function deploySource(chain) {
80
84
  return (0, accounts_1.deploySource)(chain, config);
81
85
  }
86
+ function getSessionDetails(sessions, sessionIndex, signature) {
87
+ return (0, smart_session_1.getSessionDetails)(config, sessions, sessionIndex, signature);
88
+ }
89
+ function areAttestersTrusted(chain) {
90
+ const account = getAddress();
91
+ return (0, modules_1.areAttestersTrusted)(account, chain);
92
+ }
93
+ function getOwners(chain) {
94
+ const account = getAddress();
95
+ return (0, modules_1.getOwners)(account, chain);
96
+ }
97
+ function getValidators(chain) {
98
+ const accountType = config.account?.type || 'nexus';
99
+ const account = getAddress();
100
+ return (0, modules_1.getValidators)(accountType, account, chain);
101
+ }
82
102
  return {
83
103
  config,
84
104
  deploy,
@@ -91,5 +111,9 @@ async function createRhinestoneAccount(config) {
91
111
  getPortfolio,
92
112
  getMaxSpendableAmount,
93
113
  deploySource,
114
+ getSessionDetails,
115
+ areAttestersTrusted,
116
+ getOwners,
117
+ getValidators,
94
118
  };
95
119
  }
@@ -2,17 +2,20 @@ import { type Address, type Chain, type Hex } from 'viem';
2
2
  import type { RhinestoneAccountConfig } from '../types';
3
3
  import { type Module } from './common';
4
4
  import { HOOK_ADDRESS } from './omni-account';
5
+ import { areAttestersTrusted, getOwners, getValidators } from './read';
5
6
  import { getTrustAttesterCall, getTrustedAttesters } from './registry';
6
7
  import { getOwnerValidator } from './validators';
7
8
  interface WebAuthnData {
8
9
  authenticatorData: Hex;
9
10
  clientDataJSON: string;
11
+ challengeIndex: number | bigint;
10
12
  typeIndex: number | bigint;
11
13
  }
12
14
  interface WebauthnValidatorSignature {
15
+ credentialIds: Hex[];
16
+ usePrecompiled?: boolean;
13
17
  webauthn: WebAuthnData;
14
18
  signature: WebauthnSignature | Hex | Uint8Array;
15
- usePrecompiled?: boolean;
16
19
  }
17
20
  interface WebauthnSignature {
18
21
  r: bigint;
@@ -28,7 +31,11 @@ interface ModeleSetup {
28
31
  threshold: number;
29
32
  }
30
33
  declare function getSetup(config: RhinestoneAccountConfig): ModeleSetup;
31
- declare function getWebauthnValidatorSignature({ webauthn, signature, usePrecompiled, }: WebauthnValidatorSignature): `0x${string}`;
34
+ declare function getWebauthnValidatorSignature(params: WebauthnValidatorSignature): Hex;
32
35
  declare function isRip7212SupportedNetwork(chain: Chain): boolean;
33
- export { HOOK_ADDRESS, getSetup, getTrustAttesterCall, getTrustedAttesters, getOwnerValidator, getWebauthnValidatorSignature, isRip7212SupportedNetwork, };
36
+ declare function getAttesters(): {
37
+ list: Address[];
38
+ threshold: number;
39
+ };
40
+ export { HOOK_ADDRESS, getSetup, getTrustAttesterCall, getTrustedAttesters, getOwnerValidator, getWebauthnValidatorSignature, getAttesters, areAttestersTrusted, getOwners, getValidators, isRip7212SupportedNetwork, };
34
41
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../modules/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,OAAO,EAEZ,KAAK,KAAK,EAEV,KAAK,GAAG,EAET,MAAM,MAAM,CAAA;AAYb,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAA;AAEvD,OAAO,EAGL,KAAK,MAAM,EACZ,MAAM,UAAU,CAAA;AACjB,OAAO,EACL,YAAY,EAMb,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AACtE,OAAO,EAAE,iBAAiB,EAA4B,MAAM,cAAc,CAAA;AAM1E,UAAU,YAAY;IACpB,iBAAiB,EAAE,GAAG,CAAA;IACtB,cAAc,EAAE,MAAM,CAAA;IACtB,SAAS,EAAE,MAAM,GAAG,MAAM,CAAA;CAC3B;AAED,UAAU,0BAA0B;IAClC,QAAQ,EAAE,YAAY,CAAA;IACtB,SAAS,EAAE,iBAAiB,GAAG,GAAG,GAAG,UAAU,CAAA;IAC/C,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB;AAED,UAAU,iBAAiB;IACzB,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;CACV;AAED,UAAU,WAAW;IACnB,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,SAAS,EAAE,MAAM,EAAE,CAAA;IACnB,SAAS,EAAE,MAAM,EAAE,CAAA;IACnB,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,QAAQ,EAAE,OAAO,CAAA;IACjB,SAAS,EAAE,OAAO,EAAE,CAAA;IACpB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,iBAAS,QAAQ,CAAC,MAAM,EAAE,uBAAuB,GAAG,WAAW,CA2F9D;AAED,iBAAS,6BAA6B,CAAC,EACrC,QAAQ,EACR,SAAS,EACT,cAAsB,GACvB,EAAE,0BAA0B,iBA6C5B;AAED,iBAAS,yBAAyB,CAAC,KAAK,EAAE,KAAK,WAa9C;AAaD,OAAO,EACL,YAAY,EACZ,QAAQ,EACR,oBAAoB,EACpB,mBAAmB,EACnB,iBAAiB,EACjB,6BAA6B,EAC7B,yBAAyB,GAC1B,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../modules/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,OAAO,EAEZ,KAAK,KAAK,EAEV,KAAK,GAAG,EAET,MAAM,MAAM,CAAA;AAYb,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAA;AAEvD,OAAO,EAGL,KAAK,MAAM,EACZ,MAAM,UAAU,CAAA;AACjB,OAAO,EACL,YAAY,EAMb,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAE,mBAAmB,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAA;AACtE,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AACtE,OAAO,EAAE,iBAAiB,EAA4B,MAAM,cAAc,CAAA;AAM1E,UAAU,YAAY;IACpB,iBAAiB,EAAE,GAAG,CAAA;IACtB,cAAc,EAAE,MAAM,CAAA;IACtB,cAAc,EAAE,MAAM,GAAG,MAAM,CAAA;IAC/B,SAAS,EAAE,MAAM,GAAG,MAAM,CAAA;CAC3B;AAED,UAAU,0BAA0B;IAClC,aAAa,EAAE,GAAG,EAAE,CAAA;IACpB,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,QAAQ,EAAE,YAAY,CAAA;IACtB,SAAS,EAAE,iBAAiB,GAAG,GAAG,GAAG,UAAU,CAAA;CAChD;AAED,UAAU,iBAAiB;IACzB,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;CACV;AAED,UAAU,WAAW;IACnB,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,SAAS,EAAE,MAAM,EAAE,CAAA;IACnB,SAAS,EAAE,MAAM,EAAE,CAAA;IACnB,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,QAAQ,EAAE,OAAO,CAAA;IACjB,SAAS,EAAE,OAAO,EAAE,CAAA;IACpB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,iBAAS,QAAQ,CAAC,MAAM,EAAE,uBAAuB,GAAG,WAAW,CA0F9D;AAED,iBAAS,6BAA6B,CAAC,MAAM,EAAE,0BAA0B,GAAG,GAAG,CA6C9E;AAED,iBAAS,yBAAyB,CAAC,KAAK,EAAE,KAAK,WAa9C;AAaD,iBAAS,YAAY,IAAI;IACvB,IAAI,EAAE,OAAO,EAAE,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;CAClB,CAKA;AAED,OAAO,EACL,YAAY,EACZ,QAAQ,EACR,oBAAoB,EACpB,mBAAmB,EACnB,iBAAiB,EACjB,6BAA6B,EAC7B,YAAY,EACZ,mBAAmB,EACnB,SAAS,EACT,aAAa,EACb,yBAAyB,GAC1B,CAAA"}