@metamask-previews/gator-permissions-controller 5.0.2-preview-4f4c98e → 5.0.2-preview-eb263b0ee

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 (187) hide show
  1. package/CHANGELOG.md +0 -4
  2. package/dist/GatorPermissionsController-method-action-types.cjs +7 -0
  3. package/dist/GatorPermissionsController-method-action-types.cjs.map +1 -0
  4. package/dist/{GatorPermissionsController-method-action-types.d.ts → GatorPermissionsController-method-action-types.d.cts} +2 -2
  5. package/dist/GatorPermissionsController-method-action-types.d.cts.map +1 -0
  6. package/dist/GatorPermissionsController-method-action-types.d.mts +118 -0
  7. package/dist/GatorPermissionsController-method-action-types.d.mts.map +1 -0
  8. package/dist/{GatorPermissionsController-method-action-types.js → GatorPermissionsController-method-action-types.mjs} +1 -1
  9. package/dist/GatorPermissionsController-method-action-types.mjs.map +1 -0
  10. package/dist/GatorPermissionsController.cjs +589 -0
  11. package/dist/GatorPermissionsController.cjs.map +1 -0
  12. package/dist/{GatorPermissionsController.d.ts → GatorPermissionsController.d.cts} +12 -12
  13. package/dist/GatorPermissionsController.d.cts.map +1 -0
  14. package/dist/GatorPermissionsController.d.mts +219 -0
  15. package/dist/GatorPermissionsController.d.mts.map +1 -0
  16. package/dist/{GatorPermissionsController.js → GatorPermissionsController.mjs} +12 -12
  17. package/dist/GatorPermissionsController.mjs.map +1 -0
  18. package/dist/constants.cjs +29 -0
  19. package/dist/constants.cjs.map +1 -0
  20. package/dist/{constants.d.ts → constants.d.cts} +4 -4
  21. package/dist/constants.d.cts.map +1 -0
  22. package/dist/constants.d.mts +26 -0
  23. package/dist/constants.d.mts.map +1 -0
  24. package/dist/{constants.js → constants.mjs} +1 -1
  25. package/dist/constants.mjs.map +1 -0
  26. package/dist/decodePermission/decodePermission.cjs +110 -0
  27. package/dist/decodePermission/decodePermission.cjs.map +1 -0
  28. package/dist/decodePermission/{decodePermission.d.ts → decodePermission.d.cts} +3 -3
  29. package/dist/decodePermission/decodePermission.d.cts.map +1 -0
  30. package/dist/decodePermission/decodePermission.d.mts +72 -0
  31. package/dist/decodePermission/decodePermission.d.mts.map +1 -0
  32. package/dist/decodePermission/{decodePermission.js → decodePermission.mjs} +3 -3
  33. package/dist/decodePermission/decodePermission.mjs.map +1 -0
  34. package/dist/decodePermission/decoders/index.cjs +26 -0
  35. package/dist/decodePermission/decoders/index.cjs.map +1 -0
  36. package/dist/decodePermission/decoders/{index.d.ts → index.d.cts} +3 -3
  37. package/dist/decodePermission/decoders/index.d.cts.map +1 -0
  38. package/dist/decodePermission/decoders/index.d.mts +20 -0
  39. package/dist/decodePermission/decoders/index.d.mts.map +1 -0
  40. package/dist/decodePermission/decoders/{index.js → index.mjs} +3 -3
  41. package/dist/decodePermission/decoders/index.mjs.map +1 -0
  42. package/dist/decodePermission/decoders/makePermissionDecoder.cjs +108 -0
  43. package/dist/decodePermission/decoders/makePermissionDecoder.cjs.map +1 -0
  44. package/dist/decodePermission/decoders/{makePermissionDecoder.d.ts → makePermissionDecoder.d.cts} +3 -3
  45. package/dist/decodePermission/decoders/makePermissionDecoder.d.cts.map +1 -0
  46. package/dist/decodePermission/decoders/makePermissionDecoder.d.mts +46 -0
  47. package/dist/decodePermission/decoders/makePermissionDecoder.d.mts.map +1 -0
  48. package/dist/decodePermission/decoders/{makePermissionDecoder.js → makePermissionDecoder.mjs} +4 -4
  49. package/dist/decodePermission/decoders/makePermissionDecoder.mjs.map +1 -0
  50. package/dist/decodePermission/enforcerAddresses.cjs +39 -0
  51. package/dist/decodePermission/enforcerAddresses.cjs.map +1 -0
  52. package/dist/decodePermission/{enforcerAddresses.d.ts → enforcerAddresses.d.cts} +3 -3
  53. package/dist/decodePermission/enforcerAddresses.d.cts.map +1 -0
  54. package/dist/decodePermission/enforcerAddresses.d.mts +13 -0
  55. package/dist/decodePermission/enforcerAddresses.d.mts.map +1 -0
  56. package/dist/decodePermission/{enforcerAddresses.js → enforcerAddresses.mjs} +4 -4
  57. package/dist/decodePermission/enforcerAddresses.mjs.map +1 -0
  58. package/dist/decodePermission/index.cjs +10 -0
  59. package/dist/decodePermission/index.cjs.map +1 -0
  60. package/dist/decodePermission/{index.d.ts → index.d.cts} +4 -4
  61. package/dist/decodePermission/index.d.cts.map +1 -0
  62. package/dist/decodePermission/index.d.mts +4 -0
  63. package/dist/decodePermission/index.d.mts.map +1 -0
  64. package/dist/decodePermission/index.mjs +3 -0
  65. package/dist/decodePermission/index.mjs.map +1 -0
  66. package/dist/decodePermission/types.cjs +3 -0
  67. package/dist/decodePermission/types.cjs.map +1 -0
  68. package/dist/decodePermission/{types.d.ts → types.d.cts} +4 -4
  69. package/dist/decodePermission/types.d.cts.map +1 -0
  70. package/dist/decodePermission/types.d.mts +64 -0
  71. package/dist/decodePermission/types.d.mts.map +1 -0
  72. package/dist/decodePermission/types.mjs +2 -0
  73. package/dist/decodePermission/types.mjs.map +1 -0
  74. package/dist/decodePermission/utils.cjs +125 -0
  75. package/dist/decodePermission/utils.cjs.map +1 -0
  76. package/dist/decodePermission/{utils.d.ts → utils.d.cts} +3 -3
  77. package/dist/decodePermission/utils.d.cts.map +1 -0
  78. package/dist/decodePermission/utils.d.mts +68 -0
  79. package/dist/decodePermission/utils.d.mts.map +1 -0
  80. package/dist/decodePermission/{utils.js → utils.mjs} +2 -2
  81. package/dist/decodePermission/utils.mjs.map +1 -0
  82. package/dist/errors.cjs +54 -0
  83. package/dist/errors.cjs.map +1 -0
  84. package/dist/{errors.d.ts → errors.d.cts} +3 -3
  85. package/dist/errors.d.cts.map +1 -0
  86. package/dist/errors.d.mts +39 -0
  87. package/dist/errors.d.mts.map +1 -0
  88. package/dist/{errors.js → errors.mjs} +2 -2
  89. package/dist/errors.mjs.map +1 -0
  90. package/dist/index.cjs +14 -0
  91. package/dist/index.cjs.map +1 -0
  92. package/dist/{index.d.ts → index.d.cts} +10 -10
  93. package/dist/index.d.cts.map +1 -0
  94. package/dist/index.d.mts +10 -0
  95. package/dist/index.d.mts.map +1 -0
  96. package/dist/index.mjs +3 -0
  97. package/dist/index.mjs.map +1 -0
  98. package/dist/logger.cjs +10 -0
  99. package/dist/logger.cjs.map +1 -0
  100. package/dist/{logger.d.ts → logger.d.cts} +3 -2
  101. package/dist/logger.d.cts.map +1 -0
  102. package/dist/logger.d.mts +7 -0
  103. package/dist/logger.d.mts.map +1 -0
  104. package/dist/{logger.js → logger.mjs} +2 -2
  105. package/dist/logger.mjs.map +1 -0
  106. package/dist/payeeRule.cjs +3 -0
  107. package/dist/payeeRule.cjs.map +1 -0
  108. package/dist/{payeeRule.d.ts → payeeRule.d.cts} +2 -2
  109. package/dist/payeeRule.d.cts.map +1 -0
  110. package/dist/payeeRule.d.mts +12 -0
  111. package/dist/payeeRule.d.mts.map +1 -0
  112. package/dist/payeeRule.mjs +2 -0
  113. package/dist/payeeRule.mjs.map +1 -0
  114. package/dist/permissionOnChainStatus.cjs +140 -0
  115. package/dist/permissionOnChainStatus.cjs.map +1 -0
  116. package/dist/{permissionOnChainStatus.d.ts → permissionOnChainStatus.d.cts} +5 -5
  117. package/dist/permissionOnChainStatus.d.cts.map +1 -0
  118. package/dist/permissionOnChainStatus.d.mts +73 -0
  119. package/dist/permissionOnChainStatus.d.mts.map +1 -0
  120. package/dist/{permissionOnChainStatus.js → permissionOnChainStatus.mjs} +7 -7
  121. package/dist/permissionOnChainStatus.mjs.map +1 -0
  122. package/dist/redeemerRule.cjs +3 -0
  123. package/dist/redeemerRule.cjs.map +1 -0
  124. package/dist/{redeemerRule.d.ts → redeemerRule.d.cts} +2 -2
  125. package/dist/redeemerRule.d.cts.map +1 -0
  126. package/dist/redeemerRule.d.mts +12 -0
  127. package/dist/redeemerRule.d.mts.map +1 -0
  128. package/dist/redeemerRule.mjs +2 -0
  129. package/dist/redeemerRule.mjs.map +1 -0
  130. package/dist/types.cjs +28 -0
  131. package/dist/types.cjs.map +1 -0
  132. package/dist/{types.d.ts → types.d.cts} +4 -4
  133. package/dist/types.d.cts.map +1 -0
  134. package/dist/types.d.mts +161 -0
  135. package/dist/types.d.mts.map +1 -0
  136. package/dist/{types.js → types.mjs} +1 -1
  137. package/dist/types.mjs.map +1 -0
  138. package/dist/utils.cjs +41 -0
  139. package/dist/utils.cjs.map +1 -0
  140. package/dist/{utils.d.ts → utils.d.cts} +5 -5
  141. package/dist/utils.d.cts.map +1 -0
  142. package/dist/utils.d.mts +22 -0
  143. package/dist/utils.d.mts.map +1 -0
  144. package/dist/{utils.js → utils.mjs} +4 -4
  145. package/dist/utils.mjs.map +1 -0
  146. package/package.json +16 -12
  147. package/dist/GatorPermissionsController-method-action-types.d.ts.map +0 -1
  148. package/dist/GatorPermissionsController-method-action-types.js.map +0 -1
  149. package/dist/GatorPermissionsController.d.ts.map +0 -1
  150. package/dist/GatorPermissionsController.js.map +0 -1
  151. package/dist/constants.d.ts.map +0 -1
  152. package/dist/constants.js.map +0 -1
  153. package/dist/decodePermission/decodePermission.d.ts.map +0 -1
  154. package/dist/decodePermission/decodePermission.js.map +0 -1
  155. package/dist/decodePermission/decoders/index.d.ts.map +0 -1
  156. package/dist/decodePermission/decoders/index.js.map +0 -1
  157. package/dist/decodePermission/decoders/makePermissionDecoder.d.ts.map +0 -1
  158. package/dist/decodePermission/decoders/makePermissionDecoder.js.map +0 -1
  159. package/dist/decodePermission/enforcerAddresses.d.ts.map +0 -1
  160. package/dist/decodePermission/enforcerAddresses.js.map +0 -1
  161. package/dist/decodePermission/index.d.ts.map +0 -1
  162. package/dist/decodePermission/index.js +0 -3
  163. package/dist/decodePermission/index.js.map +0 -1
  164. package/dist/decodePermission/types.d.ts.map +0 -1
  165. package/dist/decodePermission/types.js +0 -2
  166. package/dist/decodePermission/types.js.map +0 -1
  167. package/dist/decodePermission/utils.d.ts.map +0 -1
  168. package/dist/decodePermission/utils.js.map +0 -1
  169. package/dist/errors.d.ts.map +0 -1
  170. package/dist/errors.js.map +0 -1
  171. package/dist/index.d.ts.map +0 -1
  172. package/dist/index.js +0 -3
  173. package/dist/index.js.map +0 -1
  174. package/dist/logger.d.ts.map +0 -1
  175. package/dist/logger.js.map +0 -1
  176. package/dist/payeeRule.d.ts.map +0 -1
  177. package/dist/payeeRule.js +0 -2
  178. package/dist/payeeRule.js.map +0 -1
  179. package/dist/permissionOnChainStatus.d.ts.map +0 -1
  180. package/dist/permissionOnChainStatus.js.map +0 -1
  181. package/dist/redeemerRule.d.ts.map +0 -1
  182. package/dist/redeemerRule.js +0 -2
  183. package/dist/redeemerRule.js.map +0 -1
  184. package/dist/types.d.ts.map +0 -1
  185. package/dist/types.js.map +0 -1
  186. package/dist/utils.d.ts.map +0 -1
  187. package/dist/utils.js.map +0 -1
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PermissionDecodingError = exports.OriginNotAllowedError = exports.GatorPermissionsProviderError = exports.GatorPermissionsFetchError = exports.GatorPermissionsControllerError = void 0;
4
+ const types_js_1 = require("./types.cjs");
5
+ class GatorPermissionsControllerError extends Error {
6
+ constructor({ cause, message, code }) {
7
+ super(message);
8
+ this.cause = cause;
9
+ this.code = code;
10
+ }
11
+ }
12
+ exports.GatorPermissionsControllerError = GatorPermissionsControllerError;
13
+ class GatorPermissionsFetchError extends GatorPermissionsControllerError {
14
+ constructor({ cause, message }) {
15
+ super({
16
+ cause,
17
+ message,
18
+ code: types_js_1.GatorPermissionsControllerErrorCode.GatorPermissionsFetchError,
19
+ });
20
+ }
21
+ }
22
+ exports.GatorPermissionsFetchError = GatorPermissionsFetchError;
23
+ class GatorPermissionsProviderError extends GatorPermissionsControllerError {
24
+ constructor({ cause, method, }) {
25
+ super({
26
+ cause,
27
+ message: `Failed to handle snap request to gator permissions provider for method ${method}`,
28
+ code: types_js_1.GatorPermissionsControllerErrorCode.GatorPermissionsProviderError,
29
+ });
30
+ }
31
+ }
32
+ exports.GatorPermissionsProviderError = GatorPermissionsProviderError;
33
+ class OriginNotAllowedError extends GatorPermissionsControllerError {
34
+ constructor({ origin }) {
35
+ const message = `Origin ${origin} not allowed`;
36
+ super({
37
+ cause: new Error(message),
38
+ message,
39
+ code: types_js_1.GatorPermissionsControllerErrorCode.OriginNotAllowedError,
40
+ });
41
+ }
42
+ }
43
+ exports.OriginNotAllowedError = OriginNotAllowedError;
44
+ class PermissionDecodingError extends GatorPermissionsControllerError {
45
+ constructor({ cause }) {
46
+ super({
47
+ cause,
48
+ message: `Failed to decode permission`,
49
+ code: types_js_1.GatorPermissionsControllerErrorCode.PermissionDecodingError,
50
+ });
51
+ }
52
+ }
53
+ exports.PermissionDecodingError = PermissionDecodingError;
54
+ //# sourceMappingURL=errors.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.cjs","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":";;;AACA,0CAAiE;AAWjE,MAAa,+BAAgC,SAAQ,KAAK;IAKxD,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAA+B;QAC/D,KAAK,CAAC,OAAO,CAAC,CAAC;QAEf,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AAXD,0EAWC;AAED,MAAa,0BAA2B,SAAQ,+BAA+B;IAC7E,YAAY,EAAE,KAAK,EAAE,OAAO,EAAqC;QAC/D,KAAK,CAAC;YACJ,KAAK;YACL,OAAO;YACP,IAAI,EAAE,8CAAmC,CAAC,0BAA0B;SACrE,CAAC,CAAC;IACL,CAAC;CACF;AARD,gEAQC;AAED,MAAa,6BAA8B,SAAQ,+BAA+B;IAChF,YAAY,EACV,KAAK,EACL,MAAM,GAIP;QACC,KAAK,CAAC;YACJ,KAAK;YACL,OAAO,EAAE,0EAA0E,MAAM,EAAE;YAC3F,IAAI,EAAE,8CAAmC,CAAC,6BAA6B;SACxE,CAAC,CAAC;IACL,CAAC;CACF;AAdD,sEAcC;AAED,MAAa,qBAAsB,SAAQ,+BAA+B;IACxE,YAAY,EAAE,MAAM,EAAsB;QACxC,MAAM,OAAO,GAAG,UAAU,MAAM,cAAc,CAAC;QAE/C,KAAK,CAAC;YACJ,KAAK,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC;YACzB,OAAO;YACP,IAAI,EAAE,8CAAmC,CAAC,qBAAqB;SAChE,CAAC,CAAC;IACL,CAAC;CACF;AAVD,sDAUC;AAED,MAAa,uBAAwB,SAAQ,+BAA+B;IAC1E,YAAY,EAAE,KAAK,EAAoB;QACrC,KAAK,CAAC;YACJ,KAAK;YACL,OAAO,EAAE,6BAA6B;YACtC,IAAI,EAAE,8CAAmC,CAAC,uBAAuB;SAClE,CAAC,CAAC;IACL,CAAC;CACF;AARD,0DAQC","sourcesContent":["import type { GatorPermissionsSnapRpcMethod } from './types.js';\nimport { GatorPermissionsControllerErrorCode } from './types.js';\n\n/**\n * Represents a base gator permissions error.\n */\ntype GatorPermissionsErrorParams = {\n code: GatorPermissionsControllerErrorCode;\n cause: Error;\n message: string;\n};\n\nexport class GatorPermissionsControllerError extends Error {\n code: GatorPermissionsControllerErrorCode;\n\n cause: Error;\n\n constructor({ cause, message, code }: GatorPermissionsErrorParams) {\n super(message);\n\n this.cause = cause;\n this.code = code;\n }\n}\n\nexport class GatorPermissionsFetchError extends GatorPermissionsControllerError {\n constructor({ cause, message }: { cause: Error; message: string }) {\n super({\n cause,\n message,\n code: GatorPermissionsControllerErrorCode.GatorPermissionsFetchError,\n });\n }\n}\n\nexport class GatorPermissionsProviderError extends GatorPermissionsControllerError {\n constructor({\n cause,\n method,\n }: {\n cause: Error;\n method: GatorPermissionsSnapRpcMethod;\n }) {\n super({\n cause,\n message: `Failed to handle snap request to gator permissions provider for method ${method}`,\n code: GatorPermissionsControllerErrorCode.GatorPermissionsProviderError,\n });\n }\n}\n\nexport class OriginNotAllowedError extends GatorPermissionsControllerError {\n constructor({ origin }: { origin: string }) {\n const message = `Origin ${origin} not allowed`;\n\n super({\n cause: new Error(message),\n message,\n code: GatorPermissionsControllerErrorCode.OriginNotAllowedError,\n });\n }\n}\n\nexport class PermissionDecodingError extends GatorPermissionsControllerError {\n constructor({ cause }: { cause: Error }) {\n super({\n cause,\n message: `Failed to decode permission`,\n code: GatorPermissionsControllerErrorCode.PermissionDecodingError,\n });\n }\n}\n"]}
@@ -1,5 +1,5 @@
1
- import type { GatorPermissionsSnapRpcMethod } from './types.js';
2
- import { GatorPermissionsControllerErrorCode } from './types.js';
1
+ import type { GatorPermissionsSnapRpcMethod } from "./types.cjs";
2
+ import { GatorPermissionsControllerErrorCode } from "./types.cjs";
3
3
  /**
4
4
  * Represents a base gator permissions error.
5
5
  */
@@ -36,4 +36,4 @@ export declare class PermissionDecodingError extends GatorPermissionsControllerE
36
36
  });
37
37
  }
38
38
  export {};
39
- //# sourceMappingURL=errors.d.ts.map
39
+ //# sourceMappingURL=errors.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.cts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,6BAA6B,EAAE,oBAAmB;AAChE,OAAO,EAAE,mCAAmC,EAAE,oBAAmB;AAEjE;;GAEG;AACH,KAAK,2BAA2B,GAAG;IACjC,IAAI,EAAE,mCAAmC,CAAC;IAC1C,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,qBAAa,+BAAgC,SAAQ,KAAK;IACxD,IAAI,EAAE,mCAAmC,CAAC;IAE1C,KAAK,EAAE,KAAK,CAAC;gBAED,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,2BAA2B;CAMlE;AAED,qBAAa,0BAA2B,SAAQ,+BAA+B;gBACjE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QAAE,KAAK,EAAE,KAAK,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE;CAOlE;AAED,qBAAa,6BAA8B,SAAQ,+BAA+B;gBACpE,EACV,KAAK,EACL,MAAM,GACP,EAAE;QACD,KAAK,EAAE,KAAK,CAAC;QACb,MAAM,EAAE,6BAA6B,CAAC;KACvC;CAOF;AAED,qBAAa,qBAAsB,SAAQ,+BAA+B;gBAC5D,EAAE,MAAM,EAAE,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE;CAS3C;AAED,qBAAa,uBAAwB,SAAQ,+BAA+B;gBAC9D,EAAE,KAAK,EAAE,EAAE;QAAE,KAAK,EAAE,KAAK,CAAA;KAAE;CAOxC"}
@@ -0,0 +1,39 @@
1
+ import type { GatorPermissionsSnapRpcMethod } from "./types.mjs";
2
+ import { GatorPermissionsControllerErrorCode } from "./types.mjs";
3
+ /**
4
+ * Represents a base gator permissions error.
5
+ */
6
+ type GatorPermissionsErrorParams = {
7
+ code: GatorPermissionsControllerErrorCode;
8
+ cause: Error;
9
+ message: string;
10
+ };
11
+ export declare class GatorPermissionsControllerError extends Error {
12
+ code: GatorPermissionsControllerErrorCode;
13
+ cause: Error;
14
+ constructor({ cause, message, code }: GatorPermissionsErrorParams);
15
+ }
16
+ export declare class GatorPermissionsFetchError extends GatorPermissionsControllerError {
17
+ constructor({ cause, message }: {
18
+ cause: Error;
19
+ message: string;
20
+ });
21
+ }
22
+ export declare class GatorPermissionsProviderError extends GatorPermissionsControllerError {
23
+ constructor({ cause, method, }: {
24
+ cause: Error;
25
+ method: GatorPermissionsSnapRpcMethod;
26
+ });
27
+ }
28
+ export declare class OriginNotAllowedError extends GatorPermissionsControllerError {
29
+ constructor({ origin }: {
30
+ origin: string;
31
+ });
32
+ }
33
+ export declare class PermissionDecodingError extends GatorPermissionsControllerError {
34
+ constructor({ cause }: {
35
+ cause: Error;
36
+ });
37
+ }
38
+ export {};
39
+ //# sourceMappingURL=errors.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.mts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,6BAA6B,EAAE,oBAAmB;AAChE,OAAO,EAAE,mCAAmC,EAAE,oBAAmB;AAEjE;;GAEG;AACH,KAAK,2BAA2B,GAAG;IACjC,IAAI,EAAE,mCAAmC,CAAC;IAC1C,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,qBAAa,+BAAgC,SAAQ,KAAK;IACxD,IAAI,EAAE,mCAAmC,CAAC;IAE1C,KAAK,EAAE,KAAK,CAAC;gBAED,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,2BAA2B;CAMlE;AAED,qBAAa,0BAA2B,SAAQ,+BAA+B;gBACjE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QAAE,KAAK,EAAE,KAAK,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE;CAOlE;AAED,qBAAa,6BAA8B,SAAQ,+BAA+B;gBACpE,EACV,KAAK,EACL,MAAM,GACP,EAAE;QACD,KAAK,EAAE,KAAK,CAAC;QACb,MAAM,EAAE,6BAA6B,CAAC;KACvC;CAOF;AAED,qBAAa,qBAAsB,SAAQ,+BAA+B;gBAC5D,EAAE,MAAM,EAAE,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE;CAS3C;AAED,qBAAa,uBAAwB,SAAQ,+BAA+B;gBAC9D,EAAE,KAAK,EAAE,EAAE;QAAE,KAAK,EAAE,KAAK,CAAA;KAAE;CAOxC"}
@@ -1,4 +1,4 @@
1
- import { GatorPermissionsControllerErrorCode } from './types.js';
1
+ import { GatorPermissionsControllerErrorCode } from "./types.mjs";
2
2
  export class GatorPermissionsControllerError extends Error {
3
3
  constructor({ cause, message, code }) {
4
4
  super(message);
@@ -43,4 +43,4 @@ export class PermissionDecodingError extends GatorPermissionsControllerError {
43
43
  });
44
44
  }
45
45
  }
46
- //# sourceMappingURL=errors.js.map
46
+ //# sourceMappingURL=errors.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.mjs","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mCAAmC,EAAE,oBAAmB;AAWjE,MAAM,OAAO,+BAAgC,SAAQ,KAAK;IAKxD,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAA+B;QAC/D,KAAK,CAAC,OAAO,CAAC,CAAC;QAEf,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AAED,MAAM,OAAO,0BAA2B,SAAQ,+BAA+B;IAC7E,YAAY,EAAE,KAAK,EAAE,OAAO,EAAqC;QAC/D,KAAK,CAAC;YACJ,KAAK;YACL,OAAO;YACP,IAAI,EAAE,mCAAmC,CAAC,0BAA0B;SACrE,CAAC,CAAC;IACL,CAAC;CACF;AAED,MAAM,OAAO,6BAA8B,SAAQ,+BAA+B;IAChF,YAAY,EACV,KAAK,EACL,MAAM,GAIP;QACC,KAAK,CAAC;YACJ,KAAK;YACL,OAAO,EAAE,0EAA0E,MAAM,EAAE;YAC3F,IAAI,EAAE,mCAAmC,CAAC,6BAA6B;SACxE,CAAC,CAAC;IACL,CAAC;CACF;AAED,MAAM,OAAO,qBAAsB,SAAQ,+BAA+B;IACxE,YAAY,EAAE,MAAM,EAAsB;QACxC,MAAM,OAAO,GAAG,UAAU,MAAM,cAAc,CAAC;QAE/C,KAAK,CAAC;YACJ,KAAK,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC;YACzB,OAAO;YACP,IAAI,EAAE,mCAAmC,CAAC,qBAAqB;SAChE,CAAC,CAAC;IACL,CAAC;CACF;AAED,MAAM,OAAO,uBAAwB,SAAQ,+BAA+B;IAC1E,YAAY,EAAE,KAAK,EAAoB;QACrC,KAAK,CAAC;YACJ,KAAK;YACL,OAAO,EAAE,6BAA6B;YACtC,IAAI,EAAE,mCAAmC,CAAC,uBAAuB;SAClE,CAAC,CAAC;IACL,CAAC;CACF","sourcesContent":["import type { GatorPermissionsSnapRpcMethod } from './types.js';\nimport { GatorPermissionsControllerErrorCode } from './types.js';\n\n/**\n * Represents a base gator permissions error.\n */\ntype GatorPermissionsErrorParams = {\n code: GatorPermissionsControllerErrorCode;\n cause: Error;\n message: string;\n};\n\nexport class GatorPermissionsControllerError extends Error {\n code: GatorPermissionsControllerErrorCode;\n\n cause: Error;\n\n constructor({ cause, message, code }: GatorPermissionsErrorParams) {\n super(message);\n\n this.cause = cause;\n this.code = code;\n }\n}\n\nexport class GatorPermissionsFetchError extends GatorPermissionsControllerError {\n constructor({ cause, message }: { cause: Error; message: string }) {\n super({\n cause,\n message,\n code: GatorPermissionsControllerErrorCode.GatorPermissionsFetchError,\n });\n }\n}\n\nexport class GatorPermissionsProviderError extends GatorPermissionsControllerError {\n constructor({\n cause,\n method,\n }: {\n cause: Error;\n method: GatorPermissionsSnapRpcMethod;\n }) {\n super({\n cause,\n message: `Failed to handle snap request to gator permissions provider for method ${method}`,\n code: GatorPermissionsControllerErrorCode.GatorPermissionsProviderError,\n });\n }\n}\n\nexport class OriginNotAllowedError extends GatorPermissionsControllerError {\n constructor({ origin }: { origin: string }) {\n const message = `Origin ${origin} not allowed`;\n\n super({\n cause: new Error(message),\n message,\n code: GatorPermissionsControllerErrorCode.OriginNotAllowedError,\n });\n }\n}\n\nexport class PermissionDecodingError extends GatorPermissionsControllerError {\n constructor({ cause }: { cause: Error }) {\n super({\n cause,\n message: `Failed to decode permission`,\n code: GatorPermissionsControllerErrorCode.PermissionDecodingError,\n });\n }\n}\n"]}
package/dist/index.cjs ADDED
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.EXECUTION_PERMISSION_REDEEMER_RULE_TYPE = exports.EXECUTION_PERMISSION_PAYEE_RULE_TYPE = exports.EXECUTION_PERMISSION_EXPIRY_RULE_TYPE = exports.DELEGATION_FRAMEWORK_VERSION = exports.GatorPermissionsController = void 0;
7
+ var GatorPermissionsController_js_1 = require("./GatorPermissionsController.cjs");
8
+ Object.defineProperty(exports, "GatorPermissionsController", { enumerable: true, get: function () { return __importDefault(GatorPermissionsController_js_1).default; } });
9
+ var constants_js_1 = require("./constants.cjs");
10
+ Object.defineProperty(exports, "DELEGATION_FRAMEWORK_VERSION", { enumerable: true, get: function () { return constants_js_1.DELEGATION_FRAMEWORK_VERSION; } });
11
+ Object.defineProperty(exports, "EXECUTION_PERMISSION_EXPIRY_RULE_TYPE", { enumerable: true, get: function () { return constants_js_1.EXECUTION_PERMISSION_EXPIRY_RULE_TYPE; } });
12
+ Object.defineProperty(exports, "EXECUTION_PERMISSION_PAYEE_RULE_TYPE", { enumerable: true, get: function () { return constants_js_1.EXECUTION_PERMISSION_PAYEE_RULE_TYPE; } });
13
+ Object.defineProperty(exports, "EXECUTION_PERMISSION_REDEEMER_RULE_TYPE", { enumerable: true, get: function () { return constants_js_1.EXECUTION_PERMISSION_REDEEMER_RULE_TYPE; } });
14
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;AAAA,kFAAwF;AAA/E,4JAAA,OAAO,OAA8B;AAC9C,gDAKwB;AAJtB,4HAAA,4BAA4B,OAAA;AAC5B,qIAAA,qCAAqC,OAAA;AACrC,oIAAA,oCAAoC,OAAA;AACpC,uIAAA,uCAAuC,OAAA","sourcesContent":["export { default as GatorPermissionsController } from './GatorPermissionsController.js';\nexport {\n DELEGATION_FRAMEWORK_VERSION,\n EXECUTION_PERMISSION_EXPIRY_RULE_TYPE,\n EXECUTION_PERMISSION_PAYEE_RULE_TYPE,\n EXECUTION_PERMISSION_REDEEMER_RULE_TYPE,\n} from './constants.js';\nexport type {\n GatorPermissionsControllerFetchAndUpdateGatorPermissionsAction,\n GatorPermissionsControllerAddPendingRevocationAction,\n GatorPermissionsControllerDecodePermissionFromPermissionContextForOriginAction,\n GatorPermissionsControllerInitializeAction,\n GatorPermissionsControllerIsPendingRevocationAction,\n GatorPermissionsControllerSubmitDirectRevocationAction,\n GatorPermissionsControllerSubmitRevocationAction,\n} from './GatorPermissionsController-method-action-types.js';\nexport type {\n GatorPermissionsControllerState,\n GatorPermissionsControllerConfig,\n GatorPermissionsControllerMessenger,\n GatorPermissionsControllerGetStateAction,\n GatorPermissionsControllerActions,\n GatorPermissionsControllerEvents,\n GatorPermissionsControllerStateChangeEvent,\n} from './GatorPermissionsController.js';\nexport type { DecodedPermission } from './decodePermission/index.js';\nexport type {\n GatorPermissionsControllerErrorCode,\n GatorPermissionsSnapRpcMethod,\n PermissionRequest,\n PermissionResponse,\n PermissionInfo,\n StoredGatorPermission,\n PermissionInfoWithMetadata,\n GatorPermissionStatus,\n DelegationDetails,\n RevocationParams,\n RevocationMetadata,\n SupportedPermissionType,\n} from './types.js';\n\nexport type { PayeeRule } from './payeeRule.js';\nexport type { RedeemerRule } from './redeemerRule.js';\nexport type {\n NativeTokenStreamPermission,\n NativeTokenPeriodicPermission,\n Erc20TokenStreamPermission,\n Erc20TokenPeriodicPermission,\n MetaMaskBasePermissionData,\n} from '@metamask/7715-permission-types';\n"]}
@@ -1,10 +1,10 @@
1
- export { default as GatorPermissionsController } from './GatorPermissionsController.js';
2
- export { DELEGATION_FRAMEWORK_VERSION, EXECUTION_PERMISSION_EXPIRY_RULE_TYPE, EXECUTION_PERMISSION_PAYEE_RULE_TYPE, EXECUTION_PERMISSION_REDEEMER_RULE_TYPE, } from './constants.js';
3
- export type { GatorPermissionsControllerFetchAndUpdateGatorPermissionsAction, GatorPermissionsControllerAddPendingRevocationAction, GatorPermissionsControllerDecodePermissionFromPermissionContextForOriginAction, GatorPermissionsControllerInitializeAction, GatorPermissionsControllerIsPendingRevocationAction, GatorPermissionsControllerSubmitDirectRevocationAction, GatorPermissionsControllerSubmitRevocationAction, } from './GatorPermissionsController-method-action-types.js';
4
- export type { GatorPermissionsControllerState, GatorPermissionsControllerConfig, GatorPermissionsControllerMessenger, GatorPermissionsControllerGetStateAction, GatorPermissionsControllerActions, GatorPermissionsControllerEvents, GatorPermissionsControllerStateChangeEvent, } from './GatorPermissionsController.js';
5
- export type { DecodedPermission } from './decodePermission/index.js';
6
- export type { GatorPermissionsControllerErrorCode, GatorPermissionsSnapRpcMethod, PermissionRequest, PermissionResponse, PermissionInfo, StoredGatorPermission, PermissionInfoWithMetadata, GatorPermissionStatus, DelegationDetails, RevocationParams, RevocationMetadata, SupportedPermissionType, } from './types.js';
7
- export type { PayeeRule } from './payeeRule.js';
8
- export type { RedeemerRule } from './redeemerRule.js';
9
- export type { NativeTokenStreamPermission, NativeTokenPeriodicPermission, Erc20TokenStreamPermission, Erc20TokenPeriodicPermission, MetaMaskBasePermissionData, } from '@metamask/7715-permission-types';
10
- //# sourceMappingURL=index.d.ts.map
1
+ export { default as GatorPermissionsController } from "./GatorPermissionsController.cjs";
2
+ export { DELEGATION_FRAMEWORK_VERSION, EXECUTION_PERMISSION_EXPIRY_RULE_TYPE, EXECUTION_PERMISSION_PAYEE_RULE_TYPE, EXECUTION_PERMISSION_REDEEMER_RULE_TYPE, } from "./constants.cjs";
3
+ export type { GatorPermissionsControllerFetchAndUpdateGatorPermissionsAction, GatorPermissionsControllerAddPendingRevocationAction, GatorPermissionsControllerDecodePermissionFromPermissionContextForOriginAction, GatorPermissionsControllerInitializeAction, GatorPermissionsControllerIsPendingRevocationAction, GatorPermissionsControllerSubmitDirectRevocationAction, GatorPermissionsControllerSubmitRevocationAction, } from "./GatorPermissionsController-method-action-types.cjs";
4
+ export type { GatorPermissionsControllerState, GatorPermissionsControllerConfig, GatorPermissionsControllerMessenger, GatorPermissionsControllerGetStateAction, GatorPermissionsControllerActions, GatorPermissionsControllerEvents, GatorPermissionsControllerStateChangeEvent, } from "./GatorPermissionsController.cjs";
5
+ export type { DecodedPermission } from "./decodePermission/index.cjs";
6
+ export type { GatorPermissionsControllerErrorCode, GatorPermissionsSnapRpcMethod, PermissionRequest, PermissionResponse, PermissionInfo, StoredGatorPermission, PermissionInfoWithMetadata, GatorPermissionStatus, DelegationDetails, RevocationParams, RevocationMetadata, SupportedPermissionType, } from "./types.cjs";
7
+ export type { PayeeRule } from "./payeeRule.cjs";
8
+ export type { RedeemerRule } from "./redeemerRule.cjs";
9
+ export type { NativeTokenStreamPermission, NativeTokenPeriodicPermission, Erc20TokenStreamPermission, Erc20TokenPeriodicPermission, MetaMaskBasePermissionData, } from "@metamask/7715-permission-types";
10
+ //# sourceMappingURL=index.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,0BAA0B,EAAE,yCAAwC;AACxF,OAAO,EACL,4BAA4B,EAC5B,qCAAqC,EACrC,oCAAoC,EACpC,uCAAuC,GACxC,wBAAuB;AACxB,YAAY,EACV,8DAA8D,EAC9D,oDAAoD,EACpD,8EAA8E,EAC9E,0CAA0C,EAC1C,mDAAmD,EACnD,sDAAsD,EACtD,gDAAgD,GACjD,6DAA4D;AAC7D,YAAY,EACV,+BAA+B,EAC/B,gCAAgC,EAChC,mCAAmC,EACnC,wCAAwC,EACxC,iCAAiC,EACjC,gCAAgC,EAChC,0CAA0C,GAC3C,yCAAwC;AACzC,YAAY,EAAE,iBAAiB,EAAE,qCAAoC;AACrE,YAAY,EACV,mCAAmC,EACnC,6BAA6B,EAC7B,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,qBAAqB,EACrB,0BAA0B,EAC1B,qBAAqB,EACrB,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,EAClB,uBAAuB,GACxB,oBAAmB;AAEpB,YAAY,EAAE,SAAS,EAAE,wBAAuB;AAChD,YAAY,EAAE,YAAY,EAAE,2BAA0B;AACtD,YAAY,EACV,2BAA2B,EAC3B,6BAA6B,EAC7B,0BAA0B,EAC1B,4BAA4B,EAC5B,0BAA0B,GAC3B,wCAAwC"}
@@ -0,0 +1,10 @@
1
+ export { default as GatorPermissionsController } from "./GatorPermissionsController.mjs";
2
+ export { DELEGATION_FRAMEWORK_VERSION, EXECUTION_PERMISSION_EXPIRY_RULE_TYPE, EXECUTION_PERMISSION_PAYEE_RULE_TYPE, EXECUTION_PERMISSION_REDEEMER_RULE_TYPE, } from "./constants.mjs";
3
+ export type { GatorPermissionsControllerFetchAndUpdateGatorPermissionsAction, GatorPermissionsControllerAddPendingRevocationAction, GatorPermissionsControllerDecodePermissionFromPermissionContextForOriginAction, GatorPermissionsControllerInitializeAction, GatorPermissionsControllerIsPendingRevocationAction, GatorPermissionsControllerSubmitDirectRevocationAction, GatorPermissionsControllerSubmitRevocationAction, } from "./GatorPermissionsController-method-action-types.mjs";
4
+ export type { GatorPermissionsControllerState, GatorPermissionsControllerConfig, GatorPermissionsControllerMessenger, GatorPermissionsControllerGetStateAction, GatorPermissionsControllerActions, GatorPermissionsControllerEvents, GatorPermissionsControllerStateChangeEvent, } from "./GatorPermissionsController.mjs";
5
+ export type { DecodedPermission } from "./decodePermission/index.mjs";
6
+ export type { GatorPermissionsControllerErrorCode, GatorPermissionsSnapRpcMethod, PermissionRequest, PermissionResponse, PermissionInfo, StoredGatorPermission, PermissionInfoWithMetadata, GatorPermissionStatus, DelegationDetails, RevocationParams, RevocationMetadata, SupportedPermissionType, } from "./types.mjs";
7
+ export type { PayeeRule } from "./payeeRule.mjs";
8
+ export type { RedeemerRule } from "./redeemerRule.mjs";
9
+ export type { NativeTokenStreamPermission, NativeTokenPeriodicPermission, Erc20TokenStreamPermission, Erc20TokenPeriodicPermission, MetaMaskBasePermissionData, } from "@metamask/7715-permission-types";
10
+ //# sourceMappingURL=index.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,0BAA0B,EAAE,yCAAwC;AACxF,OAAO,EACL,4BAA4B,EAC5B,qCAAqC,EACrC,oCAAoC,EACpC,uCAAuC,GACxC,wBAAuB;AACxB,YAAY,EACV,8DAA8D,EAC9D,oDAAoD,EACpD,8EAA8E,EAC9E,0CAA0C,EAC1C,mDAAmD,EACnD,sDAAsD,EACtD,gDAAgD,GACjD,6DAA4D;AAC7D,YAAY,EACV,+BAA+B,EAC/B,gCAAgC,EAChC,mCAAmC,EACnC,wCAAwC,EACxC,iCAAiC,EACjC,gCAAgC,EAChC,0CAA0C,GAC3C,yCAAwC;AACzC,YAAY,EAAE,iBAAiB,EAAE,qCAAoC;AACrE,YAAY,EACV,mCAAmC,EACnC,6BAA6B,EAC7B,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,qBAAqB,EACrB,0BAA0B,EAC1B,qBAAqB,EACrB,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,EAClB,uBAAuB,GACxB,oBAAmB;AAEpB,YAAY,EAAE,SAAS,EAAE,wBAAuB;AAChD,YAAY,EAAE,YAAY,EAAE,2BAA0B;AACtD,YAAY,EACV,2BAA2B,EAC3B,6BAA6B,EAC7B,0BAA0B,EAC1B,4BAA4B,EAC5B,0BAA0B,GAC3B,wCAAwC"}
package/dist/index.mjs ADDED
@@ -0,0 +1,3 @@
1
+ export { default as GatorPermissionsController } from "./GatorPermissionsController.mjs";
2
+ export { DELEGATION_FRAMEWORK_VERSION, EXECUTION_PERMISSION_EXPIRY_RULE_TYPE, EXECUTION_PERMISSION_PAYEE_RULE_TYPE, EXECUTION_PERMISSION_REDEEMER_RULE_TYPE } from "./constants.mjs";
3
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,0BAA0B,EAAE,yCAAwC;AACxF,OAAO,EACL,4BAA4B,EAC5B,qCAAqC,EACrC,oCAAoC,EACpC,uCAAuC,EACxC,wBAAuB","sourcesContent":["export { default as GatorPermissionsController } from './GatorPermissionsController.js';\nexport {\n DELEGATION_FRAMEWORK_VERSION,\n EXECUTION_PERMISSION_EXPIRY_RULE_TYPE,\n EXECUTION_PERMISSION_PAYEE_RULE_TYPE,\n EXECUTION_PERMISSION_REDEEMER_RULE_TYPE,\n} from './constants.js';\nexport type {\n GatorPermissionsControllerFetchAndUpdateGatorPermissionsAction,\n GatorPermissionsControllerAddPendingRevocationAction,\n GatorPermissionsControllerDecodePermissionFromPermissionContextForOriginAction,\n GatorPermissionsControllerInitializeAction,\n GatorPermissionsControllerIsPendingRevocationAction,\n GatorPermissionsControllerSubmitDirectRevocationAction,\n GatorPermissionsControllerSubmitRevocationAction,\n} from './GatorPermissionsController-method-action-types.js';\nexport type {\n GatorPermissionsControllerState,\n GatorPermissionsControllerConfig,\n GatorPermissionsControllerMessenger,\n GatorPermissionsControllerGetStateAction,\n GatorPermissionsControllerActions,\n GatorPermissionsControllerEvents,\n GatorPermissionsControllerStateChangeEvent,\n} from './GatorPermissionsController.js';\nexport type { DecodedPermission } from './decodePermission/index.js';\nexport type {\n GatorPermissionsControllerErrorCode,\n GatorPermissionsSnapRpcMethod,\n PermissionRequest,\n PermissionResponse,\n PermissionInfo,\n StoredGatorPermission,\n PermissionInfoWithMetadata,\n GatorPermissionStatus,\n DelegationDetails,\n RevocationParams,\n RevocationMetadata,\n SupportedPermissionType,\n} from './types.js';\n\nexport type { PayeeRule } from './payeeRule.js';\nexport type { RedeemerRule } from './redeemerRule.js';\nexport type {\n NativeTokenStreamPermission,\n NativeTokenPeriodicPermission,\n Erc20TokenStreamPermission,\n Erc20TokenPeriodicPermission,\n MetaMaskBasePermissionData,\n} from '@metamask/7715-permission-types';\n"]}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ /* istanbul ignore file */
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.createModuleLogger = exports.utilsLog = exports.controllerLog = exports.projectLogger = void 0;
5
+ const utils_1 = require("@metamask/utils");
6
+ Object.defineProperty(exports, "createModuleLogger", { enumerable: true, get: function () { return utils_1.createModuleLogger; } });
7
+ exports.projectLogger = (0, utils_1.createProjectLogger)('gator-permissions-controller');
8
+ exports.controllerLog = (0, utils_1.createModuleLogger)(exports.projectLogger, 'GatorPermissionsController');
9
+ exports.utilsLog = (0, utils_1.createModuleLogger)(exports.projectLogger, 'utils');
10
+ //# sourceMappingURL=logger.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.cjs","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":";AAAA,0BAA0B;;;AAE1B,2CAA0E;AAajE,mGAbqB,0BAAkB,OAarB;AAXd,QAAA,aAAa,GAAG,IAAA,2BAAmB,EAC9C,8BAA8B,CAC/B,CAAC;AAEW,QAAA,aAAa,GAAG,IAAA,0BAAkB,EAC7C,qBAAa,EACb,4BAA4B,CAC7B,CAAC;AAEW,QAAA,QAAQ,GAAG,IAAA,0BAAkB,EAAC,qBAAa,EAAE,OAAO,CAAC,CAAC","sourcesContent":["/* istanbul ignore file */\n\nimport { createProjectLogger, createModuleLogger } from '@metamask/utils';\n\nexport const projectLogger = createProjectLogger(\n 'gator-permissions-controller',\n);\n\nexport const controllerLog = createModuleLogger(\n projectLogger,\n 'GatorPermissionsController',\n);\n\nexport const utilsLog = createModuleLogger(projectLogger, 'utils');\n\nexport { createModuleLogger };\n"]}
@@ -1,6 +1,7 @@
1
- import { createModuleLogger } from '@metamask/utils';
1
+ /// <reference types="debug" />
2
+ import { createModuleLogger } from "@metamask/utils";
2
3
  export declare const projectLogger: import("debug").Debugger;
3
4
  export declare const controllerLog: import("debug").Debugger;
4
5
  export declare const utilsLog: import("debug").Debugger;
5
6
  export { createModuleLogger };
6
- //# sourceMappingURL=logger.d.ts.map
7
+ //# sourceMappingURL=logger.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.cts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":";AAEA,OAAO,EAAuB,kBAAkB,EAAE,wBAAwB;AAE1E,eAAO,MAAM,aAAa,0BAEzB,CAAC;AAEF,eAAO,MAAM,aAAa,0BAGzB,CAAC;AAEF,eAAO,MAAM,QAAQ,0BAA6C,CAAC;AAEnE,OAAO,EAAE,kBAAkB,EAAE,CAAC"}
@@ -0,0 +1,7 @@
1
+ /// <reference types="debug" />
2
+ import { createModuleLogger } from "@metamask/utils";
3
+ export declare const projectLogger: import("debug").Debugger;
4
+ export declare const controllerLog: import("debug").Debugger;
5
+ export declare const utilsLog: import("debug").Debugger;
6
+ export { createModuleLogger };
7
+ //# sourceMappingURL=logger.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.mts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":";AAEA,OAAO,EAAuB,kBAAkB,EAAE,wBAAwB;AAE1E,eAAO,MAAM,aAAa,0BAEzB,CAAC;AAEF,eAAO,MAAM,aAAa,0BAGzB,CAAC;AAEF,eAAO,MAAM,QAAQ,0BAA6C,CAAC;AAEnE,OAAO,EAAE,kBAAkB,EAAE,CAAC"}
@@ -1,7 +1,7 @@
1
1
  /* istanbul ignore file */
2
- import { createProjectLogger, createModuleLogger } from '@metamask/utils';
2
+ import { createProjectLogger, createModuleLogger } from "@metamask/utils";
3
3
  export const projectLogger = createProjectLogger('gator-permissions-controller');
4
4
  export const controllerLog = createModuleLogger(projectLogger, 'GatorPermissionsController');
5
5
  export const utilsLog = createModuleLogger(projectLogger, 'utils');
6
6
  export { createModuleLogger };
7
- //# sourceMappingURL=logger.js.map
7
+ //# sourceMappingURL=logger.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.mjs","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA,0BAA0B;AAE1B,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,wBAAwB;AAE1E,MAAM,CAAC,MAAM,aAAa,GAAG,mBAAmB,CAC9C,8BAA8B,CAC/B,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,kBAAkB,CAC7C,aAAa,EACb,4BAA4B,CAC7B,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAG,kBAAkB,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;AAEnE,OAAO,EAAE,kBAAkB,EAAE,CAAC","sourcesContent":["/* istanbul ignore file */\n\nimport { createProjectLogger, createModuleLogger } from '@metamask/utils';\n\nexport const projectLogger = createProjectLogger(\n 'gator-permissions-controller',\n);\n\nexport const controllerLog = createModuleLogger(\n projectLogger,\n 'GatorPermissionsController',\n);\n\nexport const utilsLog = createModuleLogger(projectLogger, 'utils');\n\nexport { createModuleLogger };\n"]}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=payeeRule.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payeeRule.cjs","sourceRoot":"","sources":["../src/payeeRule.ts"],"names":[],"mappings":"","sourcesContent":["import type { Hex } from '@metamask/utils';\n\n/**\n * Execution permission rule restricting which addresses may receive payments\n * (on-chain AllowedCalldataEnforcer / AllowedTargetsEnforcer caveat).\n */\nexport type PayeeRule = {\n type: 'payee';\n data: {\n addresses: Hex[];\n };\n};\n"]}
@@ -1,4 +1,4 @@
1
- import type { Hex } from '@metamask/utils';
1
+ import type { Hex } from "@metamask/utils";
2
2
  /**
3
3
  * Execution permission rule restricting which addresses may receive payments
4
4
  * (on-chain AllowedCalldataEnforcer / AllowedTargetsEnforcer caveat).
@@ -9,4 +9,4 @@ export type PayeeRule = {
9
9
  addresses: Hex[];
10
10
  };
11
11
  };
12
- //# sourceMappingURL=payeeRule.d.ts.map
12
+ //# sourceMappingURL=payeeRule.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payeeRule.d.cts","sourceRoot":"","sources":["../src/payeeRule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,wBAAwB;AAE3C;;;GAGG;AACH,MAAM,MAAM,SAAS,GAAG;IACtB,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE;QACJ,SAAS,EAAE,GAAG,EAAE,CAAC;KAClB,CAAC;CACH,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { Hex } from "@metamask/utils";
2
+ /**
3
+ * Execution permission rule restricting which addresses may receive payments
4
+ * (on-chain AllowedCalldataEnforcer / AllowedTargetsEnforcer caveat).
5
+ */
6
+ export type PayeeRule = {
7
+ type: 'payee';
8
+ data: {
9
+ addresses: Hex[];
10
+ };
11
+ };
12
+ //# sourceMappingURL=payeeRule.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payeeRule.d.mts","sourceRoot":"","sources":["../src/payeeRule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,wBAAwB;AAE3C;;;GAGG;AACH,MAAM,MAAM,SAAS,GAAG;IACtB,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE;QACJ,SAAS,EAAE,GAAG,EAAE,CAAC;KAClB,CAAC;CACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=payeeRule.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payeeRule.mjs","sourceRoot":"","sources":["../src/payeeRule.ts"],"names":[],"mappings":"","sourcesContent":["import type { Hex } from '@metamask/utils';\n\n/**\n * Execution permission rule restricting which addresses may receive payments\n * (on-chain AllowedCalldataEnforcer / AllowedTargetsEnforcer caveat).\n */\nexport type PayeeRule = {\n type: 'payee';\n data: {\n addresses: Hex[];\n };\n};\n"]}
@@ -0,0 +1,140 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.updateGrantedPermissionsStatus = exports.resolveGrantedPermissionOnChainStatus = exports.getExpiryFromDelegation = exports.readLatestBlockTimestampSeconds = exports.readDelegationDisabledOnChain = exports.encodeDisabledDelegationsCalldata = void 0;
4
+ const abi_utils_1 = require("@metamask/abi-utils");
5
+ const delegation_core_1 = require("@metamask/delegation-core");
6
+ const utils_1 = require("@metamask/utils");
7
+ const enforcerAddresses_js_1 = require("./decodePermission/enforcerAddresses.cjs");
8
+ const utils_js_1 = require("./decodePermission/utils.cjs");
9
+ const logger_js_1 = require("./logger.cjs");
10
+ /** Function selector for `DelegationManager.disabledDelegations(bytes32)`. */
11
+ const DISABLED_DELEGATIONS_SELECTOR = '0x2d40d052';
12
+ /**
13
+ * ABI-encodes a call to `DelegationManager.disabledDelegations(bytes32)`.
14
+ *
15
+ * @param delegationHash - Delegation struct hash (bytes32).
16
+ * @returns Calldata hex string (selector + encoded argument).
17
+ */
18
+ function encodeDisabledDelegationsCalldata(delegationHash) {
19
+ const encodedArgs = (0, utils_1.bytesToHex)((0, abi_utils_1.encodeSingle)('bytes32', delegationHash));
20
+ return `${DISABLED_DELEGATIONS_SELECTOR}${encodedArgs.slice(2)}`;
21
+ }
22
+ exports.encodeDisabledDelegationsCalldata = encodeDisabledDelegationsCalldata;
23
+ /**
24
+ * Reads `disabledDelegations(delegationHash)` from the delegation manager.
25
+ *
26
+ * @param args - Arguments.
27
+ * @param args.provider - JSON-RPC provider for the permission's chain.
28
+ * @param args.delegationManager - DelegationManager contract address.
29
+ * @param args.delegationHash - Hash of the leaf delegation.
30
+ * @returns Whether the delegation is disabled on-chain.
31
+ */
32
+ async function readDelegationDisabledOnChain({ provider, delegationManager, delegationHash, }) {
33
+ const data = encodeDisabledDelegationsCalldata(delegationHash);
34
+ const raw = (await provider.request({
35
+ method: 'eth_call',
36
+ params: [{ to: delegationManager, data }, 'latest'],
37
+ }));
38
+ return (0, abi_utils_1.decodeSingle)('bool', raw);
39
+ }
40
+ exports.readDelegationDisabledOnChain = readDelegationDisabledOnChain;
41
+ /**
42
+ * Returns the latest block's timestamp in seconds.
43
+ *
44
+ * @param provider - JSON-RPC provider for the chain.
45
+ * @returns Unix timestamp in seconds.
46
+ */
47
+ async function readLatestBlockTimestampSeconds(provider) {
48
+ const block = (await provider.request({
49
+ method: 'eth_getBlockByNumber',
50
+ params: ['latest', false],
51
+ }));
52
+ if (!block?.timestamp) {
53
+ throw new Error('Latest block missing timestamp');
54
+ }
55
+ return (0, utils_1.hexToNumber)(block.timestamp);
56
+ }
57
+ exports.readLatestBlockTimestampSeconds = readLatestBlockTimestampSeconds;
58
+ /**
59
+ * Reads TimestampEnforcer expiry (unix seconds) from the leaf delegation's caveats.
60
+ *
61
+ * @param leaf - Leaf delegation (index 0 when decoded from permission context).
62
+ * @param contracts - enforcer addresses for the chain.
63
+ * @returns Expiry timestamp in seconds, or `null` if no valid timestamp caveat.
64
+ */
65
+ function getExpiryFromDelegation(leaf, contracts) {
66
+ const targetEnforcer = (0, utils_1.getChecksumAddress)(contracts.timestampEnforcer);
67
+ const timestampCaveat = leaf.caveats.find((caveat) => (0, utils_1.getChecksumAddress)(caveat.enforcer) === targetEnforcer);
68
+ if (!timestampCaveat?.terms) {
69
+ return null;
70
+ }
71
+ try {
72
+ return (0, utils_js_1.extractExpiryFromCaveatTerms)(timestampCaveat.terms);
73
+ }
74
+ catch {
75
+ return null;
76
+ }
77
+ }
78
+ exports.getExpiryFromDelegation = getExpiryFromDelegation;
79
+ /**
80
+ * Recomputes {@link PermissionStatus} for one granted permission using chain state.
81
+ *
82
+ * @param entry - Granted permission row (including merged `status` from the prior sync).
83
+ * @param options - `getProviderForChainId` and deployment map for the framework version.
84
+ * @returns The same entry with an updated `status`.
85
+ */
86
+ async function resolveGrantedPermissionOnChainStatus(entry, options) {
87
+ if (entry.revocationMetadata) {
88
+ return { ...entry, status: 'Revoked' };
89
+ }
90
+ const originalStatus = entry.status ?? 'Active';
91
+ try {
92
+ const delegations = (0, delegation_core_1.decodeDelegations)(entry.permissionResponse.context);
93
+ if (delegations.length !== 1) {
94
+ throw new Error('Unexpected delegations length in decoded permission context');
95
+ }
96
+ const delegation = delegations[0];
97
+ const delegationHash = (0, delegation_core_1.hashDelegation)(delegation);
98
+ const provider = await options.getProviderForChainId(entry.permissionResponse.chainId);
99
+ const isDisabled = await readDelegationDisabledOnChain({
100
+ provider,
101
+ delegationManager: entry.permissionResponse.delegationManager,
102
+ delegationHash,
103
+ });
104
+ if (isDisabled) {
105
+ return { ...entry, status: 'Revoked' };
106
+ }
107
+ const chainId = (0, utils_1.hexToNumber)(entry.permissionResponse.chainId);
108
+ const deploymentContracts = enforcerAddresses_js_1.delegationContractsByChainId[chainId];
109
+ if (!deploymentContracts) {
110
+ return { ...entry, status: originalStatus };
111
+ }
112
+ const contracts = (0, enforcerAddresses_js_1.toEnforcerAddressesByName)(deploymentContracts);
113
+ const expiry = getExpiryFromDelegation(delegation, contracts);
114
+ if (expiry === null) {
115
+ return { ...entry, status: 'Active' };
116
+ }
117
+ const blockTimestamp = await readLatestBlockTimestampSeconds(provider);
118
+ if (blockTimestamp >= expiry) {
119
+ return { ...entry, status: 'Expired' };
120
+ }
121
+ return { ...entry, status: 'Active' };
122
+ }
123
+ catch (error) {
124
+ (0, logger_js_1.controllerLog)('Failed to resolve permission status', error);
125
+ return { ...entry, status: originalStatus };
126
+ }
127
+ }
128
+ exports.resolveGrantedPermissionOnChainStatus = resolveGrantedPermissionOnChainStatus;
129
+ /**
130
+ * Recomputes status for all granted permissions in parallel.
131
+ *
132
+ * @param grantedPermissions - Rows returned from the permissions provider snap.
133
+ * @param options - Provider factory and deployment map.
134
+ * @returns Same rows with updated `status` fields.
135
+ */
136
+ async function updateGrantedPermissionsStatus(grantedPermissions, options) {
137
+ return Promise.all(grantedPermissions.map((row) => resolveGrantedPermissionOnChainStatus(row, options)));
138
+ }
139
+ exports.updateGrantedPermissionsStatus = updateGrantedPermissionsStatus;
140
+ //# sourceMappingURL=permissionOnChainStatus.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permissionOnChainStatus.cjs","sourceRoot":"","sources":["../src/permissionOnChainStatus.ts"],"names":[],"mappings":"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","sourcesContent":["import type { EnforcerAddressesByName } from '@metamask/7715-permission-types';\nimport { encodeSingle, decodeSingle } from '@metamask/abi-utils';\nimport { decodeDelegations, hashDelegation } from '@metamask/delegation-core';\nimport type { Delegation } from '@metamask/delegation-core';\nimport { bytesToHex, getChecksumAddress, hexToNumber } from '@metamask/utils';\nimport type { Hex } from '@metamask/utils';\n\nimport {\n delegationContractsByChainId,\n toEnforcerAddressesByName,\n} from './decodePermission/enforcerAddresses.js';\nimport { extractExpiryFromCaveatTerms } from './decodePermission/utils.js';\nimport { controllerLog } from './logger.js';\nimport type {\n PermissionInfoWithMetadata,\n GatorPermissionStatus,\n} from './types.js';\n\n/** Function selector for `DelegationManager.disabledDelegations(bytes32)`. */\nconst DISABLED_DELEGATIONS_SELECTOR = '0x2d40d052';\n\n/**\n * Minimal EIP-1193 provider used for permission status RPCs.\n */\nexport type PermissionStatusEip1193Provider = {\n request(args: { method: string; params?: unknown[] }): Promise<unknown>;\n};\n\n/**\n * Resolves an RPC provider for the given EIP-155 `chainId` (hex).\n */\nexport type GetProviderForChainId = (\n chainId: Hex,\n) => Promise<PermissionStatusEip1193Provider>;\n\nexport type PermissionOnChainStatusOptions = {\n getProviderForChainId: GetProviderForChainId;\n};\n\n/**\n * ABI-encodes a call to `DelegationManager.disabledDelegations(bytes32)`.\n *\n * @param delegationHash - Delegation struct hash (bytes32).\n * @returns Calldata hex string (selector + encoded argument).\n */\nexport function encodeDisabledDelegationsCalldata(delegationHash: Hex): Hex {\n const encodedArgs = bytesToHex(encodeSingle('bytes32', delegationHash));\n return `${DISABLED_DELEGATIONS_SELECTOR}${encodedArgs.slice(2)}`;\n}\n\n/**\n * Reads `disabledDelegations(delegationHash)` from the delegation manager.\n *\n * @param args - Arguments.\n * @param args.provider - JSON-RPC provider for the permission's chain.\n * @param args.delegationManager - DelegationManager contract address.\n * @param args.delegationHash - Hash of the leaf delegation.\n * @returns Whether the delegation is disabled on-chain.\n */\nexport async function readDelegationDisabledOnChain({\n provider,\n delegationManager,\n delegationHash,\n}: {\n provider: PermissionStatusEip1193Provider;\n delegationManager: Hex;\n delegationHash: Hex;\n}): Promise<boolean> {\n const data = encodeDisabledDelegationsCalldata(delegationHash);\n const raw = (await provider.request({\n method: 'eth_call',\n params: [{ to: delegationManager, data }, 'latest'],\n })) as Hex;\n return decodeSingle('bool', raw);\n}\n\n/**\n * Returns the latest block's timestamp in seconds.\n *\n * @param provider - JSON-RPC provider for the chain.\n * @returns Unix timestamp in seconds.\n */\nexport async function readLatestBlockTimestampSeconds(\n provider: PermissionStatusEip1193Provider,\n): Promise<number> {\n const block = (await provider.request({\n method: 'eth_getBlockByNumber',\n params: ['latest', false],\n })) as { timestamp?: Hex };\n if (!block?.timestamp) {\n throw new Error('Latest block missing timestamp');\n }\n return hexToNumber(block.timestamp);\n}\n\n/**\n * Reads TimestampEnforcer expiry (unix seconds) from the leaf delegation's caveats.\n *\n * @param leaf - Leaf delegation (index 0 when decoded from permission context).\n * @param contracts - enforcer addresses for the chain.\n * @returns Expiry timestamp in seconds, or `null` if no valid timestamp caveat.\n */\nexport function getExpiryFromDelegation(\n leaf: Delegation<Hex>,\n contracts: EnforcerAddressesByName,\n): number | null {\n const targetEnforcer = getChecksumAddress(contracts.timestampEnforcer);\n const timestampCaveat = leaf.caveats.find(\n (caveat) => getChecksumAddress(caveat.enforcer) === targetEnforcer,\n );\n if (!timestampCaveat?.terms) {\n return null;\n }\n try {\n return extractExpiryFromCaveatTerms(timestampCaveat.terms);\n } catch {\n return null;\n }\n}\n\n/**\n * Recomputes {@link PermissionStatus} for one granted permission using chain state.\n *\n * @param entry - Granted permission row (including merged `status` from the prior sync).\n * @param options - `getProviderForChainId` and deployment map for the framework version.\n * @returns The same entry with an updated `status`.\n */\nexport async function resolveGrantedPermissionOnChainStatus(\n entry: PermissionInfoWithMetadata,\n options: PermissionOnChainStatusOptions,\n): Promise<PermissionInfoWithMetadata> {\n if (entry.revocationMetadata) {\n return { ...entry, status: 'Revoked' };\n }\n\n const originalStatus: GatorPermissionStatus = entry.status ?? 'Active';\n\n try {\n const delegations = decodeDelegations(entry.permissionResponse.context);\n\n if (delegations.length !== 1) {\n throw new Error(\n 'Unexpected delegations length in decoded permission context',\n );\n }\n const delegation = delegations[0];\n const delegationHash = hashDelegation(delegation);\n\n const provider = await options.getProviderForChainId(\n entry.permissionResponse.chainId,\n );\n\n const isDisabled = await readDelegationDisabledOnChain({\n provider,\n delegationManager: entry.permissionResponse.delegationManager,\n delegationHash,\n });\n\n if (isDisabled) {\n return { ...entry, status: 'Revoked' };\n }\n\n const chainId = hexToNumber(entry.permissionResponse.chainId);\n const deploymentContracts = delegationContractsByChainId[chainId];\n if (!deploymentContracts) {\n return { ...entry, status: originalStatus };\n }\n const contracts = toEnforcerAddressesByName(deploymentContracts);\n const expiry = getExpiryFromDelegation(delegation, contracts);\n if (expiry === null) {\n return { ...entry, status: 'Active' };\n }\n const blockTimestamp = await readLatestBlockTimestampSeconds(provider);\n if (blockTimestamp >= expiry) {\n return { ...entry, status: 'Expired' };\n }\n return { ...entry, status: 'Active' };\n } catch (error) {\n controllerLog('Failed to resolve permission status', error);\n return { ...entry, status: originalStatus };\n }\n}\n\n/**\n * Recomputes status for all granted permissions in parallel.\n *\n * @param grantedPermissions - Rows returned from the permissions provider snap.\n * @param options - Provider factory and deployment map.\n * @returns Same rows with updated `status` fields.\n */\nexport async function updateGrantedPermissionsStatus(\n grantedPermissions: PermissionInfoWithMetadata[],\n options: PermissionOnChainStatusOptions,\n): Promise<PermissionInfoWithMetadata[]> {\n return Promise.all(\n grantedPermissions.map((row) =>\n resolveGrantedPermissionOnChainStatus(row, options),\n ),\n );\n}\n"]}
@@ -1,7 +1,7 @@
1
- import type { EnforcerAddressesByName } from '@metamask/7715-permission-types';
2
- import type { Delegation } from '@metamask/delegation-core';
3
- import type { Hex } from '@metamask/utils';
4
- import type { PermissionInfoWithMetadata } from './types.js';
1
+ import type { EnforcerAddressesByName } from "@metamask/7715-permission-types";
2
+ import type { Delegation } from "@metamask/delegation-core";
3
+ import type { Hex } from "@metamask/utils";
4
+ import type { PermissionInfoWithMetadata } from "./types.cjs";
5
5
  /**
6
6
  * Minimal EIP-1193 provider used for permission status RPCs.
7
7
  */
@@ -70,4 +70,4 @@ export declare function resolveGrantedPermissionOnChainStatus(entry: PermissionI
70
70
  * @returns Same rows with updated `status` fields.
71
71
  */
72
72
  export declare function updateGrantedPermissionsStatus(grantedPermissions: PermissionInfoWithMetadata[], options: PermissionOnChainStatusOptions): Promise<PermissionInfoWithMetadata[]>;
73
- //# sourceMappingURL=permissionOnChainStatus.d.ts.map
73
+ //# sourceMappingURL=permissionOnChainStatus.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permissionOnChainStatus.d.cts","sourceRoot":"","sources":["../src/permissionOnChainStatus.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,wCAAwC;AAG/E,OAAO,KAAK,EAAE,UAAU,EAAE,kCAAkC;AAE5D,OAAO,KAAK,EAAE,GAAG,EAAE,wBAAwB;AAQ3C,OAAO,KAAK,EACV,0BAA0B,EAE3B,oBAAmB;AAKpB;;GAEG;AACH,MAAM,MAAM,+BAA+B,GAAG;IAC5C,OAAO,CAAC,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACzE,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG,CAClC,OAAO,EAAE,GAAG,KACT,OAAO,CAAC,+BAA+B,CAAC,CAAC;AAE9C,MAAM,MAAM,8BAA8B,GAAG;IAC3C,qBAAqB,EAAE,qBAAqB,CAAC;CAC9C,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,iCAAiC,CAAC,cAAc,EAAE,GAAG,GAAG,GAAG,CAG1E;AAED;;;;;;;;GAQG;AACH,wBAAsB,6BAA6B,CAAC,EAClD,QAAQ,EACR,iBAAiB,EACjB,cAAc,GACf,EAAE;IACD,QAAQ,EAAE,+BAA+B,CAAC;IAC1C,iBAAiB,EAAE,GAAG,CAAC;IACvB,cAAc,EAAE,GAAG,CAAC;CACrB,GAAG,OAAO,CAAC,OAAO,CAAC,CAOnB;AAED;;;;;GAKG;AACH,wBAAsB,+BAA+B,CACnD,QAAQ,EAAE,+BAA+B,GACxC,OAAO,CAAC,MAAM,CAAC,CASjB;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,UAAU,CAAC,GAAG,CAAC,EACrB,SAAS,EAAE,uBAAuB,GACjC,MAAM,GAAG,IAAI,CAaf;AAED;;;;;;GAMG;AACH,wBAAsB,qCAAqC,CACzD,KAAK,EAAE,0BAA0B,EACjC,OAAO,EAAE,8BAA8B,GACtC,OAAO,CAAC,0BAA0B,CAAC,CAmDrC;AAED;;;;;;GAMG;AACH,wBAAsB,8BAA8B,CAClD,kBAAkB,EAAE,0BAA0B,EAAE,EAChD,OAAO,EAAE,8BAA8B,GACtC,OAAO,CAAC,0BAA0B,EAAE,CAAC,CAMvC"}
@@ -0,0 +1,73 @@
1
+ import type { EnforcerAddressesByName } from "@metamask/7715-permission-types";
2
+ import type { Delegation } from "@metamask/delegation-core";
3
+ import type { Hex } from "@metamask/utils";
4
+ import type { PermissionInfoWithMetadata } from "./types.mjs";
5
+ /**
6
+ * Minimal EIP-1193 provider used for permission status RPCs.
7
+ */
8
+ export type PermissionStatusEip1193Provider = {
9
+ request(args: {
10
+ method: string;
11
+ params?: unknown[];
12
+ }): Promise<unknown>;
13
+ };
14
+ /**
15
+ * Resolves an RPC provider for the given EIP-155 `chainId` (hex).
16
+ */
17
+ export type GetProviderForChainId = (chainId: Hex) => Promise<PermissionStatusEip1193Provider>;
18
+ export type PermissionOnChainStatusOptions = {
19
+ getProviderForChainId: GetProviderForChainId;
20
+ };
21
+ /**
22
+ * ABI-encodes a call to `DelegationManager.disabledDelegations(bytes32)`.
23
+ *
24
+ * @param delegationHash - Delegation struct hash (bytes32).
25
+ * @returns Calldata hex string (selector + encoded argument).
26
+ */
27
+ export declare function encodeDisabledDelegationsCalldata(delegationHash: Hex): Hex;
28
+ /**
29
+ * Reads `disabledDelegations(delegationHash)` from the delegation manager.
30
+ *
31
+ * @param args - Arguments.
32
+ * @param args.provider - JSON-RPC provider for the permission's chain.
33
+ * @param args.delegationManager - DelegationManager contract address.
34
+ * @param args.delegationHash - Hash of the leaf delegation.
35
+ * @returns Whether the delegation is disabled on-chain.
36
+ */
37
+ export declare function readDelegationDisabledOnChain({ provider, delegationManager, delegationHash, }: {
38
+ provider: PermissionStatusEip1193Provider;
39
+ delegationManager: Hex;
40
+ delegationHash: Hex;
41
+ }): Promise<boolean>;
42
+ /**
43
+ * Returns the latest block's timestamp in seconds.
44
+ *
45
+ * @param provider - JSON-RPC provider for the chain.
46
+ * @returns Unix timestamp in seconds.
47
+ */
48
+ export declare function readLatestBlockTimestampSeconds(provider: PermissionStatusEip1193Provider): Promise<number>;
49
+ /**
50
+ * Reads TimestampEnforcer expiry (unix seconds) from the leaf delegation's caveats.
51
+ *
52
+ * @param leaf - Leaf delegation (index 0 when decoded from permission context).
53
+ * @param contracts - enforcer addresses for the chain.
54
+ * @returns Expiry timestamp in seconds, or `null` if no valid timestamp caveat.
55
+ */
56
+ export declare function getExpiryFromDelegation(leaf: Delegation<Hex>, contracts: EnforcerAddressesByName): number | null;
57
+ /**
58
+ * Recomputes {@link PermissionStatus} for one granted permission using chain state.
59
+ *
60
+ * @param entry - Granted permission row (including merged `status` from the prior sync).
61
+ * @param options - `getProviderForChainId` and deployment map for the framework version.
62
+ * @returns The same entry with an updated `status`.
63
+ */
64
+ export declare function resolveGrantedPermissionOnChainStatus(entry: PermissionInfoWithMetadata, options: PermissionOnChainStatusOptions): Promise<PermissionInfoWithMetadata>;
65
+ /**
66
+ * Recomputes status for all granted permissions in parallel.
67
+ *
68
+ * @param grantedPermissions - Rows returned from the permissions provider snap.
69
+ * @param options - Provider factory and deployment map.
70
+ * @returns Same rows with updated `status` fields.
71
+ */
72
+ export declare function updateGrantedPermissionsStatus(grantedPermissions: PermissionInfoWithMetadata[], options: PermissionOnChainStatusOptions): Promise<PermissionInfoWithMetadata[]>;
73
+ //# sourceMappingURL=permissionOnChainStatus.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permissionOnChainStatus.d.mts","sourceRoot":"","sources":["../src/permissionOnChainStatus.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,wCAAwC;AAG/E,OAAO,KAAK,EAAE,UAAU,EAAE,kCAAkC;AAE5D,OAAO,KAAK,EAAE,GAAG,EAAE,wBAAwB;AAQ3C,OAAO,KAAK,EACV,0BAA0B,EAE3B,oBAAmB;AAKpB;;GAEG;AACH,MAAM,MAAM,+BAA+B,GAAG;IAC5C,OAAO,CAAC,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACzE,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG,CAClC,OAAO,EAAE,GAAG,KACT,OAAO,CAAC,+BAA+B,CAAC,CAAC;AAE9C,MAAM,MAAM,8BAA8B,GAAG;IAC3C,qBAAqB,EAAE,qBAAqB,CAAC;CAC9C,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,iCAAiC,CAAC,cAAc,EAAE,GAAG,GAAG,GAAG,CAG1E;AAED;;;;;;;;GAQG;AACH,wBAAsB,6BAA6B,CAAC,EAClD,QAAQ,EACR,iBAAiB,EACjB,cAAc,GACf,EAAE;IACD,QAAQ,EAAE,+BAA+B,CAAC;IAC1C,iBAAiB,EAAE,GAAG,CAAC;IACvB,cAAc,EAAE,GAAG,CAAC;CACrB,GAAG,OAAO,CAAC,OAAO,CAAC,CAOnB;AAED;;;;;GAKG;AACH,wBAAsB,+BAA+B,CACnD,QAAQ,EAAE,+BAA+B,GACxC,OAAO,CAAC,MAAM,CAAC,CASjB;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,UAAU,CAAC,GAAG,CAAC,EACrB,SAAS,EAAE,uBAAuB,GACjC,MAAM,GAAG,IAAI,CAaf;AAED;;;;;;GAMG;AACH,wBAAsB,qCAAqC,CACzD,KAAK,EAAE,0BAA0B,EACjC,OAAO,EAAE,8BAA8B,GACtC,OAAO,CAAC,0BAA0B,CAAC,CAmDrC;AAED;;;;;;GAMG;AACH,wBAAsB,8BAA8B,CAClD,kBAAkB,EAAE,0BAA0B,EAAE,EAChD,OAAO,EAAE,8BAA8B,GACtC,OAAO,CAAC,0BAA0B,EAAE,CAAC,CAMvC"}