@rhinestone/sdk 1.0.2 → 1.0.3
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.
- package/dist/src/accounts/index.d.ts.map +1 -1
- package/dist/src/accounts/index.js +4 -1
- package/dist/src/accounts/passport.d.ts +8 -3
- package/dist/src/accounts/passport.d.ts.map +1 -1
- package/dist/src/accounts/passport.js +120 -0
- package/dist/src/actions/smart-sessions.d.ts +23 -0
- package/dist/src/actions/smart-sessions.d.ts.map +1 -0
- package/dist/src/actions/{smart-session.js → smart-sessions.js} +13 -0
- package/dist/src/execution/smart-session.d.ts.map +1 -1
- package/dist/src/execution/smart-session.js +3 -3
- package/dist/src/index.d.ts +1 -2
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +3 -5
- package/dist/src/modules/index.test.js +1 -1
- package/dist/src/modules/validators/smart-sessions.d.ts +4 -4
- package/dist/src/modules/validators/smart-sessions.d.ts.map +1 -1
- package/dist/src/modules/validators/smart-sessions.js +10 -72
- package/dist/src/modules/validators/smart-sessions.test.js +4 -5
- package/package.json +11 -1
- package/dist/src/actions/smart-session.d.ts +0 -11
- package/dist/src/actions/smart-session.d.ts.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../accounts/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,KAAK,EAKV,KAAK,uBAAuB,EAC5B,KAAK,GAAG,EAER,KAAK,YAAY,EAEjB,KAAK,SAAS,EAGf,MAAM,MAAM,CAAA;AAWb,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAM/C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAA;AAC7E,OAAO,KAAK,EACV,qBAAqB,EACrB,IAAI,EACJ,QAAQ,EACR,gBAAgB,EAChB,OAAO,EACP,SAAS,EACV,MAAM,UAAU,CAAA;AACjB,OAAO,EACL,qCAAqC,EACrC,YAAY,EACZ,8BAA8B,EAC9B,kCAAkC,EAClC,kCAAkC,EAClC,2BAA2B,EAC3B,wCAAwC,EACxC,4BAA4B,EAC5B,cAAc,EACd,mCAAmC,EACnC,wBAAwB,EACxB,kCAAkC,EAClC,4BAA4B,EAC5B,mCAAmC,EACpC,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../accounts/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -158,7 +158,7 @@ function getModuleInstallationCalls(config, module) {
|
|
|
158
158
|
return [(0, startale_1.getInstallData)(module)];
|
|
159
159
|
}
|
|
160
160
|
case 'passport': {
|
|
161
|
-
|
|
161
|
+
return [(0, passport_1.getInstallData)(module)];
|
|
162
162
|
}
|
|
163
163
|
case 'eoa': {
|
|
164
164
|
throw new error_1.ModuleInstallationNotSupportedError(account.type);
|
|
@@ -545,6 +545,9 @@ async function getSmartSessionSmartAccount(config, client, chain, session, enabl
|
|
|
545
545
|
case 'kernel': {
|
|
546
546
|
return (0, kernel_1.getSessionSmartAccount)(client, address, session, smartSessionValidator.address, enableData, signFn);
|
|
547
547
|
}
|
|
548
|
+
case 'passport': {
|
|
549
|
+
return (0, passport_1.getSessionSmartAccount)(client, address, session, smartSessionValidator.address, enableData, signFn);
|
|
550
|
+
}
|
|
548
551
|
case 'startale': {
|
|
549
552
|
return (0, startale_1.getSessionSmartAccount)(client, address, session, smartSessionValidator.address, enableData, signFn);
|
|
550
553
|
}
|
|
@@ -1,7 +1,12 @@
|
|
|
1
|
-
import type { Hex } from 'viem';
|
|
2
|
-
import
|
|
1
|
+
import type { Abi, Address, Hex, PublicClient } from 'viem';
|
|
2
|
+
import { SmartAccount, SmartAccountImplementation } from 'viem/account-abstraction';
|
|
3
|
+
import { Module } from '../modules/common';
|
|
4
|
+
import { EnableSessionData } from '../modules/validators/smart-sessions';
|
|
5
|
+
import type { RhinestoneAccountConfig, Session } from '../types';
|
|
3
6
|
import { ValidatorConfig } from './utils';
|
|
4
7
|
declare function getAddress(config: RhinestoneAccountConfig): `0x${string}`;
|
|
5
8
|
declare function packSignature(signature: Hex, validator: ValidatorConfig, transformSignature?: (signature: Hex) => Hex): Promise<`0x${string}`>;
|
|
6
|
-
|
|
9
|
+
declare function getSessionSmartAccount(client: PublicClient, address: Address, session: Session, validatorAddress: Address, enableData: EnableSessionData | null, sign: (hash: Hex) => Promise<Hex>): Promise<SmartAccount<SmartAccountImplementation<Abi, "0.7">>>;
|
|
10
|
+
declare function getInstallData(module: Module): `0x${string}`;
|
|
11
|
+
export { getAddress, packSignature, getSessionSmartAccount, getInstallData };
|
|
7
12
|
//# sourceMappingURL=passport.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"passport.d.ts","sourceRoot":"","sources":["../../../accounts/passport.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"passport.d.ts","sourceRoot":"","sources":["../../../accounts/passport.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAW,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,MAAM,CAAA;AAWpE,OAAO,EAIL,YAAY,EACZ,0BAA0B,EAE3B,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAK1C,OAAO,EACL,iBAAiB,EAIlB,MAAM,sCAAsC,CAAA;AAC7C,OAAO,KAAK,EAAE,uBAAuB,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAChE,OAAO,EAAoC,eAAe,EAAE,MAAM,SAAS,CAAA;AAW3E,iBAAS,UAAU,CAAC,MAAM,EAAE,uBAAuB,iBAsBlD;AAED,iBAAe,aAAa,CAC1B,SAAS,EAAE,GAAG,EACd,SAAS,EAAE,eAAe,EAC1B,kBAAkB,GAAE,CAAC,SAAS,EAAE,GAAG,KAAK,GAA8B,0BAQvE;AAED,iBAAe,sBAAsB,CACnC,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,EAChB,gBAAgB,EAAE,OAAO,EACzB,UAAU,EAAE,iBAAiB,GAAG,IAAI,EACpC,IAAI,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,iEAuClC;AAmHD,iBAAS,cAAc,CAAC,MAAM,EAAE,MAAM,iBA2BrC;AAED,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,sBAAsB,EAAE,cAAc,EAAE,CAAA"}
|
|
@@ -2,7 +2,13 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getAddress = getAddress;
|
|
4
4
|
exports.packSignature = packSignature;
|
|
5
|
+
exports.getSessionSmartAccount = getSessionSmartAccount;
|
|
6
|
+
exports.getInstallData = getInstallData;
|
|
5
7
|
const viem_1 = require("viem");
|
|
8
|
+
const account_abstraction_1 = require("viem/account-abstraction");
|
|
9
|
+
const validators_1 = require("../modules/validators");
|
|
10
|
+
const smart_sessions_1 = require("../modules/validators/smart-sessions");
|
|
11
|
+
const utils_1 = require("./utils");
|
|
6
12
|
const CREATION_CODE = '0x6054600f3d396034805130553df3fe63906111273d3560e01c14602b57363d3d373d3d3d3d369030545af43d82803e156027573d90f35b3d90fd5b30543d5260203df3';
|
|
7
13
|
const PASSPORT_FACTORY_ADDRESS = '0xD70C6386Ca012CDeb249B4E46C53d3507D9CBB87';
|
|
8
14
|
const PASSPORT_MAIN_MODULE = '0x0d1Bf2f4Ab334324665aeb8d481fF92CdE289439';
|
|
@@ -33,6 +39,92 @@ async function packSignature(signature, validator, transformSignature = (signatu
|
|
|
33
39
|
const packedSig = (0, viem_1.encodePacked)(['address', 'bytes'], [validatorAddress, transformSignature(signature)]);
|
|
34
40
|
return packedSig;
|
|
35
41
|
}
|
|
42
|
+
async function getSessionSmartAccount(client, address, session, validatorAddress, enableData, sign) {
|
|
43
|
+
return await getBaseSmartAccount(address, client, validatorAddress, async () => {
|
|
44
|
+
const dummyOpSignature = (0, validators_1.getMockSignature)(session.owners);
|
|
45
|
+
if (enableData) {
|
|
46
|
+
return (0, validators_1.encodeSmartSessionSignature)(smart_sessions_1.SMART_SESSION_MODE_ENABLE, (0, smart_sessions_1.getPermissionId)(session), dummyOpSignature, enableData);
|
|
47
|
+
}
|
|
48
|
+
return (0, validators_1.encodeSmartSessionSignature)(smart_sessions_1.SMART_SESSION_MODE_USE, (0, smart_sessions_1.getPermissionId)(session), dummyOpSignature);
|
|
49
|
+
}, async (hash) => {
|
|
50
|
+
const signature = await sign(hash);
|
|
51
|
+
if (enableData) {
|
|
52
|
+
return (0, validators_1.encodeSmartSessionSignature)(smart_sessions_1.SMART_SESSION_MODE_ENABLE, (0, smart_sessions_1.getPermissionId)(session), signature, enableData);
|
|
53
|
+
}
|
|
54
|
+
return (0, validators_1.encodeSmartSessionSignature)(smart_sessions_1.SMART_SESSION_MODE_USE, (0, smart_sessions_1.getPermissionId)(session), signature);
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
async function getBaseSmartAccount(address, client, nonceValidatorAddress, getStubSignature, signUserOperation) {
|
|
58
|
+
return await (0, account_abstraction_1.toSmartAccount)({
|
|
59
|
+
client,
|
|
60
|
+
entryPoint: {
|
|
61
|
+
abi: account_abstraction_1.entryPoint07Abi,
|
|
62
|
+
address: account_abstraction_1.entryPoint07Address,
|
|
63
|
+
version: '0.7',
|
|
64
|
+
},
|
|
65
|
+
async decodeCalls() {
|
|
66
|
+
throw new Error('Not implemented');
|
|
67
|
+
},
|
|
68
|
+
async encodeCalls(calls) {
|
|
69
|
+
return (0, utils_1.encode7579Calls)({
|
|
70
|
+
mode: {
|
|
71
|
+
type: calls.length > 1 ? 'batchcall' : 'call',
|
|
72
|
+
revertOnError: false,
|
|
73
|
+
selector: '0x',
|
|
74
|
+
context: '0x',
|
|
75
|
+
},
|
|
76
|
+
callData: calls,
|
|
77
|
+
});
|
|
78
|
+
},
|
|
79
|
+
async getAddress() {
|
|
80
|
+
return address;
|
|
81
|
+
},
|
|
82
|
+
async getFactoryArgs() {
|
|
83
|
+
return {};
|
|
84
|
+
},
|
|
85
|
+
async getNonce(args) {
|
|
86
|
+
const validatorAddress = nonceValidatorAddress;
|
|
87
|
+
const TIMESTAMP_ADJUSTMENT = 16777215n; // max value for size 3
|
|
88
|
+
const defaultedKey = (args?.key ?? 0n) % TIMESTAMP_ADJUSTMENT;
|
|
89
|
+
const defaultedValidationMode = '0x00';
|
|
90
|
+
const key = (0, viem_1.concat)([
|
|
91
|
+
(0, viem_1.toHex)(defaultedKey, { size: 3 }),
|
|
92
|
+
defaultedValidationMode,
|
|
93
|
+
validatorAddress,
|
|
94
|
+
]);
|
|
95
|
+
return (0, utils_1.getAccountNonce)(client, {
|
|
96
|
+
address,
|
|
97
|
+
entryPointAddress: account_abstraction_1.entryPoint07Address,
|
|
98
|
+
key: BigInt(key),
|
|
99
|
+
});
|
|
100
|
+
},
|
|
101
|
+
async getStubSignature() {
|
|
102
|
+
return getStubSignature();
|
|
103
|
+
},
|
|
104
|
+
async signMessage() {
|
|
105
|
+
throw new Error('Not implemented');
|
|
106
|
+
},
|
|
107
|
+
async signTypedData() {
|
|
108
|
+
throw new Error('Not implemented');
|
|
109
|
+
},
|
|
110
|
+
async signUserOperation(parameters) {
|
|
111
|
+
const { chainId = client.chain?.id, ...userOperation } = parameters;
|
|
112
|
+
if (!chainId)
|
|
113
|
+
throw new Error('Chain id not found');
|
|
114
|
+
const hash = (0, account_abstraction_1.getUserOperationHash)({
|
|
115
|
+
userOperation: {
|
|
116
|
+
...userOperation,
|
|
117
|
+
sender: userOperation.sender ?? (await this.getAddress()),
|
|
118
|
+
signature: '0x',
|
|
119
|
+
},
|
|
120
|
+
entryPointAddress: account_abstraction_1.entryPoint07Address,
|
|
121
|
+
entryPointVersion: '0.7',
|
|
122
|
+
chainId: chainId,
|
|
123
|
+
});
|
|
124
|
+
return await signUserOperation(hash);
|
|
125
|
+
},
|
|
126
|
+
});
|
|
127
|
+
}
|
|
36
128
|
function encodeImageHash(threshold, accounts) {
|
|
37
129
|
const sorted = accounts.sort((a, b) => a.account.address.toLowerCase() < b.account.address.toLowerCase() ? -1 : 1);
|
|
38
130
|
let imageHash = (0, viem_1.encodePacked)(['uint256'], [BigInt(threshold)]);
|
|
@@ -51,3 +143,31 @@ function encodeImageHash(threshold, accounts) {
|
|
|
51
143
|
}
|
|
52
144
|
return imageHash;
|
|
53
145
|
}
|
|
146
|
+
function getInstallData(module) {
|
|
147
|
+
return (0, viem_1.encodeFunctionData)({
|
|
148
|
+
abi: [
|
|
149
|
+
{
|
|
150
|
+
type: 'function',
|
|
151
|
+
name: 'installModule',
|
|
152
|
+
inputs: [
|
|
153
|
+
{
|
|
154
|
+
type: 'uint256',
|
|
155
|
+
name: 'moduleTypeId',
|
|
156
|
+
},
|
|
157
|
+
{
|
|
158
|
+
type: 'address',
|
|
159
|
+
name: 'module',
|
|
160
|
+
},
|
|
161
|
+
{
|
|
162
|
+
type: 'bytes',
|
|
163
|
+
name: 'initData',
|
|
164
|
+
},
|
|
165
|
+
],
|
|
166
|
+
outputs: [],
|
|
167
|
+
stateMutability: 'nonpayable',
|
|
168
|
+
},
|
|
169
|
+
],
|
|
170
|
+
functionName: 'installModule',
|
|
171
|
+
args: [module.type, module.address, module.initData],
|
|
172
|
+
});
|
|
173
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { type Hex } from 'viem';
|
|
2
|
+
import type { SessionDetails } from '../execution/smart-session';
|
|
3
|
+
import { Session } from '../types';
|
|
4
|
+
/**
|
|
5
|
+
* Enable a smart session
|
|
6
|
+
* @param session session to enable
|
|
7
|
+
* @returns Calls to enable the smart session
|
|
8
|
+
*/
|
|
9
|
+
declare function enableSession(session: Session): {
|
|
10
|
+
resolve(): Promise<{
|
|
11
|
+
to: `0x${string}`;
|
|
12
|
+
data: `0x${string}`;
|
|
13
|
+
}>;
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Encode a smart session signature
|
|
17
|
+
* @param sessionDetails Session details
|
|
18
|
+
* @param sessionSignature Session signature
|
|
19
|
+
* @returns Encoded smart session signature
|
|
20
|
+
*/
|
|
21
|
+
declare function encodeSmartSessionSignature(sessionDetails: SessionDetails, sessionSignature: Hex): `0x${string}`;
|
|
22
|
+
export { enableSession, encodeSmartSessionSignature };
|
|
23
|
+
//# sourceMappingURL=smart-sessions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"smart-sessions.d.ts","sourceRoot":"","sources":["../../../actions/smart-sessions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,MAAM,CAAA;AAC/B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAKhE,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAElC;;;;GAIG;AACH,iBAAS,aAAa,CAAC,OAAO,EAAE,OAAO;;;;;EAMtC;AAED;;;;;GAKG;AACH,iBAAS,2BAA2B,CAClC,cAAc,EAAE,cAAc,EAC9B,gBAAgB,EAAE,GAAG,iBAQtB;AAED,OAAO,EAAE,aAAa,EAAE,2BAA2B,EAAE,CAAA"}
|
|
@@ -1,7 +1,20 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.enableSession = enableSession;
|
|
3
4
|
exports.encodeSmartSessionSignature = encodeSmartSessionSignature;
|
|
4
5
|
const smart_sessions_1 = require("../modules/validators/smart-sessions");
|
|
6
|
+
/**
|
|
7
|
+
* Enable a smart session
|
|
8
|
+
* @param session session to enable
|
|
9
|
+
* @returns Calls to enable the smart session
|
|
10
|
+
*/
|
|
11
|
+
function enableSession(session) {
|
|
12
|
+
return {
|
|
13
|
+
async resolve() {
|
|
14
|
+
return (0, smart_sessions_1.getEnableSessionCall)(session);
|
|
15
|
+
},
|
|
16
|
+
};
|
|
17
|
+
}
|
|
5
18
|
/**
|
|
6
19
|
* Encode a smart session signature
|
|
7
20
|
* @param sessionDetails Session details
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"smart-session.d.ts","sourceRoot":"","sources":["../../../execution/smart-session.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,KAAK,EAIV,KAAK,GAAG,EAGT,MAAM,MAAM,CAAA;AAmBb,OAAO,EACL,KAAK,WAAW,EAEhB,KAAK,iBAAiB,EAGtB,KAAK,oBAAoB,EAC1B,MAAM,sCAAsC,CAAA;AAC7C,OAAO,KAAK,EAGV,gBAAgB,EAChB,OAAO,EACR,MAAM,UAAU,CAAA;AAGjB,UAAU,cAAc;IACtB,oBAAoB,EAAE,GAAG,CAAA;IACzB,IAAI,EAAE,oBAAoB,CAAA;IAC1B,iBAAiB,EAAE,WAAW,EAAE,CAAA;IAChC,iBAAiB,EAAE,iBAAiB,CAAA;CACrC;AAED,iBAAe,iBAAiB,CAC9B,MAAM,EAAE,gBAAgB,EACxB,QAAQ,EAAE,OAAO,EAAE,EACnB,YAAY,EAAE,MAAM,EACpB,SAAS,CAAC,EAAE,GAAG,GACd,OAAO,CAAC,cAAc,CAAC,CA4BzB;
|
|
1
|
+
{"version":3,"file":"smart-session.d.ts","sourceRoot":"","sources":["../../../execution/smart-session.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,KAAK,EAIV,KAAK,GAAG,EAGT,MAAM,MAAM,CAAA;AAmBb,OAAO,EACL,KAAK,WAAW,EAEhB,KAAK,iBAAiB,EAGtB,KAAK,oBAAoB,EAC1B,MAAM,sCAAsC,CAAA;AAC7C,OAAO,KAAK,EAGV,gBAAgB,EAChB,OAAO,EACR,MAAM,UAAU,CAAA;AAGjB,UAAU,cAAc;IACtB,oBAAoB,EAAE,GAAG,CAAA;IACzB,IAAI,EAAE,oBAAoB,CAAA;IAC1B,iBAAiB,EAAE,WAAW,EAAE,CAAA;IAChC,iBAAiB,EAAE,iBAAiB,CAAA;CACrC;AAED,iBAAe,iBAAiB,CAC9B,MAAM,EAAE,gBAAgB,EACxB,QAAQ,EAAE,OAAO,EAAE,EACnB,YAAY,EAAE,MAAM,EACpB,SAAS,CAAC,EAAE,GAAG,GACd,OAAO,CAAC,cAAc,CAAC,CA4BzB;AA4FD,iBAAS,mBAAmB,CAAC,YAAY,EAAE,WAAW,EAAE,GAAG,GAAG,CAgC7D;AAiLD,iBAAe,kBAAkB,CAC/B,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,gBAAgB,EACxB,OAAO,EAAE,OAAO,iBA2BjB;AAED,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,CAAA;AACrE,YAAY,EAAE,cAAc,EAAE,CAAA"}
|
|
@@ -40,7 +40,7 @@ async function getEnableSessionDetails(accountType, sessions, sessionIndex, acco
|
|
|
40
40
|
transport: (0, utils_1.createTransport)(sessionChain, provider),
|
|
41
41
|
});
|
|
42
42
|
const sessionNonce = await getSessionNonce(publicClient, accountAddress, permissionId);
|
|
43
|
-
const sessionData = await (0, smart_sessions_1.getSessionData)(
|
|
43
|
+
const sessionData = await (0, smart_sessions_1.getSessionData)(session);
|
|
44
44
|
const sessionDigest = await getSessionDigest(publicClient, accountAddress, sessionData, permissionId, validators_1.SMART_SESSION_MODE_ENABLE);
|
|
45
45
|
chainDigests.push({
|
|
46
46
|
chainId: BigInt(sessionChain.id),
|
|
@@ -73,7 +73,7 @@ async function getEnableSessionDetails(accountType, sessions, sessionIndex, acco
|
|
|
73
73
|
if (!sessionChain) {
|
|
74
74
|
throw new error_1.SessionChainRequiredError();
|
|
75
75
|
}
|
|
76
|
-
const sessionData = await (0, smart_sessions_1.getSessionData)(
|
|
76
|
+
const sessionData = await (0, smart_sessions_1.getSessionData)(sessionToEnable);
|
|
77
77
|
return {
|
|
78
78
|
permissionEnableHash,
|
|
79
79
|
mode: validators_1.SMART_SESSION_MODE_ENABLE,
|
|
@@ -280,7 +280,7 @@ async function enableSmartSession(chain, config, session) {
|
|
|
280
280
|
if (isEnabled) {
|
|
281
281
|
return;
|
|
282
282
|
}
|
|
283
|
-
const enableSessionCall = await (0, validators_1.getEnableSessionCall)(
|
|
283
|
+
const enableSessionCall = await (0, validators_1.getEnableSessionCall)(session);
|
|
284
284
|
const smartAccount = await (0, accounts_1.getSmartAccount)(config, publicClient, chain);
|
|
285
285
|
const bundlerClient = (0, utils_1.getBundlerClient)(config, publicClient);
|
|
286
286
|
const opHash = await bundlerClient.sendUserOperation({
|
package/dist/src/index.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import type { Address, Chain, HashTypedDataParameters, Hex, SignableMessage, SignedAuthorizationList, TypedData } from 'viem';
|
|
2
2
|
import type { UserOperationReceipt } from 'viem/account-abstraction';
|
|
3
3
|
import { walletClientToAccount } from './accounts/walletClient';
|
|
4
|
-
import { encodeSmartSessionSignature } from './actions/smart-session';
|
|
5
4
|
import { type TransactionResult, type TransactionStatus, type UserOperationResult } from './execution';
|
|
6
5
|
import { type BatchPermit2Result, checkERC20AllowanceDirect, getPermit2Address, type MultiChainPermit2Config, type MultiChainPermit2Result, signPermit2Batch, signPermit2Sequential } from './execution/permit2';
|
|
7
6
|
import { type SessionDetails } from './execution/smart-session';
|
|
@@ -56,6 +55,6 @@ declare class RhinestoneSDK {
|
|
|
56
55
|
});
|
|
57
56
|
createAccount(config: RhinestoneAccountConfig): Promise<RhinestoneAccount>;
|
|
58
57
|
}
|
|
59
|
-
export { RhinestoneSDK, walletClientToAccount,
|
|
58
|
+
export { RhinestoneSDK, walletClientToAccount, getSupportedTokens, getTokenAddress, checkERC20AllowanceDirect, getPermit2Address, signPermit2Batch, signPermit2Sequential, };
|
|
60
59
|
export type { RhinestoneAccount, AccountType, RhinestoneAccountConfig, AccountProviderConfig, ProviderConfig, BundlerConfig, PaymasterConfig, Transaction, TokenSymbol, CallInput, Call, TokenRequest, OwnerSet, OwnableValidatorConfig, WebauthnValidatorConfig, MultiFactorValidatorConfig, SignerSet, Session, Recovery, Policy, UniversalActionPolicyParamCondition, PreparedTransactionData, SignedTransactionData, TransactionResult, PreparedUserOperationData, SignedUserOperationData, UserOperationResult, IntentCost, IntentInput, IntentOp, IntentOpStatus, IntentRoute, SettlementLayer, SignedIntentOp, Portfolio, MultiChainPermit2Config, MultiChainPermit2Result, BatchPermit2Result, };
|
|
61
60
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EACP,KAAK,EACL,uBAAuB,EACvB,GAAG,EACH,eAAe,EACf,uBAAuB,EACvB,SAAS,EACV,MAAM,MAAM,CAAA;AACb,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAA;AAWpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAA;AAC/D,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../index.ts"],"names":[],"mappings":"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"}
|
package/dist/src/index.js
CHANGED
|
@@ -1,18 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.signPermit2Sequential = exports.signPermit2Batch = exports.getPermit2Address = exports.checkERC20AllowanceDirect = exports.getTokenAddress = exports.getSupportedTokens = exports.
|
|
3
|
+
exports.signPermit2Sequential = exports.signPermit2Batch = exports.getPermit2Address = exports.checkERC20AllowanceDirect = exports.getTokenAddress = exports.getSupportedTokens = exports.walletClientToAccount = exports.RhinestoneSDK = void 0;
|
|
4
4
|
const accounts_1 = require("./accounts");
|
|
5
5
|
const walletClient_1 = require("./accounts/walletClient");
|
|
6
6
|
Object.defineProperty(exports, "walletClientToAccount", { enumerable: true, get: function () { return walletClient_1.walletClientToAccount; } });
|
|
7
|
-
const smart_session_1 = require("./actions/smart-session");
|
|
8
|
-
Object.defineProperty(exports, "encodeSmartSessionSignature", { enumerable: true, get: function () { return smart_session_1.encodeSmartSessionSignature; } });
|
|
9
7
|
const execution_1 = require("./execution");
|
|
10
8
|
const permit2_1 = require("./execution/permit2");
|
|
11
9
|
Object.defineProperty(exports, "checkERC20AllowanceDirect", { enumerable: true, get: function () { return permit2_1.checkERC20AllowanceDirect; } });
|
|
12
10
|
Object.defineProperty(exports, "getPermit2Address", { enumerable: true, get: function () { return permit2_1.getPermit2Address; } });
|
|
13
11
|
Object.defineProperty(exports, "signPermit2Batch", { enumerable: true, get: function () { return permit2_1.signPermit2Batch; } });
|
|
14
12
|
Object.defineProperty(exports, "signPermit2Sequential", { enumerable: true, get: function () { return permit2_1.signPermit2Sequential; } });
|
|
15
|
-
const
|
|
13
|
+
const smart_session_1 = require("./execution/smart-session");
|
|
16
14
|
const utils_1 = require("./execution/utils");
|
|
17
15
|
const modules_1 = require("./modules");
|
|
18
16
|
const orchestrator_1 = require("./orchestrator");
|
|
@@ -211,7 +209,7 @@ async function createRhinestoneAccount(config) {
|
|
|
211
209
|
return (0, modules_1.getValidators)(accountType, account, chain, config.provider);
|
|
212
210
|
}
|
|
213
211
|
function getSessionDetails(sessions, sessionIndex, signature) {
|
|
214
|
-
return (0,
|
|
212
|
+
return (0, smart_session_1.getSessionDetails)(config, sessions, sessionIndex, signature);
|
|
215
213
|
}
|
|
216
214
|
/**
|
|
217
215
|
* Check ERC20 allowance for the account owner and token (using Permit2 as spender)
|
|
@@ -48,7 +48,7 @@ const index_1 = require("./index");
|
|
|
48
48
|
],
|
|
49
49
|
};
|
|
50
50
|
const setup = (0, index_1.getSetup)(config);
|
|
51
|
-
const smartSessionValidator = setup.validators.find((validator) => validator.address === '
|
|
51
|
+
const smartSessionValidator = setup.validators.find((validator) => validator.address === '0x00000000008bdaba73cd9815d79069c247eb4bda');
|
|
52
52
|
if (!smartSessionValidator) {
|
|
53
53
|
return;
|
|
54
54
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { type Address, type
|
|
2
|
-
import type { AccountType,
|
|
1
|
+
import { type Address, type Hex, type PublicClient } from 'viem';
|
|
2
|
+
import type { AccountType, RhinestoneAccountConfig, Session } from '../../types';
|
|
3
3
|
import { type Module } from '../common';
|
|
4
4
|
interface SessionData {
|
|
5
5
|
sessionValidator: Address;
|
|
@@ -82,8 +82,8 @@ declare const SMART_SESSIONS_VALIDATOR_ADDRESS: Address;
|
|
|
82
82
|
declare const SMART_SESSION_MODE_USE = "0x00";
|
|
83
83
|
declare const SMART_SESSION_MODE_ENABLE = "0x01";
|
|
84
84
|
declare const SMART_SESSION_MODE_UNSAFE_ENABLE = "0x02";
|
|
85
|
-
declare function getSessionData(
|
|
86
|
-
declare function getEnableSessionCall(
|
|
85
|
+
declare function getSessionData(session: Session): Promise<SessionData>;
|
|
86
|
+
declare function getEnableSessionCall(session: Session): Promise<{
|
|
87
87
|
to: `0x${string}`;
|
|
88
88
|
data: `0x${string}`;
|
|
89
89
|
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"smart-sessions.d.ts","sourceRoot":"","sources":["../../../../modules/validators/smart-sessions.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,OAAO,
|
|
1
|
+
{"version":3,"file":"smart-sessions.d.ts","sourceRoot":"","sources":["../../../../modules/validators/smart-sessions.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,13 +9,10 @@ exports.getPermissionId = getPermissionId;
|
|
|
9
9
|
exports.isSessionEnabled = isSessionEnabled;
|
|
10
10
|
const solady_1 = require("solady");
|
|
11
11
|
const viem_1 = require("viem");
|
|
12
|
-
const utils_1 = require("../../accounts/utils");
|
|
13
|
-
const orchestrator_1 = require("../../orchestrator");
|
|
14
12
|
const smart_sessions_1 = require("../abi/smart-sessions");
|
|
15
13
|
const common_1 = require("../common");
|
|
16
|
-
const omni_account_1 = require("../omni-account");
|
|
17
14
|
const core_1 = require("./core");
|
|
18
|
-
const SMART_SESSIONS_VALIDATOR_ADDRESS = '
|
|
15
|
+
const SMART_SESSIONS_VALIDATOR_ADDRESS = '0x00000000008bdaba73cd9815d79069c247eb4bda';
|
|
19
16
|
exports.SMART_SESSIONS_VALIDATOR_ADDRESS = SMART_SESSIONS_VALIDATOR_ADDRESS;
|
|
20
17
|
const SMART_SESSION_MODE_USE = '0x00';
|
|
21
18
|
exports.SMART_SESSION_MODE_USE = SMART_SESSION_MODE_USE;
|
|
@@ -37,25 +34,11 @@ const ACTION_CONDITION_GREATER_THAN_OR_EQUAL = 3;
|
|
|
37
34
|
const ACTION_CONDITION_LESS_THAN_OR_EQUAL = 4;
|
|
38
35
|
const ACTION_CONDITION_NOT_EQUAL = 5;
|
|
39
36
|
const ACTION_CONDITION_IN_RANGE = 6;
|
|
40
|
-
async function getSessionData(
|
|
41
|
-
|
|
42
|
-
const allowedERC7739Content = [
|
|
43
|
-
{
|
|
44
|
-
appDomainSeparator,
|
|
45
|
-
contentName: [contentsType],
|
|
46
|
-
},
|
|
47
|
-
];
|
|
48
|
-
return getSmartSessionData(chain, session, allowedERC7739Content);
|
|
37
|
+
async function getSessionData(session) {
|
|
38
|
+
return getSmartSessionData(session);
|
|
49
39
|
}
|
|
50
|
-
async function getEnableSessionCall(
|
|
51
|
-
const
|
|
52
|
-
const allowedERC7739Content = [
|
|
53
|
-
{
|
|
54
|
-
appDomainSeparator,
|
|
55
|
-
contentName: [contentsType],
|
|
56
|
-
},
|
|
57
|
-
];
|
|
58
|
-
const sessionData = getSmartSessionData(chain, session, allowedERC7739Content);
|
|
40
|
+
async function getEnableSessionCall(session) {
|
|
41
|
+
const sessionData = getSmartSessionData(session);
|
|
59
42
|
return {
|
|
60
43
|
to: SMART_SESSIONS_VALIDATOR_ADDRESS,
|
|
61
44
|
data: (0, viem_1.encodeFunctionData)({
|
|
@@ -65,50 +48,7 @@ async function getEnableSessionCall(chain, session, provider) {
|
|
|
65
48
|
}),
|
|
66
49
|
};
|
|
67
50
|
}
|
|
68
|
-
function
|
|
69
|
-
const wethAddress = (0, orchestrator_1.getWethAddress)(chain);
|
|
70
|
-
const omniActions = [
|
|
71
|
-
{
|
|
72
|
-
actionTarget: orchestrator_1.RHINESTONE_SPOKE_POOL_ADDRESS,
|
|
73
|
-
actionTargetSelector: '0xa2418864', // injected execution
|
|
74
|
-
actionPolicies: [getPolicyData({ type: 'sudo' })],
|
|
75
|
-
},
|
|
76
|
-
{
|
|
77
|
-
actionTarget: omni_account_1.HOOK_ADDRESS,
|
|
78
|
-
actionTargetSelector: '0x27c777a9', // injected execution
|
|
79
|
-
actionPolicies: [getPolicyData({ type: 'sudo' })],
|
|
80
|
-
},
|
|
81
|
-
{
|
|
82
|
-
actionTarget: wethAddress,
|
|
83
|
-
actionTargetSelector: '0xd0e30db0', // deposit
|
|
84
|
-
actionPolicies: [getPolicyData({ type: 'sudo' })],
|
|
85
|
-
},
|
|
86
|
-
{
|
|
87
|
-
actionTarget: wethAddress,
|
|
88
|
-
actionTargetSelector: '0x2e1a7d4d', // widthdraw
|
|
89
|
-
actionPolicies: [getPolicyData({ type: 'sudo' })],
|
|
90
|
-
},
|
|
91
|
-
];
|
|
92
|
-
return omniActions;
|
|
93
|
-
}
|
|
94
|
-
async function getSessionAllowedERC7739Content(chain, provider) {
|
|
95
|
-
const publicClient = (0, viem_1.createPublicClient)({
|
|
96
|
-
chain,
|
|
97
|
-
transport: (0, utils_1.createTransport)(chain, provider),
|
|
98
|
-
});
|
|
99
|
-
const appDomainSeparator = await publicClient.readContract({
|
|
100
|
-
address: omni_account_1.HOOK_ADDRESS,
|
|
101
|
-
abi: (0, viem_1.parseAbi)(['function DOMAIN_SEPARATOR() view returns (bytes32)']),
|
|
102
|
-
functionName: 'DOMAIN_SEPARATOR',
|
|
103
|
-
});
|
|
104
|
-
const contentsType = 'MultichainCompact(address sponsor,uint256 nonce,uint256 expires,Segment[] segments)Segment(address arbiter,uint256 chainId,uint256[2][] idsAndAmounts,Witness witness)Witness(address recipient,uint256[2][] tokenOut,uint256 depositId,uint256 targetChain,uint32 fillDeadline,XchainExec[] execs,bytes32 userOpHash,uint32 maxFeeBps)XchainExec(address to,uint256 value,bytes data)';
|
|
105
|
-
return {
|
|
106
|
-
appDomainSeparator,
|
|
107
|
-
contentsType,
|
|
108
|
-
};
|
|
109
|
-
}
|
|
110
|
-
function getSmartSessionData(chain, session, allowedERC7739Content) {
|
|
111
|
-
const omniActions = getOmniAccountActions(chain);
|
|
51
|
+
function getSmartSessionData(session) {
|
|
112
52
|
const sessionValidator = (0, core_1.getValidator)(session.owners);
|
|
113
53
|
const userOpPolicies = (session.policies || [
|
|
114
54
|
{
|
|
@@ -128,8 +68,7 @@ function getSmartSessionData(chain, session, allowedERC7739Content) {
|
|
|
128
68
|
target: SMART_SESSIONS_FALLBACK_TARGET_FLAG,
|
|
129
69
|
selector: SMART_SESSIONS_FALLBACK_TARGET_SELECTOR_FLAG,
|
|
130
70
|
},
|
|
131
|
-
])
|
|
132
|
-
.map((action) => {
|
|
71
|
+
]).map((action) => {
|
|
133
72
|
const actionPolicies = (action.policies || [
|
|
134
73
|
{
|
|
135
74
|
type: 'sudo',
|
|
@@ -142,11 +81,10 @@ function getSmartSessionData(chain, session, allowedERC7739Content) {
|
|
|
142
81
|
actionTarget: action.target,
|
|
143
82
|
actionPolicies,
|
|
144
83
|
};
|
|
145
|
-
})
|
|
146
|
-
.concat(omniActions),
|
|
84
|
+
}),
|
|
147
85
|
erc7739Policies: {
|
|
148
|
-
allowedERC7739Content,
|
|
149
|
-
erc1271Policies: [
|
|
86
|
+
allowedERC7739Content: [],
|
|
87
|
+
erc1271Policies: [],
|
|
150
88
|
},
|
|
151
89
|
permitERC4337Paymaster: true,
|
|
152
90
|
};
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const viem_1 = require("viem");
|
|
4
|
-
const chains_1 = require("viem/chains");
|
|
5
4
|
const vitest_1 = require("vitest");
|
|
6
5
|
const consts_1 = require("../../../test/consts");
|
|
7
6
|
const smart_sessions_1 = require("../abi/smart-sessions");
|
|
@@ -92,7 +91,7 @@ const smart_sessions_2 = require("./smart-sessions");
|
|
|
92
91
|
const FALLBACK_TARGET = '0x0000000000000000000000000000000000000001';
|
|
93
92
|
const FALLBACK_SELECTOR = '0x00000001';
|
|
94
93
|
(0, vitest_1.test)('default', async () => {
|
|
95
|
-
const call = await (0, smart_sessions_2.getEnableSessionCall)(
|
|
94
|
+
const call = await (0, smart_sessions_2.getEnableSessionCall)({
|
|
96
95
|
owners: {
|
|
97
96
|
type: 'ecdsa',
|
|
98
97
|
accounts: [consts_1.accountA],
|
|
@@ -104,7 +103,7 @@ const smart_sessions_2 = require("./smart-sessions");
|
|
|
104
103
|
action.actionTargetSelector === FALLBACK_SELECTOR)).toEqual(true);
|
|
105
104
|
});
|
|
106
105
|
(0, vitest_1.test)('with action', async () => {
|
|
107
|
-
const call = await (0, smart_sessions_2.getEnableSessionCall)(
|
|
106
|
+
const call = await (0, smart_sessions_2.getEnableSessionCall)({
|
|
108
107
|
owners: {
|
|
109
108
|
type: 'ecdsa',
|
|
110
109
|
accounts: [consts_1.accountA],
|
|
@@ -125,7 +124,7 @@ const smart_sessions_2 = require("./smart-sessions");
|
|
|
125
124
|
action.actionTargetSelector === FALLBACK_SELECTOR)).toEqual(false);
|
|
126
125
|
});
|
|
127
126
|
(0, vitest_1.test)('with policy', async () => {
|
|
128
|
-
const call = await (0, smart_sessions_2.getEnableSessionCall)(
|
|
127
|
+
const call = await (0, smart_sessions_2.getEnableSessionCall)({
|
|
129
128
|
owners: {
|
|
130
129
|
type: 'ecdsa',
|
|
131
130
|
accounts: [consts_1.accountA],
|
|
@@ -155,7 +154,7 @@ const smart_sessions_2 = require("./smart-sessions");
|
|
|
155
154
|
(0, vitest_1.expect)((0, viem_1.isHex)(sessionData.userOpPolicies[1].initData)).toEqual(true);
|
|
156
155
|
});
|
|
157
156
|
(0, vitest_1.test)('with action policy', async () => {
|
|
158
|
-
const call = await (0, smart_sessions_2.getEnableSessionCall)(
|
|
157
|
+
const call = await (0, smart_sessions_2.getEnableSessionCall)({
|
|
159
158
|
owners: {
|
|
160
159
|
type: 'ecdsa',
|
|
161
160
|
accounts: [consts_1.accountA],
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rhinestone/sdk",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.3",
|
|
4
4
|
"description": "End-to-end chain abstraction and modularity toolkit",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Rhinestone",
|
|
@@ -45,6 +45,11 @@
|
|
|
45
45
|
"import": "./dist/src/actions/passkeys.js",
|
|
46
46
|
"require": "./dist/src/actions/passkeys.js"
|
|
47
47
|
},
|
|
48
|
+
"./actions/smart-sessions": {
|
|
49
|
+
"types": "./dist/src/actions/smart-sessions.d.ts",
|
|
50
|
+
"import": "./dist/src/actions/smart-sessions.js",
|
|
51
|
+
"require": "./dist/src/actions/smart-sessions.js"
|
|
52
|
+
},
|
|
48
53
|
"./actions/recovery": {
|
|
49
54
|
"types": "./dist/src/actions/recovery.d.ts",
|
|
50
55
|
"import": "./dist/src/actions/recovery.js",
|
|
@@ -85,6 +90,11 @@
|
|
|
85
90
|
"import": "./dist/src/actions/passkeys.js",
|
|
86
91
|
"require": "./dist/src/actions/passkeys.js"
|
|
87
92
|
},
|
|
93
|
+
"./dist/src/actions/smart-sessions": {
|
|
94
|
+
"types": "./dist/src/actions/smart-sessions.d.ts",
|
|
95
|
+
"import": "./dist/src/actions/smart-sessions.js",
|
|
96
|
+
"require": "./dist/src/actions/smart-sessions.js"
|
|
97
|
+
},
|
|
88
98
|
"./dist/src/actions/recovery": {
|
|
89
99
|
"types": "./dist/src/actions/recovery.d.ts",
|
|
90
100
|
"import": "./dist/src/actions/recovery.js",
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import type { Hex } from 'viem';
|
|
2
|
-
import type { SessionDetails } from '../execution/smart-session';
|
|
3
|
-
/**
|
|
4
|
-
* Encode a smart session signature
|
|
5
|
-
* @param sessionDetails Session details
|
|
6
|
-
* @param sessionSignature Session signature
|
|
7
|
-
* @returns Encoded smart session signature
|
|
8
|
-
*/
|
|
9
|
-
declare function encodeSmartSessionSignature(sessionDetails: SessionDetails, sessionSignature: Hex): `0x${string}`;
|
|
10
|
-
export { encodeSmartSessionSignature };
|
|
11
|
-
//# sourceMappingURL=smart-session.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"smart-session.d.ts","sourceRoot":"","sources":["../../../actions/smart-session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,MAAM,CAAA;AAC/B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAGhE;;;;;GAKG;AACH,iBAAS,2BAA2B,CAClC,cAAc,EAAE,cAAc,EAC9B,gBAAgB,EAAE,GAAG,iBAQtB;AAED,OAAO,EAAE,2BAA2B,EAAE,CAAA"}
|