@rhinestone/sdk 1.13.2 → 1.13.4
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 +1 -1
- package/dist/src/accounts/index.d.ts.map +1 -1
- package/dist/src/accounts/index.js +7 -7
- package/dist/src/accounts/signing/common.d.ts +5 -3
- package/dist/src/accounts/signing/common.d.ts.map +1 -1
- package/dist/src/accounts/signing/common.js +47 -23
- package/dist/src/accounts/signing/message.d.ts +2 -2
- package/dist/src/accounts/signing/message.d.ts.map +1 -1
- package/dist/src/accounts/signing/message.js +2 -2
- package/dist/src/accounts/signing/passkeys.d.ts +6 -1
- package/dist/src/accounts/signing/passkeys.d.ts.map +1 -1
- package/dist/src/accounts/signing/passkeys.js +36 -1
- package/dist/src/accounts/signing/typedData.d.ts +2 -2
- package/dist/src/accounts/signing/typedData.d.ts.map +1 -1
- package/dist/src/accounts/signing/typedData.js +2 -2
- package/dist/src/actions/mfa.d.ts +5 -4
- package/dist/src/actions/mfa.d.ts.map +1 -1
- package/dist/src/actions/mfa.js +5 -1
- package/dist/src/execution/utils.d.ts.map +1 -1
- package/dist/src/execution/utils.js +1 -1
- package/dist/src/modules/validators/core.d.ts +2 -1
- package/dist/src/modules/validators/core.d.ts.map +1 -1
- package/dist/src/modules/validators/core.js +101 -11
- package/dist/src/modules/validators/ordering.d.ts +4 -0
- package/dist/src/modules/validators/ordering.d.ts.map +1 -0
- package/dist/src/modules/validators/ordering.js +14 -0
- package/dist/src/orchestrator/consts.d.ts +1 -1
- package/dist/src/orchestrator/consts.js +1 -1
- package/package.json +2 -2
|
@@ -36,7 +36,7 @@ declare function getAddress(config: RhinestoneConfig): `0x${string}`;
|
|
|
36
36
|
declare function checkAddress(config: RhinestoneConfig): boolean;
|
|
37
37
|
declare function getEip1271Signature(config: RhinestoneConfig, signers: InternalSignerSet | undefined, chain: Chain, validator: ValidatorConfig, hash: Hex, transformSignature?: (signature: Hex) => Hex): Promise<Hex>;
|
|
38
38
|
declare function getEmissarySignature(config: RhinestoneConfig, signers: InternalSignerSet | undefined, chain: Chain, hash: Hex, transformSignature?: (signature: Hex) => Hex): Promise<Hex>;
|
|
39
|
-
declare function getTypedDataPackedSignature<typedData extends TypedData | Record<string, unknown> = TypedData, primaryType extends keyof typedData | 'EIP712Domain' = keyof typedData>(config: RhinestoneConfig, signers: InternalSignerSet | undefined, chain: Chain, validator: ValidatorConfig, parameters: HashTypedDataParameters<typedData, primaryType>, transformSignature?: (signature: Hex) => Hex): Promise<Hex>;
|
|
39
|
+
declare function getTypedDataPackedSignature<typedData extends TypedData | Record<string, unknown> = TypedData, primaryType extends keyof typedData | 'EIP712Domain' = keyof typedData>(config: RhinestoneConfig, signers: InternalSignerSet | undefined, chain: Chain, validator: ValidatorConfig, parameters: HashTypedDataParameters<typedData, primaryType>, configuredOwners?: OwnerSet, transformSignature?: (signature: Hex) => Hex): Promise<Hex>;
|
|
40
40
|
declare function isDeployed(config: RhinestoneConfig, chain: Chain): Promise<boolean>;
|
|
41
41
|
declare function deploy(config: RhinestoneConfig, chain: Chain, params?: {
|
|
42
42
|
sponsored?: boolean;
|
|
@@ -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,EAGR,KAAK,YAAY,EAEjB,KAAK,SAAS,EAGf,MAAM,MAAM,CAAA;AAUb,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAI/C,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAA;AACpF,OAAO,KAAK,EACV,qBAAqB,EACrB,IAAI,EACJ,QAAQ,EACR,gBAAgB,EAChB,SAAS,EACV,MAAM,UAAU,CAAA;AACjB,OAAO,EACL,qCAAqC,EACrC,YAAY,EAEZ,6BAA6B,EAC7B,8BAA8B,EAC9B,kCAAkC,EAClC,8BAA8B,EAC9B,kCAAkC,EAClC,2BAA2B,EAC3B,wCAAwC,EACxC,4BAA4B,EAC5B,cAAc,EACd,mCAAmC,EACnC,wBAAwB,EACxB,kCAAkC,EAClC,4BAA4B,EAC5B,mCAAmC,EACpC,MAAM,SAAS,CAAA;AA6DhB,OAAO,EAGL,KAAK,eAAe,EACrB,MAAM,SAAS,CAAA;AAEhB,KAAK,iBAAiB,GAAG,SAAS,GAAG,wBAAwB,CAAA;AAiD7D,iBAAS,WAAW,CAAC,MAAM,EAAE,gBAAgB;;;;;cAkB5C;AAED,iBAAS,aAAa,CAAC,MAAM,EAAE,gBAAgB;;;;;cAkB9C;AAED,iBAAe,mBAAmB,CAAC,MAAM,EAAE,gBAAgB,0BAuB1D;AAED,iBAAS,kBAAkB,CAAC,MAAM,EAAE,gBAAgB,EAAE,SAAS,EAAE,GAAG;;;EAgBnE;AAED,iBAAS,eAAe,CAAC,MAAM,EAAE,gBAAgB,EAAE,KAAK,EAAE,KAAK;;;;;;EA6B9D;AAED,iBAAS,0BAA0B,CACjC,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,MAAM,GACb,IAAI,EAAE,CAoCR;AAOD,iBAAe,6BAA6B,CAC1C,MAAM,EAAE,gBAAgB,EACxB,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,EAAE,CAAC,CAkCjB;AAED,iBAAS,4BAA4B,CACnC,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,MAAM,GACb,IAAI,EAAE,CA6BR;AAED,iBAAS,UAAU,CAAC,MAAM,EAAE,gBAAgB,iBAoC3C;AAED,iBAAS,YAAY,CAAC,MAAM,EAAE,gBAAgB,WAS7C;AAGD,iBAAe,mBAAmB,CAChC,MAAM,EAAE,gBAAgB,EACxB,OAAO,EAAE,iBAAiB,GAAG,SAAS,EACtC,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,eAAe,EAC1B,IAAI,EAAE,GAAG,EACT,kBAAkB,GAAE,CAAC,SAAS,EAAE,GAAG,KAAK,GAA8B,GACrE,OAAO,CAAC,GAAG,CAAC,CA+Cd;AAGD,iBAAe,oBAAoB,CACjC,MAAM,EAAE,gBAAgB,EACxB,OAAO,EAAE,iBAAiB,GAAG,SAAS,EACtC,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,GAAG,EACT,kBAAkB,GAAE,CAAC,SAAS,EAAE,GAAG,KAAK,GAA8B,GACrE,OAAO,CAAC,GAAG,CAAC,CAWd;AAGD,iBAAe,2BAA2B,CACxC,SAAS,SAAS,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EACjE,WAAW,SAAS,MAAM,SAAS,GAAG,cAAc,GAAG,MAAM,SAAS,EAEtE,MAAM,EAAE,gBAAgB,EACxB,OAAO,EAAE,iBAAiB,GAAG,SAAS,EACtC,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,eAAe,EAC1B,UAAU,EAAE,uBAAuB,CAAC,SAAS,EAAE,WAAW,CAAC,EAC3D,kBAAkB,GAAE,CAAC,SAAS,EAAE,GAAG,KAAK,GAA8B,GACrE,OAAO,CAAC,GAAG,CAAC,CAqDd;AAED,iBAAe,UAAU,CAAC,MAAM,EAAE,gBAAgB,EAAE,KAAK,EAAE,KAAK,oBAmB/D;AAED,iBAAe,MAAM,CACnB,MAAM,EAAE,gBAAgB,EACxB,KAAK,EAAE,KAAK,EACZ,MAAM,CAAC,EAAE;IACP,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,oBAAoB,CAAC,EAAE,GAAG,CAAA;CAC3B,GACA,OAAO,CAAC,OAAO,CAAC,CAoClB;AAKD,iBAAe,KAAK,CAAC,MAAM,EAAE,gBAAgB,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CA0E7E;AAgED,iBAAe,kBAAkB,CAC/B,MAAM,EAAE,gBAAgB,EACxB,SAAS,EAAE,GAAG,EACd,KAAK,EAAE,KAAK,GACX,OAAO,CAAC,GAAG,CAAC,CA4Bd;AAED,iBAAe,eAAe,CAC5B,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../accounts/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -359,7 +359,7 @@ async function getEip1271Signature(config, signers, chain, validator, hash, tran
|
|
|
359
359
|
throw new error_1.EoaSigningNotSupportedError('packed signatures');
|
|
360
360
|
}
|
|
361
361
|
signers = signers ?? (0, common_1.convertOwnerSetToSignerSet)(config.owners);
|
|
362
|
-
const signFn = (hash) => (0, message_1.sign)(signers, chain, address, hash, false);
|
|
362
|
+
const signFn = (hash) => (0, message_1.sign)(signers, config.owners, chain, address, hash, false);
|
|
363
363
|
const account = getAccountProvider(config);
|
|
364
364
|
const address = getAddress(config);
|
|
365
365
|
switch (account.type) {
|
|
@@ -400,18 +400,18 @@ async function getEmissarySignature(config, signers, chain, hash, transformSigna
|
|
|
400
400
|
}
|
|
401
401
|
signers = signers ?? (0, common_1.convertOwnerSetToSignerSet)(config.owners);
|
|
402
402
|
const address = getAddress(config);
|
|
403
|
-
const signFn = (hash) => (0, message_1.sign)(signers, chain, address, hash, false);
|
|
403
|
+
const signFn = (hash) => (0, message_1.sign)(signers, config.owners, chain, address, hash, false);
|
|
404
404
|
const signature = await signFn(hash);
|
|
405
405
|
return transformSignature(signature);
|
|
406
406
|
}
|
|
407
407
|
// Signs and packs a signature to be EIP-1271 compatible
|
|
408
|
-
async function getTypedDataPackedSignature(config, signers, chain, validator, parameters, transformSignature = (signature) => signature) {
|
|
408
|
+
async function getTypedDataPackedSignature(config, signers, chain, validator, parameters, configuredOwners = config.owners, transformSignature = (signature) => signature) {
|
|
409
409
|
if (config.account?.type === 'eoa') {
|
|
410
410
|
throw new error_1.EoaSigningNotSupportedError('packed signatures');
|
|
411
411
|
}
|
|
412
412
|
const address = getAddress(config);
|
|
413
413
|
signers = signers ?? (0, common_1.convertOwnerSetToSignerSet)(config.owners);
|
|
414
|
-
const signFn = (parameters) => (0, typedData_1.sign)(signers, chain, address, parameters);
|
|
414
|
+
const signFn = (parameters) => (0, typedData_1.sign)(signers, configuredOwners, chain, address, parameters);
|
|
415
415
|
const account = getAccountProvider(config);
|
|
416
416
|
switch (account.type) {
|
|
417
417
|
case 'safe': {
|
|
@@ -429,7 +429,7 @@ async function getTypedDataPackedSignature(config, signers, chain, validator, pa
|
|
|
429
429
|
}
|
|
430
430
|
case 'kernel': {
|
|
431
431
|
const address = getAddress(config);
|
|
432
|
-
const signMessageFn = (hash) => (0, message_1.sign)(signers, chain, address, hash, false);
|
|
432
|
+
const signMessageFn = (hash) => (0, message_1.sign)(signers, configuredOwners, chain, address, hash, false);
|
|
433
433
|
const signature = await signMessageFn((0, kernel_1.wrapMessageHash)((0, viem_1.hashTypedData)(parameters), address));
|
|
434
434
|
return (0, kernel_1.packSignature)(signature, validator, transformSignature);
|
|
435
435
|
}
|
|
@@ -653,7 +653,7 @@ async function getSmartAccount(config, client, chain) {
|
|
|
653
653
|
const address = getAddress(config);
|
|
654
654
|
const ownerValidator = (0, validators_1.getOwnerValidator)(config);
|
|
655
655
|
const signers = (0, common_1.convertOwnerSetToSignerSet)(config.owners);
|
|
656
|
-
const signFn = (hash) => (0, message_1.sign)(signers, chain, address, hash, true);
|
|
656
|
+
const signFn = (hash) => (0, message_1.sign)(signers, config.owners, chain, address, hash, true);
|
|
657
657
|
switch (account.type) {
|
|
658
658
|
case 'safe': {
|
|
659
659
|
return (0, safe_1.getSmartAccount)(client, address, config.owners, ownerValidator.address, signFn);
|
|
@@ -684,7 +684,7 @@ async function getGuardianSmartAccount(config, client, chain, guardians) {
|
|
|
684
684
|
type: 'guardians',
|
|
685
685
|
guardians: accounts,
|
|
686
686
|
};
|
|
687
|
-
const signFn = (hash) => (0, message_1.sign)(signers, chain, address, hash, true);
|
|
687
|
+
const signFn = (hash) => (0, message_1.sign)(signers, guardians, chain, address, hash, true);
|
|
688
688
|
const account = getAccountProvider(config);
|
|
689
689
|
switch (account.type) {
|
|
690
690
|
case 'safe': {
|
|
@@ -20,13 +20,15 @@ type SigningFunctions<T> = {
|
|
|
20
20
|
declare function signWithMultiFactorAuth<T>(signers: SignerSet & {
|
|
21
21
|
type: 'owner';
|
|
22
22
|
kind: 'multi-factor';
|
|
23
|
-
},
|
|
24
|
-
|
|
23
|
+
}, configuredOwners: OwnerSet & {
|
|
24
|
+
type: 'multi-factor';
|
|
25
|
+
}, chain: Chain, address: Address, params: T, isUserOpHash: boolean, signMain: (signers: SignerSet, configuredOwners: OwnerSet, chain: Chain, address: Address, params: T, isUserOpHash: boolean, statelessPasskey?: boolean) => Promise<Hex>): Promise<Hex>;
|
|
26
|
+
declare function signWithSession(signers: ResolvedSessionSignerSet, chain: Chain, address: Address, hash: Hex, signMain: (signers: SignerSet, configuredOwners: OwnerSet, chain: Chain, address: Address, hash: Hex, isUserOpHash: boolean) => Promise<Hex>): Promise<Hex>;
|
|
25
27
|
declare function signWithGuardians<T>(signers: SignerSet & {
|
|
26
28
|
type: 'guardians';
|
|
27
29
|
}, params: T, signingFunctions: SigningFunctions<T>): Promise<Hex>;
|
|
28
30
|
declare function signWithOwners<T>(signers: SignerSet & {
|
|
29
31
|
type: 'owner';
|
|
30
|
-
}, chain: Chain, address: Address, params: T, signingFunctions: SigningFunctions<T>, isUserOpHash: boolean, signMain: (signers: SignerSet, chain: Chain, address: Address, params: T, isUserOpHash: boolean) => Promise<Hex
|
|
32
|
+
}, configuredOwners: OwnerSet, chain: Chain, address: Address, params: T, signingFunctions: SigningFunctions<T>, isUserOpHash: boolean, signMain: (signers: SignerSet, configuredOwners: OwnerSet, chain: Chain, address: Address, params: T, isUserOpHash: boolean, statelessPasskey?: boolean) => Promise<Hex>, statelessPasskey?: boolean): Promise<Hex>;
|
|
31
33
|
export { convertOwnerSetToSignerSet, signWithMultiFactorAuth, signWithSession, signWithGuardians, signWithOwners, type SigningFunctions, };
|
|
32
34
|
//# sourceMappingURL=common.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../../accounts/signing/common.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,OAAO,EACZ,KAAK,KAAK,EAMV,KAAK,GAAG,EAKT,MAAM,MAAM,CAAA;AACb,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAQ/D,OAAO,EAEL,KAAK,wBAAwB,EAC9B,MAAM,yCAAyC,CAAA;AAChD,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../../accounts/signing/common.ts"],"names":[],"mappings":"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"}
|
|
@@ -76,15 +76,36 @@ function convertOwnerSetToSignerSet(owners) {
|
|
|
76
76
|
}
|
|
77
77
|
}
|
|
78
78
|
}
|
|
79
|
-
async function signWithMultiFactorAuth(signers, chain, address, params, isUserOpHash, signMain) {
|
|
80
|
-
const
|
|
81
|
-
|
|
82
|
-
|
|
79
|
+
async function signWithMultiFactorAuth(signers, configuredOwners, chain, address, params, isUserOpHash, signMain) {
|
|
80
|
+
const configuredValidators = signers.validators.map((validator) => {
|
|
81
|
+
const configuredValidator = configuredOwners.validators[Number(BigInt(validator.id))];
|
|
82
|
+
if (!configuredValidator) {
|
|
83
|
+
throw new Error(`Unknown multi-factor validator ID ${validator.id}`);
|
|
83
84
|
}
|
|
84
|
-
|
|
85
|
-
|
|
85
|
+
if (validator.type !== configuredValidator.type &&
|
|
86
|
+
!(validator.type === 'ecdsa' && configuredValidator.type === 'ens')) {
|
|
87
|
+
throw new Error(`Multi-factor validator ID ${validator.id} has wrong type`);
|
|
88
|
+
}
|
|
89
|
+
return configuredValidator;
|
|
90
|
+
});
|
|
91
|
+
const signatures = await Promise.all(signers.validators.map((validator, index) => {
|
|
92
|
+
const configuredValidator = configuredValidators[index];
|
|
93
|
+
const validatorSigners = validator.type === 'passkey'
|
|
94
|
+
? {
|
|
95
|
+
type: 'owner',
|
|
96
|
+
kind: 'passkey',
|
|
97
|
+
accounts: validator.accounts,
|
|
98
|
+
module: (0, core_1.getValidator)(configuredValidator).address,
|
|
99
|
+
}
|
|
100
|
+
: {
|
|
101
|
+
type: 'owner',
|
|
102
|
+
kind: 'ecdsa',
|
|
103
|
+
accounts: validator.accounts,
|
|
104
|
+
module: (0, core_1.getValidator)(configuredValidator).address,
|
|
105
|
+
};
|
|
106
|
+
return signMain(validatorSigners, configuredValidator, chain, address, params, isUserOpHash, configuredValidator.type === 'passkey');
|
|
86
107
|
}));
|
|
87
|
-
|
|
108
|
+
return (0, viem_1.encodeAbiParameters)([
|
|
88
109
|
{
|
|
89
110
|
components: [
|
|
90
111
|
{
|
|
@@ -98,20 +119,14 @@ async function signWithMultiFactorAuth(signers, chain, address, params, isUserOp
|
|
|
98
119
|
type: 'tuple[]',
|
|
99
120
|
},
|
|
100
121
|
], [
|
|
101
|
-
signers.validators.map((validator, index) => {
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
validatorModule.address,
|
|
109
|
-
]),
|
|
110
|
-
data: signatures[index],
|
|
111
|
-
};
|
|
112
|
-
}),
|
|
122
|
+
signers.validators.map((validator, index) => ({
|
|
123
|
+
packedValidatorAndId: (0, viem_1.concat)([
|
|
124
|
+
(0, viem_1.pad)((0, viem_1.toHex)(validator.id), { size: 12 }),
|
|
125
|
+
(0, core_1.getValidator)(configuredValidators[index]).address,
|
|
126
|
+
]),
|
|
127
|
+
data: signatures[index],
|
|
128
|
+
})),
|
|
113
129
|
]);
|
|
114
|
-
return data;
|
|
115
130
|
}
|
|
116
131
|
async function signWithSession(signers, chain, address, hash, signMain) {
|
|
117
132
|
const sessionSigners = convertOwnerSetToSignerSet(signers.session.owners);
|
|
@@ -120,14 +135,14 @@ async function signWithSession(signers, chain, address, hash, signMain) {
|
|
|
120
135
|
: (0, viem_1.hashMessage)({
|
|
121
136
|
raw: (0, viem_1.encodePacked)(['bytes32', 'bytes32'], [(0, viem_1.padHex)(address), hash]),
|
|
122
137
|
});
|
|
123
|
-
const validatorSignature = await signMain(sessionSigners, chain, address, signedHash, false);
|
|
138
|
+
const validatorSignature = await signMain(sessionSigners, signers.session.owners, chain, address, signedHash, false);
|
|
124
139
|
return (0, smart_sessions_1.packSignature)(signers, validatorSignature);
|
|
125
140
|
}
|
|
126
141
|
async function signWithGuardians(signers, params, signingFunctions) {
|
|
127
142
|
const signatures = await Promise.all(signers.guardians.map((account) => signingFunctions.signEcdsa(account, params, false)));
|
|
128
143
|
return (0, viem_1.concat)(signatures);
|
|
129
144
|
}
|
|
130
|
-
async function signWithOwners(signers, chain, address, params, signingFunctions, isUserOpHash, signMain) {
|
|
145
|
+
async function signWithOwners(signers, configuredOwners, chain, address, params, signingFunctions, isUserOpHash, signMain, statelessPasskey = false) {
|
|
131
146
|
async function signEcdsWithChain(account, params, updateV, chain) {
|
|
132
147
|
const client = account.client;
|
|
133
148
|
const transport = client?.transport;
|
|
@@ -176,13 +191,22 @@ async function signWithOwners(signers, chain, address, params, signingFunctions,
|
|
|
176
191
|
s,
|
|
177
192
|
};
|
|
178
193
|
});
|
|
194
|
+
if (statelessPasskey) {
|
|
195
|
+
if (configuredOwners.type !== 'passkey') {
|
|
196
|
+
throw new Error('Passkey factor configuration is missing');
|
|
197
|
+
}
|
|
198
|
+
return (0, passkeys_1.packStatelessSignature)(signers.accounts, configuredOwners.accounts, webAuthns);
|
|
199
|
+
}
|
|
179
200
|
if (signers.module?.toLowerCase() === core_1.WEBAUTHN_V0_VALIDATOR_ADDRESS) {
|
|
180
201
|
return (0, passkeys_1.packSignatureV0)(webAuthns[0], usePrecompile);
|
|
181
202
|
}
|
|
182
203
|
return (0, passkeys_1.packSignature)(credIds, usePrecompile, webAuthns);
|
|
183
204
|
}
|
|
184
205
|
case 'multi-factor': {
|
|
185
|
-
|
|
206
|
+
if (configuredOwners.type !== 'multi-factor') {
|
|
207
|
+
throw new Error('Multi-factor owner configuration is missing');
|
|
208
|
+
}
|
|
209
|
+
return signWithMultiFactorAuth(signers, configuredOwners, chain, address, params, isUserOpHash, signMain);
|
|
186
210
|
}
|
|
187
211
|
default: {
|
|
188
212
|
throw new Error('Unsupported owner kind');
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { type Address, type Chain, type Hex } from 'viem';
|
|
2
2
|
import type { ResolvedSessionSignerSet } from '../../modules/validators/smart-sessions';
|
|
3
|
-
import type { SignerSet } from '../../types';
|
|
3
|
+
import type { OwnerSet, SignerSet } from '../../types';
|
|
4
4
|
type InternalSignerSet = SignerSet | ResolvedSessionSignerSet;
|
|
5
|
-
declare function sign(signers: InternalSignerSet, chain: Chain, address: Address, hash: Hex, isUserOpHash: boolean): Promise<Hex>;
|
|
5
|
+
declare function sign(signers: InternalSignerSet, configuredOwners: OwnerSet, chain: Chain, address: Address, hash: Hex, isUserOpHash: boolean, statelessPasskey?: boolean): Promise<Hex>;
|
|
6
6
|
export { sign };
|
|
7
7
|
//# sourceMappingURL=message.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../../../../accounts/signing/message.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,OAAO,EACZ,KAAK,KAAK,EAEV,KAAK,GAAG,EAGT,MAAM,MAAM,CAAA;AAEb,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,yCAAyC,CAAA;AACvF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../../../../accounts/signing/message.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,OAAO,EACZ,KAAK,KAAK,EAEV,KAAK,GAAG,EAGT,MAAM,MAAM,CAAA;AAEb,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,yCAAyC,CAAA;AACvF,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAStD,KAAK,iBAAiB,GAAG,SAAS,GAAG,wBAAwB,CAAA;AAE7D,iBAAe,IAAI,CACjB,OAAO,EAAE,iBAAiB,EAC1B,gBAAgB,EAAE,QAAQ,EAC1B,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,GAAG,EACT,YAAY,EAAE,OAAO,EACrB,gBAAgB,UAAQ,GACvB,OAAO,CAAC,GAAG,CAAC,CAiCd;AA4BD,OAAO,EAAE,IAAI,EAAE,CAAA"}
|
|
@@ -4,14 +4,14 @@ exports.sign = sign;
|
|
|
4
4
|
const viem_1 = require("viem");
|
|
5
5
|
const error_1 = require("../error");
|
|
6
6
|
const common_1 = require("./common");
|
|
7
|
-
async function sign(signers, chain, address, hash, isUserOpHash) {
|
|
7
|
+
async function sign(signers, configuredOwners, chain, address, hash, isUserOpHash, statelessPasskey = false) {
|
|
8
8
|
const signingFunctions = {
|
|
9
9
|
signEcdsa: (account, hash, updateV) => signEcdsa(account, hash, updateV),
|
|
10
10
|
signPasskey: (account, hash) => signPasskey(account, hash),
|
|
11
11
|
};
|
|
12
12
|
switch (signers.type) {
|
|
13
13
|
case 'owner': {
|
|
14
|
-
return (0, common_1.signWithOwners)(signers, chain, address, hash, signingFunctions, isUserOpHash, sign);
|
|
14
|
+
return (0, common_1.signWithOwners)(signers, configuredOwners, chain, address, hash, signingFunctions, isUserOpHash, sign, statelessPasskey);
|
|
15
15
|
}
|
|
16
16
|
case 'experimental_session': {
|
|
17
17
|
return (0, common_1.signWithSession)(signers, chain, address, hash, sign);
|
|
@@ -24,6 +24,11 @@ declare function packSignature(credIds: Hex[], usePrecompile: boolean, webAuthns
|
|
|
24
24
|
r: bigint;
|
|
25
25
|
s: bigint;
|
|
26
26
|
}[]): Hex;
|
|
27
|
+
declare function packStatelessSignature(accounts: readonly {
|
|
28
|
+
publicKey: Hex;
|
|
29
|
+
}[], configuredAccounts: readonly {
|
|
30
|
+
publicKey: Hex;
|
|
31
|
+
}[], webAuthns: WebAuthnSignature[]): Hex;
|
|
27
32
|
declare function packSignatureV0(webauthn: {
|
|
28
33
|
authenticatorData: Hex;
|
|
29
34
|
clientDataJSON: string;
|
|
@@ -31,6 +36,6 @@ declare function packSignatureV0(webauthn: {
|
|
|
31
36
|
r: bigint;
|
|
32
37
|
s: bigint;
|
|
33
38
|
}, usePrecompiled: boolean): `0x${string}`;
|
|
34
|
-
export { parsePublicKey, parseSignature, generateCredentialId, packSignature, packSignatureV0, };
|
|
39
|
+
export { parsePublicKey, parseSignature, generateCredentialId, packSignature, packStatelessSignature, packSignatureV0, };
|
|
35
40
|
export type { WebAuthnSignature };
|
|
36
41
|
//# sourceMappingURL=passkeys.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"passkeys.d.ts","sourceRoot":"","sources":["../../../../accounts/signing/passkeys.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,OAAO,EAGZ,KAAK,GAAG,
|
|
1
|
+
{"version":3,"file":"passkeys.d.ts","sourceRoot":"","sources":["../../../../accounts/signing/passkeys.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,OAAO,EAGZ,KAAK,GAAG,EAIT,MAAM,MAAM,CAAA;AAIb,UAAU,iBAAiB;IACzB,iBAAiB,EAAE,GAAG,CAAA;IACtB,cAAc,EAAE,MAAM,CAAA;IACtB,cAAc,EAAE,MAAM,CAAA;IACtB,SAAS,EAAE,MAAM,CAAA;IACjB,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;CACV;AAED,iBAAS,cAAc,CAAC,SAAS,EAAE,GAAG,GAAG,UAAU,GAAG;IACpD,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;CACV,CAUA;AAED,iBAAS,cAAc,CAAC,SAAS,EAAE,GAAG,GAAG,UAAU,GAAG;IACpD,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;CACV,CASA;AAED,iBAAS,oBAAoB,CAC3B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,OAAO,iBAkBjB;AAED,iBAAS,aAAa,CACpB,OAAO,EAAE,GAAG,EAAE,EACd,aAAa,EAAE,OAAO,EACtB,SAAS,EAAE;IACT,iBAAiB,EAAE,GAAG,CAAA;IACtB,cAAc,EAAE,MAAM,CAAA;IACtB,cAAc,EAAE,MAAM,CAAA;IACtB,SAAS,EAAE,MAAM,CAAA;IACjB,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;CACV,EAAE,GACF,GAAG,CAqDL;AAED,iBAAS,sBAAsB,CAC7B,QAAQ,EAAE,SAAS;IAAE,SAAS,EAAE,GAAG,CAAA;CAAE,EAAE,EACvC,kBAAkB,EAAE,SAAS;IAAE,SAAS,EAAE,GAAG,CAAA;CAAE,EAAE,EACjD,SAAS,EAAE,iBAAiB,EAAE,GAC7B,GAAG,CA0CL;AAED,iBAAS,eAAe,CACtB,QAAQ,EAAE;IACR,iBAAiB,EAAE,GAAG,CAAA;IACtB,cAAc,EAAE,MAAM,CAAA;IACtB,SAAS,EAAE,MAAM,GAAG,MAAM,CAAA;IAC1B,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;CACV,EACD,cAAc,EAAE,OAAO,iBAqCxB;AAED,OAAO,EACL,cAAc,EACd,cAAc,EACd,oBAAoB,EACpB,aAAa,EACb,sBAAsB,EACtB,eAAe,GAChB,CAAA;AACD,YAAY,EAAE,iBAAiB,EAAE,CAAA"}
|
|
@@ -4,8 +4,10 @@ exports.parsePublicKey = parsePublicKey;
|
|
|
4
4
|
exports.parseSignature = parseSignature;
|
|
5
5
|
exports.generateCredentialId = generateCredentialId;
|
|
6
6
|
exports.packSignature = packSignature;
|
|
7
|
+
exports.packStatelessSignature = packStatelessSignature;
|
|
7
8
|
exports.packSignatureV0 = packSignatureV0;
|
|
8
9
|
const viem_1 = require("viem");
|
|
10
|
+
const ordering_1 = require("../../modules/validators/ordering");
|
|
9
11
|
function parsePublicKey(publicKey) {
|
|
10
12
|
const bytes = typeof publicKey === 'string' ? (0, viem_1.hexToBytes)(publicKey) : publicKey;
|
|
11
13
|
const offset = bytes.length === 65 ? 1 : 0;
|
|
@@ -44,7 +46,7 @@ function packSignature(credIds, usePrecompile, webAuthns) {
|
|
|
44
46
|
credId,
|
|
45
47
|
webAuthn: webAuthns[index],
|
|
46
48
|
}));
|
|
47
|
-
credIdsAndWebAuthns.sort((a, b) => a.credId
|
|
49
|
+
credIdsAndWebAuthns.sort((a, b) => (0, ordering_1.compareHexValues)(a.credId, b.credId));
|
|
48
50
|
credIds = credIdsAndWebAuthns.map(({ credId }) => credId);
|
|
49
51
|
webAuthns = credIdsAndWebAuthns.map(({ webAuthn }) => webAuthn);
|
|
50
52
|
// Encode
|
|
@@ -89,6 +91,39 @@ function packSignature(credIds, usePrecompile, webAuthns) {
|
|
|
89
91
|
},
|
|
90
92
|
], [credIds, usePrecompile, webAuthns]);
|
|
91
93
|
}
|
|
94
|
+
function packStatelessSignature(accounts, configuredAccounts, webAuthns) {
|
|
95
|
+
const credentialId = (account) => {
|
|
96
|
+
const { x, y } = parsePublicKey(account.publicKey);
|
|
97
|
+
return generateCredentialId(x, y, viem_1.zeroAddress);
|
|
98
|
+
};
|
|
99
|
+
const configuredIds = configuredAccounts
|
|
100
|
+
.map(credentialId)
|
|
101
|
+
.sort(ordering_1.compareHexValues);
|
|
102
|
+
const ordered = accounts
|
|
103
|
+
.map((account, index) => ({
|
|
104
|
+
credentialId: credentialId(account),
|
|
105
|
+
webAuthn: webAuthns[index],
|
|
106
|
+
}))
|
|
107
|
+
.sort((a, b) => (0, ordering_1.compareHexValues)(a.credentialId, b.credentialId));
|
|
108
|
+
const expectedIds = configuredIds.slice(0, ordered.length);
|
|
109
|
+
if (ordered.some(({ credentialId }, index) => credentialId !== expectedIds[index])) {
|
|
110
|
+
throw new Error('A passkey factor pairs each signature with the credential at the same position, so a partial signer set must be the lowest-ordered credentials of that factor');
|
|
111
|
+
}
|
|
112
|
+
return (0, viem_1.encodeAbiParameters)([
|
|
113
|
+
{
|
|
114
|
+
type: 'tuple[]',
|
|
115
|
+
name: 'webAuthns',
|
|
116
|
+
components: [
|
|
117
|
+
{ type: 'bytes', name: 'authenticatorData' },
|
|
118
|
+
{ type: 'string', name: 'clientDataJSON' },
|
|
119
|
+
{ type: 'uint256', name: 'challengeIndex' },
|
|
120
|
+
{ type: 'uint256', name: 'typeIndex' },
|
|
121
|
+
{ type: 'uint256', name: 'r' },
|
|
122
|
+
{ type: 'uint256', name: 's' },
|
|
123
|
+
],
|
|
124
|
+
},
|
|
125
|
+
], [ordered.map(({ webAuthn }) => webAuthn)]);
|
|
126
|
+
}
|
|
92
127
|
function packSignatureV0(webauthn, usePrecompiled) {
|
|
93
128
|
return (0, viem_1.encodeAbiParameters)([
|
|
94
129
|
{ type: 'bytes', name: 'authenticatorData' },
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Address, Chain, HashTypedDataParameters, Hex, TypedData } from 'viem';
|
|
2
|
-
import type { SignerSet } from '../../types';
|
|
3
|
-
declare function sign<typedData extends TypedData | Record<string, unknown> = TypedData, primaryType extends keyof typedData | 'EIP712Domain' = keyof typedData>(signers: SignerSet, chain: Chain, address: Address, parameters: HashTypedDataParameters<typedData, primaryType
|
|
2
|
+
import type { OwnerSet, SignerSet } from '../../types';
|
|
3
|
+
declare function sign<typedData extends TypedData | Record<string, unknown> = TypedData, primaryType extends keyof typedData | 'EIP712Domain' = keyof typedData>(signers: SignerSet, configuredOwners: OwnerSet, chain: Chain, address: Address, parameters: HashTypedDataParameters<typedData, primaryType>, _isUserOpHash?: boolean, statelessPasskey?: boolean): Promise<Hex>;
|
|
4
4
|
export { sign };
|
|
5
5
|
//# sourceMappingURL=typedData.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typedData.d.ts","sourceRoot":"","sources":["../../../../accounts/signing/typedData.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,OAAO,EACP,KAAK,EACL,uBAAuB,EACvB,GAAG,EACH,SAAS,EACV,MAAM,MAAM,CAAA;AAEb,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"typedData.d.ts","sourceRoot":"","sources":["../../../../accounts/signing/typedData.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,OAAO,EACP,KAAK,EACL,uBAAuB,EACvB,GAAG,EACH,SAAS,EACV,MAAM,MAAM,CAAA;AAEb,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAQtD,iBAAe,IAAI,CACjB,SAAS,SAAS,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EACjE,WAAW,SAAS,MAAM,SAAS,GAAG,cAAc,GAAG,MAAM,SAAS,EAEtE,OAAO,EAAE,SAAS,EAClB,gBAAgB,EAAE,QAAQ,EAC1B,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,uBAAuB,CAAC,SAAS,EAAE,WAAW,CAAC,EAC3D,aAAa,UAAQ,EACrB,gBAAgB,UAAQ,GACvB,OAAO,CAAC,GAAG,CAAC,CA6Bd;AA6BD,OAAO,EAAE,IAAI,EAAE,CAAA"}
|
|
@@ -3,14 +3,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.sign = sign;
|
|
4
4
|
const error_1 = require("../error");
|
|
5
5
|
const common_1 = require("./common");
|
|
6
|
-
async function sign(signers, chain, address, parameters) {
|
|
6
|
+
async function sign(signers, configuredOwners, chain, address, parameters, _isUserOpHash = false, statelessPasskey = false) {
|
|
7
7
|
const signingFunctions = {
|
|
8
8
|
signEcdsa: (account, params) => signEcdsa(account, params),
|
|
9
9
|
signPasskey: (account, params) => signPasskey(account, params),
|
|
10
10
|
};
|
|
11
11
|
switch (signers.type) {
|
|
12
12
|
case 'owner': {
|
|
13
|
-
return (0, common_1.signWithOwners)(signers, chain, address, parameters, signingFunctions, false, sign);
|
|
13
|
+
return (0, common_1.signWithOwners)(signers, configuredOwners, chain, address, parameters, signingFunctions, false, sign, statelessPasskey);
|
|
14
14
|
}
|
|
15
15
|
case 'guardians': {
|
|
16
16
|
return (0, common_1.signWithGuardians)(signers, parameters, signingFunctions);
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { type Hex } from 'viem';
|
|
2
|
-
import type { CalldataInput, LazyCallInput, OwnableValidatorConfig, WebauthnValidatorConfig } from '../types';
|
|
2
|
+
import type { CalldataInput, ENSValidatorConfig, LazyCallInput, OwnableValidatorConfig, WebauthnValidatorConfig } from '../types';
|
|
3
|
+
type MfaFactor = OwnableValidatorConfig | ENSValidatorConfig | WebauthnValidatorConfig;
|
|
3
4
|
/**
|
|
4
5
|
* Enable multi-factor authentication
|
|
5
6
|
* @param validators List of validators to use
|
|
6
7
|
* @param threshold Threshold for the validators
|
|
7
8
|
* @returns Calls to enable multi-factor authentication
|
|
8
9
|
*/
|
|
9
|
-
declare function enable(validators: (
|
|
10
|
+
declare function enable(validators: (MfaFactor | null)[], threshold?: number): LazyCallInput;
|
|
10
11
|
/**
|
|
11
12
|
* Change the multi-factor threshold
|
|
12
13
|
* @param newThreshold New threshold
|
|
@@ -25,13 +26,13 @@ declare function disable(): LazyCallInput;
|
|
|
25
26
|
* @param validator Validator module
|
|
26
27
|
* @returns Call to set the sub-validator
|
|
27
28
|
*/
|
|
28
|
-
declare function setSubValidator(id: Hex | number, validator:
|
|
29
|
+
declare function setSubValidator(id: Hex | number, validator: MfaFactor): CalldataInput;
|
|
29
30
|
/**
|
|
30
31
|
* Remove a sub-validator (multi-factor)
|
|
31
32
|
* @param id Validator ID
|
|
32
33
|
* @param validator Validator module
|
|
33
34
|
* @returns Call to remove the sub-validator
|
|
34
35
|
*/
|
|
35
|
-
declare function removeSubValidator(id: Hex | number, validator:
|
|
36
|
+
declare function removeSubValidator(id: Hex | number, validator: MfaFactor): CalldataInput;
|
|
36
37
|
export { enable, changeThreshold, disable, setSubValidator, removeSubValidator };
|
|
37
38
|
//# sourceMappingURL=mfa.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mfa.d.ts","sourceRoot":"","sources":["../../../actions/mfa.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,KAAK,GAAG,EAAiB,MAAM,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"mfa.d.ts","sourceRoot":"","sources":["../../../actions/mfa.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,KAAK,GAAG,EAAiB,MAAM,MAAM,CAAA;AAWlE,OAAO,KAAK,EACV,aAAa,EACb,kBAAkB,EAClB,aAAa,EACb,sBAAsB,EACtB,uBAAuB,EACxB,MAAM,UAAU,CAAA;AAEjB,KAAK,SAAS,GACV,sBAAsB,GACtB,kBAAkB,GAClB,uBAAuB,CAAA;AAE3B;;;;;GAKG;AACH,iBAAS,MAAM,CACb,UAAU,EAAE,CAAC,SAAS,GAAG,IAAI,CAAC,EAAE,EAChC,SAAS,SAAI,GACZ,aAAa,CAOf;AAED;;;;GAIG;AACH,iBAAS,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,aAAa,CAkB5D;AAED;;;;GAIG;AACH,iBAAS,OAAO,IAAI,aAAa,CAOhC;AAED;;;;;GAKG;AACH,iBAAS,eAAe,CACtB,EAAE,EAAE,GAAG,GAAG,MAAM,EAChB,SAAS,EAAE,SAAS,GACnB,aAAa,CAmCf;AAED;;;;;GAKG;AACH,iBAAS,kBAAkB,CACzB,EAAE,EAAE,GAAG,GAAG,MAAM,EAChB,SAAS,EAAE,SAAS,GACnB,aAAa,CA2Bf;AAED,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,CAAA"}
|
package/dist/src/actions/mfa.js
CHANGED
|
@@ -93,7 +93,11 @@ function setSubValidator(id, validator) {
|
|
|
93
93
|
},
|
|
94
94
|
],
|
|
95
95
|
functionName: 'setValidator',
|
|
96
|
-
args: [
|
|
96
|
+
args: [
|
|
97
|
+
validatorModule.address,
|
|
98
|
+
validatorId,
|
|
99
|
+
(0, core_1.getStatelessValidatorData)(validator),
|
|
100
|
+
],
|
|
97
101
|
}),
|
|
98
102
|
};
|
|
99
103
|
}
|
|
@@ -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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"}
|
|
@@ -283,7 +283,7 @@ async function signTypedDataWithSession(config, chain, validator, session, param
|
|
|
283
283
|
verifyingContract,
|
|
284
284
|
salt,
|
|
285
285
|
},
|
|
286
|
-
}, (signature) => {
|
|
286
|
+
}, session.owners, (signature) => {
|
|
287
287
|
const erc7739Signature = (0, erc7739_1.wrapTypedDataSignature)({
|
|
288
288
|
domain: parameters.domain,
|
|
289
289
|
primaryType: parameters.primaryType,
|
|
@@ -24,9 +24,10 @@ declare function getValidator(owners: OwnerSet): Module;
|
|
|
24
24
|
declare function getOwnableValidator(threshold: number, owners: Address[], address?: Address): Module;
|
|
25
25
|
declare function getENSValidator(threshold: number, owners: Address[], ownerExpirations: number[]): Module;
|
|
26
26
|
declare function getWebAuthnValidator(threshold: number, webAuthnCredentials: WebauthnCredential[], address?: Address): Module;
|
|
27
|
+
declare function getStatelessValidatorData(validator: OwnableValidatorConfig | ENSValidatorConfig | WebauthnValidatorConfig): Hex;
|
|
27
28
|
declare function getMultiFactorValidator(threshold: number, validators: (OwnableValidatorConfig | ENSValidatorConfig | WebauthnValidatorConfig | null)[], address?: Address): Module;
|
|
28
29
|
declare function getSocialRecoveryValidator(guardians: Account[], threshold?: number): Module;
|
|
29
30
|
declare function supportsEip712(validator: Module): boolean;
|
|
30
|
-
export { OWNABLE_VALIDATOR_ADDRESS, ENS_HCA_MODULE, 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, ownerSetUsesEns, };
|
|
31
|
+
export { OWNABLE_VALIDATOR_ADDRESS, ENS_HCA_MODULE, 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, getStatelessValidatorData, getSocialRecoveryValidator, getValidator, getMockSignature, supportsEip712, ownerSetUsesEns, };
|
|
31
32
|
export type { WebauthnCredential };
|
|
32
33
|
//# sourceMappingURL=core.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../../modules/validators/core.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,OAAO,
|
|
1
|
+
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../../modules/validators/core.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,OAAO,EAMZ,KAAK,GAAG,EAOT,MAAM,MAAM,CAAA;AAMb,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;AAGjE,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,cAAc,EAAE,OAAsD,CAAA;AAC5E,QAAA,MAAM,0BAA0B,EAAE,OACY,CAAA;AAG9C,QAAA,MAAM,8BAA8B,EAAE,OACQ,CAAA;AAO9C,QAAA,MAAM,6BAA6B,EAAE,OACS,CAAA;AAS9C,iBAAS,eAAe,CAAC,MAAM,EAAE,QAAQ,GAAG,OAAO,CAMlD;AAED,iBAAS,iBAAiB,CAAC,MAAM,EAAE,uBAAuB,UAazD;AAED,iBAAS,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,GAAG,GAAG,CAsDjD;AAED,iBAAS,YAAY,CAAC,MAAM,EAAE,QAAQ,UAiCrC;AA2BD,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,GACzB,MAAM,CAsCR;AAED,iBAAS,oBAAoB,CAC3B,SAAS,EAAE,MAAM,EACjB,mBAAmB,EAAE,kBAAkB,EAAE,EACzC,OAAO,CAAC,EAAE,OAAO,GAChB,MAAM,CA4DR;AAED,iBAAS,yBAAyB,CAChC,SAAS,EACL,sBAAsB,GACtB,kBAAkB,GAClB,uBAAuB,GAC1B,GAAG,CAgFL;AAED,iBAAS,uBAAuB,CAC9B,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,CACR,sBAAsB,GACtB,kBAAkB,GAClB,uBAAuB,GACvB,IAAI,CACP,EAAE,EACH,OAAO,CAAC,EAAE,OAAO,GAChB,MAAM,CAgDR;AAED,iBAAS,0BAA0B,CACjC,SAAS,EAAE,OAAO,EAAE,EACpB,SAAS,SAAI,GACZ,MAAM,CAyBR;AAeD,iBAAS,cAAc,CAAC,SAAS,EAAE,MAAM,WAUxC;AAED,OAAO,EACL,yBAAyB,EACzB,cAAc,EACd,0BAA0B,EAC1B,8BAA8B,EAC9B,6BAA6B,EAC7B,8BAA8B,EAC9B,kCAAkC,EAClC,iBAAiB,EACjB,mBAAmB,EACnB,eAAe,EACf,oBAAoB,EACpB,uBAAuB,EACvB,yBAAyB,EACzB,0BAA0B,EAC1B,YAAY,EACZ,gBAAgB,EAChB,cAAc,EACd,eAAe,GAChB,CAAA;AACD,YAAY,EAAE,kBAAkB,EAAE,CAAA"}
|
|
@@ -6,6 +6,7 @@ exports.getOwnableValidator = getOwnableValidator;
|
|
|
6
6
|
exports.getENSValidator = getENSValidator;
|
|
7
7
|
exports.getWebAuthnValidator = getWebAuthnValidator;
|
|
8
8
|
exports.getMultiFactorValidator = getMultiFactorValidator;
|
|
9
|
+
exports.getStatelessValidatorData = getStatelessValidatorData;
|
|
9
10
|
exports.getSocialRecoveryValidator = getSocialRecoveryValidator;
|
|
10
11
|
exports.getValidator = getValidator;
|
|
11
12
|
exports.getMockSignature = getMockSignature;
|
|
@@ -14,6 +15,7 @@ exports.ownerSetUsesEns = ownerSetUsesEns;
|
|
|
14
15
|
const viem_1 = require("viem");
|
|
15
16
|
const error_1 = require("../../accounts/error");
|
|
16
17
|
const common_1 = require("../common");
|
|
18
|
+
const ordering_1 = require("./ordering");
|
|
17
19
|
const SMART_SESSION_EMISSARY_ADDRESS_DEV = '0x60731de80d78548875f8a67c4fec2a8660194e0c';
|
|
18
20
|
exports.SMART_SESSION_EMISSARY_ADDRESS_DEV = SMART_SESSION_EMISSARY_ADDRESS_DEV;
|
|
19
21
|
const SMART_SESSION_EMISSARY_ADDRESS = '0xad568b3f825a8d5ffc06dd3253526b64d810ae89';
|
|
@@ -34,9 +36,8 @@ const WEBAUTHN_V0_VALIDATOR_ADDRESS = '0x0000000000578c4cb0e472a5462da43c495c3f3
|
|
|
34
36
|
exports.WEBAUTHN_V0_VALIDATOR_ADDRESS = WEBAUTHN_V0_VALIDATOR_ADDRESS;
|
|
35
37
|
const ECDSA_MOCK_SIGNATURE = '0x81d4b4981670cb18f99f0b4a66446df1bf5b204d24cfcb659bf38ba27a4359b5711649ec2423c5e1247245eba2964679b6a1dbb85c992ae40b9b00c6935b02ff1b';
|
|
36
38
|
const WEBAUTHN_MOCK_SIGNATURE = '0x0000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000001b9b86eb98fda3ed4d797d9e690588dfadf17b329a76a47cec935bebf92d7ddc80000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000001700000000000000000000000000000000000000000000000000000000000000019b2e9410bb6850f9f660a03d609d5a844fb96bcdc87a15139b03ee22c70f469100d2b865a215c3bf786387064effa8fcedcb1d625b5148f8a1236d5e3ff11acf000000000000000000000000000000000000000000000000000000000000002549960de5880e8c687434170f6476605b8fe4aeb9a28632c7995cf3ba831d9763050000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000867b2274797065223a22776562617574686e2e676574222c226368616c6c656e6765223a22396a4546696a75684557724d34534f572d7443684a625545484550343456636a634a2d42716f3166544d38222c226f726967696e223a22687474703a2f2f6c6f63616c686f73743a38303830222c2263726f73734f726967696e223a66616c73657d0000000000000000000000000000000000000000000000000000';
|
|
37
|
-
//
|
|
38
|
-
//
|
|
39
|
-
// nested in a multi-factor config.
|
|
39
|
+
// True for a direct ENS owner set or an ENS sub-validator nested in a
|
|
40
|
+
// multi-factor config. Smart Sessions use this to reject both shapes.
|
|
40
41
|
function ownerSetUsesEns(owners) {
|
|
41
42
|
return (owners.type === 'ens' ||
|
|
42
43
|
(owners.type === 'multi-factor' &&
|
|
@@ -46,9 +47,9 @@ function getOwnerValidator(config) {
|
|
|
46
47
|
if (!config.owners) {
|
|
47
48
|
throw new error_1.OwnersFieldRequiredError();
|
|
48
49
|
}
|
|
49
|
-
// ENS owners resolve to the HCA module, which is only valid for HCA
|
|
50
|
-
//
|
|
51
|
-
if (
|
|
50
|
+
// Direct ENS owners resolve to the HCA module, which is only valid for HCA
|
|
51
|
+
// accounts. Nested ENS factors use the module's stateless validation path.
|
|
52
|
+
if (config.owners.type === 'ens' && config.account?.type !== 'hca') {
|
|
52
53
|
throw new error_1.AccountConfigurationNotSupportedError('ENS owners are only supported on HCA accounts', config.account?.type ?? 'nexus');
|
|
53
54
|
}
|
|
54
55
|
return getValidator(config.owners);
|
|
@@ -67,7 +68,9 @@ function getMockSignature(ownerSet) {
|
|
|
67
68
|
case 'multi-factor': {
|
|
68
69
|
const mockValidators = ownerSet.validators.map((validator, index) => {
|
|
69
70
|
const validatorModule = getValidator(validator);
|
|
70
|
-
const signature =
|
|
71
|
+
const signature = validator.type === 'passkey'
|
|
72
|
+
? getStatelessWebAuthnMockSignature()
|
|
73
|
+
: getMockSignature(validator);
|
|
71
74
|
return {
|
|
72
75
|
packedValidatorAndId: (0, viem_1.encodePacked)(['bytes12', 'address'], [
|
|
73
76
|
(0, viem_1.pad)((0, viem_1.toHex)(index), {
|
|
@@ -113,6 +116,26 @@ function getValidator(owners) {
|
|
|
113
116
|
}
|
|
114
117
|
}
|
|
115
118
|
}
|
|
119
|
+
const WEBAUTHN_AUTH_ABI = {
|
|
120
|
+
type: 'tuple[]',
|
|
121
|
+
name: 'webAuthns',
|
|
122
|
+
components: [
|
|
123
|
+
{ type: 'bytes', name: 'authenticatorData' },
|
|
124
|
+
{ type: 'string', name: 'clientDataJSON' },
|
|
125
|
+
{ type: 'uint256', name: 'challengeIndex' },
|
|
126
|
+
{ type: 'uint256', name: 'typeIndex' },
|
|
127
|
+
{ type: 'uint256', name: 'r' },
|
|
128
|
+
{ type: 'uint256', name: 's' },
|
|
129
|
+
],
|
|
130
|
+
};
|
|
131
|
+
function getStatelessWebAuthnMockSignature() {
|
|
132
|
+
const [, , webAuthns] = (0, viem_1.decodeAbiParameters)([
|
|
133
|
+
{ type: 'bytes32[]', name: 'credIds' },
|
|
134
|
+
{ type: 'bool', name: 'usePrecompile' },
|
|
135
|
+
WEBAUTHN_AUTH_ABI,
|
|
136
|
+
], WEBAUTHN_MOCK_SIGNATURE);
|
|
137
|
+
return (0, viem_1.encodeAbiParameters)([WEBAUTHN_AUTH_ABI], [webAuthns]);
|
|
138
|
+
}
|
|
116
139
|
function getOwnableValidator(threshold, owners, address) {
|
|
117
140
|
return {
|
|
118
141
|
address: address ?? OWNABLE_VALIDATOR_ADDRESS,
|
|
@@ -136,7 +159,7 @@ function getENSValidator(threshold, owners, ownerExpirations) {
|
|
|
136
159
|
expiration: ownerExpirations[index] ?? viem_1.maxUint48,
|
|
137
160
|
}));
|
|
138
161
|
// Sort by address to match ENS validator's expectations
|
|
139
|
-
const sortedPairs = ownerPairs.sort((a, b) => a.addr
|
|
162
|
+
const sortedPairs = ownerPairs.sort((a, b) => (0, ordering_1.compareHexValues)(a.addr, b.addr));
|
|
140
163
|
const ownersWithExpiration = sortedPairs;
|
|
141
164
|
const initData = (0, viem_1.encodeAbiParameters)([
|
|
142
165
|
{ name: 'threshold', type: 'uint256' },
|
|
@@ -212,6 +235,70 @@ function getWebAuthnValidator(threshold, webAuthnCredentials, address) {
|
|
|
212
235
|
type: common_1.MODULE_TYPE_ID_VALIDATOR,
|
|
213
236
|
};
|
|
214
237
|
}
|
|
238
|
+
function getStatelessValidatorData(validator) {
|
|
239
|
+
switch (validator.type) {
|
|
240
|
+
case 'ecdsa':
|
|
241
|
+
return getOwnableValidator(validator.threshold ?? 1, validator.accounts.map((account) => account.address)).initData;
|
|
242
|
+
case 'ens':
|
|
243
|
+
return (0, viem_1.encodeAbiParameters)([
|
|
244
|
+
{ name: 'threshold', type: 'uint256' },
|
|
245
|
+
{ name: 'owners', type: 'address[]' },
|
|
246
|
+
], [
|
|
247
|
+
BigInt(validator.threshold ?? 1),
|
|
248
|
+
validator.accounts
|
|
249
|
+
.map((account) => account.address.toLowerCase())
|
|
250
|
+
.sort((a, b) => (0, ordering_1.compareHexValues)(a, b)),
|
|
251
|
+
]);
|
|
252
|
+
case 'passkey': {
|
|
253
|
+
const credentials = validator.accounts
|
|
254
|
+
.map((account) => {
|
|
255
|
+
const publicKey = parsePublicKey(account.publicKey);
|
|
256
|
+
if (publicKey.prefix && publicKey.prefix !== 4) {
|
|
257
|
+
throw new Error('Only uncompressed public keys are supported');
|
|
258
|
+
}
|
|
259
|
+
const credentialId = (0, viem_1.keccak256)((0, viem_1.encodeAbiParameters)([{ type: 'uint256' }, { type: 'uint256' }, { type: 'address' }], [publicKey.x, publicKey.y, viem_1.zeroAddress]));
|
|
260
|
+
return {
|
|
261
|
+
credentialId,
|
|
262
|
+
credentialData: {
|
|
263
|
+
pubKeyX: publicKey.x,
|
|
264
|
+
pubKeyY: publicKey.y,
|
|
265
|
+
requireUV: false,
|
|
266
|
+
},
|
|
267
|
+
};
|
|
268
|
+
})
|
|
269
|
+
.sort((a, b) => (0, ordering_1.compareHexValues)(a.credentialId, b.credentialId));
|
|
270
|
+
return (0, viem_1.encodeAbiParameters)([
|
|
271
|
+
{
|
|
272
|
+
name: 'context',
|
|
273
|
+
type: 'tuple',
|
|
274
|
+
components: [
|
|
275
|
+
{ name: 'usePrecompile', type: 'bool' },
|
|
276
|
+
{ name: 'threshold', type: 'uint256' },
|
|
277
|
+
{ name: 'credentialIds', type: 'bytes32[]' },
|
|
278
|
+
{
|
|
279
|
+
name: 'credentialData',
|
|
280
|
+
type: 'tuple[]',
|
|
281
|
+
components: [
|
|
282
|
+
{ name: 'pubKeyX', type: 'uint256' },
|
|
283
|
+
{ name: 'pubKeyY', type: 'uint256' },
|
|
284
|
+
{ name: 'requireUV', type: 'bool' },
|
|
285
|
+
],
|
|
286
|
+
},
|
|
287
|
+
],
|
|
288
|
+
},
|
|
289
|
+
{ name: 'account', type: 'address' },
|
|
290
|
+
], [
|
|
291
|
+
{
|
|
292
|
+
usePrecompile: false,
|
|
293
|
+
threshold: BigInt(validator.threshold ?? 1),
|
|
294
|
+
credentialIds: credentials.map(({ credentialId }) => credentialId),
|
|
295
|
+
credentialData: credentials.map(({ credentialData }) => credentialData),
|
|
296
|
+
},
|
|
297
|
+
viem_1.zeroAddress,
|
|
298
|
+
]);
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
}
|
|
215
302
|
function getMultiFactorValidator(threshold, validators, address) {
|
|
216
303
|
return {
|
|
217
304
|
address: address ?? MULTI_FACTOR_VALIDATOR_ADDRESS,
|
|
@@ -244,7 +331,7 @@ function getMultiFactorValidator(threshold, validators, address) {
|
|
|
244
331
|
}),
|
|
245
332
|
validatorModule.address,
|
|
246
333
|
]),
|
|
247
|
-
data:
|
|
334
|
+
data: getStatelessValidatorData(validator),
|
|
248
335
|
};
|
|
249
336
|
})
|
|
250
337
|
.filter((validator) => validator !== null),
|
|
@@ -256,8 +343,11 @@ function getMultiFactorValidator(threshold, validators, address) {
|
|
|
256
343
|
};
|
|
257
344
|
}
|
|
258
345
|
function getSocialRecoveryValidator(guardians, threshold = 1) {
|
|
259
|
-
|
|
260
|
-
|
|
346
|
+
// Lowercase before sorting: checksum casing would otherwise order `0xB5…`
|
|
347
|
+
// before `0xb4…`, which the validator rejects as unsorted.
|
|
348
|
+
const guardianAddresses = guardians
|
|
349
|
+
.map((guardian) => guardian.address.toLowerCase())
|
|
350
|
+
.sort();
|
|
261
351
|
return {
|
|
262
352
|
type: common_1.MODULE_TYPE_ID_VALIDATOR,
|
|
263
353
|
address: SOCIAL_RECOVERY_VALIDATOR_ADDRESS,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ordering.d.ts","sourceRoot":"","sources":["../../../../modules/validators/ordering.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,MAAM,CAAA;AAK/B,iBAAS,gBAAgB,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,MAAM,CAOvD;AAED,OAAO,EAAE,gBAAgB,EAAE,CAAA"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.compareHexValues = compareHexValues;
|
|
4
|
+
// Order by value, never by host collation: `localeCompare` sorts `0xaa…` after
|
|
5
|
+
// `0xb1…` on Danish-family locales, which would change derived addresses and
|
|
6
|
+
// break the validators' ascending-order requirement.
|
|
7
|
+
function compareHexValues(left, right) {
|
|
8
|
+
const leftValue = BigInt(left);
|
|
9
|
+
const rightValue = BigInt(right);
|
|
10
|
+
if (leftValue === rightValue) {
|
|
11
|
+
return 0;
|
|
12
|
+
}
|
|
13
|
+
return leftValue < rightValue ? -1 : 1;
|
|
14
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
declare const PROD_ORCHESTRATOR_URL = "https://v1.orchestrator.rhinestone.dev";
|
|
2
2
|
declare const RHINESTONE_SPOKE_POOL_ADDRESS = "0x000000000060f6e853447881951574cdd0663530";
|
|
3
|
-
declare const SDK_VERSION = "1.13.
|
|
3
|
+
declare const SDK_VERSION = "1.13.4";
|
|
4
4
|
declare const API_VERSION = "2026-01.alps";
|
|
5
5
|
export { PROD_ORCHESTRATOR_URL, RHINESTONE_SPOKE_POOL_ADDRESS, SDK_VERSION, API_VERSION, };
|
|
6
6
|
//# sourceMappingURL=consts.d.ts.map
|
|
@@ -5,7 +5,7 @@ const PROD_ORCHESTRATOR_URL = 'https://v1.orchestrator.rhinestone.dev';
|
|
|
5
5
|
exports.PROD_ORCHESTRATOR_URL = PROD_ORCHESTRATOR_URL;
|
|
6
6
|
const RHINESTONE_SPOKE_POOL_ADDRESS = '0x000000000060f6e853447881951574cdd0663530';
|
|
7
7
|
exports.RHINESTONE_SPOKE_POOL_ADDRESS = RHINESTONE_SPOKE_POOL_ADDRESS;
|
|
8
|
-
const SDK_VERSION = '1.13.
|
|
8
|
+
const SDK_VERSION = '1.13.4';
|
|
9
9
|
exports.SDK_VERSION = SDK_VERSION;
|
|
10
10
|
const API_VERSION = '2026-01.alps';
|
|
11
11
|
exports.API_VERSION = API_VERSION;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rhinestone/sdk",
|
|
3
|
-
"version": "1.13.
|
|
3
|
+
"version": "1.13.4",
|
|
4
4
|
"description": "End-to-end chain abstraction and modularity toolkit",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Rhinestone",
|
|
@@ -166,7 +166,7 @@
|
|
|
166
166
|
"access": "public"
|
|
167
167
|
},
|
|
168
168
|
"dependencies": {
|
|
169
|
-
"@rhinestone/shared-configs": "
|
|
169
|
+
"@rhinestone/shared-configs": "2.9.4",
|
|
170
170
|
"solady": "^0.1.26"
|
|
171
171
|
},
|
|
172
172
|
"peerDependencies": {
|