@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.
Files changed (157) hide show
  1. package/_cjs/constants.js +17 -0
  2. package/_cjs/constants.js.map +1 -0
  3. package/_cjs/deserializePermissionAccount.js +94 -0
  4. package/_cjs/deserializePermissionAccount.js.map +1 -0
  5. package/_cjs/index.js +12 -0
  6. package/_cjs/index.js.map +1 -0
  7. package/_cjs/package.json +1 -0
  8. package/_cjs/policies/callPolicyUtils.js +87 -0
  9. package/_cjs/policies/callPolicyUtils.js.map +1 -0
  10. package/_cjs/policies/index.js +16 -0
  11. package/_cjs/policies/index.js.map +1 -0
  12. package/_cjs/policies/toCallPolicy.js +42 -0
  13. package/_cjs/policies/toCallPolicy.js.map +1 -0
  14. package/_cjs/policies/toGasPolicy.js +30 -0
  15. package/_cjs/policies/toGasPolicy.js.map +1 -0
  16. package/_cjs/policies/toRateLimitPolicy.js +30 -0
  17. package/_cjs/policies/toRateLimitPolicy.js.map +1 -0
  18. package/_cjs/policies/toSignatureCallerPolicy.js +24 -0
  19. package/_cjs/policies/toSignatureCallerPolicy.js.map +1 -0
  20. package/_cjs/policies/toSudoPolicy.js +22 -0
  21. package/_cjs/policies/toSudoPolicy.js.map +1 -0
  22. package/_cjs/policies/types.js +19 -0
  23. package/_cjs/policies/types.js.map +1 -0
  24. package/_cjs/policies/utils/toPolicyId.js +11 -0
  25. package/_cjs/policies/utils/toPolicyId.js.map +1 -0
  26. package/_cjs/serializePermissionAccount.js +27 -0
  27. package/_cjs/serializePermissionAccount.js.map +1 -0
  28. package/_cjs/signers/index.js +12 -0
  29. package/_cjs/signers/index.js.map +1 -0
  30. package/_cjs/signers/toECDSASigner.js +39 -0
  31. package/_cjs/signers/toECDSASigner.js.map +1 -0
  32. package/_cjs/signers/toWebAuthnPubKey.js +97 -0
  33. package/_cjs/signers/toWebAuthnPubKey.js.map +1 -0
  34. package/_cjs/signers/toWebAuthnSigner.js +154 -0
  35. package/_cjs/signers/toWebAuthnSigner.js.map +1 -0
  36. package/_cjs/signers/utils/toSignerId.js +9 -0
  37. package/_cjs/signers/utils/toSignerId.js.map +1 -0
  38. package/_cjs/signers/webAuthnUtils.js +45 -0
  39. package/_cjs/signers/webAuthnUtils.js.map +1 -0
  40. package/_cjs/toPermissionValidator.js +102 -0
  41. package/_cjs/toPermissionValidator.js.map +1 -0
  42. package/_cjs/types.js +3 -0
  43. package/_cjs/types.js.map +1 -0
  44. package/_cjs/utils.js +37 -0
  45. package/_cjs/utils.js.map +1 -0
  46. package/_esm/constants.js +14 -0
  47. package/_esm/constants.js.map +1 -0
  48. package/_esm/deserializePermissionAccount.js +89 -0
  49. package/_esm/deserializePermissionAccount.js.map +1 -0
  50. package/_esm/index.js +5 -0
  51. package/_esm/index.js.map +1 -0
  52. package/_esm/package.json +1 -0
  53. package/_esm/policies/callPolicyUtils.js +82 -0
  54. package/_esm/policies/callPolicyUtils.js.map +1 -0
  55. package/_esm/policies/index.js +7 -0
  56. package/_esm/policies/index.js.map +1 -0
  57. package/_esm/policies/toCallPolicy.js +38 -0
  58. package/_esm/policies/toCallPolicy.js.map +1 -0
  59. package/_esm/policies/toGasPolicy.js +26 -0
  60. package/_esm/policies/toGasPolicy.js.map +1 -0
  61. package/_esm/policies/toRateLimitPolicy.js +26 -0
  62. package/_esm/policies/toRateLimitPolicy.js.map +1 -0
  63. package/_esm/policies/toSignatureCallerPolicy.js +20 -0
  64. package/_esm/policies/toSignatureCallerPolicy.js.map +1 -0
  65. package/_esm/policies/toSudoPolicy.js +18 -0
  66. package/_esm/policies/toSudoPolicy.js.map +1 -0
  67. package/_esm/policies/types.js +17 -0
  68. package/_esm/policies/types.js.map +1 -0
  69. package/_esm/policies/utils/toPolicyId.js +7 -0
  70. package/_esm/policies/utils/toPolicyId.js.map +1 -0
  71. package/_esm/serializePermissionAccount.js +23 -0
  72. package/_esm/serializePermissionAccount.js.map +1 -0
  73. package/_esm/signers/index.js +5 -0
  74. package/_esm/signers/index.js.map +1 -0
  75. package/_esm/signers/toECDSASigner.js +36 -0
  76. package/_esm/signers/toECDSASigner.js.map +1 -0
  77. package/_esm/signers/toWebAuthnPubKey.js +107 -0
  78. package/_esm/signers/toWebAuthnPubKey.js.map +1 -0
  79. package/_esm/signers/toWebAuthnSigner.js +164 -0
  80. package/_esm/signers/toWebAuthnSigner.js.map +1 -0
  81. package/_esm/signers/utils/toSignerId.js +5 -0
  82. package/_esm/signers/utils/toSignerId.js.map +1 -0
  83. package/_esm/signers/webAuthnUtils.js +41 -0
  84. package/_esm/signers/webAuthnUtils.js.map +1 -0
  85. package/_esm/toPermissionValidator.js +98 -0
  86. package/_esm/toPermissionValidator.js.map +1 -0
  87. package/_esm/types.js +3 -0
  88. package/_esm/types.js.map +1 -0
  89. package/_esm/utils.js +32 -0
  90. package/_esm/utils.js.map +1 -0
  91. package/_types/constants.d.ts +13 -0
  92. package/_types/constants.d.ts.map +1 -0
  93. package/_types/deserializePermissionAccount.d.ts +13 -0
  94. package/_types/deserializePermissionAccount.d.ts.map +1 -0
  95. package/_types/index.d.ts +6 -0
  96. package/_types/index.d.ts.map +1 -0
  97. package/_types/policies/callPolicyUtils.d.ts +5 -0
  98. package/_types/policies/callPolicyUtils.d.ts.map +1 -0
  99. package/_types/policies/index.d.ts +7 -0
  100. package/_types/policies/index.d.ts.map +1 -0
  101. package/_types/policies/toCallPolicy.d.ts +9 -0
  102. package/_types/policies/toCallPolicy.d.ts.map +1 -0
  103. package/_types/policies/toGasPolicy.d.ts +10 -0
  104. package/_types/policies/toGasPolicy.d.ts.map +1 -0
  105. package/_types/policies/toRateLimitPolicy.d.ts +9 -0
  106. package/_types/policies/toRateLimitPolicy.d.ts.map +1 -0
  107. package/_types/policies/toSignatureCallerPolicy.d.ts +8 -0
  108. package/_types/policies/toSignatureCallerPolicy.d.ts.map +1 -0
  109. package/_types/policies/toSudoPolicy.d.ts +6 -0
  110. package/_types/policies/toSudoPolicy.d.ts.map +1 -0
  111. package/_types/policies/types.d.ts +56 -0
  112. package/_types/policies/types.d.ts.map +1 -0
  113. package/_types/policies/utils/toPolicyId.d.ts +4 -0
  114. package/_types/policies/utils/toPolicyId.d.ts.map +1 -0
  115. package/_types/serializePermissionAccount.d.ts +5 -0
  116. package/_types/serializePermissionAccount.d.ts.map +1 -0
  117. package/_types/signers/index.d.ts +5 -0
  118. package/_types/signers/index.d.ts.map +1 -0
  119. package/_types/signers/toECDSASigner.d.ts +8 -0
  120. package/_types/signers/toECDSASigner.d.ts.map +1 -0
  121. package/_types/signers/toWebAuthnPubKey.d.ts +11 -0
  122. package/_types/signers/toWebAuthnPubKey.d.ts.map +1 -0
  123. package/_types/signers/toWebAuthnSigner.d.ts +16 -0
  124. package/_types/signers/toWebAuthnSigner.d.ts.map +1 -0
  125. package/_types/signers/utils/toSignerId.d.ts +4 -0
  126. package/_types/signers/utils/toSignerId.d.ts.map +1 -0
  127. package/_types/signers/webAuthnUtils.d.ts +13 -0
  128. package/_types/signers/webAuthnUtils.d.ts.map +1 -0
  129. package/_types/toPermissionValidator.d.ts +5 -0
  130. package/_types/toPermissionValidator.d.ts.map +1 -0
  131. package/_types/types.d.ts +49 -0
  132. package/_types/types.d.ts.map +1 -0
  133. package/_types/utils.d.ts +8 -0
  134. package/_types/utils.d.ts.map +1 -0
  135. package/constants.ts +17 -0
  136. package/deserializePermissionAccount.ts +119 -0
  137. package/index.ts +5 -0
  138. package/package.json +63 -0
  139. package/policies/callPolicyUtils.ts +122 -0
  140. package/policies/index.ts +12 -0
  141. package/policies/toCallPolicy.ts +65 -0
  142. package/policies/toGasPolicy.ts +44 -0
  143. package/policies/toRateLimitPolicy.ts +43 -0
  144. package/policies/toSignatureCallerPolicy.ts +34 -0
  145. package/policies/toSudoPolicy.ts +27 -0
  146. package/policies/types.ts +118 -0
  147. package/policies/utils/toPolicyId.ts +13 -0
  148. package/serializePermissionAccount.ts +38 -0
  149. package/signers/index.ts +10 -0
  150. package/signers/toECDSASigner.ts +61 -0
  151. package/signers/toWebAuthnPubKey.ts +152 -0
  152. package/signers/toWebAuthnSigner.ts +245 -0
  153. package/signers/utils/toSignerId.ts +9 -0
  154. package/signers/webAuthnUtils.ts +54 -0
  155. package/toPermissionValidator.ts +152 -0
  156. package/types.ts +71 -0
  157. package/utils.ts +42 -0
@@ -0,0 +1,97 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.toWebAuthnPubKey = exports.WebAuthnMode = void 0;
4
+ const buffer_1 = require("buffer");
5
+ const browser_1 = require("@simplewebauthn/browser");
6
+ const viem_1 = require("viem");
7
+ const webAuthnUtils_js_1 = require("./webAuthnUtils.js");
8
+ var WebAuthnMode;
9
+ (function (WebAuthnMode) {
10
+ WebAuthnMode["Register"] = "register";
11
+ WebAuthnMode["Login"] = "login";
12
+ })(WebAuthnMode || (exports.WebAuthnMode = WebAuthnMode = {}));
13
+ const toWebAuthnPubKey = async ({ passkeyName, passkeyServerUrl, mode = WebAuthnMode.Login }) => {
14
+ let pubKey;
15
+ let authenticatorIdHash;
16
+ if (mode === WebAuthnMode.Login) {
17
+ const loginOptionsResponse = await fetch(`${passkeyServerUrl}/login/options`, {
18
+ method: "POST",
19
+ headers: { "Content-Type": "application/json" },
20
+ credentials: "include"
21
+ });
22
+ const loginOptions = await loginOptionsResponse.json();
23
+ const loginCred = await (0, browser_1.startAuthentication)(loginOptions);
24
+ authenticatorIdHash = (0, viem_1.keccak256)((0, webAuthnUtils_js_1.uint8ArrayToHexString)((0, webAuthnUtils_js_1.b64ToBytes)(loginCred.id)));
25
+ const loginVerifyResponse = await fetch(`${passkeyServerUrl}/login/verify`, {
26
+ method: "POST",
27
+ headers: { "Content-Type": "application/json" },
28
+ body: JSON.stringify({ cred: loginCred }),
29
+ credentials: "include"
30
+ });
31
+ const loginVerifyResult = await loginVerifyResponse.json();
32
+ if (window.sessionStorage === undefined) {
33
+ throw new Error("sessionStorage is not available");
34
+ }
35
+ sessionStorage.setItem("userId", loginVerifyResult.userId);
36
+ if (!loginVerifyResult.verification.verified) {
37
+ throw new Error("Login not verified");
38
+ }
39
+ pubKey = loginVerifyResult.pubkey;
40
+ }
41
+ else {
42
+ if (!passkeyName) {
43
+ throw new Error("No passkey name provided");
44
+ }
45
+ const registerOptionsResponse = await fetch(`${passkeyServerUrl}/register/options`, {
46
+ method: "POST",
47
+ headers: {
48
+ "Content-Type": "application/json"
49
+ },
50
+ body: JSON.stringify({ username: passkeyName }),
51
+ credentials: "include"
52
+ });
53
+ const registerOptions = await registerOptionsResponse.json();
54
+ if (window.sessionStorage === undefined) {
55
+ throw new Error("sessionStorage is not available");
56
+ }
57
+ sessionStorage.setItem("userId", registerOptions.userId);
58
+ const registerCred = await (0, browser_1.startRegistration)(registerOptions.options);
59
+ authenticatorIdHash = (0, viem_1.keccak256)((0, webAuthnUtils_js_1.uint8ArrayToHexString)((0, webAuthnUtils_js_1.b64ToBytes)(registerCred.id)));
60
+ const registerVerifyResponse = await fetch(`${passkeyServerUrl}/register/verify`, {
61
+ method: "POST",
62
+ headers: {
63
+ "Content-Type": "application/json"
64
+ },
65
+ body: JSON.stringify({
66
+ userId: registerOptions.userId,
67
+ username: passkeyName,
68
+ cred: registerCred
69
+ }),
70
+ credentials: "include"
71
+ });
72
+ const registerVerifyResult = await registerVerifyResponse.json();
73
+ if (!registerVerifyResult.verified) {
74
+ throw new Error("Registration not verified");
75
+ }
76
+ pubKey = registerCred.response.publicKey;
77
+ }
78
+ if (!pubKey) {
79
+ throw new Error("No public key returned from registration credential");
80
+ }
81
+ const spkiDer = buffer_1.Buffer.from(pubKey, "base64");
82
+ const key = await crypto.subtle.importKey("spki", spkiDer, {
83
+ name: "ECDSA",
84
+ namedCurve: "P-256"
85
+ }, true, ["verify"]);
86
+ const rawKey = await crypto.subtle.exportKey("raw", key);
87
+ const rawKeyBuffer = buffer_1.Buffer.from(rawKey);
88
+ const pubKeyX = rawKeyBuffer.subarray(1, 33).toString("hex");
89
+ const pubKeyY = rawKeyBuffer.subarray(33).toString("hex");
90
+ return {
91
+ pubX: BigInt(`0x${pubKeyX}`),
92
+ pubY: BigInt(`0x${pubKeyY}`),
93
+ authenticatorIdHash
94
+ };
95
+ };
96
+ exports.toWebAuthnPubKey = toWebAuthnPubKey;
97
+ //# sourceMappingURL=toWebAuthnPubKey.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toWebAuthnPubKey.js","sourceRoot":"","sources":["../../signers/toWebAuthnPubKey.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,154 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.toWebAuthnSigner = void 0;
4
+ const browser_1 = require("@simplewebauthn/browser");
5
+ const accounts_1 = require("permissionless/accounts");
6
+ const viem_1 = require("viem");
7
+ const viem_2 = require("viem");
8
+ const accounts_2 = require("viem/accounts");
9
+ const actions_1 = require("viem/actions");
10
+ const constants_js_1 = require("../constants.js");
11
+ const toWebAuthnPubKey_js_1 = require("./toWebAuthnPubKey.js");
12
+ const webAuthnUtils_js_1 = require("./webAuthnUtils.js");
13
+ const toWebAuthnSigner = async (client, { signerContractAddress = constants_js_1.WEBAUTHN_SIGNER_CONTRACT, pubKey, passkeyServerUrl, passkeyName, mode = toWebAuthnPubKey_js_1.WebAuthnMode.Register }) => {
14
+ pubKey =
15
+ pubKey ??
16
+ (await (0, toWebAuthnPubKey_js_1.toWebAuthnPubKey)({
17
+ passkeyName,
18
+ passkeyServerUrl,
19
+ mode
20
+ }));
21
+ if (!pubKey) {
22
+ throw new Error("WebAuthn public key not found");
23
+ }
24
+ const chainId = await (0, actions_1.getChainId)(client);
25
+ const signMessageUsingWebAuthn = async (message) => {
26
+ let messageContent;
27
+ if (typeof message === "string") {
28
+ messageContent = message;
29
+ }
30
+ else if ("raw" in message && typeof message.raw === "string") {
31
+ messageContent = message.raw;
32
+ }
33
+ else if ("raw" in message && message.raw instanceof Uint8Array) {
34
+ messageContent = message.raw.toString();
35
+ }
36
+ else {
37
+ throw new Error("Unsupported message format");
38
+ }
39
+ const formattedMessage = messageContent.startsWith("0x")
40
+ ? messageContent.slice(2)
41
+ : messageContent;
42
+ if (window.sessionStorage === undefined) {
43
+ throw new Error("sessionStorage is not available");
44
+ }
45
+ const userId = sessionStorage.getItem("userId");
46
+ const signInitiateResponse = await fetch(`${passkeyServerUrl}/sign-initiate`, {
47
+ method: "POST",
48
+ headers: { "Content-Type": "application/json" },
49
+ body: JSON.stringify({ data: formattedMessage, userId }),
50
+ credentials: "include"
51
+ });
52
+ const signInitiateResult = await signInitiateResponse.json();
53
+ const assertionOptions = {
54
+ challenge: signInitiateResult.challenge,
55
+ allowCredentials: signInitiateResult.allowCredentials,
56
+ userVerification: "required"
57
+ };
58
+ const cred = await (0, browser_1.startAuthentication)(assertionOptions);
59
+ const verifyResponse = await fetch(`${passkeyServerUrl}/sign-verify`, {
60
+ method: "POST",
61
+ headers: { "Content-Type": "application/json" },
62
+ body: JSON.stringify({ cred, userId }),
63
+ credentials: "include"
64
+ });
65
+ const verifyResult = await verifyResponse.json();
66
+ if (!verifyResult.success) {
67
+ throw new Error("Signature not verified");
68
+ }
69
+ const authenticatorData = verifyResult.authenticatorData;
70
+ const authenticatorDataHex = (0, webAuthnUtils_js_1.uint8ArrayToHexString)((0, webAuthnUtils_js_1.b64ToBytes)(authenticatorData));
71
+ const clientDataJSON = atob(cred.response.clientDataJSON);
72
+ const { beforeType } = (0, webAuthnUtils_js_1.findQuoteIndices)(clientDataJSON);
73
+ const signature = verifyResult.signature;
74
+ const signatureHex = (0, webAuthnUtils_js_1.uint8ArrayToHexString)((0, webAuthnUtils_js_1.b64ToBytes)(signature));
75
+ const { r, s } = (0, webAuthnUtils_js_1.parseAndNormalizeSig)(signatureHex);
76
+ const encodedSignature = (0, viem_2.encodeAbiParameters)([
77
+ { name: "authenticatorData", type: "bytes" },
78
+ { name: "clientDataJSON", type: "string" },
79
+ { name: "responseTypeLocation", type: "uint256" },
80
+ { name: "r", type: "uint256" },
81
+ { name: "s", type: "uint256" },
82
+ { name: "usePrecompiled", type: "bool" }
83
+ ], [
84
+ authenticatorDataHex,
85
+ clientDataJSON,
86
+ beforeType,
87
+ BigInt(r),
88
+ BigInt(s),
89
+ (0, webAuthnUtils_js_1.isRIP7212SupportedNetwork)(chainId)
90
+ ]);
91
+ return encodedSignature;
92
+ };
93
+ const account = (0, accounts_2.toAccount)({
94
+ address: "0x0000000000000000000000000000000000000000",
95
+ async signMessage({ message }) {
96
+ return signMessageUsingWebAuthn(message);
97
+ },
98
+ async signTransaction(_, __) {
99
+ throw new accounts_1.SignTransactionNotSupportedBySmartAccount();
100
+ },
101
+ async signTypedData(typedData) {
102
+ const { domain, message, primaryType } = typedData;
103
+ const types = {
104
+ EIP712Domain: (0, viem_1.getTypesForEIP712Domain)({ domain }),
105
+ ...typedData.types
106
+ };
107
+ (0, viem_1.validateTypedData)({ domain, message, primaryType, types });
108
+ const hash = (0, viem_1.hashTypedData)(typedData);
109
+ return signMessageUsingWebAuthn(hash);
110
+ }
111
+ });
112
+ return {
113
+ account,
114
+ signerContractAddress,
115
+ getSignerData: () => {
116
+ if (!pubKey) {
117
+ throw new Error("WebAuthn public key not found");
118
+ }
119
+ return (0, viem_2.encodeAbiParameters)([
120
+ {
121
+ components: [
122
+ { name: "pubKeyX", type: "uint256" },
123
+ { name: "pubKeyY", type: "uint256" }
124
+ ],
125
+ name: "WebAuthnSignerData",
126
+ type: "tuple"
127
+ },
128
+ { name: "authenticatorIdHash", type: "bytes32" }
129
+ ], [
130
+ { pubKeyX: pubKey.pubX, pubKeyY: pubKey.pubY },
131
+ pubKey.authenticatorIdHash
132
+ ]);
133
+ },
134
+ getDummySignature: () => {
135
+ return (0, viem_2.encodeAbiParameters)([
136
+ { name: "authenticatorData", type: "bytes" },
137
+ { name: "clientDataJSON", type: "string" },
138
+ { name: "responseTypeLocation", type: "uint256" },
139
+ { name: "r", type: "uint256" },
140
+ { name: "s", type: "uint256" },
141
+ { name: "usePrecompiled", type: "bool" }
142
+ ], [
143
+ "0x49960de5880e8c687434170f6476605b8fe4aeb9a28632c7995cf3ba831d97631d00000000",
144
+ '{"type":"webauthn.get","challenge":"tbxXNFS9X_4Byr1cMwqKrIGB-_30a0QhZ6y7ucM0BOE","origin":"http://localhost:3000","crossOrigin":false}',
145
+ 1n,
146
+ 44941127272049826721201904734628716258498742255959991581049806490182030242267n,
147
+ 9910254599581058084911561569808925251374718953855182016200087235935345969636n,
148
+ false
149
+ ]);
150
+ }
151
+ };
152
+ };
153
+ exports.toWebAuthnSigner = toWebAuthnSigner;
154
+ //# 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,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.toSignerId = void 0;
4
+ const viem_1 = require("viem");
5
+ const toSignerId = (signer) => {
6
+ return (0, viem_1.encodeAbiParameters)([{ name: "signerData", type: "bytes" }], [(0, viem_1.concat)([signer.signerContractAddress, signer.getSignerData()])]);
7
+ };
8
+ exports.toSignerId = toSignerId;
9
+ //# sourceMappingURL=toSignerId.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toSignerId.js","sourceRoot":"","sources":["../../../signers/utils/toSignerId.ts"],"names":[],"mappings":";;;AAAA,+BAA4D;AAGrD,MAAM,UAAU,GAAG,CAAC,MAAqB,EAAO,EAAE;IACrD,OAAO,IAAA,0BAAmB,EACtB,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EACvC,CAAC,IAAA,aAAM,EAAC,CAAC,MAAM,CAAC,qBAAqB,EAAE,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,CACnE,CAAA;AACL,CAAC,CAAA;AALY,QAAA,UAAU,cAKtB"}
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isRIP7212SupportedNetwork = exports.parseAndNormalizeSig = exports.findQuoteIndices = exports.b64ToBytes = exports.uint8ArrayToHexString = void 0;
4
+ const p256_1 = require("@noble/curves/p256");
5
+ const viem_1 = require("viem");
6
+ const RIP7212_SUPPORTED_NETWORKS = [80001];
7
+ const uint8ArrayToHexString = (array) => {
8
+ return `0x${Array.from(array, (byte) => byte.toString(16).padStart(2, "0")).join("")}`;
9
+ };
10
+ exports.uint8ArrayToHexString = uint8ArrayToHexString;
11
+ const b64ToBytes = (base64) => {
12
+ const paddedBase64 = base64
13
+ .replace(/-/g, "+")
14
+ .replace(/_/g, "/")
15
+ .padEnd(base64.length + ((4 - (base64.length % 4)) % 4), "=");
16
+ const binString = atob(paddedBase64);
17
+ return Uint8Array.from(binString, (m) => m.codePointAt(0) ?? 0);
18
+ };
19
+ exports.b64ToBytes = b64ToBytes;
20
+ const findQuoteIndices = (input) => {
21
+ const beforeTypeIndex = BigInt(input.lastIndexOf('"type":"webauthn.get"'));
22
+ const beforeChallengeIndex = BigInt(input.indexOf('"challenge'));
23
+ return {
24
+ beforeType: beforeTypeIndex,
25
+ beforeChallenge: beforeChallengeIndex
26
+ };
27
+ };
28
+ exports.findQuoteIndices = findQuoteIndices;
29
+ function parseAndNormalizeSig(derSig) {
30
+ const parsedSignature = p256_1.p256.Signature.fromDER(derSig.slice(2));
31
+ const bSig = (0, viem_1.hexToBytes)(`0x${parsedSignature.toCompactHex()}`);
32
+ const bR = bSig.slice(0, 32);
33
+ const bS = bSig.slice(32);
34
+ const r = (0, viem_1.bytesToBigInt)(bR);
35
+ let s = (0, viem_1.bytesToBigInt)(bS);
36
+ const n = BigInt("0xFFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551");
37
+ if (s > n / 2n) {
38
+ s = n - s;
39
+ }
40
+ return { r, s };
41
+ }
42
+ exports.parseAndNormalizeSig = parseAndNormalizeSig;
43
+ const isRIP7212SupportedNetwork = (chainId) => RIP7212_SUPPORTED_NETWORKS.includes(chainId);
44
+ exports.isRIP7212SupportedNetwork = isRIP7212SupportedNetwork;
45
+ //# sourceMappingURL=webAuthnUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webAuthnUtils.js","sourceRoot":"","sources":["../../signers/webAuthnUtils.ts"],"names":[],"mappings":";;;AAAA,6CAAyC;AACzC,+BAA0D;AAE1D,MAAM,0BAA0B,GAAG,CAAC,KAAK,CAAC,CAAA;AAEnC,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;AAJY,QAAA,qBAAqB,yBAIjC;AAEM,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;AAPY,QAAA,UAAU,cAOtB;AAEM,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;AATY,QAAA,gBAAgB,oBAS5B;AAID,SAAgB,oBAAoB,CAAC,MAAW;IAC5C,MAAM,eAAe,GAAG,WAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;IAC/D,MAAM,IAAI,GAAG,IAAA,iBAAU,EAAC,KAAK,eAAe,CAAC,YAAY,EAAE,EAAE,CAAC,CAAA;IAE9D,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;IAC5B,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;IAGzB,MAAM,CAAC,GAAG,IAAA,oBAAa,EAAC,EAAE,CAAC,CAAA;IAC3B,IAAI,CAAC,GAAG,IAAA,oBAAa,EAAC,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;AAjBD,oDAiBC;AAEM,MAAM,yBAAyB,GAAG,CAAC,OAAe,EAAW,EAAE,CAClE,0BAA0B,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;AADnC,QAAA,yBAAyB,6BACU"}
@@ -0,0 +1,102 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.toPermissionValidator = void 0;
4
+ const sdk_1 = require("@zerodev/sdk");
5
+ const permissionless_1 = require("permissionless");
6
+ const viem_1 = require("viem");
7
+ const actions_1 = require("viem/actions");
8
+ const constants_js_1 = require("./constants.js");
9
+ const index_js_1 = require("./policies/index.js");
10
+ const index_js_2 = require("./signers/index.js");
11
+ async function toPermissionValidator(client, { signer, policies, entryPoint: entryPointAddress, flag = constants_js_1.PolicyFlags.FOR_ALL_VALIDATION }) {
12
+ const chainId = await (0, actions_1.getChainId)(client);
13
+ const getEnableData = async (_kernelAccountAddress) => {
14
+ const enableData = (0, viem_1.encodeAbiParameters)([{ name: "policyAndSignerData", type: "bytes[]" }], [
15
+ [
16
+ ...policies.map((policy) => (0, viem_1.concat)([
17
+ policy.getPolicyInfoInBytes(),
18
+ policy.getPolicyData(getPermissionId())
19
+ ])),
20
+ (0, viem_1.concat)([
21
+ flag,
22
+ signer.signerContractAddress,
23
+ signer.getSignerData(getPermissionId())
24
+ ])
25
+ ]
26
+ ]);
27
+ return enableData;
28
+ };
29
+ const getPermissionId = () => {
30
+ const pIdData = (0, viem_1.encodeAbiParameters)([{ name: "policyAndSignerData", type: "bytes[]" }], [[(0, index_js_1.toPolicyId)(policies), flag, (0, index_js_2.toSignerId)(signer)]]);
31
+ return (0, viem_1.slice)((0, viem_1.keccak256)(pIdData), 0, 2);
32
+ };
33
+ return {
34
+ ...signer.account,
35
+ validatorType: "PERMISSION",
36
+ address: viem_1.zeroAddress,
37
+ source: "PermissionValidator",
38
+ getEnableData,
39
+ getIdentifier: () => (0, viem_1.pad)(getPermissionId(), {
40
+ size: 20,
41
+ dir: "right"
42
+ }),
43
+ signMessage: async ({ message }) => {
44
+ return (0, viem_1.concat)([
45
+ "0xff",
46
+ await signer.account.signMessage({ message })
47
+ ]);
48
+ },
49
+ signTypedData: async (typedData) => {
50
+ return (0, viem_1.concat)([
51
+ "0xff",
52
+ await signer.account.signTypedData(typedData)
53
+ ]);
54
+ },
55
+ signUserOperation: async (userOperation) => {
56
+ const userOpHash = (0, permissionless_1.getUserOperationHash)({
57
+ userOperation: { ...userOperation, signature: "0x" },
58
+ entryPoint: entryPointAddress,
59
+ chainId: chainId
60
+ });
61
+ const signature = await signer.account.signMessage({
62
+ message: { raw: userOpHash }
63
+ });
64
+ return (0, viem_1.concat)(["0xff", signature]);
65
+ },
66
+ getNonceKey: async () => {
67
+ return 0n;
68
+ },
69
+ async getDummySignature(_userOperation) {
70
+ return (0, viem_1.concat)(["0xff", signer.getDummySignature()]);
71
+ },
72
+ getPluginSerializationParams: () => {
73
+ return {
74
+ policies
75
+ };
76
+ },
77
+ isEnabled: async (kernelAccountAddress, _selector) => {
78
+ try {
79
+ const permissionConfig = await (0, permissionless_1.getAction)(client, actions_1.readContract)({
80
+ abi: sdk_1.KernelV3AccountAbi,
81
+ address: kernelAccountAddress,
82
+ functionName: "permissionConfig",
83
+ args: [
84
+ (0, viem_1.concat)([
85
+ "0x00",
86
+ (0, viem_1.pad)(getPermissionId(), {
87
+ size: 20,
88
+ dir: "right"
89
+ })
90
+ ])
91
+ ]
92
+ });
93
+ return permissionConfig.signer === signer.signerContractAddress;
94
+ }
95
+ catch (error) {
96
+ return false;
97
+ }
98
+ }
99
+ };
100
+ }
101
+ exports.toPermissionValidator = toPermissionValidator;
102
+ //# sourceMappingURL=toPermissionValidator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toPermissionValidator.js","sourceRoot":"","sources":["../toPermissionValidator.ts"],"names":[],"mappings":"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"}
package/_cjs/types.js ADDED
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../types.ts"],"names":[],"mappings":""}
package/_cjs/utils.js ADDED
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.deserializePermissionAccountParams = exports.serializePermissionAccountParams = exports.isPermissionValidatorPlugin = exports.bytesToBase64 = exports.base64ToBytes = void 0;
4
+ function base64ToBytes(base64) {
5
+ const binString = atob(base64);
6
+ return Uint8Array.from(binString, (m) => m.codePointAt(0));
7
+ }
8
+ exports.base64ToBytes = base64ToBytes;
9
+ function bytesToBase64(bytes) {
10
+ const binString = Array.from(bytes, (x) => String.fromCodePoint(x)).join("");
11
+ return btoa(binString);
12
+ }
13
+ exports.bytesToBase64 = bytesToBase64;
14
+ function isPermissionValidatorPlugin(plugin) {
15
+ return plugin?.getPluginSerializationParams !== undefined;
16
+ }
17
+ exports.isPermissionValidatorPlugin = isPermissionValidatorPlugin;
18
+ const serializePermissionAccountParams = (params) => {
19
+ const replacer = (_, value) => {
20
+ if (typeof value === "bigint") {
21
+ return value.toString();
22
+ }
23
+ return value;
24
+ };
25
+ const jsonString = JSON.stringify(params, replacer);
26
+ const uint8Array = new TextEncoder().encode(jsonString);
27
+ const base64String = bytesToBase64(uint8Array);
28
+ return base64String;
29
+ };
30
+ exports.serializePermissionAccountParams = serializePermissionAccountParams;
31
+ const deserializePermissionAccountParams = (params) => {
32
+ const uint8Array = base64ToBytes(params);
33
+ const jsonString = new TextDecoder().decode(uint8Array);
34
+ return JSON.parse(jsonString);
35
+ };
36
+ exports.deserializePermissionAccountParams = deserializePermissionAccountParams;
37
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../utils.ts"],"names":[],"mappings":";;;AAGA,SAAgB,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;AAHD,sCAGC;AAED,SAAgB,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;AAHD,sCAGC;AAED,SAAgB,2BAA2B,CAEvC,MAAW;IAEX,OAAO,MAAM,EAAE,4BAA4B,KAAK,SAAS,CAAA;AAC7D,CAAC;AALD,kEAKC;AAEM,MAAM,gCAAgC,GAAG,CAC5C,MAA+B,EACjC,EAAE;IAEA,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;AAfY,QAAA,gCAAgC,oCAe5C;AAEM,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;AAJY,QAAA,kCAAkC,sCAI9C"}
@@ -0,0 +1,14 @@
1
+ export const CALL_POLICY_CONTRACT = "0xc4a1aaED053Fc02717358a377A2d695bCdFA3B8A";
2
+ export const ECDSA_SIGNER_CONTRACT = "0x8Ed04D0B000777c87e701696cf6B9710733Df96a";
3
+ export const GAS_POLICY_CONTRACT = "0x50FD84A0A1D1683e1dafC5009876B38773fc8E3A";
4
+ export const SIGNATURE_POLICY_CONTRACT = "0x19a3E696fFdFEDfadb22297DB223B9ca501523dD";
5
+ export const RATE_LIMIT_POLICY_CONTRACT = "0xdB6e5F9a18f0F6Fa0861cB60f94Cf7f7374E8270";
6
+ export const WEBAUTHN_SIGNER_CONTRACT = "0xD71E0e2AFf9D4d93b20F615e6aC2ac7e0795b472";
7
+ export const SUDO_POLICY_CONTRACT = "0x6D14FC570e2bE7D74a6926ea54f190d690855851";
8
+ export var PolicyFlags;
9
+ (function (PolicyFlags) {
10
+ PolicyFlags["FOR_ALL_VALIDATION"] = "0x0000";
11
+ PolicyFlags["NOT_FOR_VALIDATE_USEROP"] = "0x0001";
12
+ PolicyFlags["NOT_FOR_VALIDATE_SIG"] = "0x0002";
13
+ })(PolicyFlags || (PolicyFlags = {}));
14
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,oBAAoB,GAAG,4CAA4C,CAAA;AAChF,MAAM,CAAC,MAAM,qBAAqB,GAC9B,4CAA4C,CAAA;AAChD,MAAM,CAAC,MAAM,mBAAmB,GAAG,4CAA4C,CAAA;AAC/E,MAAM,CAAC,MAAM,yBAAyB,GAClC,4CAA4C,CAAA;AAChD,MAAM,CAAC,MAAM,0BAA0B,GACnC,4CAA4C,CAAA;AAChD,MAAM,CAAC,MAAM,wBAAwB,GACjC,4CAA4C,CAAA;AAChD,MAAM,CAAC,MAAM,oBAAoB,GAAG,4CAA4C,CAAA;AAEhF,MAAM,CAAN,IAAY,WAIX;AAJD,WAAY,WAAW;IACnB,4CAA6B,CAAA;IAC7B,iDAAkC,CAAA;IAClC,8CAA+B,CAAA;AACnC,CAAC,EAJW,WAAW,KAAX,WAAW,QAItB"}
@@ -0,0 +1,89 @@
1
+ import { KernelV3AccountAbi, createKernelAccount } from "@zerodev/sdk";
2
+ import { KernelFactoryAbi } from "@zerodev/sdk";
3
+ import { toKernelPluginManager } from "@zerodev/sdk/accounts";
4
+ import { ENTRYPOINT_ADDRESS_V06 } from "permissionless";
5
+ import { decodeFunctionData } from "viem";
6
+ import { privateKeyToAccount } from "viem/accounts";
7
+ import { toCallPolicy, toGasPolicy, toRateLimitPolicy, toSignatureCallerPolicy, toSudoPolicy } from "./policies/index.js";
8
+ import { toECDSASigner } from "./signers/toECDSASigner.js";
9
+ import { toPermissionValidator } from "./toPermissionValidator.js";
10
+ import {} from "./types.js";
11
+ import { deserializePermissionAccountParams } from "./utils.js";
12
+ export const deserializePermissionAccount = async (client, modularPermissionAccountParams, modularSigner, entryPointAddress = ENTRYPOINT_ADDRESS_V06) => {
13
+ const params = deserializePermissionAccountParams(modularPermissionAccountParams);
14
+ let signer;
15
+ if (params.privateKey)
16
+ signer = toECDSASigner({
17
+ signer: privateKeyToAccount(params.privateKey)
18
+ });
19
+ else if (modularSigner)
20
+ signer = modularSigner;
21
+ else
22
+ throw new Error("No signer or serialized sessionKey provided");
23
+ const modularPermissionPlugin = await toPermissionValidator(client, {
24
+ signer,
25
+ policies: await Promise.all(params.permissionParams.policies?.map((policy) => createPolicyFromParams(policy)) || []),
26
+ entryPoint: entryPointAddress
27
+ });
28
+ const { index, validatorInitData } = decodeParamsFromInitCode(params.accountParams.initCode);
29
+ const kernelPluginManager = await toKernelPluginManager(client, {
30
+ regular: modularPermissionPlugin,
31
+ pluginEnableSignature: params.enableSignature,
32
+ validatorInitData,
33
+ action: params.action,
34
+ entryPoint: entryPointAddress,
35
+ ...params.validityData
36
+ });
37
+ return createKernelAccount(client, {
38
+ plugins: kernelPluginManager,
39
+ index,
40
+ deployedAccountAddress: params.accountParams.accountAddress,
41
+ entryPoint: entryPointAddress
42
+ });
43
+ };
44
+ export const createPolicyFromParams = async (policy) => {
45
+ switch (policy.policyParams.type) {
46
+ case "call":
47
+ return await toCallPolicy(policy.policyParams);
48
+ case "gas":
49
+ return await toGasPolicy(policy.policyParams);
50
+ case "rate-limit":
51
+ return await toRateLimitPolicy(policy.policyParams);
52
+ case "signature-caller":
53
+ return await toSignatureCallerPolicy(policy.policyParams);
54
+ case "sudo":
55
+ return await toSudoPolicy(policy.policyParams);
56
+ default:
57
+ throw new Error("Unsupported policy type");
58
+ }
59
+ };
60
+ export const decodeParamsFromInitCode = (initCode) => {
61
+ let index;
62
+ let validatorInitData;
63
+ const createAccountFunctionData = decodeFunctionData({
64
+ abi: KernelFactoryAbi,
65
+ data: `0x${initCode.slice(42)}`
66
+ });
67
+ if (!createAccountFunctionData)
68
+ throw new Error("Invalid initCode");
69
+ if (createAccountFunctionData.functionName === "createAccount") {
70
+ index = createAccountFunctionData.args[2];
71
+ const initializeFunctionData = decodeFunctionData({
72
+ abi: KernelV3AccountAbi,
73
+ data: createAccountFunctionData.args[1]
74
+ });
75
+ if (!initializeFunctionData)
76
+ throw new Error("Invalid initCode");
77
+ if (initializeFunctionData.functionName === "initialize") {
78
+ validatorInitData = {
79
+ validatorAddress: initializeFunctionData.args[0],
80
+ identifier: initializeFunctionData.args[0],
81
+ enableData: initializeFunctionData.args[2]
82
+ };
83
+ }
84
+ }
85
+ if (index === undefined || validatorInitData === undefined)
86
+ throw new Error("Invalid initCode");
87
+ return { index, validatorInitData };
88
+ };
89
+ //# sourceMappingURL=deserializePermissionAccount.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deserializePermissionAccount.js","sourceRoot":"","sources":["../deserializePermissionAccount.ts"],"names":[],"mappings":"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"}
package/_esm/index.js ADDED
@@ -0,0 +1,5 @@
1
+ export { toPermissionValidator } from "./toPermissionValidator.js";
2
+ export { serializePermissionAccount } from "./serializePermissionAccount.js";
3
+ export { deserializePermissionAccount } from "./deserializePermissionAccount.js";
4
+ export * from "./constants.js";
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AACA,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 @@
1
+ {"type": "module","sideEffects":false}