@rhinestone/sdk 0.0.0-dev-20260204114155
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/README.md +83 -0
- package/dist/src/accounts/error.d.ts +114 -0
- package/dist/src/accounts/error.d.ts.map +1 -0
- package/dist/src/accounts/error.js +174 -0
- package/dist/src/accounts/index.d.ts +48 -0
- package/dist/src/accounts/index.d.ts.map +1 -0
- package/dist/src/accounts/index.js +643 -0
- package/dist/src/accounts/index.test.d.ts +2 -0
- package/dist/src/accounts/index.test.d.ts.map +1 -0
- package/dist/src/accounts/index.test.js +33 -0
- package/dist/src/accounts/json-rpc/index.d.ts +5 -0
- package/dist/src/accounts/json-rpc/index.d.ts.map +1 -0
- package/dist/src/accounts/json-rpc/index.js +20 -0
- package/dist/src/accounts/json-rpc/index.test.d.ts +2 -0
- package/dist/src/accounts/json-rpc/index.test.d.ts.map +1 -0
- package/dist/src/accounts/json-rpc/index.test.js +33 -0
- package/dist/src/accounts/json-rpc/providers.d.ts +5 -0
- package/dist/src/accounts/json-rpc/providers.d.ts.map +1 -0
- package/dist/src/accounts/json-rpc/providers.js +22 -0
- package/dist/src/accounts/json-rpc/providers.test.d.ts +2 -0
- package/dist/src/accounts/json-rpc/providers.test.d.ts.map +1 -0
- package/dist/src/accounts/json-rpc/providers.test.js +43 -0
- package/dist/src/accounts/kernel.d.ts +27 -0
- package/dist/src/accounts/kernel.d.ts.map +1 -0
- package/dist/src/accounts/kernel.js +281 -0
- package/dist/src/accounts/kernel.test.d.ts +2 -0
- package/dist/src/accounts/kernel.test.d.ts.map +1 -0
- package/dist/src/accounts/kernel.test.js +132 -0
- package/dist/src/accounts/nexus.d.ts +33 -0
- package/dist/src/accounts/nexus.d.ts.map +1 -0
- package/dist/src/accounts/nexus.js +455 -0
- package/dist/src/accounts/nexus.test.d.ts +2 -0
- package/dist/src/accounts/nexus.test.d.ts.map +1 -0
- package/dist/src/accounts/nexus.test.js +118 -0
- package/dist/src/accounts/passport.d.ts +9 -0
- package/dist/src/accounts/passport.d.ts.map +1 -0
- package/dist/src/accounts/passport.js +82 -0
- package/dist/src/accounts/safe.d.ts +33 -0
- package/dist/src/accounts/safe.d.ts.map +1 -0
- package/dist/src/accounts/safe.js +349 -0
- package/dist/src/accounts/safe.test.d.ts +2 -0
- package/dist/src/accounts/safe.test.d.ts.map +1 -0
- package/dist/src/accounts/safe.test.js +118 -0
- package/dist/src/accounts/signing/common.d.ts +27 -0
- package/dist/src/accounts/signing/common.d.ts.map +1 -0
- package/dist/src/accounts/signing/common.js +190 -0
- package/dist/src/accounts/signing/message.d.ts +5 -0
- package/dist/src/accounts/signing/message.d.ts.map +1 -0
- package/dist/src/accounts/signing/message.js +47 -0
- package/dist/src/accounts/signing/passkeys.d.ts +36 -0
- package/dist/src/accounts/signing/passkeys.d.ts.map +1 -0
- package/dist/src/accounts/signing/passkeys.js +125 -0
- package/dist/src/accounts/signing/passkeys.test.d.ts +2 -0
- package/dist/src/accounts/signing/passkeys.test.d.ts.map +1 -0
- package/dist/src/accounts/signing/passkeys.test.js +88 -0
- package/dist/src/accounts/signing/typedData.d.ts +5 -0
- package/dist/src/accounts/signing/typedData.d.ts.map +1 -0
- package/dist/src/accounts/signing/typedData.js +35 -0
- package/dist/src/accounts/startale.d.ts +25 -0
- package/dist/src/accounts/startale.d.ts.map +1 -0
- package/dist/src/accounts/startale.js +112 -0
- package/dist/src/accounts/startale.test.d.ts +2 -0
- package/dist/src/accounts/startale.test.d.ts.map +1 -0
- package/dist/src/accounts/startale.test.js +92 -0
- package/dist/src/accounts/utils.d.ts +33 -0
- package/dist/src/accounts/utils.d.ts.map +1 -0
- package/dist/src/accounts/utils.js +208 -0
- package/dist/src/accounts/utils.test.d.ts +2 -0
- package/dist/src/accounts/utils.test.d.ts.map +1 -0
- package/dist/src/accounts/utils.test.js +49 -0
- package/dist/src/accounts/walletClient.d.ts +34 -0
- package/dist/src/accounts/walletClient.d.ts.map +1 -0
- package/dist/src/accounts/walletClient.js +121 -0
- package/dist/src/actions/compact.d.ts +15 -0
- package/dist/src/actions/compact.d.ts.map +1 -0
- package/dist/src/actions/compact.js +213 -0
- package/dist/src/actions/deployment.d.ts +19 -0
- package/dist/src/actions/deployment.d.ts.map +1 -0
- package/dist/src/actions/deployment.js +78 -0
- package/dist/src/actions/ecdsa.d.ts +35 -0
- package/dist/src/actions/ecdsa.d.ts.map +1 -0
- package/dist/src/actions/ecdsa.js +114 -0
- package/dist/src/actions/ecdsa.test.d.ts +2 -0
- package/dist/src/actions/ecdsa.test.d.ts.map +1 -0
- package/dist/src/actions/ecdsa.test.js +99 -0
- package/dist/src/actions/index.d.ts +17 -0
- package/dist/src/actions/index.d.ts.map +1 -0
- package/dist/src/actions/index.js +53 -0
- package/dist/src/actions/mfa.d.ts +37 -0
- package/dist/src/actions/mfa.d.ts.map +1 -0
- package/dist/src/actions/mfa.js +133 -0
- package/dist/src/actions/passkeys.d.ts +37 -0
- package/dist/src/actions/passkeys.d.ts.map +1 -0
- package/dist/src/actions/passkeys.js +129 -0
- package/dist/src/actions/passkeys.test.d.ts +2 -0
- package/dist/src/actions/passkeys.test.d.ts.map +1 -0
- package/dist/src/actions/passkeys.test.js +54 -0
- package/dist/src/actions/recovery.d.ts +33 -0
- package/dist/src/actions/recovery.d.ts.map +1 -0
- package/dist/src/actions/recovery.js +193 -0
- package/dist/src/actions/recovery.test.d.ts +2 -0
- package/dist/src/actions/recovery.test.d.ts.map +1 -0
- package/dist/src/actions/recovery.test.js +168 -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-sessions.js +52 -0
- package/dist/src/errors/index.d.ts +5 -0
- package/dist/src/errors/index.d.ts.map +1 -0
- package/dist/src/errors/index.js +54 -0
- package/dist/src/execution/compact.d.ts +148 -0
- package/dist/src/execution/compact.d.ts.map +1 -0
- package/dist/src/execution/compact.js +120 -0
- package/dist/src/execution/error.d.ts +55 -0
- package/dist/src/execution/error.d.ts.map +1 -0
- package/dist/src/execution/error.js +78 -0
- package/dist/src/execution/index.d.ts +41 -0
- package/dist/src/execution/index.d.ts.map +1 -0
- package/dist/src/execution/index.js +230 -0
- package/dist/src/execution/permit2.d.ts +143 -0
- package/dist/src/execution/permit2.d.ts.map +1 -0
- package/dist/src/execution/permit2.js +285 -0
- package/dist/src/execution/singleChainOps.d.ts +40 -0
- package/dist/src/execution/singleChainOps.d.ts.map +1 -0
- package/dist/src/execution/singleChainOps.js +46 -0
- package/dist/src/execution/types.d.ts +36 -0
- package/dist/src/execution/types.d.ts.map +1 -0
- package/dist/src/execution/types.js +2 -0
- package/dist/src/execution/utils.d.ts +87 -0
- package/dist/src/execution/utils.d.ts.map +1 -0
- package/dist/src/execution/utils.js +783 -0
- package/dist/src/index.d.ts +76 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +319 -0
- package/dist/src/modules/abi/smart-session-emissary.d.ts +696 -0
- package/dist/src/modules/abi/smart-session-emissary.d.ts.map +1 -0
- package/dist/src/modules/abi/smart-session-emissary.js +565 -0
- package/dist/src/modules/abi/smart-sessions.d.ts +104 -0
- package/dist/src/modules/abi/smart-sessions.d.ts.map +1 -0
- package/dist/src/modules/abi/smart-sessions.js +131 -0
- package/dist/src/modules/chain-abstraction.d.ts +5 -0
- package/dist/src/modules/chain-abstraction.d.ts.map +1 -0
- package/dist/src/modules/chain-abstraction.js +7 -0
- package/dist/src/modules/common.d.ts +30 -0
- package/dist/src/modules/common.d.ts.map +1 -0
- package/dist/src/modules/common.js +42 -0
- package/dist/src/modules/index.d.ts +11 -0
- package/dist/src/modules/index.d.ts.map +1 -0
- package/dist/src/modules/index.js +97 -0
- package/dist/src/modules/index.test.d.ts +2 -0
- package/dist/src/modules/index.test.d.ts.map +1 -0
- package/dist/src/modules/index.test.js +81 -0
- package/dist/src/modules/legacy.d.ts +10 -0
- package/dist/src/modules/legacy.d.ts.map +1 -0
- package/dist/src/modules/legacy.js +65 -0
- package/dist/src/modules/read.d.ts +9 -0
- package/dist/src/modules/read.d.ts.map +1 -0
- package/dist/src/modules/read.js +125 -0
- package/dist/src/modules/validators/core.d.ts +31 -0
- package/dist/src/modules/validators/core.d.ts.map +1 -0
- package/dist/src/modules/validators/core.js +284 -0
- package/dist/src/modules/validators/core.test.d.ts +2 -0
- package/dist/src/modules/validators/core.test.d.ts.map +1 -0
- package/dist/src/modules/validators/core.test.js +101 -0
- package/dist/src/modules/validators/index.d.ts +4 -0
- package/dist/src/modules/validators/index.d.ts.map +1 -0
- package/dist/src/modules/validators/index.js +10 -0
- package/dist/src/modules/validators/smart-sessions.d.ts +185 -0
- package/dist/src/modules/validators/smart-sessions.d.ts.map +1 -0
- package/dist/src/modules/validators/smart-sessions.js +624 -0
- package/dist/src/orchestrator/client.d.ts +22 -0
- package/dist/src/orchestrator/client.d.ts.map +1 -0
- package/dist/src/orchestrator/client.js +360 -0
- package/dist/src/orchestrator/consts.d.ts +5 -0
- package/dist/src/orchestrator/consts.d.ts.map +1 -0
- package/dist/src/orchestrator/consts.js +9 -0
- package/dist/src/orchestrator/error.d.ts +242 -0
- package/dist/src/orchestrator/error.d.ts.map +1 -0
- package/dist/src/orchestrator/error.js +283 -0
- package/dist/src/orchestrator/index.d.ts +10 -0
- package/dist/src/orchestrator/index.d.ts.map +1 -0
- package/dist/src/orchestrator/index.js +58 -0
- package/dist/src/orchestrator/registry.d.ts +22 -0
- package/dist/src/orchestrator/registry.d.ts.map +1 -0
- package/dist/src/orchestrator/registry.js +116 -0
- package/dist/src/orchestrator/registry.test.d.ts +2 -0
- package/dist/src/orchestrator/registry.test.d.ts.map +1 -0
- package/dist/src/orchestrator/registry.test.js +154 -0
- package/dist/src/orchestrator/types.d.ts +322 -0
- package/dist/src/orchestrator/types.d.ts.map +1 -0
- package/dist/src/orchestrator/types.js +31 -0
- package/dist/src/orchestrator/utils.d.ts +3 -0
- package/dist/src/orchestrator/utils.d.ts.map +1 -0
- package/dist/src/orchestrator/utils.js +24 -0
- package/dist/src/types.d.ts +296 -0
- package/dist/src/types.d.ts.map +1 -0
- package/dist/src/types.js +2 -0
- package/dist/src/utils/index.d.ts +26 -0
- package/dist/src/utils/index.d.ts.map +1 -0
- package/dist/src/utils/index.js +63 -0
- package/dist/test/consts.d.ts +10 -0
- package/dist/test/consts.d.ts.map +1 -0
- package/dist/test/consts.js +22 -0
- package/dist/test/utils/utils.d.ts +5 -0
- package/dist/test/utils/utils.d.ts.map +1 -0
- package/dist/test/utils/utils.js +20 -0
- package/package.json +161 -0
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { type Account, type Address, type Hex } from 'viem';
|
|
2
|
+
import type { ENSValidatorConfig, OwnableValidatorConfig, OwnerSet, RhinestoneAccountConfig, WebauthnValidatorConfig } from '../../types';
|
|
3
|
+
import { type Module } from '../common';
|
|
4
|
+
declare const SMART_SESSION_EMISSARY_ADDRESS_DEV: Address;
|
|
5
|
+
declare const SMART_SESSION_EMISSARY_ADDRESS: Address;
|
|
6
|
+
interface PublicKey {
|
|
7
|
+
prefix?: number | undefined;
|
|
8
|
+
x: bigint;
|
|
9
|
+
y: bigint;
|
|
10
|
+
}
|
|
11
|
+
interface WebauthnCredential {
|
|
12
|
+
pubKey: PublicKey | Hex | Uint8Array;
|
|
13
|
+
authenticatorId: string;
|
|
14
|
+
}
|
|
15
|
+
declare const OWNABLE_VALIDATOR_ADDRESS: Address;
|
|
16
|
+
declare const ENS_VALIDATOR_ADDRESS: Address;
|
|
17
|
+
declare const WEBAUTHN_VALIDATOR_ADDRESS: Address;
|
|
18
|
+
declare const MULTI_FACTOR_VALIDATOR_ADDRESS: Address;
|
|
19
|
+
declare const WEBAUTHN_V0_VALIDATOR_ADDRESS: Address;
|
|
20
|
+
declare function getOwnerValidator(config: RhinestoneAccountConfig): Module;
|
|
21
|
+
declare function getMockSignature(ownerSet: OwnerSet): Hex;
|
|
22
|
+
declare function getValidator(owners: OwnerSet): Module;
|
|
23
|
+
declare function getOwnableValidator(threshold: number, owners: Address[], address?: Address): Module;
|
|
24
|
+
declare function getENSValidator(threshold: number, owners: Address[], ownerExpirations: number[], address?: Address): Module;
|
|
25
|
+
declare function getWebAuthnValidator(threshold: number, webAuthnCredentials: WebauthnCredential[], address?: Address): Module;
|
|
26
|
+
declare function getMultiFactorValidator(threshold: number, validators: (OwnableValidatorConfig | ENSValidatorConfig | WebauthnValidatorConfig | null)[]): Module;
|
|
27
|
+
declare function getSocialRecoveryValidator(guardians: Account[], threshold?: number): Module;
|
|
28
|
+
declare function supportsEip712(validator: Module): boolean;
|
|
29
|
+
export { OWNABLE_VALIDATOR_ADDRESS, ENS_VALIDATOR_ADDRESS, WEBAUTHN_VALIDATOR_ADDRESS, MULTI_FACTOR_VALIDATOR_ADDRESS, WEBAUTHN_V0_VALIDATOR_ADDRESS, SMART_SESSION_EMISSARY_ADDRESS, SMART_SESSION_EMISSARY_ADDRESS_DEV, getOwnerValidator, getOwnableValidator, getENSValidator, getWebAuthnValidator, getMultiFactorValidator, getSocialRecoveryValidator, getValidator, getMockSignature, supportsEip712, };
|
|
30
|
+
export type { WebauthnCredential };
|
|
31
|
+
//# sourceMappingURL=core.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../../modules/validators/core.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,OAAO,EAKZ,KAAK,GAAG,EAKT,MAAM,MAAM,CAAA;AAGb,OAAO,KAAK,EACV,kBAAkB,EAClB,sBAAsB,EACtB,QAAQ,EACR,uBAAuB,EACvB,uBAAuB,EACxB,MAAM,aAAa,CAAA;AAEpB,OAAO,EAA4B,KAAK,MAAM,EAAE,MAAM,WAAW,CAAA;AAEjE,QAAA,MAAM,kCAAkC,EAAE,OACI,CAAA;AAC9C,QAAA,MAAM,8BAA8B,EAAE,OACQ,CAAA;AAE9C,UAAU,SAAS;IACjB,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC3B,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;CACV;AAED,UAAU,kBAAkB;IAC1B,MAAM,EAAE,SAAS,GAAG,GAAG,GAAG,UAAU,CAAA;IACpC,eAAe,EAAE,MAAM,CAAA;CACxB;AAED,QAAA,MAAM,yBAAyB,EAAE,OACa,CAAA;AAC9C,QAAA,MAAM,qBAAqB,EAAE,OACiB,CAAA;AAC9C,QAAA,MAAM,0BAA0B,EAAE,OACY,CAAA;AAG9C,QAAA,MAAM,8BAA8B,EAAE,OACQ,CAAA;AAO9C,QAAA,MAAM,6BAA6B,EAAE,OACS,CAAA;AAO9C,iBAAS,iBAAiB,CAAC,MAAM,EAAE,uBAAuB,UAKzD;AAED,iBAAS,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,GAAG,GAAG,CAmDjD;AAED,iBAAS,YAAY,CAAC,MAAM,EAAE,QAAQ,UA2BrC;AAED,iBAAS,mBAAmB,CAC1B,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,OAAO,EAAE,EACjB,OAAO,CAAC,EAAE,OAAO,GAChB,MAAM,CAiBR;AAED,iBAAS,eAAe,CACtB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,OAAO,EAAE,EACjB,gBAAgB,EAAE,MAAM,EAAE,EAC1B,OAAO,CAAC,EAAE,OAAO,GAChB,MAAM,CAsCR;AAED,iBAAS,oBAAoB,CAC3B,SAAS,EAAE,MAAM,EACjB,mBAAmB,EAAE,kBAAkB,EAAE,EACzC,OAAO,CAAC,EAAE,OAAO,GAChB,MAAM,CA4DR;AAED,iBAAS,uBAAuB,CAC9B,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,CACR,sBAAsB,GACtB,kBAAkB,GAClB,uBAAuB,GACvB,IAAI,CACP,EAAE,GACF,MAAM,CAgDR;AAED,iBAAS,0BAA0B,CACjC,SAAS,EAAE,OAAO,EAAE,EACpB,SAAS,SAAI,GACZ,MAAM,CAsBR;AAeD,iBAAS,cAAc,CAAC,SAAS,EAAE,MAAM,WAUxC;AAED,OAAO,EACL,yBAAyB,EACzB,qBAAqB,EACrB,0BAA0B,EAC1B,8BAA8B,EAC9B,6BAA6B,EAC7B,8BAA8B,EAC9B,kCAAkC,EAClC,iBAAiB,EACjB,mBAAmB,EACnB,eAAe,EACf,oBAAoB,EACpB,uBAAuB,EACvB,0BAA0B,EAC1B,YAAY,EACZ,gBAAgB,EAChB,cAAc,GACf,CAAA;AACD,YAAY,EAAE,kBAAkB,EAAE,CAAA"}
|
|
@@ -0,0 +1,284 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SMART_SESSION_EMISSARY_ADDRESS_DEV = exports.SMART_SESSION_EMISSARY_ADDRESS = exports.WEBAUTHN_V0_VALIDATOR_ADDRESS = exports.MULTI_FACTOR_VALIDATOR_ADDRESS = exports.WEBAUTHN_VALIDATOR_ADDRESS = exports.ENS_VALIDATOR_ADDRESS = exports.OWNABLE_VALIDATOR_ADDRESS = void 0;
|
|
4
|
+
exports.getOwnerValidator = getOwnerValidator;
|
|
5
|
+
exports.getOwnableValidator = getOwnableValidator;
|
|
6
|
+
exports.getENSValidator = getENSValidator;
|
|
7
|
+
exports.getWebAuthnValidator = getWebAuthnValidator;
|
|
8
|
+
exports.getMultiFactorValidator = getMultiFactorValidator;
|
|
9
|
+
exports.getSocialRecoveryValidator = getSocialRecoveryValidator;
|
|
10
|
+
exports.getValidator = getValidator;
|
|
11
|
+
exports.getMockSignature = getMockSignature;
|
|
12
|
+
exports.supportsEip712 = supportsEip712;
|
|
13
|
+
const viem_1 = require("viem");
|
|
14
|
+
const error_1 = require("../../accounts/error");
|
|
15
|
+
const common_1 = require("../common");
|
|
16
|
+
const SMART_SESSION_EMISSARY_ADDRESS_DEV = '0x60731de80d78548875f8a67c4fec2a8660194e0c';
|
|
17
|
+
exports.SMART_SESSION_EMISSARY_ADDRESS_DEV = SMART_SESSION_EMISSARY_ADDRESS_DEV;
|
|
18
|
+
const SMART_SESSION_EMISSARY_ADDRESS = '0xad568b3f825a8d5ffc06dd3253526b64d810ae89';
|
|
19
|
+
exports.SMART_SESSION_EMISSARY_ADDRESS = SMART_SESSION_EMISSARY_ADDRESS;
|
|
20
|
+
const OWNABLE_VALIDATOR_ADDRESS = '0x000000000013fdb5234e4e3162a810f54d9f7e98';
|
|
21
|
+
exports.OWNABLE_VALIDATOR_ADDRESS = OWNABLE_VALIDATOR_ADDRESS;
|
|
22
|
+
const ENS_VALIDATOR_ADDRESS = '0xdc38f07b060374b6480c4bf06231e7d10955bca4';
|
|
23
|
+
exports.ENS_VALIDATOR_ADDRESS = ENS_VALIDATOR_ADDRESS;
|
|
24
|
+
const WEBAUTHN_VALIDATOR_ADDRESS = '0x0000000000578c4cb0e472a5462da43c495c3f33';
|
|
25
|
+
exports.WEBAUTHN_VALIDATOR_ADDRESS = WEBAUTHN_VALIDATOR_ADDRESS;
|
|
26
|
+
const SOCIAL_RECOVERY_VALIDATOR_ADDRESS = '0xa04d053b3c8021e8d5bf641816c42daa75d8b597';
|
|
27
|
+
const MULTI_FACTOR_VALIDATOR_ADDRESS = '0xf6bdf42c9be18ceca5c06c42a43daf7fbbe7896b';
|
|
28
|
+
exports.MULTI_FACTOR_VALIDATOR_ADDRESS = MULTI_FACTOR_VALIDATOR_ADDRESS;
|
|
29
|
+
// Legacy
|
|
30
|
+
const OWNABLE_V0_VALIDATOR_ADDRESS = '0x2483da3a338895199e5e538530213157e931bf06';
|
|
31
|
+
const OWNABLE_BETA_VALIDATOR_ADDRESS = '0x0000000000e9e6e96bcaa3c113187cdb7e38aed9';
|
|
32
|
+
const WEBAUTHN_V0_VALIDATOR_ADDRESS = '0x0000000000578c4cb0e472a5462da43c495c3f33';
|
|
33
|
+
exports.WEBAUTHN_V0_VALIDATOR_ADDRESS = WEBAUTHN_V0_VALIDATOR_ADDRESS;
|
|
34
|
+
const ECDSA_MOCK_SIGNATURE = '0x81d4b4981670cb18f99f0b4a66446df1bf5b204d24cfcb659bf38ba27a4359b5711649ec2423c5e1247245eba2964679b6a1dbb85c992ae40b9b00c6935b02ff1b';
|
|
35
|
+
const WEBAUTHN_MOCK_SIGNATURE = '0x0000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000001b9b86eb98fda3ed4d797d9e690588dfadf17b329a76a47cec935bebf92d7ddc80000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000001700000000000000000000000000000000000000000000000000000000000000019b2e9410bb6850f9f660a03d609d5a844fb96bcdc87a15139b03ee22c70f469100d2b865a215c3bf786387064effa8fcedcb1d625b5148f8a1236d5e3ff11acf000000000000000000000000000000000000000000000000000000000000002549960de5880e8c687434170f6476605b8fe4aeb9a28632c7995cf3ba831d9763050000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000867b2274797065223a22776562617574686e2e676574222c226368616c6c656e6765223a22396a4546696a75684557724d34534f572d7443684a625545484550343456636a634a2d42716f3166544d38222c226f726967696e223a22687474703a2f2f6c6f63616c686f73743a38303830222c2263726f73734f726967696e223a66616c73657d0000000000000000000000000000000000000000000000000000';
|
|
36
|
+
function getOwnerValidator(config) {
|
|
37
|
+
if (!config.owners) {
|
|
38
|
+
throw new error_1.OwnersFieldRequiredError();
|
|
39
|
+
}
|
|
40
|
+
return getValidator(config.owners);
|
|
41
|
+
}
|
|
42
|
+
function getMockSignature(ownerSet) {
|
|
43
|
+
switch (ownerSet.type) {
|
|
44
|
+
case 'ecdsa':
|
|
45
|
+
case 'ens': {
|
|
46
|
+
// ENS validator uses same mock signature format as ECDSA for UserOps
|
|
47
|
+
const owners = ownerSet.accounts.map((account) => account.address);
|
|
48
|
+
const signatures = owners.map(() => ECDSA_MOCK_SIGNATURE);
|
|
49
|
+
return (0, viem_1.concat)(signatures);
|
|
50
|
+
}
|
|
51
|
+
case 'passkey':
|
|
52
|
+
return WEBAUTHN_MOCK_SIGNATURE;
|
|
53
|
+
case 'multi-factor': {
|
|
54
|
+
const mockValidators = ownerSet.validators.map((validator, index) => {
|
|
55
|
+
const validatorModule = getValidator(validator);
|
|
56
|
+
const signature = getMockSignature(validator);
|
|
57
|
+
return {
|
|
58
|
+
packedValidatorAndId: (0, viem_1.encodePacked)(['bytes12', 'address'], [
|
|
59
|
+
(0, viem_1.pad)((0, viem_1.toHex)(index), {
|
|
60
|
+
size: 12,
|
|
61
|
+
}),
|
|
62
|
+
validatorModule.address,
|
|
63
|
+
]),
|
|
64
|
+
data: signature,
|
|
65
|
+
};
|
|
66
|
+
});
|
|
67
|
+
return (0, viem_1.encodeAbiParameters)([
|
|
68
|
+
{
|
|
69
|
+
components: [
|
|
70
|
+
{
|
|
71
|
+
internalType: 'bytes32',
|
|
72
|
+
name: 'packedValidatorAndId',
|
|
73
|
+
type: 'bytes32',
|
|
74
|
+
},
|
|
75
|
+
{ internalType: 'bytes', name: 'data', type: 'bytes' },
|
|
76
|
+
],
|
|
77
|
+
name: 'validators',
|
|
78
|
+
type: 'tuple[]',
|
|
79
|
+
},
|
|
80
|
+
], [mockValidators]);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
function getValidator(owners) {
|
|
85
|
+
switch (owners.type) {
|
|
86
|
+
case 'ecdsa':
|
|
87
|
+
return getOwnableValidator(owners.threshold ?? 1, owners.accounts.map((account) => account.address), owners.module);
|
|
88
|
+
case 'ens':
|
|
89
|
+
return getENSValidator(owners.threshold ?? 1, owners.accounts.map((account) => account.address), owners.ownerExpirations, owners.module);
|
|
90
|
+
case 'passkey':
|
|
91
|
+
return getWebAuthnValidator(owners.threshold ?? 1, owners.accounts.map((account) => ({
|
|
92
|
+
pubKey: account.publicKey,
|
|
93
|
+
authenticatorId: account.id,
|
|
94
|
+
})));
|
|
95
|
+
case 'multi-factor': {
|
|
96
|
+
return getMultiFactorValidator(owners.threshold ?? 1, owners.validators);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
function getOwnableValidator(threshold, owners, address) {
|
|
101
|
+
return {
|
|
102
|
+
address: address ?? OWNABLE_VALIDATOR_ADDRESS,
|
|
103
|
+
initData: (0, viem_1.encodeAbiParameters)([
|
|
104
|
+
{ name: 'threshold', type: 'uint256' },
|
|
105
|
+
{ name: 'owners', type: 'address[]' },
|
|
106
|
+
], [
|
|
107
|
+
BigInt(threshold),
|
|
108
|
+
owners.map((owner) => owner.toLowerCase()).sort(),
|
|
109
|
+
]),
|
|
110
|
+
deInitData: '0x',
|
|
111
|
+
additionalContext: '0x',
|
|
112
|
+
type: common_1.MODULE_TYPE_ID_VALIDATOR,
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
function getENSValidator(threshold, owners, ownerExpirations, address) {
|
|
116
|
+
// format: (uint256 threshold, Owner[] owners)
|
|
117
|
+
// where Owner is a tuple of (address addr, uint48 expiration)
|
|
118
|
+
const ownerPairs = owners.map((owner, index) => ({
|
|
119
|
+
addr: owner.toLowerCase(),
|
|
120
|
+
expiration: ownerExpirations[index] ?? viem_1.maxUint48,
|
|
121
|
+
}));
|
|
122
|
+
// Sort by address to match ENS validator's expectations
|
|
123
|
+
const sortedPairs = ownerPairs.sort((a, b) => a.addr.localeCompare(b.addr));
|
|
124
|
+
const ownersWithExpiration = sortedPairs;
|
|
125
|
+
const initData = (0, viem_1.encodeAbiParameters)([
|
|
126
|
+
{ name: 'threshold', type: 'uint256' },
|
|
127
|
+
{
|
|
128
|
+
name: 'owners',
|
|
129
|
+
type: 'tuple[]',
|
|
130
|
+
components: [
|
|
131
|
+
{ name: 'addr', type: 'address' },
|
|
132
|
+
{ name: 'expiration', type: 'uint48' },
|
|
133
|
+
],
|
|
134
|
+
},
|
|
135
|
+
], [BigInt(threshold), ownersWithExpiration]);
|
|
136
|
+
const moduleAddress = address ?? ENS_VALIDATOR_ADDRESS;
|
|
137
|
+
return {
|
|
138
|
+
address: moduleAddress,
|
|
139
|
+
initData,
|
|
140
|
+
deInitData: '0x',
|
|
141
|
+
additionalContext: '0x',
|
|
142
|
+
type: common_1.MODULE_TYPE_ID_VALIDATOR,
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
function getWebAuthnValidator(threshold, webAuthnCredentials, address) {
|
|
146
|
+
function getPublicKey(webAuthnCredential) {
|
|
147
|
+
if (typeof webAuthnCredential.pubKey === 'string' ||
|
|
148
|
+
webAuthnCredential.pubKey instanceof Uint8Array) {
|
|
149
|
+
// It's a P256Credential
|
|
150
|
+
const { x, y, prefix } = parsePublicKey(webAuthnCredential.pubKey);
|
|
151
|
+
if (prefix && prefix !== 4) {
|
|
152
|
+
throw new Error('Only uncompressed public keys are supported');
|
|
153
|
+
}
|
|
154
|
+
return {
|
|
155
|
+
x,
|
|
156
|
+
y,
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
else {
|
|
160
|
+
// It's already a PublicKey
|
|
161
|
+
return webAuthnCredential.pubKey;
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
const publicKeys = webAuthnCredentials.map(getPublicKey);
|
|
165
|
+
return {
|
|
166
|
+
address: address ?? WEBAUTHN_VALIDATOR_ADDRESS,
|
|
167
|
+
initData: (0, viem_1.encodeAbiParameters)([
|
|
168
|
+
{ name: 'threshold', type: 'uint256' },
|
|
169
|
+
{
|
|
170
|
+
name: 'credentials',
|
|
171
|
+
type: 'tuple[]',
|
|
172
|
+
components: [
|
|
173
|
+
{
|
|
174
|
+
name: 'pubKeyX',
|
|
175
|
+
type: 'uint256',
|
|
176
|
+
},
|
|
177
|
+
{
|
|
178
|
+
name: 'pubKeyY',
|
|
179
|
+
type: 'uint256',
|
|
180
|
+
},
|
|
181
|
+
{
|
|
182
|
+
name: 'requireUV',
|
|
183
|
+
type: 'bool',
|
|
184
|
+
},
|
|
185
|
+
],
|
|
186
|
+
},
|
|
187
|
+
], [
|
|
188
|
+
BigInt(threshold),
|
|
189
|
+
publicKeys.map((publicKey) => ({
|
|
190
|
+
pubKeyX: publicKey.x,
|
|
191
|
+
pubKeyY: publicKey.y,
|
|
192
|
+
requireUV: false,
|
|
193
|
+
})),
|
|
194
|
+
]),
|
|
195
|
+
deInitData: '0x',
|
|
196
|
+
additionalContext: '0x',
|
|
197
|
+
type: common_1.MODULE_TYPE_ID_VALIDATOR,
|
|
198
|
+
};
|
|
199
|
+
}
|
|
200
|
+
function getMultiFactorValidator(threshold, validators) {
|
|
201
|
+
return {
|
|
202
|
+
address: MULTI_FACTOR_VALIDATOR_ADDRESS,
|
|
203
|
+
initData: (0, viem_1.encodePacked)(['uint8', 'bytes'], [
|
|
204
|
+
threshold,
|
|
205
|
+
(0, viem_1.encodeAbiParameters)([
|
|
206
|
+
{
|
|
207
|
+
components: [
|
|
208
|
+
{
|
|
209
|
+
internalType: 'bytes32',
|
|
210
|
+
name: 'packedValidatorAndId',
|
|
211
|
+
type: 'bytes32',
|
|
212
|
+
},
|
|
213
|
+
{ internalType: 'bytes', name: 'data', type: 'bytes' },
|
|
214
|
+
],
|
|
215
|
+
name: 'validators',
|
|
216
|
+
type: 'tuple[]',
|
|
217
|
+
},
|
|
218
|
+
], [
|
|
219
|
+
validators
|
|
220
|
+
.map((validator, index) => {
|
|
221
|
+
if (validator === null) {
|
|
222
|
+
return null;
|
|
223
|
+
}
|
|
224
|
+
const validatorModule = getValidator(validator);
|
|
225
|
+
return {
|
|
226
|
+
packedValidatorAndId: (0, viem_1.concat)([
|
|
227
|
+
(0, viem_1.pad)((0, viem_1.toHex)(index), {
|
|
228
|
+
size: 12,
|
|
229
|
+
}),
|
|
230
|
+
validatorModule.address,
|
|
231
|
+
]),
|
|
232
|
+
data: validatorModule.initData,
|
|
233
|
+
};
|
|
234
|
+
})
|
|
235
|
+
.filter((validator) => validator !== null),
|
|
236
|
+
]),
|
|
237
|
+
]),
|
|
238
|
+
deInitData: '0x',
|
|
239
|
+
additionalContext: '0x',
|
|
240
|
+
type: common_1.MODULE_TYPE_ID_VALIDATOR,
|
|
241
|
+
};
|
|
242
|
+
}
|
|
243
|
+
function getSocialRecoveryValidator(guardians, threshold = 1) {
|
|
244
|
+
const guardianAddresses = guardians.map((guardian) => guardian.address);
|
|
245
|
+
guardianAddresses.sort();
|
|
246
|
+
return {
|
|
247
|
+
type: common_1.MODULE_TYPE_ID_VALIDATOR,
|
|
248
|
+
address: SOCIAL_RECOVERY_VALIDATOR_ADDRESS,
|
|
249
|
+
initData: (0, viem_1.encodeAbiParameters)([
|
|
250
|
+
{
|
|
251
|
+
type: 'uint256',
|
|
252
|
+
name: 'threshold',
|
|
253
|
+
},
|
|
254
|
+
{
|
|
255
|
+
type: 'address[]',
|
|
256
|
+
name: 'guardians',
|
|
257
|
+
},
|
|
258
|
+
], [BigInt(threshold), guardianAddresses]),
|
|
259
|
+
deInitData: '0x',
|
|
260
|
+
additionalContext: '0x',
|
|
261
|
+
};
|
|
262
|
+
}
|
|
263
|
+
function parsePublicKey(publicKey) {
|
|
264
|
+
const bytes = typeof publicKey === 'string' ? (0, viem_1.hexToBytes)(publicKey) : publicKey;
|
|
265
|
+
const offset = bytes.length === 65 ? 1 : 0;
|
|
266
|
+
const x = bytes.slice(offset, 32 + offset);
|
|
267
|
+
const y = bytes.slice(32 + offset, 64 + offset);
|
|
268
|
+
return {
|
|
269
|
+
prefix: bytes.length === 65 ? bytes[0] : undefined,
|
|
270
|
+
x: BigInt((0, viem_1.bytesToHex)(x)),
|
|
271
|
+
y: BigInt((0, viem_1.bytesToHex)(y)),
|
|
272
|
+
};
|
|
273
|
+
}
|
|
274
|
+
function supportsEip712(validator) {
|
|
275
|
+
switch (validator.address.toLowerCase()) {
|
|
276
|
+
case OWNABLE_BETA_VALIDATOR_ADDRESS: // Ownable Validator V1-beta
|
|
277
|
+
case OWNABLE_V0_VALIDATOR_ADDRESS: // Ownable Validator V0
|
|
278
|
+
case SMART_SESSION_EMISSARY_ADDRESS: // Smart Sessions (not yet supported)
|
|
279
|
+
case SMART_SESSION_EMISSARY_ADDRESS_DEV: // Smart Sessions (not yet supported)
|
|
280
|
+
return false;
|
|
281
|
+
default:
|
|
282
|
+
return true;
|
|
283
|
+
}
|
|
284
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core.test.d.ts","sourceRoot":"","sources":["../../../../modules/validators/core.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const viem_1 = require("viem");
|
|
4
|
+
const vitest_1 = require("vitest");
|
|
5
|
+
const consts_1 = require("../../../test/consts");
|
|
6
|
+
const common_1 = require("../common");
|
|
7
|
+
const core_1 = require("./core");
|
|
8
|
+
(0, vitest_1.describe)('Validators Core', () => {
|
|
9
|
+
(0, vitest_1.describe)('Validator', () => {
|
|
10
|
+
(0, vitest_1.test)('ECDSA: single address', () => {
|
|
11
|
+
const validator = (0, core_1.getValidator)({
|
|
12
|
+
type: 'ecdsa',
|
|
13
|
+
accounts: [consts_1.accountA],
|
|
14
|
+
});
|
|
15
|
+
(0, vitest_1.expect)(validator.type).toEqual(common_1.MODULE_TYPE_ID_VALIDATOR);
|
|
16
|
+
(0, vitest_1.expect)((0, viem_1.isAddress)(validator.address)).toEqual(true);
|
|
17
|
+
(0, vitest_1.expect)(validator.address).toEqual('0x000000000013fdb5234e4e3162a810f54d9f7e98');
|
|
18
|
+
(0, vitest_1.expect)(validator.initData).toEqual('0x000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000001000000000000000000000000f6c02c78ded62973b43bfa523b247da099486936');
|
|
19
|
+
});
|
|
20
|
+
(0, vitest_1.test)('ECDSA: two addresses', () => {
|
|
21
|
+
const validator = (0, core_1.getValidator)({
|
|
22
|
+
type: 'ecdsa',
|
|
23
|
+
accounts: [consts_1.accountA, consts_1.accountB],
|
|
24
|
+
});
|
|
25
|
+
(0, vitest_1.expect)(validator.type).toEqual(common_1.MODULE_TYPE_ID_VALIDATOR);
|
|
26
|
+
(0, vitest_1.expect)((0, viem_1.isAddress)(validator.address)).toEqual(true);
|
|
27
|
+
(0, vitest_1.expect)(validator.address).toEqual('0x000000000013fdb5234e4e3162a810f54d9f7e98');
|
|
28
|
+
(0, vitest_1.expect)(validator.initData).toEqual('0x0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000020000000000000000000000006092086a3dc0020cd604a68fcf5d430007d51bb7000000000000000000000000f6c02c78ded62973b43bfa523b247da099486936');
|
|
29
|
+
});
|
|
30
|
+
(0, vitest_1.test)('ECDSA: three addresses, custom threshold', () => {
|
|
31
|
+
const validator = (0, core_1.getValidator)({
|
|
32
|
+
type: 'ecdsa',
|
|
33
|
+
accounts: [consts_1.accountA, consts_1.accountB, consts_1.accountC],
|
|
34
|
+
threshold: 2,
|
|
35
|
+
});
|
|
36
|
+
(0, vitest_1.expect)(validator.type).toEqual(common_1.MODULE_TYPE_ID_VALIDATOR);
|
|
37
|
+
(0, vitest_1.expect)((0, viem_1.isAddress)(validator.address)).toEqual(true);
|
|
38
|
+
(0, vitest_1.expect)(validator.address).toEqual('0x000000000013fdb5234e4e3162a810f54d9f7e98');
|
|
39
|
+
(0, vitest_1.expect)(validator.initData).toEqual('0x0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000030000000000000000000000006092086a3dc0020cd604a68fcf5d430007d51bb7000000000000000000000000c27b7578151c5ef713c62c65db09763d57ac3596000000000000000000000000f6c02c78ded62973b43bfa523b247da099486936');
|
|
40
|
+
});
|
|
41
|
+
(0, vitest_1.test)('Passkey', () => {
|
|
42
|
+
const validator = (0, core_1.getValidator)({
|
|
43
|
+
type: 'passkey',
|
|
44
|
+
accounts: [consts_1.passkeyAccount],
|
|
45
|
+
});
|
|
46
|
+
(0, vitest_1.expect)(validator.type).toEqual(common_1.MODULE_TYPE_ID_VALIDATOR);
|
|
47
|
+
(0, vitest_1.expect)((0, viem_1.isAddress)(validator.address)).toEqual(true);
|
|
48
|
+
(0, vitest_1.expect)(validator.address).toEqual('0x0000000000578c4cb0e472a5462da43c495c3f33');
|
|
49
|
+
(0, vitest_1.expect)(validator.initData).toEqual('0x000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000001580a9af0569ad3905b26a703201b358aa0904236642ebe79b22a19d00d3737637d46f725a5427ae45a9569259bf67e1e16b187d7b3ad1ed70138c4f0409677d10000000000000000000000000000000000000000000000000000000000000000');
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
(0, vitest_1.describe)('Mock Signature', () => {
|
|
53
|
+
(0, vitest_1.test)('ECDSA: single address', () => {
|
|
54
|
+
const signature = (0, core_1.getMockSignature)({
|
|
55
|
+
type: 'ecdsa',
|
|
56
|
+
accounts: [consts_1.accountA],
|
|
57
|
+
});
|
|
58
|
+
(0, vitest_1.expect)((0, viem_1.size)(signature)).toEqual(65);
|
|
59
|
+
});
|
|
60
|
+
(0, vitest_1.test)('ECDSA: multiple addresses', () => {
|
|
61
|
+
const signature = (0, core_1.getMockSignature)({
|
|
62
|
+
type: 'ecdsa',
|
|
63
|
+
accounts: [consts_1.accountA, consts_1.accountB, consts_1.accountC],
|
|
64
|
+
});
|
|
65
|
+
(0, vitest_1.expect)((0, viem_1.size)(signature)).toEqual(3 * 65);
|
|
66
|
+
});
|
|
67
|
+
(0, vitest_1.test)('Passkey', () => {
|
|
68
|
+
const signature = (0, core_1.getMockSignature)({
|
|
69
|
+
type: 'passkey',
|
|
70
|
+
accounts: [consts_1.passkeyAccount],
|
|
71
|
+
});
|
|
72
|
+
// Should have the proper schema
|
|
73
|
+
(0, viem_1.decodeAbiParameters)([
|
|
74
|
+
{
|
|
75
|
+
type: 'bytes',
|
|
76
|
+
name: 'authenticatorData',
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
type: 'string',
|
|
80
|
+
name: 'clientDataJSON',
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
type: 'uint256',
|
|
84
|
+
name: 'challengeIndex',
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
type: 'uint256',
|
|
88
|
+
name: 'typeIndex',
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
type: 'uint256',
|
|
92
|
+
name: 'r',
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
type: 'uint256',
|
|
96
|
+
name: 's',
|
|
97
|
+
},
|
|
98
|
+
], signature);
|
|
99
|
+
});
|
|
100
|
+
});
|
|
101
|
+
});
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { getMockSignature, getOwnerValidator } from './core';
|
|
2
|
+
import { getEnableSessionCall, getPermissionId, getSmartSessionValidator } from './smart-sessions';
|
|
3
|
+
export { getOwnerValidator, getSmartSessionValidator, getEnableSessionCall, getPermissionId, getMockSignature, };
|
|
4
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../modules/validators/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAA;AAC5D,OAAO,EACL,oBAAoB,EACpB,eAAe,EACf,wBAAwB,EACzB,MAAM,kBAAkB,CAAA;AAEzB,OAAO,EACL,iBAAiB,EACjB,wBAAwB,EACxB,oBAAoB,EACpB,eAAe,EACf,gBAAgB,GACjB,CAAA"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getMockSignature = exports.getPermissionId = exports.getEnableSessionCall = exports.getSmartSessionValidator = exports.getOwnerValidator = void 0;
|
|
4
|
+
const core_1 = require("./core");
|
|
5
|
+
Object.defineProperty(exports, "getMockSignature", { enumerable: true, get: function () { return core_1.getMockSignature; } });
|
|
6
|
+
Object.defineProperty(exports, "getOwnerValidator", { enumerable: true, get: function () { return core_1.getOwnerValidator; } });
|
|
7
|
+
const smart_sessions_1 = require("./smart-sessions");
|
|
8
|
+
Object.defineProperty(exports, "getEnableSessionCall", { enumerable: true, get: function () { return smart_sessions_1.getEnableSessionCall; } });
|
|
9
|
+
Object.defineProperty(exports, "getPermissionId", { enumerable: true, get: function () { return smart_sessions_1.getPermissionId; } });
|
|
10
|
+
Object.defineProperty(exports, "getSmartSessionValidator", { enumerable: true, get: function () { return smart_sessions_1.getSmartSessionValidator; } });
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
import { type Address, type Hex, type TypedDataDefinition } from 'viem';
|
|
2
|
+
import type { ProviderConfig, RhinestoneAccountConfig, RhinestoneConfig, Session, SignerSet } from '../../types';
|
|
3
|
+
import { type Module } from '../common';
|
|
4
|
+
import { SMART_SESSION_EMISSARY_ADDRESS, SMART_SESSION_EMISSARY_ADDRESS_DEV } from './core';
|
|
5
|
+
interface SessionData {
|
|
6
|
+
sessionValidator: Address;
|
|
7
|
+
sessionValidatorInitData: Hex;
|
|
8
|
+
salt: Hex;
|
|
9
|
+
erc7739Policies: {
|
|
10
|
+
allowedERC7739Content: readonly AllowedERC7739Content[];
|
|
11
|
+
erc1271Policies: readonly ERC1271Policy[];
|
|
12
|
+
};
|
|
13
|
+
actions: readonly ActionData[];
|
|
14
|
+
claimPolicies: readonly PolicyData[];
|
|
15
|
+
}
|
|
16
|
+
interface ERC1271Policy {
|
|
17
|
+
policy: Address;
|
|
18
|
+
initData: Hex;
|
|
19
|
+
}
|
|
20
|
+
interface AllowedERC7739Content {
|
|
21
|
+
appDomainSeparator: Hex;
|
|
22
|
+
contentNames: readonly string[];
|
|
23
|
+
}
|
|
24
|
+
interface ActionData {
|
|
25
|
+
actionTargetSelector: Hex;
|
|
26
|
+
actionTarget: Address;
|
|
27
|
+
actionPolicies: readonly PolicyData[];
|
|
28
|
+
}
|
|
29
|
+
interface PolicyData {
|
|
30
|
+
policy: Address;
|
|
31
|
+
initData: Hex;
|
|
32
|
+
}
|
|
33
|
+
type SmartSessionModeType = typeof SMART_SESSION_MODE_USE | typeof SMART_SESSION_MODE_ENABLE;
|
|
34
|
+
interface ChainDigest {
|
|
35
|
+
chainId: bigint;
|
|
36
|
+
sessionDigest: Hex;
|
|
37
|
+
}
|
|
38
|
+
interface SignedPermissions {
|
|
39
|
+
permitGenericPolicy: boolean;
|
|
40
|
+
permitAdminAccess: boolean;
|
|
41
|
+
ignoreSecurityAttestations: boolean;
|
|
42
|
+
permitERC4337Paymaster: boolean;
|
|
43
|
+
userOpPolicies: readonly PolicyData[];
|
|
44
|
+
erc7739Policies: ERC7739Data;
|
|
45
|
+
actions: readonly ActionData[];
|
|
46
|
+
}
|
|
47
|
+
interface SignedSession {
|
|
48
|
+
account: Address;
|
|
49
|
+
permissions: SignedPermissions;
|
|
50
|
+
sessionValidator: Address;
|
|
51
|
+
sessionValidatorInitData: Hex;
|
|
52
|
+
salt: Hex;
|
|
53
|
+
smartSession: Address;
|
|
54
|
+
nonce: bigint;
|
|
55
|
+
}
|
|
56
|
+
interface ChainSession {
|
|
57
|
+
chainId: bigint;
|
|
58
|
+
session: SignedSession;
|
|
59
|
+
}
|
|
60
|
+
interface ERC7739Data {
|
|
61
|
+
allowedERC7739Content: readonly ERC7739Context[];
|
|
62
|
+
erc1271Policies: readonly PolicyData[];
|
|
63
|
+
}
|
|
64
|
+
interface ERC7739Context {
|
|
65
|
+
appDomainSeparator: Hex;
|
|
66
|
+
contentName: readonly string[];
|
|
67
|
+
}
|
|
68
|
+
interface SessionDetails {
|
|
69
|
+
nonces: bigint[];
|
|
70
|
+
hashesAndChainIds: ChainDigest[];
|
|
71
|
+
data: TypedDataDefinition<typeof types, 'MultiChainSession'>;
|
|
72
|
+
}
|
|
73
|
+
declare const types: {
|
|
74
|
+
readonly PolicyData: readonly [{
|
|
75
|
+
readonly name: "policy";
|
|
76
|
+
readonly type: "address";
|
|
77
|
+
}, {
|
|
78
|
+
readonly name: "initData";
|
|
79
|
+
readonly type: "bytes";
|
|
80
|
+
}];
|
|
81
|
+
readonly ActionData: readonly [{
|
|
82
|
+
readonly name: "actionTargetSelector";
|
|
83
|
+
readonly type: "bytes4";
|
|
84
|
+
}, {
|
|
85
|
+
readonly name: "actionTarget";
|
|
86
|
+
readonly type: "address";
|
|
87
|
+
}, {
|
|
88
|
+
readonly name: "actionPolicies";
|
|
89
|
+
readonly type: "PolicyData[]";
|
|
90
|
+
}];
|
|
91
|
+
readonly ERC7739Context: readonly [{
|
|
92
|
+
readonly name: "appDomainSeparator";
|
|
93
|
+
readonly type: "bytes32";
|
|
94
|
+
}, {
|
|
95
|
+
readonly name: "contentName";
|
|
96
|
+
readonly type: "string[]";
|
|
97
|
+
}];
|
|
98
|
+
readonly ERC7739Data: readonly [{
|
|
99
|
+
readonly name: "allowedERC7739Content";
|
|
100
|
+
readonly type: "ERC7739Context[]";
|
|
101
|
+
}, {
|
|
102
|
+
readonly name: "erc1271Policies";
|
|
103
|
+
readonly type: "PolicyData[]";
|
|
104
|
+
}];
|
|
105
|
+
readonly LockTagData: readonly [{
|
|
106
|
+
readonly name: "lockTag";
|
|
107
|
+
readonly type: "bytes12";
|
|
108
|
+
}, {
|
|
109
|
+
readonly name: "claimPolicies";
|
|
110
|
+
readonly type: "PolicyData[]";
|
|
111
|
+
}];
|
|
112
|
+
readonly SignedPermissions: readonly [{
|
|
113
|
+
readonly name: "actions";
|
|
114
|
+
readonly type: "ActionData[]";
|
|
115
|
+
}, {
|
|
116
|
+
readonly name: "erc7739Policies";
|
|
117
|
+
readonly type: "ERC7739Data";
|
|
118
|
+
}, {
|
|
119
|
+
readonly name: "lockTagPolicies";
|
|
120
|
+
readonly type: "LockTagData";
|
|
121
|
+
}, {
|
|
122
|
+
readonly name: "permitGenericPolicy";
|
|
123
|
+
readonly type: "bool";
|
|
124
|
+
}];
|
|
125
|
+
readonly SignedSession: readonly [{
|
|
126
|
+
readonly name: "account";
|
|
127
|
+
readonly type: "address";
|
|
128
|
+
}, {
|
|
129
|
+
readonly name: "expires";
|
|
130
|
+
readonly type: "uint256";
|
|
131
|
+
}, {
|
|
132
|
+
readonly name: "nonce";
|
|
133
|
+
readonly type: "uint256";
|
|
134
|
+
}, {
|
|
135
|
+
readonly name: "permissions";
|
|
136
|
+
readonly type: "SignedPermissions";
|
|
137
|
+
}, {
|
|
138
|
+
readonly name: "salt";
|
|
139
|
+
readonly type: "bytes32";
|
|
140
|
+
}, {
|
|
141
|
+
readonly name: "sessionValidator";
|
|
142
|
+
readonly type: "address";
|
|
143
|
+
}, {
|
|
144
|
+
readonly name: "sessionValidatorInitData";
|
|
145
|
+
readonly type: "bytes";
|
|
146
|
+
}, {
|
|
147
|
+
readonly name: "smartSessionEmissary";
|
|
148
|
+
readonly type: "address";
|
|
149
|
+
}];
|
|
150
|
+
readonly ChainSession: readonly [{
|
|
151
|
+
readonly name: "chainId";
|
|
152
|
+
readonly type: "uint64";
|
|
153
|
+
}, {
|
|
154
|
+
readonly name: "session";
|
|
155
|
+
readonly type: "SignedSession";
|
|
156
|
+
}];
|
|
157
|
+
readonly MultiChainSession: readonly [{
|
|
158
|
+
readonly name: "sessionsAndChainIds";
|
|
159
|
+
readonly type: "ChainSession[]";
|
|
160
|
+
}];
|
|
161
|
+
};
|
|
162
|
+
declare const SMART_SESSION_MODE_USE = "0x00";
|
|
163
|
+
declare const SMART_SESSION_MODE_ENABLE = "0x01";
|
|
164
|
+
declare const SMART_SESSIONS_FALLBACK_TARGET_FLAG: Address;
|
|
165
|
+
declare const SMART_SESSIONS_FALLBACK_TARGET_SELECTOR_FLAG: Hex;
|
|
166
|
+
declare const SMART_SESSIONS_FALLBACK_TARGET_SELECTOR_FLAG_PERMITTED_TO_CALL_SMARTSESSION: Hex;
|
|
167
|
+
declare function packSignature(signers: SignerSet & {
|
|
168
|
+
type: 'experimental_session';
|
|
169
|
+
}, validatorSignature: Hex): Hex;
|
|
170
|
+
declare function getSessionDetails(account: Address, sessions: Session[], useDevContracts?: boolean): Promise<SessionDetails>;
|
|
171
|
+
declare function isSessionEnabled(account: Address, provider: ProviderConfig | undefined, session: Session, useDevContracts?: boolean): Promise<boolean>;
|
|
172
|
+
declare function signEnableSession(config: RhinestoneAccountConfig, details: SessionDetails): Promise<Hex>;
|
|
173
|
+
declare function getEnableSessionCall(account: Address, session: Session, enableSessionSignature: Hex, hashesAndChainIds: {
|
|
174
|
+
chainId: bigint;
|
|
175
|
+
sessionDigest: Hex;
|
|
176
|
+
}[], sessionToEnableIndex: number, useDevContracts?: boolean): Promise<{
|
|
177
|
+
to: `0x${string}`;
|
|
178
|
+
data: `0x${string}`;
|
|
179
|
+
}>;
|
|
180
|
+
declare function getSessionData(session: Session): SessionData;
|
|
181
|
+
declare function getPermissionId(session: Session): `0x${string}`;
|
|
182
|
+
declare function getSmartSessionValidator(config: RhinestoneConfig): Module | null;
|
|
183
|
+
export { SMART_SESSION_EMISSARY_ADDRESS, SMART_SESSION_EMISSARY_ADDRESS_DEV, SMART_SESSIONS_FALLBACK_TARGET_FLAG, SMART_SESSIONS_FALLBACK_TARGET_SELECTOR_FLAG, SMART_SESSIONS_FALLBACK_TARGET_SELECTOR_FLAG_PERMITTED_TO_CALL_SMARTSESSION, packSignature, getSessionData, getEnableSessionCall, getPermissionId, getSmartSessionValidator, getSessionDetails, isSessionEnabled, signEnableSession, };
|
|
184
|
+
export type { ChainSession, ChainDigest, SessionData, SmartSessionModeType, SessionDetails, };
|
|
185
|
+
//# sourceMappingURL=smart-sessions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"smart-sessions.d.ts","sourceRoot":"","sources":["../../../../modules/validators/smart-sessions.ts"],"names":[],"mappings":"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"}
|