@zerodev/permissions 5.2.1-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/_cjs/constants.js +17 -0
- package/_cjs/constants.js.map +1 -0
- package/_cjs/deserializePermissionAccount.js +94 -0
- package/_cjs/deserializePermissionAccount.js.map +1 -0
- package/_cjs/index.js +12 -0
- package/_cjs/index.js.map +1 -0
- package/_cjs/package.json +1 -0
- package/_cjs/policies/callPolicyUtils.js +87 -0
- package/_cjs/policies/callPolicyUtils.js.map +1 -0
- package/_cjs/policies/index.js +16 -0
- package/_cjs/policies/index.js.map +1 -0
- package/_cjs/policies/toCallPolicy.js +42 -0
- package/_cjs/policies/toCallPolicy.js.map +1 -0
- package/_cjs/policies/toGasPolicy.js +30 -0
- package/_cjs/policies/toGasPolicy.js.map +1 -0
- package/_cjs/policies/toRateLimitPolicy.js +30 -0
- package/_cjs/policies/toRateLimitPolicy.js.map +1 -0
- package/_cjs/policies/toSignatureCallerPolicy.js +24 -0
- package/_cjs/policies/toSignatureCallerPolicy.js.map +1 -0
- package/_cjs/policies/toSudoPolicy.js +22 -0
- package/_cjs/policies/toSudoPolicy.js.map +1 -0
- package/_cjs/policies/types.js +19 -0
- package/_cjs/policies/types.js.map +1 -0
- package/_cjs/policies/utils/toPolicyId.js +11 -0
- package/_cjs/policies/utils/toPolicyId.js.map +1 -0
- package/_cjs/serializePermissionAccount.js +27 -0
- package/_cjs/serializePermissionAccount.js.map +1 -0
- package/_cjs/signers/index.js +12 -0
- package/_cjs/signers/index.js.map +1 -0
- package/_cjs/signers/toECDSASigner.js +39 -0
- package/_cjs/signers/toECDSASigner.js.map +1 -0
- package/_cjs/signers/toWebAuthnPubKey.js +97 -0
- package/_cjs/signers/toWebAuthnPubKey.js.map +1 -0
- package/_cjs/signers/toWebAuthnSigner.js +154 -0
- package/_cjs/signers/toWebAuthnSigner.js.map +1 -0
- package/_cjs/signers/utils/toSignerId.js +9 -0
- package/_cjs/signers/utils/toSignerId.js.map +1 -0
- package/_cjs/signers/webAuthnUtils.js +45 -0
- package/_cjs/signers/webAuthnUtils.js.map +1 -0
- package/_cjs/toPermissionValidator.js +102 -0
- package/_cjs/toPermissionValidator.js.map +1 -0
- package/_cjs/types.js +3 -0
- package/_cjs/types.js.map +1 -0
- package/_cjs/utils.js +37 -0
- package/_cjs/utils.js.map +1 -0
- package/_esm/constants.js +14 -0
- package/_esm/constants.js.map +1 -0
- package/_esm/deserializePermissionAccount.js +89 -0
- package/_esm/deserializePermissionAccount.js.map +1 -0
- package/_esm/index.js +5 -0
- package/_esm/index.js.map +1 -0
- package/_esm/package.json +1 -0
- package/_esm/policies/callPolicyUtils.js +82 -0
- package/_esm/policies/callPolicyUtils.js.map +1 -0
- package/_esm/policies/index.js +7 -0
- package/_esm/policies/index.js.map +1 -0
- package/_esm/policies/toCallPolicy.js +38 -0
- package/_esm/policies/toCallPolicy.js.map +1 -0
- package/_esm/policies/toGasPolicy.js +26 -0
- package/_esm/policies/toGasPolicy.js.map +1 -0
- package/_esm/policies/toRateLimitPolicy.js +26 -0
- package/_esm/policies/toRateLimitPolicy.js.map +1 -0
- package/_esm/policies/toSignatureCallerPolicy.js +20 -0
- package/_esm/policies/toSignatureCallerPolicy.js.map +1 -0
- package/_esm/policies/toSudoPolicy.js +18 -0
- package/_esm/policies/toSudoPolicy.js.map +1 -0
- package/_esm/policies/types.js +17 -0
- package/_esm/policies/types.js.map +1 -0
- package/_esm/policies/utils/toPolicyId.js +7 -0
- package/_esm/policies/utils/toPolicyId.js.map +1 -0
- package/_esm/serializePermissionAccount.js +23 -0
- package/_esm/serializePermissionAccount.js.map +1 -0
- package/_esm/signers/index.js +5 -0
- package/_esm/signers/index.js.map +1 -0
- package/_esm/signers/toECDSASigner.js +36 -0
- package/_esm/signers/toECDSASigner.js.map +1 -0
- package/_esm/signers/toWebAuthnPubKey.js +107 -0
- package/_esm/signers/toWebAuthnPubKey.js.map +1 -0
- package/_esm/signers/toWebAuthnSigner.js +164 -0
- package/_esm/signers/toWebAuthnSigner.js.map +1 -0
- package/_esm/signers/utils/toSignerId.js +5 -0
- package/_esm/signers/utils/toSignerId.js.map +1 -0
- package/_esm/signers/webAuthnUtils.js +41 -0
- package/_esm/signers/webAuthnUtils.js.map +1 -0
- package/_esm/toPermissionValidator.js +98 -0
- package/_esm/toPermissionValidator.js.map +1 -0
- package/_esm/types.js +3 -0
- package/_esm/types.js.map +1 -0
- package/_esm/utils.js +32 -0
- package/_esm/utils.js.map +1 -0
- package/_types/constants.d.ts +13 -0
- package/_types/constants.d.ts.map +1 -0
- package/_types/deserializePermissionAccount.d.ts +13 -0
- package/_types/deserializePermissionAccount.d.ts.map +1 -0
- package/_types/index.d.ts +6 -0
- package/_types/index.d.ts.map +1 -0
- package/_types/policies/callPolicyUtils.d.ts +5 -0
- package/_types/policies/callPolicyUtils.d.ts.map +1 -0
- package/_types/policies/index.d.ts +7 -0
- package/_types/policies/index.d.ts.map +1 -0
- package/_types/policies/toCallPolicy.d.ts +9 -0
- package/_types/policies/toCallPolicy.d.ts.map +1 -0
- package/_types/policies/toGasPolicy.d.ts +10 -0
- package/_types/policies/toGasPolicy.d.ts.map +1 -0
- package/_types/policies/toRateLimitPolicy.d.ts +9 -0
- package/_types/policies/toRateLimitPolicy.d.ts.map +1 -0
- package/_types/policies/toSignatureCallerPolicy.d.ts +8 -0
- package/_types/policies/toSignatureCallerPolicy.d.ts.map +1 -0
- package/_types/policies/toSudoPolicy.d.ts +6 -0
- package/_types/policies/toSudoPolicy.d.ts.map +1 -0
- package/_types/policies/types.d.ts +56 -0
- package/_types/policies/types.d.ts.map +1 -0
- package/_types/policies/utils/toPolicyId.d.ts +4 -0
- package/_types/policies/utils/toPolicyId.d.ts.map +1 -0
- package/_types/serializePermissionAccount.d.ts +5 -0
- package/_types/serializePermissionAccount.d.ts.map +1 -0
- package/_types/signers/index.d.ts +5 -0
- package/_types/signers/index.d.ts.map +1 -0
- package/_types/signers/toECDSASigner.d.ts +8 -0
- package/_types/signers/toECDSASigner.d.ts.map +1 -0
- package/_types/signers/toWebAuthnPubKey.d.ts +11 -0
- package/_types/signers/toWebAuthnPubKey.d.ts.map +1 -0
- package/_types/signers/toWebAuthnSigner.d.ts +16 -0
- package/_types/signers/toWebAuthnSigner.d.ts.map +1 -0
- package/_types/signers/utils/toSignerId.d.ts +4 -0
- package/_types/signers/utils/toSignerId.d.ts.map +1 -0
- package/_types/signers/webAuthnUtils.d.ts +13 -0
- package/_types/signers/webAuthnUtils.d.ts.map +1 -0
- package/_types/toPermissionValidator.d.ts +5 -0
- package/_types/toPermissionValidator.d.ts.map +1 -0
- package/_types/types.d.ts +49 -0
- package/_types/types.d.ts.map +1 -0
- package/_types/utils.d.ts +8 -0
- package/_types/utils.d.ts.map +1 -0
- package/constants.ts +17 -0
- package/deserializePermissionAccount.ts +119 -0
- package/index.ts +5 -0
- package/package.json +63 -0
- package/policies/callPolicyUtils.ts +122 -0
- package/policies/index.ts +12 -0
- package/policies/toCallPolicy.ts +65 -0
- package/policies/toGasPolicy.ts +44 -0
- package/policies/toRateLimitPolicy.ts +43 -0
- package/policies/toSignatureCallerPolicy.ts +34 -0
- package/policies/toSudoPolicy.ts +27 -0
- package/policies/types.ts +118 -0
- package/policies/utils/toPolicyId.ts +13 -0
- package/serializePermissionAccount.ts +38 -0
- package/signers/index.ts +10 -0
- package/signers/toECDSASigner.ts +61 -0
- package/signers/toWebAuthnPubKey.ts +152 -0
- package/signers/toWebAuthnSigner.ts +245 -0
- package/signers/utils/toSignerId.ts +9 -0
- package/signers/webAuthnUtils.ts +54 -0
- package/toPermissionValidator.ts +152 -0
- package/types.ts +71 -0
- package/utils.ts +42 -0
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
import { startAuthentication } from "@simplewebauthn/browser";
|
|
2
|
+
import { SignTransactionNotSupportedBySmartAccount } from "permissionless/accounts";
|
|
3
|
+
import { getTypesForEIP712Domain, hashTypedData, validateTypedData } from "viem";
|
|
4
|
+
import { encodeAbiParameters } from "viem";
|
|
5
|
+
import { toAccount } from "viem/accounts";
|
|
6
|
+
import { getChainId } from "viem/actions";
|
|
7
|
+
import { WEBAUTHN_SIGNER_CONTRACT } from "../constants.js";
|
|
8
|
+
import { WebAuthnMode, toWebAuthnPubKey } from "./toWebAuthnPubKey.js";
|
|
9
|
+
import { b64ToBytes, findQuoteIndices, isRIP7212SupportedNetwork, parseAndNormalizeSig, uint8ArrayToHexString } from "./webAuthnUtils.js";
|
|
10
|
+
export const toWebAuthnSigner = async (client, { signerContractAddress = WEBAUTHN_SIGNER_CONTRACT, pubKey, passkeyServerUrl, passkeyName, mode = WebAuthnMode.Register }) => {
|
|
11
|
+
pubKey =
|
|
12
|
+
pubKey ??
|
|
13
|
+
(await toWebAuthnPubKey({
|
|
14
|
+
passkeyName,
|
|
15
|
+
passkeyServerUrl,
|
|
16
|
+
mode
|
|
17
|
+
}));
|
|
18
|
+
if (!pubKey) {
|
|
19
|
+
throw new Error("WebAuthn public key not found");
|
|
20
|
+
}
|
|
21
|
+
const chainId = await getChainId(client);
|
|
22
|
+
const signMessageUsingWebAuthn = async (message) => {
|
|
23
|
+
let messageContent;
|
|
24
|
+
if (typeof message === "string") {
|
|
25
|
+
// message is a string
|
|
26
|
+
messageContent = message;
|
|
27
|
+
}
|
|
28
|
+
else if ("raw" in message && typeof message.raw === "string") {
|
|
29
|
+
// message.raw is a Hex string
|
|
30
|
+
messageContent = message.raw;
|
|
31
|
+
}
|
|
32
|
+
else if ("raw" in message && message.raw instanceof Uint8Array) {
|
|
33
|
+
// message.raw is a ByteArray
|
|
34
|
+
messageContent = message.raw.toString();
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
throw new Error("Unsupported message format");
|
|
38
|
+
}
|
|
39
|
+
// remove 0x prefix if present
|
|
40
|
+
const formattedMessage = messageContent.startsWith("0x")
|
|
41
|
+
? messageContent.slice(2)
|
|
42
|
+
: messageContent;
|
|
43
|
+
if (window.sessionStorage === undefined) {
|
|
44
|
+
throw new Error("sessionStorage is not available");
|
|
45
|
+
}
|
|
46
|
+
const userId = sessionStorage.getItem("userId");
|
|
47
|
+
// initiate signing
|
|
48
|
+
const signInitiateResponse = await fetch(`${passkeyServerUrl}/sign-initiate`, {
|
|
49
|
+
method: "POST",
|
|
50
|
+
headers: { "Content-Type": "application/json" },
|
|
51
|
+
body: JSON.stringify({ data: formattedMessage, userId }),
|
|
52
|
+
credentials: "include"
|
|
53
|
+
});
|
|
54
|
+
const signInitiateResult = await signInitiateResponse.json();
|
|
55
|
+
// prepare assertion options
|
|
56
|
+
const assertionOptions = {
|
|
57
|
+
challenge: signInitiateResult.challenge,
|
|
58
|
+
allowCredentials: signInitiateResult.allowCredentials,
|
|
59
|
+
userVerification: "required"
|
|
60
|
+
};
|
|
61
|
+
// start authentication (signing)
|
|
62
|
+
const cred = await startAuthentication(assertionOptions);
|
|
63
|
+
// verify signature from server
|
|
64
|
+
const verifyResponse = await fetch(`${passkeyServerUrl}/sign-verify`, {
|
|
65
|
+
method: "POST",
|
|
66
|
+
headers: { "Content-Type": "application/json" },
|
|
67
|
+
body: JSON.stringify({ cred, userId }),
|
|
68
|
+
credentials: "include"
|
|
69
|
+
});
|
|
70
|
+
const verifyResult = await verifyResponse.json();
|
|
71
|
+
if (!verifyResult.success) {
|
|
72
|
+
throw new Error("Signature not verified");
|
|
73
|
+
}
|
|
74
|
+
// get authenticator data
|
|
75
|
+
const authenticatorData = verifyResult.authenticatorData;
|
|
76
|
+
const authenticatorDataHex = uint8ArrayToHexString(b64ToBytes(authenticatorData));
|
|
77
|
+
// get client data JSON
|
|
78
|
+
const clientDataJSON = atob(cred.response.clientDataJSON);
|
|
79
|
+
// get challenge and response type location
|
|
80
|
+
const { beforeType } = findQuoteIndices(clientDataJSON);
|
|
81
|
+
// get signature r,s
|
|
82
|
+
const signature = verifyResult.signature;
|
|
83
|
+
const signatureHex = uint8ArrayToHexString(b64ToBytes(signature));
|
|
84
|
+
const { r, s } = parseAndNormalizeSig(signatureHex);
|
|
85
|
+
// encode signature
|
|
86
|
+
const encodedSignature = encodeAbiParameters([
|
|
87
|
+
{ name: "authenticatorData", type: "bytes" },
|
|
88
|
+
{ name: "clientDataJSON", type: "string" },
|
|
89
|
+
{ name: "responseTypeLocation", type: "uint256" },
|
|
90
|
+
{ name: "r", type: "uint256" },
|
|
91
|
+
{ name: "s", type: "uint256" },
|
|
92
|
+
{ name: "usePrecompiled", type: "bool" }
|
|
93
|
+
], [
|
|
94
|
+
authenticatorDataHex,
|
|
95
|
+
clientDataJSON,
|
|
96
|
+
beforeType,
|
|
97
|
+
BigInt(r),
|
|
98
|
+
BigInt(s),
|
|
99
|
+
isRIP7212SupportedNetwork(chainId)
|
|
100
|
+
]);
|
|
101
|
+
return encodedSignature;
|
|
102
|
+
};
|
|
103
|
+
const account = toAccount({
|
|
104
|
+
// note that this address will be overwritten by actual address
|
|
105
|
+
address: "0x0000000000000000000000000000000000000000",
|
|
106
|
+
async signMessage({ message }) {
|
|
107
|
+
return signMessageUsingWebAuthn(message);
|
|
108
|
+
},
|
|
109
|
+
async signTransaction(_, __) {
|
|
110
|
+
throw new SignTransactionNotSupportedBySmartAccount();
|
|
111
|
+
},
|
|
112
|
+
async signTypedData(typedData) {
|
|
113
|
+
const { domain, message, primaryType } = typedData;
|
|
114
|
+
const types = {
|
|
115
|
+
EIP712Domain: getTypesForEIP712Domain({ domain }),
|
|
116
|
+
...typedData.types
|
|
117
|
+
};
|
|
118
|
+
validateTypedData({ domain, message, primaryType, types });
|
|
119
|
+
const hash = hashTypedData(typedData);
|
|
120
|
+
return signMessageUsingWebAuthn(hash);
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
return {
|
|
124
|
+
account,
|
|
125
|
+
signerContractAddress,
|
|
126
|
+
getSignerData: () => {
|
|
127
|
+
if (!pubKey) {
|
|
128
|
+
throw new Error("WebAuthn public key not found");
|
|
129
|
+
}
|
|
130
|
+
return encodeAbiParameters([
|
|
131
|
+
{
|
|
132
|
+
components: [
|
|
133
|
+
{ name: "pubKeyX", type: "uint256" },
|
|
134
|
+
{ name: "pubKeyY", type: "uint256" }
|
|
135
|
+
],
|
|
136
|
+
name: "WebAuthnSignerData",
|
|
137
|
+
type: "tuple"
|
|
138
|
+
},
|
|
139
|
+
{ name: "authenticatorIdHash", type: "bytes32" }
|
|
140
|
+
], [
|
|
141
|
+
{ pubKeyX: pubKey.pubX, pubKeyY: pubKey.pubY },
|
|
142
|
+
pubKey.authenticatorIdHash
|
|
143
|
+
]);
|
|
144
|
+
},
|
|
145
|
+
getDummySignature: () => {
|
|
146
|
+
return encodeAbiParameters([
|
|
147
|
+
{ name: "authenticatorData", type: "bytes" },
|
|
148
|
+
{ name: "clientDataJSON", type: "string" },
|
|
149
|
+
{ name: "responseTypeLocation", type: "uint256" },
|
|
150
|
+
{ name: "r", type: "uint256" },
|
|
151
|
+
{ name: "s", type: "uint256" },
|
|
152
|
+
{ name: "usePrecompiled", type: "bool" }
|
|
153
|
+
], [
|
|
154
|
+
"0x49960de5880e8c687434170f6476605b8fe4aeb9a28632c7995cf3ba831d97631d00000000",
|
|
155
|
+
'{"type":"webauthn.get","challenge":"tbxXNFS9X_4Byr1cMwqKrIGB-_30a0QhZ6y7ucM0BOE","origin":"http://localhost:3000","crossOrigin":false}',
|
|
156
|
+
1n,
|
|
157
|
+
44941127272049826721201904734628716258498742255959991581049806490182030242267n,
|
|
158
|
+
9910254599581058084911561569808925251374718953855182016200087235935345969636n,
|
|
159
|
+
false
|
|
160
|
+
]);
|
|
161
|
+
}
|
|
162
|
+
};
|
|
163
|
+
};
|
|
164
|
+
//# sourceMappingURL=toWebAuthnSigner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toWebAuthnSigner.js","sourceRoot":"","sources":["../../signers/toWebAuthnSigner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { concat, encodeAbiParameters } from "viem";
|
|
2
|
+
export const toSignerId = (signer) => {
|
|
3
|
+
return encodeAbiParameters([{ name: "signerData", type: "bytes" }], [concat([signer.signerContractAddress, signer.getSignerData()])]);
|
|
4
|
+
};
|
|
5
|
+
//# sourceMappingURL=toSignerId.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toSignerId.js","sourceRoot":"","sources":["../../../signers/utils/toSignerId.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,MAAM,EAAE,mBAAmB,EAAE,MAAM,MAAM,CAAA;AAG5D,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,MAAqB,EAAO,EAAE;IACrD,OAAO,mBAAmB,CACtB,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EACvC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,qBAAqB,EAAE,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,CACnE,CAAA;AACL,CAAC,CAAA"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { p256 } from "@noble/curves/p256";
|
|
2
|
+
import { bytesToBigInt, hexToBytes } from "viem";
|
|
3
|
+
const RIP7212_SUPPORTED_NETWORKS = [80001];
|
|
4
|
+
export const uint8ArrayToHexString = (array) => {
|
|
5
|
+
return `0x${Array.from(array, (byte) => byte.toString(16).padStart(2, "0")).join("")}`;
|
|
6
|
+
};
|
|
7
|
+
export const b64ToBytes = (base64) => {
|
|
8
|
+
const paddedBase64 = base64
|
|
9
|
+
.replace(/-/g, "+")
|
|
10
|
+
.replace(/_/g, "/")
|
|
11
|
+
.padEnd(base64.length + ((4 - (base64.length % 4)) % 4), "=");
|
|
12
|
+
const binString = atob(paddedBase64);
|
|
13
|
+
return Uint8Array.from(binString, (m) => m.codePointAt(0) ?? 0);
|
|
14
|
+
};
|
|
15
|
+
export const findQuoteIndices = (input) => {
|
|
16
|
+
const beforeTypeIndex = BigInt(input.lastIndexOf('"type":"webauthn.get"'));
|
|
17
|
+
const beforeChallengeIndex = BigInt(input.indexOf('"challenge'));
|
|
18
|
+
return {
|
|
19
|
+
beforeType: beforeTypeIndex,
|
|
20
|
+
beforeChallenge: beforeChallengeIndex
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
// Parse DER-encoded P256-SHA256 signature to contract-friendly signature
|
|
24
|
+
// and normalize it so the signature is not malleable.
|
|
25
|
+
export function parseAndNormalizeSig(derSig) {
|
|
26
|
+
const parsedSignature = p256.Signature.fromDER(derSig.slice(2));
|
|
27
|
+
const bSig = hexToBytes(`0x${parsedSignature.toCompactHex()}`);
|
|
28
|
+
// assert(bSig.length === 64, "signature is not 64 bytes");
|
|
29
|
+
const bR = bSig.slice(0, 32);
|
|
30
|
+
const bS = bSig.slice(32);
|
|
31
|
+
// Avoid malleability. Ensure low S (<= N/2 where N is the curve order)
|
|
32
|
+
const r = bytesToBigInt(bR);
|
|
33
|
+
let s = bytesToBigInt(bS);
|
|
34
|
+
const n = BigInt("0xFFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551");
|
|
35
|
+
if (s > n / 2n) {
|
|
36
|
+
s = n - s;
|
|
37
|
+
}
|
|
38
|
+
return { r, s };
|
|
39
|
+
}
|
|
40
|
+
export const isRIP7212SupportedNetwork = (chainId) => RIP7212_SUPPORTED_NETWORKS.includes(chainId);
|
|
41
|
+
//# sourceMappingURL=webAuthnUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webAuthnUtils.js","sourceRoot":"","sources":["../../signers/webAuthnUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAA;AACzC,OAAO,EAAY,aAAa,EAAE,UAAU,EAAE,MAAM,MAAM,CAAA;AAE1D,MAAM,0BAA0B,GAAG,CAAC,KAAK,CAAC,CAAA;AAE1C,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,KAAiB,EAAiB,EAAE;IACtE,OAAO,KAAK,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CACnC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CACrC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAmB,CAAA;AACjC,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,MAAc,EAAc,EAAE;IACrD,MAAM,YAAY,GAAG,MAAM;SACtB,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC;SAClB,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC;SAClB,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;IACjE,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,CAAA;IACpC,OAAO,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;AACnE,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC5B,KAAa,EACkC,EAAE;IACjD,MAAM,eAAe,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,uBAAuB,CAAC,CAAC,CAAA;IAC1E,MAAM,oBAAoB,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAA;IAChE,OAAO;QACH,UAAU,EAAE,eAAe;QAC3B,eAAe,EAAE,oBAAoB;KACxC,CAAA;AACL,CAAC,CAAA;AAED,yEAAyE;AACzE,sDAAsD;AACtD,MAAM,UAAU,oBAAoB,CAAC,MAAW;IAC5C,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;IAC/D,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,eAAe,CAAC,YAAY,EAAE,EAAE,CAAC,CAAA;IAC9D,2DAA2D;IAC3D,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;IAC5B,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;IAEzB,uEAAuE;IACvE,MAAM,CAAC,GAAG,aAAa,CAAC,EAAE,CAAC,CAAA;IAC3B,IAAI,CAAC,GAAG,aAAa,CAAC,EAAE,CAAC,CAAA;IACzB,MAAM,CAAC,GAAG,MAAM,CACZ,oEAAoE,CACvE,CAAA;IACD,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC;QACb,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IACb,CAAC;IACD,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAA;AACnB,CAAC;AAED,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,OAAe,EAAW,EAAE,CAClE,0BAA0B,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { KernelV3AccountAbi } from "@zerodev/sdk";
|
|
2
|
+
import { getAction, getUserOperationHash } from "permissionless";
|
|
3
|
+
import { concat, encodeAbiParameters, keccak256, pad, slice, zeroAddress } from "viem";
|
|
4
|
+
import { getChainId, readContract } from "viem/actions";
|
|
5
|
+
import { PolicyFlags } from "./constants.js";
|
|
6
|
+
import { toPolicyId } from "./policies/index.js";
|
|
7
|
+
import { toSignerId } from "./signers/index.js";
|
|
8
|
+
export async function toPermissionValidator(client, { signer, policies, entryPoint: entryPointAddress, flag = PolicyFlags.FOR_ALL_VALIDATION }) {
|
|
9
|
+
const chainId = await getChainId(client);
|
|
10
|
+
const getEnableData = async (_kernelAccountAddress) => {
|
|
11
|
+
const enableData = encodeAbiParameters([{ name: "policyAndSignerData", type: "bytes[]" }], [
|
|
12
|
+
[
|
|
13
|
+
...policies.map((policy) => concat([
|
|
14
|
+
policy.getPolicyInfoInBytes(),
|
|
15
|
+
policy.getPolicyData(getPermissionId())
|
|
16
|
+
])),
|
|
17
|
+
concat([
|
|
18
|
+
flag,
|
|
19
|
+
signer.signerContractAddress,
|
|
20
|
+
signer.getSignerData(getPermissionId())
|
|
21
|
+
])
|
|
22
|
+
]
|
|
23
|
+
]);
|
|
24
|
+
return enableData;
|
|
25
|
+
};
|
|
26
|
+
const getPermissionId = () => {
|
|
27
|
+
const pIdData = encodeAbiParameters([{ name: "policyAndSignerData", type: "bytes[]" }], [[toPolicyId(policies), flag, toSignerId(signer)]]);
|
|
28
|
+
return slice(keccak256(pIdData), 0, 2);
|
|
29
|
+
};
|
|
30
|
+
return {
|
|
31
|
+
...signer.account,
|
|
32
|
+
validatorType: "PERMISSION",
|
|
33
|
+
address: zeroAddress,
|
|
34
|
+
source: "PermissionValidator",
|
|
35
|
+
getEnableData,
|
|
36
|
+
getIdentifier: () => pad(getPermissionId(), {
|
|
37
|
+
size: 20,
|
|
38
|
+
dir: "right"
|
|
39
|
+
}),
|
|
40
|
+
signMessage: async ({ message }) => {
|
|
41
|
+
return concat([
|
|
42
|
+
"0xff",
|
|
43
|
+
await signer.account.signMessage({ message })
|
|
44
|
+
]);
|
|
45
|
+
},
|
|
46
|
+
signTypedData: async (typedData) => {
|
|
47
|
+
return concat([
|
|
48
|
+
"0xff",
|
|
49
|
+
await signer.account.signTypedData(typedData)
|
|
50
|
+
]);
|
|
51
|
+
},
|
|
52
|
+
signUserOperation: async (userOperation) => {
|
|
53
|
+
const userOpHash = getUserOperationHash({
|
|
54
|
+
userOperation: { ...userOperation, signature: "0x" },
|
|
55
|
+
entryPoint: entryPointAddress,
|
|
56
|
+
chainId: chainId
|
|
57
|
+
});
|
|
58
|
+
const signature = await signer.account.signMessage({
|
|
59
|
+
message: { raw: userOpHash }
|
|
60
|
+
});
|
|
61
|
+
return concat(["0xff", signature]);
|
|
62
|
+
},
|
|
63
|
+
getNonceKey: async () => {
|
|
64
|
+
return 0n;
|
|
65
|
+
},
|
|
66
|
+
async getDummySignature(_userOperation) {
|
|
67
|
+
return concat(["0xff", signer.getDummySignature()]);
|
|
68
|
+
},
|
|
69
|
+
getPluginSerializationParams: () => {
|
|
70
|
+
return {
|
|
71
|
+
policies
|
|
72
|
+
};
|
|
73
|
+
},
|
|
74
|
+
isEnabled: async (kernelAccountAddress, _selector) => {
|
|
75
|
+
try {
|
|
76
|
+
const permissionConfig = await getAction(client, readContract)({
|
|
77
|
+
abi: KernelV3AccountAbi,
|
|
78
|
+
address: kernelAccountAddress,
|
|
79
|
+
functionName: "permissionConfig",
|
|
80
|
+
args: [
|
|
81
|
+
concat([
|
|
82
|
+
"0x00",
|
|
83
|
+
pad(getPermissionId(), {
|
|
84
|
+
size: 20,
|
|
85
|
+
dir: "right"
|
|
86
|
+
})
|
|
87
|
+
])
|
|
88
|
+
]
|
|
89
|
+
});
|
|
90
|
+
return permissionConfig.signer === signer.signerContractAddress;
|
|
91
|
+
}
|
|
92
|
+
catch (error) {
|
|
93
|
+
return false;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=toPermissionValidator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toPermissionValidator.js","sourceRoot":"","sources":["../toPermissionValidator.ts"],"names":[],"mappings":"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"}
|
package/_esm/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,MAAM,cAAc,CAAA;AAInD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA"}
|
package/_esm/utils.js
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export function base64ToBytes(base64) {
|
|
2
|
+
const binString = atob(base64);
|
|
3
|
+
return Uint8Array.from(binString, (m) => m.codePointAt(0));
|
|
4
|
+
}
|
|
5
|
+
export function bytesToBase64(bytes) {
|
|
6
|
+
const binString = Array.from(bytes, (x) => String.fromCodePoint(x)).join("");
|
|
7
|
+
return btoa(binString);
|
|
8
|
+
}
|
|
9
|
+
export function isPermissionValidatorPlugin(
|
|
10
|
+
// biome-ignore lint/suspicious/noExplicitAny: <explanation>
|
|
11
|
+
plugin) {
|
|
12
|
+
return plugin?.getPluginSerializationParams !== undefined;
|
|
13
|
+
}
|
|
14
|
+
export const serializePermissionAccountParams = (params) => {
|
|
15
|
+
// biome-ignore lint/suspicious/noExplicitAny: <explanation>
|
|
16
|
+
const replacer = (_, value) => {
|
|
17
|
+
if (typeof value === "bigint") {
|
|
18
|
+
return value.toString();
|
|
19
|
+
}
|
|
20
|
+
return value;
|
|
21
|
+
};
|
|
22
|
+
const jsonString = JSON.stringify(params, replacer);
|
|
23
|
+
const uint8Array = new TextEncoder().encode(jsonString);
|
|
24
|
+
const base64String = bytesToBase64(uint8Array);
|
|
25
|
+
return base64String;
|
|
26
|
+
};
|
|
27
|
+
export const deserializePermissionAccountParams = (params) => {
|
|
28
|
+
const uint8Array = base64ToBytes(params);
|
|
29
|
+
const jsonString = new TextDecoder().decode(uint8Array);
|
|
30
|
+
return JSON.parse(jsonString);
|
|
31
|
+
};
|
|
32
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../utils.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,aAAa,CAAC,MAAc;IACxC,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,CAAA;IAC9B,OAAO,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAW,CAAC,CAAA;AACxE,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAiB;IAC3C,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAC5E,OAAO,IAAI,CAAC,SAAS,CAAC,CAAA;AAC1B,CAAC;AAED,MAAM,UAAU,2BAA2B;AACvC,4DAA4D;AAC5D,MAAW;IAEX,OAAO,MAAM,EAAE,4BAA4B,KAAK,SAAS,CAAA;AAC7D,CAAC;AAED,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAC5C,MAA+B,EACjC,EAAE;IACA,4DAA4D;IAC5D,MAAM,QAAQ,GAAG,CAAC,CAAS,EAAE,KAAU,EAAE,EAAE;QACvC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC5B,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAA;QAC3B,CAAC;QACD,OAAO,KAAK,CAAA;IAChB,CAAC,CAAA;IAED,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;IACnD,MAAM,UAAU,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;IACvD,MAAM,YAAY,GAAG,aAAa,CAAC,UAAU,CAAC,CAAA;IAC9C,OAAO,YAAY,CAAA;AACvB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,kCAAkC,GAAG,CAAC,MAAc,EAAE,EAAE;IACjE,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,CAAA;IACxC,MAAM,UAAU,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;IACvD,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAA4B,CAAA;AAC5D,CAAC,CAAA"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export declare const CALL_POLICY_CONTRACT = "0xc4a1aaED053Fc02717358a377A2d695bCdFA3B8A";
|
|
2
|
+
export declare const ECDSA_SIGNER_CONTRACT = "0x8Ed04D0B000777c87e701696cf6B9710733Df96a";
|
|
3
|
+
export declare const GAS_POLICY_CONTRACT = "0x50FD84A0A1D1683e1dafC5009876B38773fc8E3A";
|
|
4
|
+
export declare const SIGNATURE_POLICY_CONTRACT = "0x19a3E696fFdFEDfadb22297DB223B9ca501523dD";
|
|
5
|
+
export declare const RATE_LIMIT_POLICY_CONTRACT = "0xdB6e5F9a18f0F6Fa0861cB60f94Cf7f7374E8270";
|
|
6
|
+
export declare const WEBAUTHN_SIGNER_CONTRACT = "0xD71E0e2AFf9D4d93b20F615e6aC2ac7e0795b472";
|
|
7
|
+
export declare const SUDO_POLICY_CONTRACT = "0x6D14FC570e2bE7D74a6926ea54f190d690855851";
|
|
8
|
+
export declare enum PolicyFlags {
|
|
9
|
+
FOR_ALL_VALIDATION = "0x0000",
|
|
10
|
+
NOT_FOR_VALIDATE_USEROP = "0x0001",
|
|
11
|
+
NOT_FOR_VALIDATE_SIG = "0x0002"
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,oBAAoB,+CAA+C,CAAA;AAChF,eAAO,MAAM,qBAAqB,+CACc,CAAA;AAChD,eAAO,MAAM,mBAAmB,+CAA+C,CAAA;AAC/E,eAAO,MAAM,yBAAyB,+CACU,CAAA;AAChD,eAAO,MAAM,0BAA0B,+CACS,CAAA;AAChD,eAAO,MAAM,wBAAwB,+CACW,CAAA;AAChD,eAAO,MAAM,oBAAoB,+CAA+C,CAAA;AAEhF,oBAAY,WAAW;IACnB,kBAAkB,WAAW;IAC7B,uBAAuB,WAAW;IAClC,oBAAoB,WAAW;CAClC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { createKernelAccount } from "@zerodev/sdk";
|
|
2
|
+
import type { ValidatorInitData } from "@zerodev/sdk/types";
|
|
3
|
+
import type { EntryPoint } from "permissionless/types";
|
|
4
|
+
import type { Hex } from "viem";
|
|
5
|
+
import { type Policy } from "./types.js";
|
|
6
|
+
import type { ModularSigner } from "./types.js";
|
|
7
|
+
export declare const deserializePermissionAccount: <entryPoint extends EntryPoint>(client: Parameters<typeof createKernelAccount>[0], modularPermissionAccountParams: string, modularSigner?: ModularSigner, entryPointAddress?: entryPoint) => Promise<import("@zerodev/sdk").KernelSmartAccount<entryPoint, import("viem").Transport, import("viem").Chain | undefined>>;
|
|
8
|
+
export declare const createPolicyFromParams: (policy: Policy) => Promise<Policy>;
|
|
9
|
+
export declare const decodeParamsFromInitCode: (initCode: Hex) => {
|
|
10
|
+
index: bigint;
|
|
11
|
+
validatorInitData: ValidatorInitData;
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=deserializePermissionAccount.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deserializePermissionAccount.d.ts","sourceRoot":"","sources":["../deserializePermissionAccount.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAGtE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAE3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,MAAM,CAAA;AAY/B,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAG/C,eAAO,MAAM,4BAA4B,0CAG7B,WAAW,0BAA0B,CAAC,CAAC,CAAC,CAAC,kCACjB,MAAM,kBACtB,aAAa,+JA8ChC,CAAA;AAED,eAAO,MAAM,sBAAsB,WAAkB,MAAM,oBAe1D,CAAA;AAED,eAAO,MAAM,wBAAwB,aAAc,GAAG;;;CA0BrD,CAAA"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export type * from "./types.js";
|
|
2
|
+
export { toPermissionValidator } from "./toPermissionValidator.js";
|
|
3
|
+
export { serializePermissionAccount } from "./serializePermissionAccount.js";
|
|
4
|
+
export { deserializePermissionAccount } from "./deserializePermissionAccount.js";
|
|
5
|
+
export * from "./constants.js";
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,mBAAmB,YAAY,CAAA;AAC/B,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AAClE,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAA;AAC5E,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAA;AAChF,cAAc,gBAAgB,CAAA"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { type Abi, type Hex } from "viem";
|
|
2
|
+
import type { GeneratePermissionFromArgsParameters, PermissionCore } from "./types.js";
|
|
3
|
+
export declare function getPermissionFromABI<TAbi extends Abi | readonly unknown[], TFunctionName extends string | undefined = string>({ abi, args, functionName }: GeneratePermissionFromArgsParameters<TAbi, TFunctionName>): Pick<PermissionCore, "selector" | "rules">;
|
|
4
|
+
export declare const encodePermissionData: (permission: PermissionCore | PermissionCore[]) => Hex;
|
|
5
|
+
//# sourceMappingURL=callPolicyUtils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"callPolicyUtils.d.ts","sourceRoot":"","sources":["../../policies/callPolicyUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,KAAK,GAAG,EAGR,KAAK,GAAG,EAOX,MAAM,MAAM,CAAA;AACb,OAAO,KAAK,EAER,oCAAoC,EAEpC,cAAc,EACjB,MAAM,YAAY,CAAA;AAEnB,wBAAgB,oBAAoB,CAChC,IAAI,SAAS,GAAG,GAAG,SAAS,OAAO,EAAE,EACrC,aAAa,SAAS,MAAM,GAAG,SAAS,GAAG,MAAM,EACnD,EACE,GAAG,EACH,IAAI,EACJ,YAAY,EACf,EAAE,oCAAoC,CAAC,IAAI,EAAE,aAAa,CAAC,GAAG,IAAI,CAC/D,cAAc,EACd,UAAU,GAAG,OAAO,CACvB,CAwCA;AAED,eAAO,MAAM,oBAAoB,eACjB,cAAc,GAAG,cAAc,EAAE,KAC9C,GAgDF,CAAA"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { toGasPolicy, type GasPolicyParams } from "./toGasPolicy.js";
|
|
2
|
+
export { toSignatureCallerPolicy, type SignatureCallerPolicyParams } from "./toSignatureCallerPolicy.js";
|
|
3
|
+
export { toRateLimitPolicy, type RateLimitPolicyParams } from "./toRateLimitPolicy.js";
|
|
4
|
+
export { toCallPolicy, type CallPolicyParams } from "./toCallPolicy.js";
|
|
5
|
+
export { toPolicyId } from "./utils/toPolicyId.js";
|
|
6
|
+
export { toSudoPolicy, type SudoPolicyParams } from "./toSudoPolicy.js";
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../policies/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,KAAK,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACpE,OAAO,EACH,uBAAuB,EACvB,KAAK,2BAA2B,EACnC,MAAM,8BAA8B,CAAA;AACrC,OAAO,EACH,iBAAiB,EACjB,KAAK,qBAAqB,EAC7B,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,YAAY,EAAE,KAAK,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AACvE,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAClD,OAAO,EAAE,YAAY,EAAE,KAAK,gBAAgB,EAAE,MAAM,mBAAmB,CAAA"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Abi } from "viem";
|
|
2
|
+
import type { Policy, PolicyParams } from "../types.js";
|
|
3
|
+
import { type Permission } from "./types.js";
|
|
4
|
+
export type CallPolicyParams<TAbi extends Abi | readonly unknown[], TFunctionName extends string | undefined = string> = PolicyParams & {
|
|
5
|
+
permissions?: Permission<TAbi, TFunctionName>[];
|
|
6
|
+
type?: "call";
|
|
7
|
+
};
|
|
8
|
+
export declare function toCallPolicy<TAbi extends Abi | readonly unknown[], TFunctionName extends string | undefined = string>({ policyAddress, policyFlag, permissions, type }: CallPolicyParams<TAbi, TFunctionName>): Promise<Policy>;
|
|
9
|
+
//# sourceMappingURL=toCallPolicy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toCallPolicy.d.ts","sourceRoot":"","sources":["../../policies/toCallPolicy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,MAAM,CAAA;AAI/B,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAKvD,OAAO,EAAY,KAAK,UAAU,EAAE,MAAM,YAAY,CAAA;AAEtD,MAAM,MAAM,gBAAgB,CACxB,IAAI,SAAS,GAAG,GAAG,SAAS,OAAO,EAAE,EACrC,aAAa,SAAS,MAAM,GAAG,SAAS,GAAG,MAAM,IACjD,YAAY,GAAG;IACf,WAAW,CAAC,EAAE,UAAU,CAAC,IAAI,EAAE,aAAa,CAAC,EAAE,CAAA;IAC/C,IAAI,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,wBAAsB,YAAY,CAC9B,IAAI,SAAS,GAAG,GAAG,SAAS,OAAO,EAAE,EACrC,aAAa,SAAS,MAAM,GAAG,SAAS,GAAG,MAAM,EACnD,EACE,aAAoC,EACpC,UAA2C,EAC3C,WAAgB,EAChB,IAAa,EAChB,EAAE,gBAAgB,CAAC,IAAI,EAAE,aAAa,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAqCzD"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type Address } from "viem";
|
|
2
|
+
import type { Policy, PolicyParams } from "../types.js";
|
|
3
|
+
export type GasPolicyParams = PolicyParams & {
|
|
4
|
+
allowed: bigint;
|
|
5
|
+
enforcePaymaster?: boolean;
|
|
6
|
+
allowedPaymaster?: Address;
|
|
7
|
+
type?: "gas";
|
|
8
|
+
};
|
|
9
|
+
export declare function toGasPolicy({ policyAddress, policyFlag, allowed, enforcePaymaster, allowedPaymaster, type }: GasPolicyParams): Promise<Policy>;
|
|
10
|
+
//# sourceMappingURL=toGasPolicy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toGasPolicy.d.ts","sourceRoot":"","sources":["../../policies/toGasPolicy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAA+C,MAAM,MAAM,CAAA;AAGhF,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAEvD,MAAM,MAAM,eAAe,GAAG,YAAY,GAAG;IACzC,OAAO,EAAE,MAAM,CAAA;IACf,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,IAAI,CAAC,EAAE,KAAK,CAAA;CACf,CAAA;AAED,wBAAsB,WAAW,CAAC,EAC9B,aAAmC,EACnC,UAA2C,EAC3C,OAAO,EACP,gBAAwB,EACxB,gBAA8B,EAC9B,IAAY,EACf,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAwBnC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Policy, PolicyParams } from "../types.js";
|
|
2
|
+
export type RateLimitPolicyParams = PolicyParams & {
|
|
3
|
+
interval?: number;
|
|
4
|
+
count: number;
|
|
5
|
+
startAt?: number;
|
|
6
|
+
type?: "rate-limit";
|
|
7
|
+
};
|
|
8
|
+
export declare function toRateLimitPolicy({ policyAddress, policyFlag, interval, count, startAt, type }: RateLimitPolicyParams): Promise<Policy>;
|
|
9
|
+
//# sourceMappingURL=toRateLimitPolicy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toRateLimitPolicy.d.ts","sourceRoot":"","sources":["../../policies/toRateLimitPolicy.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAEvD,MAAM,MAAM,qBAAqB,GAAG,YAAY,GAAG;IAC/C,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,YAAY,CAAA;CACtB,CAAA;AAED,wBAAsB,iBAAiB,CAAC,EACpC,aAA0C,EAC1C,UAA2C,EAC3C,QAAY,EACZ,KAAK,EACL,OAAW,EACX,IAAmB,EACtB,EAAE,qBAAqB,GAAG,OAAO,CAAC,MAAM,CAAC,CAuBzC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type Address } from "viem";
|
|
2
|
+
import type { Policy, PolicyParams } from "../types.js";
|
|
3
|
+
export type SignatureCallerPolicyParams = PolicyParams & {
|
|
4
|
+
allowedCallers: Address[];
|
|
5
|
+
type?: "signature-caller";
|
|
6
|
+
};
|
|
7
|
+
export declare function toSignatureCallerPolicy({ policyAddress, policyFlag, allowedCallers, type }: SignatureCallerPolicyParams): Promise<Policy>;
|
|
8
|
+
//# sourceMappingURL=toSignatureCallerPolicy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toSignatureCallerPolicy.d.ts","sourceRoot":"","sources":["../../policies/toSignatureCallerPolicy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAkC,MAAM,MAAM,CAAA;AAGnE,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAEvD,MAAM,MAAM,2BAA2B,GAAG,YAAY,GAAG;IACrD,cAAc,EAAE,OAAO,EAAE,CAAA;IACzB,IAAI,CAAC,EAAE,kBAAkB,CAAA;CAC5B,CAAA;AAED,wBAAsB,uBAAuB,CAAC,EAC1C,aAAyC,EACzC,UAA2C,EAC3C,cAAc,EACd,IAAyB,EAC5B,EAAE,2BAA2B,GAAG,OAAO,CAAC,MAAM,CAAC,CAkB/C"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { Policy, PolicyParams } from "../types.js";
|
|
2
|
+
export type SudoPolicyParams = PolicyParams & {
|
|
3
|
+
type?: "sudo";
|
|
4
|
+
};
|
|
5
|
+
export declare function toSudoPolicy({ policyAddress, policyFlag, type }: SudoPolicyParams): Promise<Policy>;
|
|
6
|
+
//# sourceMappingURL=toSudoPolicy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toSudoPolicy.d.ts","sourceRoot":"","sources":["../../policies/toSudoPolicy.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAEvD,MAAM,MAAM,gBAAgB,GAAG,YAAY,GAAG;IAC1C,IAAI,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,wBAAsB,YAAY,CAAC,EAC/B,aAAoC,EACpC,UAA2C,EAC3C,IAAa,EAChB,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,CAcpC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { type ExtractAbiFunction, type ExtractAbiFunctionNames } from "abitype";
|
|
2
|
+
import type { Abi, AbiFunction, AbiParameter, AbiParameterKind, AbiParameterToPrimitiveType, AbiStateMutability, Address, Hex, Narrow } from "viem";
|
|
3
|
+
export declare enum CallType {
|
|
4
|
+
CALL = "0x00",
|
|
5
|
+
BATCH_CALL = "0x01",
|
|
6
|
+
DELEGATE_CALL = "0xff"
|
|
7
|
+
}
|
|
8
|
+
export declare enum ParamCondition {
|
|
9
|
+
EQUAL = 0,
|
|
10
|
+
GREATER_THAN = 1,
|
|
11
|
+
LESS_THAN = 2,
|
|
12
|
+
GREATER_THAN_OR_EQUAL = 3,
|
|
13
|
+
LESS_THAN_OR_EQUAL = 4,
|
|
14
|
+
NOT_EQUAL = 5
|
|
15
|
+
}
|
|
16
|
+
export interface ParamRule {
|
|
17
|
+
condition: ParamCondition;
|
|
18
|
+
offset: number;
|
|
19
|
+
param: Hex;
|
|
20
|
+
}
|
|
21
|
+
export type PermissionCore = {
|
|
22
|
+
callType?: CallType;
|
|
23
|
+
target: Address;
|
|
24
|
+
selector?: Hex;
|
|
25
|
+
valueLimit?: bigint;
|
|
26
|
+
rules?: ParamRule[];
|
|
27
|
+
};
|
|
28
|
+
export type InferFunctionName<TAbi extends Abi | readonly unknown[] = Abi, TFunctionName extends string | undefined = string, TAbiStateMutability extends AbiStateMutability = AbiStateMutability> = TAbi extends Abi ? ExtractAbiFunctionNames<TAbi, TAbiStateMutability> extends infer AbiFunctionNames ? AbiFunctionNames | (TFunctionName extends AbiFunctionNames ? TFunctionName : never) | (Abi extends TAbi ? string : never) : never : TFunctionName;
|
|
29
|
+
export type GetFunctionArgs<TAbi extends Abi | readonly unknown[], TFunctionName extends string, TAbiFunction extends AbiFunction = TAbi extends Abi ? ExtractAbiFunction<TAbi, TFunctionName> : AbiFunction, TArgs = CombinedArgs<TAbiFunction["inputs"]>, FailedToParseArgs = ([TArgs] extends [never] ? true : false) | (readonly unknown[] extends TArgs ? true : false)> = true extends FailedToParseArgs ? {
|
|
30
|
+
args?: readonly unknown[];
|
|
31
|
+
} : TArgs extends readonly [] ? {
|
|
32
|
+
args?: never;
|
|
33
|
+
} : {
|
|
34
|
+
args?: TArgs;
|
|
35
|
+
};
|
|
36
|
+
export type Permission<TAbi extends Abi | readonly unknown[], TFunctionName extends string | undefined = string, _FunctionName = TAbi extends Abi ? InferFunctionName<TAbi, TFunctionName> : never> = PermissionCore & {
|
|
37
|
+
functionName?: _FunctionName;
|
|
38
|
+
} & (TFunctionName extends string ? {
|
|
39
|
+
abi?: Narrow<TAbi>;
|
|
40
|
+
} & GetFunctionArgs<TAbi, TFunctionName> : _FunctionName extends string ? {
|
|
41
|
+
abi?: [Narrow<TAbi[number]>];
|
|
42
|
+
} & GetFunctionArgs<TAbi, _FunctionName> : never);
|
|
43
|
+
export type CombinedArgs<TAbiParameters extends readonly AbiParameter[], TAbiParameterKind extends AbiParameterKind = AbiParameterKind> = {
|
|
44
|
+
[K in keyof TAbiParameters]: {
|
|
45
|
+
condition: ParamCondition;
|
|
46
|
+
value: AbiParameterToPrimitiveType<TAbiParameters[K], TAbiParameterKind>;
|
|
47
|
+
} | null;
|
|
48
|
+
};
|
|
49
|
+
export type GeneratePermissionFromArgsParameters<TAbi extends Abi | readonly unknown[], TFunctionName extends string | undefined = string, _FunctionName = TAbi extends Abi ? InferFunctionName<TAbi, TFunctionName> : never> = {
|
|
50
|
+
functionName?: _FunctionName;
|
|
51
|
+
} & (TFunctionName extends string ? {
|
|
52
|
+
abi: Narrow<TAbi>;
|
|
53
|
+
} & GetFunctionArgs<TAbi, TFunctionName> : _FunctionName extends string ? {
|
|
54
|
+
abi: [Narrow<TAbi[number]>];
|
|
55
|
+
} & GetFunctionArgs<TAbi, _FunctionName> : never);
|
|
56
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../policies/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toPolicyId.d.ts","sourceRoot":"","sources":["../../../policies/utils/toPolicyId.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,GAAG,EAA+B,MAAM,MAAM,CAAA;AAC5D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAE5C,eAAO,MAAM,UAAU,aAAc,MAAM,EAAE,KAAG,GAS/C,CAAA"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { KernelSmartAccount } from "@zerodev/sdk";
|
|
2
|
+
import type { EntryPoint } from "permissionless/types";
|
|
3
|
+
import type { Hex } from "viem";
|
|
4
|
+
export declare const serializePermissionAccount: <entryPoint extends EntryPoint>(account: KernelSmartAccount<entryPoint>, privateKey?: Hex) => Promise<string>;
|
|
5
|
+
//# sourceMappingURL=serializePermissionAccount.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serializePermissionAccount.d.ts","sourceRoot":"","sources":["../serializePermissionAccount.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,MAAM,CAAA;AAM/B,eAAO,MAAM,0BAA0B,wFAEtB,GAAG,KACjB,QAAQ,MAAM,CA0BhB,CAAA"}
|