@metamask-previews/claims-controller 0.6.2-preview-6eff555ee → 1.0.0-preview-0a30e47

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 (106) hide show
  1. package/CHANGELOG.md +18 -1
  2. package/dist/{ClaimsController-method-action-types.d.mts → ClaimsController-method-action-types.d.ts} +2 -2
  3. package/dist/ClaimsController-method-action-types.d.ts.map +1 -0
  4. package/dist/{ClaimsController-method-action-types.mjs → ClaimsController-method-action-types.js} +1 -1
  5. package/dist/ClaimsController-method-action-types.js.map +1 -0
  6. package/dist/{ClaimsController.d.mts → ClaimsController.d.ts} +9 -9
  7. package/dist/ClaimsController.d.ts.map +1 -0
  8. package/dist/{ClaimsController.mjs → ClaimsController.js} +18 -20
  9. package/dist/{ClaimsController.cjs.map → ClaimsController.js.map} +1 -1
  10. package/dist/{ClaimsService-method-action-types.d.cts → ClaimsService-method-action-types.d.ts} +2 -2
  11. package/dist/ClaimsService-method-action-types.d.ts.map +1 -0
  12. package/dist/{ClaimsService-method-action-types.mjs → ClaimsService-method-action-types.js} +1 -1
  13. package/dist/ClaimsService-method-action-types.js.map +1 -0
  14. package/dist/{ClaimsService-structs.d.cts → ClaimsService-structs.d.ts} +8 -8
  15. package/dist/ClaimsService-structs.d.ts.map +1 -0
  16. package/dist/{ClaimsService-structs.mjs → ClaimsService-structs.js} +3 -3
  17. package/dist/ClaimsService-structs.js.map +1 -0
  18. package/dist/{ClaimsService.d.cts → ClaimsService.d.ts} +12 -12
  19. package/dist/ClaimsService.d.ts.map +1 -0
  20. package/dist/ClaimsService.js +215 -0
  21. package/dist/ClaimsService.js.map +1 -0
  22. package/dist/{constants.d.cts → constants.d.ts} +1 -1
  23. package/dist/constants.d.ts.map +1 -0
  24. package/dist/{constants.mjs → constants.js} +2 -2
  25. package/dist/constants.js.map +1 -0
  26. package/dist/{index.d.cts → index.d.ts} +9 -9
  27. package/dist/index.d.ts.map +1 -0
  28. package/dist/index.js +4 -0
  29. package/dist/index.js.map +1 -0
  30. package/dist/logger.d.ts +4 -0
  31. package/dist/logger.d.ts.map +1 -0
  32. package/dist/logger.js +5 -0
  33. package/dist/logger.js.map +1 -0
  34. package/dist/{types.d.cts → types.d.ts} +3 -3
  35. package/dist/types.d.ts.map +1 -0
  36. package/dist/types.js +2 -0
  37. package/dist/types.js.map +1 -0
  38. package/dist/{utils.d.cts → utils.d.ts} +1 -1
  39. package/dist/utils.d.ts.map +1 -0
  40. package/dist/{utils.mjs → utils.js} +1 -1
  41. package/dist/utils.js.map +1 -0
  42. package/package.json +18 -22
  43. package/dist/ClaimsController-method-action-types.cjs +0 -7
  44. package/dist/ClaimsController-method-action-types.cjs.map +0 -1
  45. package/dist/ClaimsController-method-action-types.d.cts +0 -93
  46. package/dist/ClaimsController-method-action-types.d.cts.map +0 -1
  47. package/dist/ClaimsController-method-action-types.d.mts.map +0 -1
  48. package/dist/ClaimsController-method-action-types.mjs.map +0 -1
  49. package/dist/ClaimsController.cjs +0 -221
  50. package/dist/ClaimsController.d.cts +0 -84
  51. package/dist/ClaimsController.d.cts.map +0 -1
  52. package/dist/ClaimsController.d.mts.map +0 -1
  53. package/dist/ClaimsController.mjs.map +0 -1
  54. package/dist/ClaimsService-method-action-types.cjs +0 -7
  55. package/dist/ClaimsService-method-action-types.cjs.map +0 -1
  56. package/dist/ClaimsService-method-action-types.d.cts.map +0 -1
  57. package/dist/ClaimsService-method-action-types.d.mts +0 -67
  58. package/dist/ClaimsService-method-action-types.d.mts.map +0 -1
  59. package/dist/ClaimsService-method-action-types.mjs.map +0 -1
  60. package/dist/ClaimsService-structs.cjs +0 -36
  61. package/dist/ClaimsService-structs.cjs.map +0 -1
  62. package/dist/ClaimsService-structs.d.cts.map +0 -1
  63. package/dist/ClaimsService-structs.d.mts +0 -71
  64. package/dist/ClaimsService-structs.d.mts.map +0 -1
  65. package/dist/ClaimsService-structs.mjs.map +0 -1
  66. package/dist/ClaimsService.cjs +0 -229
  67. package/dist/ClaimsService.cjs.map +0 -1
  68. package/dist/ClaimsService.d.cts.map +0 -1
  69. package/dist/ClaimsService.d.mts +0 -108
  70. package/dist/ClaimsService.d.mts.map +0 -1
  71. package/dist/ClaimsService.mjs +0 -225
  72. package/dist/ClaimsService.mjs.map +0 -1
  73. package/dist/constants.cjs +0 -59
  74. package/dist/constants.cjs.map +0 -1
  75. package/dist/constants.d.cts.map +0 -1
  76. package/dist/constants.d.mts +0 -37
  77. package/dist/constants.d.mts.map +0 -1
  78. package/dist/constants.mjs.map +0 -1
  79. package/dist/index.cjs +0 -16
  80. package/dist/index.cjs.map +0 -1
  81. package/dist/index.d.cts.map +0 -1
  82. package/dist/index.d.mts +0 -9
  83. package/dist/index.d.mts.map +0 -1
  84. package/dist/index.mjs +0 -4
  85. package/dist/index.mjs.map +0 -1
  86. package/dist/logger.cjs +0 -8
  87. package/dist/logger.cjs.map +0 -1
  88. package/dist/logger.d.cts +0 -5
  89. package/dist/logger.d.cts.map +0 -1
  90. package/dist/logger.d.mts +0 -5
  91. package/dist/logger.d.mts.map +0 -1
  92. package/dist/logger.mjs +0 -5
  93. package/dist/logger.mjs.map +0 -1
  94. package/dist/types.cjs +0 -3
  95. package/dist/types.cjs.map +0 -1
  96. package/dist/types.d.cts.map +0 -1
  97. package/dist/types.d.mts +0 -85
  98. package/dist/types.d.mts.map +0 -1
  99. package/dist/types.mjs +0 -2
  100. package/dist/types.mjs.map +0 -1
  101. package/dist/utils.cjs +0 -49
  102. package/dist/utils.cjs.map +0 -1
  103. package/dist/utils.d.cts.map +0 -1
  104. package/dist/utils.d.mts +0 -16
  105. package/dist/utils.d.mts.map +0 -1
  106. package/dist/utils.mjs.map +0 -1
package/CHANGELOG.md CHANGED
@@ -7,6 +7,22 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [1.0.0]
11
+
12
+ ### Changed
13
+
14
+ - **BREAKING:** Drop CommonJS support ([#9536](https://github.com/MetaMask/core/pull/9536))
15
+ - This package is now ESM-only, but can still be used in CommonJS projects via `require(esm)` in modern Node.js versions (22+), or dynamic imports in older Node.js versions.
16
+ - **BREAKING:** Bump minimum Node.js version to 22 ([#9976](https://github.com/MetaMask/core/pull/9976))
17
+ - **BREAKING:** Bump TypeScript target to ES2022 ([#10019](https://github.com/MetaMask/core/pull/10019))
18
+ - This package now ships ES2022 code, requiring a compatible modern environment or bundler configuration to consume.
19
+ - Bump `@metamask/base-controller` from `^9.1.0` to `^10.0.0` ([#10160](https://github.com/MetaMask/core/pull/10160))
20
+ - Bump `@metamask/base-data-service` from `^1.0.0` to `^2.0.0` ([#10160](https://github.com/MetaMask/core/pull/10160))
21
+ - Bump `@metamask/controller-utils` from `^12.3.0` to `^13.0.0` ([#10160](https://github.com/MetaMask/core/pull/10160))
22
+ - Bump `@metamask/keyring-controller` from `^27.1.1` to `^28.0.0` ([#10160](https://github.com/MetaMask/core/pull/10160))
23
+ - Bump `@metamask/messenger` from `^2.0.0` to `^3.0.0` ([#10160](https://github.com/MetaMask/core/pull/10160))
24
+ - Bump `@metamask/profile-sync-controller` from `^30.0.0` to `^31.0.0` ([#10160](https://github.com/MetaMask/core/pull/10160))
25
+
10
26
  ## [0.6.2]
11
27
 
12
28
  ### Changed
@@ -176,7 +192,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
176
192
  - `generateMessageForClaimSignature`: generate message to sign for the claim signature.
177
193
  - `verifyClaimSignature`: verify claim signature produced by user.
178
194
 
179
- [Unreleased]: https://github.com/MetaMask/core/compare/@metamask/claims-controller@0.6.2...HEAD
195
+ [Unreleased]: https://github.com/MetaMask/core/compare/@metamask/claims-controller@1.0.0...HEAD
196
+ [1.0.0]: https://github.com/MetaMask/core/compare/@metamask/claims-controller@0.6.2...@metamask/claims-controller@1.0.0
180
197
  [0.6.2]: https://github.com/MetaMask/core/compare/@metamask/claims-controller@0.6.1...@metamask/claims-controller@0.6.2
181
198
  [0.6.1]: https://github.com/MetaMask/core/compare/@metamask/claims-controller@0.6.0...@metamask/claims-controller@0.6.1
182
199
  [0.6.0]: https://github.com/MetaMask/core/compare/@metamask/claims-controller@0.5.4...@metamask/claims-controller@0.6.0
@@ -2,7 +2,7 @@
2
2
  * This file is auto generated.
3
3
  * Do not edit manually.
4
4
  */
5
- import type { ClaimsController } from "./ClaimsController.mjs";
5
+ import type { ClaimsController } from './ClaimsController.js';
6
6
  /**
7
7
  * Fetch the required configurations for the claims service.
8
8
  *
@@ -90,4 +90,4 @@ export type ClaimsControllerClearStateAction = {
90
90
  * Union of all ClaimsController action types.
91
91
  */
92
92
  export type ClaimsControllerMethodActions = ClaimsControllerFetchClaimsConfigurationsAction | ClaimsControllerGetSubmitClaimConfigAction | ClaimsControllerGenerateClaimSignatureAction | ClaimsControllerGetClaimsAction | ClaimsControllerSaveOrUpdateClaimDraftAction | ClaimsControllerGetClaimDraftsAction | ClaimsControllerDeleteClaimDraftAction | ClaimsControllerDeleteAllClaimDraftsAction | ClaimsControllerClearStateAction;
93
- //# sourceMappingURL=ClaimsController-method-action-types.d.mts.map
93
+ //# sourceMappingURL=ClaimsController-method-action-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClaimsController-method-action-types.d.ts","sourceRoot":"","sources":["../src/ClaimsController-method-action-types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE9D;;;;GAIG;AACH,MAAM,MAAM,+CAA+C,GAAG;IAC5D,IAAI,EAAE,4CAA4C,CAAC;IACnD,OAAO,EAAE,gBAAgB,CAAC,2BAA2B,CAAC,CAAC;CACxD,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,0CAA0C,GAAG;IACvD,IAAI,EAAE,uCAAuC,CAAC;IAC9C,OAAO,EAAE,gBAAgB,CAAC,sBAAsB,CAAC,CAAC;CACnD,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,MAAM,4CAA4C,GAAG;IACzD,IAAI,EAAE,yCAAyC,CAAC;IAChD,OAAO,EAAE,gBAAgB,CAAC,wBAAwB,CAAC,CAAC;CACrD,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,+BAA+B,GAAG;IAC5C,IAAI,EAAE,4BAA4B,CAAC;IACnC,OAAO,EAAE,gBAAgB,CAAC,WAAW,CAAC,CAAC;CACxC,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,MAAM,4CAA4C,GAAG;IACzD,IAAI,EAAE,yCAAyC,CAAC;IAChD,OAAO,EAAE,gBAAgB,CAAC,wBAAwB,CAAC,CAAC;CACrD,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,oCAAoC,GAAG;IACjD,IAAI,EAAE,iCAAiC,CAAC;IACxC,OAAO,EAAE,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;CAC7C,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,sCAAsC,GAAG;IACnD,IAAI,EAAE,mCAAmC,CAAC;IAC1C,OAAO,EAAE,gBAAgB,CAAC,kBAAkB,CAAC,CAAC;CAC/C,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,0CAA0C,GAAG;IACvD,IAAI,EAAE,uCAAuC,CAAC;IAC9C,OAAO,EAAE,gBAAgB,CAAC,sBAAsB,CAAC,CAAC;CACnD,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,gCAAgC,GAAG;IAC7C,IAAI,EAAE,6BAA6B,CAAC;IACpC,OAAO,EAAE,gBAAgB,CAAC,YAAY,CAAC,CAAC;CACzC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,6BAA6B,GACrC,+CAA+C,GAC/C,0CAA0C,GAC1C,4CAA4C,GAC5C,+BAA+B,GAC/B,4CAA4C,GAC5C,oCAAoC,GACpC,sCAAsC,GACtC,0CAA0C,GAC1C,gCAAgC,CAAC"}
@@ -3,4 +3,4 @@
3
3
  * Do not edit manually.
4
4
  */
5
5
  export {};
6
- //# sourceMappingURL=ClaimsController-method-action-types.mjs.map
6
+ //# sourceMappingURL=ClaimsController-method-action-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClaimsController-method-action-types.js","sourceRoot":"","sources":["../src/ClaimsController-method-action-types.ts"],"names":[],"mappings":"AAAA;;;GAGG","sourcesContent":["/**\n * This file is auto generated.\n * Do not edit manually.\n */\n\nimport type { ClaimsController } from './ClaimsController.js';\n\n/**\n * Fetch the required configurations for the claims service.\n *\n * @returns The required configurations for the claims service.\n */\nexport type ClaimsControllerFetchClaimsConfigurationsAction = {\n type: `ClaimsController:fetchClaimsConfigurations`;\n handler: ClaimsController['fetchClaimsConfigurations'];\n};\n\n/**\n * Get required config for submitting a claim.\n *\n * @param claim - The claim request to get the required config for.\n * @returns The required config for submitting the claim.\n */\nexport type ClaimsControllerGetSubmitClaimConfigAction = {\n type: `ClaimsController:getSubmitClaimConfig`;\n handler: ClaimsController['getSubmitClaimConfig'];\n};\n\n/**\n * Generate a signature for a claim.\n *\n * @param chainId - The chain id of the claim.\n * @param walletAddress - The impacted wallet address of the claim.\n * @returns The signature for the claim.\n */\nexport type ClaimsControllerGenerateClaimSignatureAction = {\n type: `ClaimsController:generateClaimSignature`;\n handler: ClaimsController['generateClaimSignature'];\n};\n\n/**\n * Get the list of claims for the current user.\n *\n * @returns The list of claims for the current user.\n */\nexport type ClaimsControllerGetClaimsAction = {\n type: `ClaimsController:getClaims`;\n handler: ClaimsController['getClaims'];\n};\n\n/**\n * Save a claim draft to the state.\n * If the draft name is not provided, a default name will be generated.\n * If the draft with the same id already exists, it will be updated.\n *\n * @param draft - The draft to save.\n * @returns The saved draft.\n */\nexport type ClaimsControllerSaveOrUpdateClaimDraftAction = {\n type: `ClaimsController:saveOrUpdateClaimDraft`;\n handler: ClaimsController['saveOrUpdateClaimDraft'];\n};\n\n/**\n * Get the list of claim drafts.\n *\n * @returns The list of claim drafts.\n */\nexport type ClaimsControllerGetClaimDraftsAction = {\n type: `ClaimsController:getClaimDrafts`;\n handler: ClaimsController['getClaimDrafts'];\n};\n\n/**\n * Delete a claim draft from the state.\n *\n * @param draftId - The ID of the draft to delete.\n */\nexport type ClaimsControllerDeleteClaimDraftAction = {\n type: `ClaimsController:deleteClaimDraft`;\n handler: ClaimsController['deleteClaimDraft'];\n};\n\n/**\n * Delete all claim drafts from the state.\n */\nexport type ClaimsControllerDeleteAllClaimDraftsAction = {\n type: `ClaimsController:deleteAllClaimDrafts`;\n handler: ClaimsController['deleteAllClaimDrafts'];\n};\n\n/**\n * Clears the claims state and resets to default values.\n */\nexport type ClaimsControllerClearStateAction = {\n type: `ClaimsController:clearState`;\n handler: ClaimsController['clearState'];\n};\n\n/**\n * Union of all ClaimsController action types.\n */\nexport type ClaimsControllerMethodActions =\n | ClaimsControllerFetchClaimsConfigurationsAction\n | ClaimsControllerGetSubmitClaimConfigAction\n | ClaimsControllerGenerateClaimSignatureAction\n | ClaimsControllerGetClaimsAction\n | ClaimsControllerSaveOrUpdateClaimDraftAction\n | ClaimsControllerGetClaimDraftsAction\n | ClaimsControllerDeleteClaimDraftAction\n | ClaimsControllerDeleteAllClaimDraftsAction\n | ClaimsControllerClearStateAction;\n"]}
@@ -1,11 +1,11 @@
1
- import type { ControllerGetStateAction, ControllerStateChangeEvent } from "@metamask/base-controller";
2
- import { BaseController } from "@metamask/base-controller";
3
- import type { KeyringControllerSignPersonalMessageAction } from "@metamask/keyring-controller";
4
- import type { Messenger } from "@metamask/messenger";
5
- import type { ClaimsControllerMethodActions } from "./ClaimsController-method-action-types.mjs";
6
- import type { ClaimsServiceFetchClaimsConfigurationsAction, ClaimsServiceGenerateMessageForClaimSignatureAction, ClaimsServiceGetClaimByIdAction, ClaimsServiceGetClaimsAction, ClaimsServiceGetClaimsApiUrlAction, ClaimsServiceGetRequestHeadersAction } from "./ClaimsService-method-action-types.mjs";
7
- import { CONTROLLER_NAME } from "./constants.mjs";
8
- import type { Claim, ClaimDraft, ClaimsConfigurations, ClaimsControllerState, CreateClaimRequest, SubmitClaimConfig } from "./types.mjs";
1
+ import type { ControllerGetStateAction, ControllerStateChangeEvent } from '@metamask/base-controller';
2
+ import { BaseController } from '@metamask/base-controller';
3
+ import type { KeyringControllerSignPersonalMessageAction } from '@metamask/keyring-controller';
4
+ import type { Messenger } from '@metamask/messenger';
5
+ import type { ClaimsControllerMethodActions } from './ClaimsController-method-action-types.js';
6
+ import type { ClaimsServiceFetchClaimsConfigurationsAction, ClaimsServiceGenerateMessageForClaimSignatureAction, ClaimsServiceGetClaimByIdAction, ClaimsServiceGetClaimsAction, ClaimsServiceGetClaimsApiUrlAction, ClaimsServiceGetRequestHeadersAction } from './ClaimsService-method-action-types.js';
7
+ import { CONTROLLER_NAME } from './constants.js';
8
+ import type { Claim, ClaimDraft, ClaimsConfigurations, ClaimsControllerState, CreateClaimRequest, SubmitClaimConfig } from './types.js';
9
9
  export type ClaimsControllerGetStateAction = ControllerGetStateAction<typeof CONTROLLER_NAME, ClaimsControllerState>;
10
10
  export type ClaimsControllerActions = ClaimsControllerGetStateAction | ClaimsControllerMethodActions;
11
11
  export type AllowedActions = ClaimsServiceFetchClaimsConfigurationsAction | ClaimsServiceGetClaimsAction | ClaimsServiceGetClaimByIdAction | ClaimsServiceGetRequestHeadersAction | ClaimsServiceGetClaimsApiUrlAction | ClaimsServiceGenerateMessageForClaimSignatureAction | ClaimsServiceGetClaimsAction | KeyringControllerSignPersonalMessageAction;
@@ -81,4 +81,4 @@ export declare class ClaimsController extends BaseController<typeof CONTROLLER_N
81
81
  */
82
82
  clearState(): void;
83
83
  }
84
- //# sourceMappingURL=ClaimsController.d.mts.map
84
+ //# sourceMappingURL=ClaimsController.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClaimsController.d.ts","sourceRoot":"","sources":["../src/ClaimsController.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,wBAAwB,EACxB,0BAA0B,EAE3B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAE3D,OAAO,KAAK,EAAE,0CAA0C,EAAE,MAAM,8BAA8B,CAAC;AAC/F,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAGrD,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,2CAA2C,CAAC;AAC/F,OAAO,KAAK,EACV,4CAA4C,EAC5C,mDAAmD,EACnD,+BAA+B,EAC/B,4BAA4B,EAC5B,kCAAkC,EAClC,oCAAoC,EACrC,MAAM,wCAAwC,CAAC;AAChD,OAAO,EAEL,eAAe,EAGhB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EACV,KAAK,EACL,UAAU,EACV,oBAAoB,EACpB,qBAAqB,EACrB,kBAAkB,EAClB,iBAAiB,EAClB,MAAM,YAAY,CAAC;AAEpB,MAAM,MAAM,8BAA8B,GAAG,wBAAwB,CACnE,OAAO,eAAe,EACtB,qBAAqB,CACtB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAC/B,8BAA8B,GAC9B,6BAA6B,CAAC;AAElC,MAAM,MAAM,cAAc,GACtB,4CAA4C,GAC5C,4BAA4B,GAC5B,+BAA+B,GAC/B,oCAAoC,GACpC,kCAAkC,GAClC,mDAAmD,GACnD,4BAA4B,GAC5B,0CAA0C,CAAC;AAE/C,MAAM,MAAM,gCAAgC,GAAG,0BAA0B,CACvE,OAAO,eAAe,EACtB,qBAAqB,CACtB,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG,SAAS,CAC/C,OAAO,eAAe,EACtB,uBAAuB,GAAG,cAAc,EACxC,gCAAgC,CACjC,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,SAAS,EAAE,yBAAyB,CAAC;IACrC,KAAK,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,CAAC;CACxC,CAAC;AAuBF;;;;GAIG;AACH,wBAAgB,+BAA+B,IAAI,qBAAqB,CAMvE;AAcD,qBAAa,gBAAiB,SAAQ,cAAc,CAClD,OAAO,eAAe,EACtB,qBAAqB,EACrB,yBAAyB,CAC1B;;IACC,YAAY,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,uBAAuB,EAYxD;IAED;;;;OAIG;IACG,yBAAyB,IAAI,OAAO,CAAC,oBAAoB,CAAC,CAiB/D;IAED;;;;;OAKG;IACG,oBAAoB,CACxB,KAAK,EAAE,kBAAkB,GACxB,OAAO,CAAC,iBAAiB,CAAC,CAgB5B;IAED;;;;;;OAMG;IACG,sBAAsB,CAC1B,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,KAAK,MAAM,EAAE,GAC3B,OAAO,CAAC,MAAM,CAAC,CA2BjB;IAED;;;;OAIG;IACG,SAAS,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC,CAMlC;IAED;;;;;;;OAOG;IACH,sBAAsB,CAAC,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,UAAU,CAsC7D;IAED;;;;OAIG;IACH,cAAc,IAAI,UAAU,EAAE,CAE7B;IAED;;;;OAIG;IACH,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAItC;IAED;;OAEG;IACH,oBAAoB,IAAI,IAAI,CAI3B;IAED;;OAEG;IACH,UAAU,IAAI,IAAI,CAIjB;CAgBF"}
@@ -1,13 +1,7 @@
1
- var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
2
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
3
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
4
- return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
5
- };
6
- var _ClaimsController_instances, _ClaimsController_validateSubmitClaimRequest;
7
- import { BaseController } from "@metamask/base-controller";
8
- import { detectSIWE, toHex } from "@metamask/controller-utils";
9
- import { bytesToHex, stringToBytes } from "@metamask/utils";
10
- import { ClaimsControllerErrorMessages, CONTROLLER_NAME, DEFAULT_CLAIMS_CONFIGURATIONS, SERVICE_NAME } from "./constants.mjs";
1
+ import { BaseController } from '@metamask/base-controller';
2
+ import { detectSIWE, toHex } from '@metamask/controller-utils';
3
+ import { bytesToHex, stringToBytes } from '@metamask/utils';
4
+ import { ClaimsControllerErrorMessages, CONTROLLER_NAME, DEFAULT_CLAIMS_CONFIGURATIONS, SERVICE_NAME, } from './constants.js';
11
5
  const ClaimsControllerStateMetadata = {
12
6
  claims: {
13
7
  includeInStateLogs: false,
@@ -59,7 +53,6 @@ export class ClaimsController extends BaseController {
59
53
  name: CONTROLLER_NAME,
60
54
  state: { ...getDefaultClaimsControllerState(), ...state },
61
55
  });
62
- _ClaimsController_instances.add(this);
63
56
  this.messenger.registerMethodActionHandlers(this, MESSENGER_EXPOSED_METHODS);
64
57
  }
65
58
  /**
@@ -87,7 +80,7 @@ export class ClaimsController extends BaseController {
87
80
  */
88
81
  async getSubmitClaimConfig(claim) {
89
82
  // Validate the claim before submitting it.
90
- __classPrivateFieldGet(this, _ClaimsController_instances, "m", _ClaimsController_validateSubmitClaimRequest).call(this, claim);
83
+ this.#validateSubmitClaimRequest(claim);
91
84
  const headers = await this.messenger.call(`${SERVICE_NAME}:getRequestHeaders`);
92
85
  const baseUrl = this.messenger.call(`${SERVICE_NAME}:getClaimsApiUrl`);
93
86
  const url = `${baseUrl}/claims`;
@@ -205,12 +198,17 @@ export class ClaimsController extends BaseController {
205
198
  return getDefaultClaimsControllerState();
206
199
  });
207
200
  }
208
- }
209
- _ClaimsController_instances = new WeakSet(), _ClaimsController_validateSubmitClaimRequest = function _ClaimsController_validateSubmitClaimRequest(claim) {
210
- const { claims: existingClaims } = this.state;
211
- const isClaimAlreadySubmitted = existingClaims.some((existingClaim) => existingClaim.impactedTxHash === claim.impactedTxHash);
212
- if (isClaimAlreadySubmitted) {
213
- throw new Error(ClaimsControllerErrorMessages.CLAIM_ALREADY_SUBMITTED);
201
+ /**
202
+ * Validate the claim before submitting it.
203
+ *
204
+ * @param claim - The claim to validate.
205
+ */
206
+ #validateSubmitClaimRequest(claim) {
207
+ const { claims: existingClaims } = this.state;
208
+ const isClaimAlreadySubmitted = existingClaims.some((existingClaim) => existingClaim.impactedTxHash === claim.impactedTxHash);
209
+ if (isClaimAlreadySubmitted) {
210
+ throw new Error(ClaimsControllerErrorMessages.CLAIM_ALREADY_SUBMITTED);
211
+ }
214
212
  }
215
- };
216
- //# sourceMappingURL=ClaimsController.mjs.map
213
+ }
214
+ //# sourceMappingURL=ClaimsController.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ClaimsController.cjs","sourceRoot":"","sources":["../src/ClaimsController.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n ControllerGetStateAction,\n ControllerStateChangeEvent,\n StateMetadata,\n} from '@metamask/base-controller';\nimport { BaseController } from '@metamask/base-controller';\nimport { detectSIWE, toHex } from '@metamask/controller-utils';\nimport type { KeyringControllerSignPersonalMessageAction } from '@metamask/keyring-controller';\nimport type { Messenger } from '@metamask/messenger';\nimport { bytesToHex, stringToBytes } from '@metamask/utils';\n\nimport type { ClaimsControllerMethodActions } from './ClaimsController-method-action-types.js';\nimport type {\n ClaimsServiceFetchClaimsConfigurationsAction,\n ClaimsServiceGenerateMessageForClaimSignatureAction,\n ClaimsServiceGetClaimByIdAction,\n ClaimsServiceGetClaimsAction,\n ClaimsServiceGetClaimsApiUrlAction,\n ClaimsServiceGetRequestHeadersAction,\n} from './ClaimsService-method-action-types.js';\nimport {\n ClaimsControllerErrorMessages,\n CONTROLLER_NAME,\n DEFAULT_CLAIMS_CONFIGURATIONS,\n SERVICE_NAME,\n} from './constants.js';\nimport type {\n Claim,\n ClaimDraft,\n ClaimsConfigurations,\n ClaimsControllerState,\n CreateClaimRequest,\n SubmitClaimConfig,\n} from './types.js';\n\nexport type ClaimsControllerGetStateAction = ControllerGetStateAction<\n typeof CONTROLLER_NAME,\n ClaimsControllerState\n>;\n\nexport type ClaimsControllerActions =\n | ClaimsControllerGetStateAction\n | ClaimsControllerMethodActions;\n\nexport type AllowedActions =\n | ClaimsServiceFetchClaimsConfigurationsAction\n | ClaimsServiceGetClaimsAction\n | ClaimsServiceGetClaimByIdAction\n | ClaimsServiceGetRequestHeadersAction\n | ClaimsServiceGetClaimsApiUrlAction\n | ClaimsServiceGenerateMessageForClaimSignatureAction\n | ClaimsServiceGetClaimsAction\n | KeyringControllerSignPersonalMessageAction;\n\nexport type ClaimsControllerStateChangeEvent = ControllerStateChangeEvent<\n typeof CONTROLLER_NAME,\n ClaimsControllerState\n>;\n\nexport type ClaimsControllerMessenger = Messenger<\n typeof CONTROLLER_NAME,\n ClaimsControllerActions | AllowedActions,\n ClaimsControllerStateChangeEvent\n>;\n\nexport type ClaimsControllerOptions = {\n messenger: ClaimsControllerMessenger;\n state?: Partial<ClaimsControllerState>;\n};\n\nconst ClaimsControllerStateMetadata: StateMetadata<ClaimsControllerState> = {\n claims: {\n includeInStateLogs: false,\n persist: true,\n includeInDebugSnapshot: false,\n usedInUi: true,\n },\n claimsConfigurations: {\n includeInStateLogs: true,\n persist: true,\n includeInDebugSnapshot: true,\n usedInUi: true,\n },\n drafts: {\n includeInStateLogs: false,\n persist: true,\n includeInDebugSnapshot: false,\n usedInUi: true,\n },\n};\n\n/**\n * Get an initial default state for the controller.\n *\n * @returns The initial default controller state.\n */\nexport function getDefaultClaimsControllerState(): ClaimsControllerState {\n return {\n claimsConfigurations: DEFAULT_CLAIMS_CONFIGURATIONS,\n claims: [],\n drafts: [],\n };\n}\n\nconst MESSENGER_EXPOSED_METHODS = [\n 'fetchClaimsConfigurations',\n 'getSubmitClaimConfig',\n 'generateClaimSignature',\n 'getClaims',\n 'saveOrUpdateClaimDraft',\n 'getClaimDrafts',\n 'deleteClaimDraft',\n 'deleteAllClaimDrafts',\n 'clearState',\n] as const;\n\nexport class ClaimsController extends BaseController<\n typeof CONTROLLER_NAME,\n ClaimsControllerState,\n ClaimsControllerMessenger\n> {\n constructor({ messenger, state }: ClaimsControllerOptions) {\n super({\n messenger,\n metadata: ClaimsControllerStateMetadata,\n name: CONTROLLER_NAME,\n state: { ...getDefaultClaimsControllerState(), ...state },\n });\n\n this.messenger.registerMethodActionHandlers(\n this,\n MESSENGER_EXPOSED_METHODS,\n );\n }\n\n /**\n * Fetch the required configurations for the claims service.\n *\n * @returns The required configurations for the claims service.\n */\n async fetchClaimsConfigurations(): Promise<ClaimsConfigurations> {\n const configurations = await this.messenger.call(\n `${SERVICE_NAME}:fetchClaimsConfigurations`,\n );\n\n const supportedNetworks = configurations.networks.map((network) =>\n toHex(network),\n );\n const claimsConfigurations = {\n validSubmissionWindowDays: configurations.validSubmissionWindowDays,\n supportedNetworks,\n };\n\n this.update((state) => {\n state.claimsConfigurations = claimsConfigurations;\n });\n return claimsConfigurations;\n }\n\n /**\n * Get required config for submitting a claim.\n *\n * @param claim - The claim request to get the required config for.\n * @returns The required config for submitting the claim.\n */\n async getSubmitClaimConfig(\n claim: CreateClaimRequest,\n ): Promise<SubmitClaimConfig> {\n // Validate the claim before submitting it.\n this.#validateSubmitClaimRequest(claim);\n\n const headers = await this.messenger.call(\n `${SERVICE_NAME}:getRequestHeaders`,\n );\n const baseUrl = this.messenger.call(`${SERVICE_NAME}:getClaimsApiUrl`);\n const url = `${baseUrl}/claims`;\n\n return {\n data: claim,\n headers,\n method: 'POST',\n url,\n };\n }\n\n /**\n * Generate a signature for a claim.\n *\n * @param chainId - The chain id of the claim.\n * @param walletAddress - The impacted wallet address of the claim.\n * @returns The signature for the claim.\n */\n async generateClaimSignature(\n chainId: number,\n walletAddress: `0x${string}`,\n ): Promise<string> {\n // generate the message to be signed\n const { message } = await this.messenger.call(\n `${SERVICE_NAME}:generateMessageForClaimSignature`,\n chainId,\n walletAddress,\n );\n\n // generate and parse the SIWE message\n const messageBytes = stringToBytes(message);\n const messageHex = bytesToHex(messageBytes);\n const siwe = detectSIWE({ data: messageHex });\n if (!siwe.isSIWEMessage) {\n throw new Error(ClaimsControllerErrorMessages.INVALID_SIGNATURE_MESSAGE);\n }\n\n // sign the message\n const signature = await this.messenger.call(\n 'KeyringController:signPersonalMessage',\n {\n data: message,\n from: walletAddress,\n siwe,\n },\n );\n\n return signature;\n }\n\n /**\n * Get the list of claims for the current user.\n *\n * @returns The list of claims for the current user.\n */\n async getClaims(): Promise<Claim[]> {\n const claims = await this.messenger.call(`${SERVICE_NAME}:getClaims`);\n this.update((state) => {\n state.claims = claims;\n });\n return claims;\n }\n\n /**\n * Save a claim draft to the state.\n * If the draft name is not provided, a default name will be generated.\n * If the draft with the same id already exists, it will be updated.\n *\n * @param draft - The draft to save.\n * @returns The saved draft.\n */\n saveOrUpdateClaimDraft(draft: Partial<ClaimDraft>): ClaimDraft {\n const { drafts } = this.state;\n\n const isExistingDraft = drafts.some(\n (existingDraft) =>\n draft.draftId && existingDraft.draftId === draft.draftId,\n );\n\n if (isExistingDraft) {\n const updatedAt = new Date().toISOString();\n this.update((state) => {\n state.drafts = state.drafts.map((existingDraft) =>\n existingDraft.draftId === draft.draftId\n ? {\n ...existingDraft,\n ...draft,\n updatedAt,\n }\n : existingDraft,\n );\n });\n return { ...draft, updatedAt } as ClaimDraft;\n }\n\n // generate a new draft id, name and add it to the state\n const draftId = `draft-${Date.now()}`;\n\n const newDraft: ClaimDraft = {\n ...draft,\n draftId,\n updatedAt: new Date().toISOString(),\n };\n\n this.update((state) => {\n state.drafts.push(newDraft);\n });\n\n return newDraft;\n }\n\n /**\n * Get the list of claim drafts.\n *\n * @returns The list of claim drafts.\n */\n getClaimDrafts(): ClaimDraft[] {\n return this.state.drafts;\n }\n\n /**\n * Delete a claim draft from the state.\n *\n * @param draftId - The ID of the draft to delete.\n */\n deleteClaimDraft(draftId: string): void {\n this.update((state) => {\n state.drafts = state.drafts.filter((draft) => draft.draftId !== draftId);\n });\n }\n\n /**\n * Delete all claim drafts from the state.\n */\n deleteAllClaimDrafts(): void {\n this.update((state) => {\n state.drafts = [];\n });\n }\n\n /**\n * Clears the claims state and resets to default values.\n */\n clearState(): void {\n this.update(() => {\n return getDefaultClaimsControllerState();\n });\n }\n\n /**\n * Validate the claim before submitting it.\n *\n * @param claim - The claim to validate.\n */\n #validateSubmitClaimRequest(claim: CreateClaimRequest): void {\n const { claims: existingClaims } = this.state;\n const isClaimAlreadySubmitted = existingClaims.some(\n (existingClaim) => existingClaim.impactedTxHash === claim.impactedTxHash,\n );\n if (isClaimAlreadySubmitted) {\n throw new Error(ClaimsControllerErrorMessages.CLAIM_ALREADY_SUBMITTED);\n }\n }\n}\n"]}
1
+ {"version":3,"file":"ClaimsController.js","sourceRoot":"","sources":["../src/ClaimsController.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n ControllerGetStateAction,\n ControllerStateChangeEvent,\n StateMetadata,\n} from '@metamask/base-controller';\nimport { BaseController } from '@metamask/base-controller';\nimport { detectSIWE, toHex } from '@metamask/controller-utils';\nimport type { KeyringControllerSignPersonalMessageAction } from '@metamask/keyring-controller';\nimport type { Messenger } from '@metamask/messenger';\nimport { bytesToHex, stringToBytes } from '@metamask/utils';\n\nimport type { ClaimsControllerMethodActions } from './ClaimsController-method-action-types.js';\nimport type {\n ClaimsServiceFetchClaimsConfigurationsAction,\n ClaimsServiceGenerateMessageForClaimSignatureAction,\n ClaimsServiceGetClaimByIdAction,\n ClaimsServiceGetClaimsAction,\n ClaimsServiceGetClaimsApiUrlAction,\n ClaimsServiceGetRequestHeadersAction,\n} from './ClaimsService-method-action-types.js';\nimport {\n ClaimsControllerErrorMessages,\n CONTROLLER_NAME,\n DEFAULT_CLAIMS_CONFIGURATIONS,\n SERVICE_NAME,\n} from './constants.js';\nimport type {\n Claim,\n ClaimDraft,\n ClaimsConfigurations,\n ClaimsControllerState,\n CreateClaimRequest,\n SubmitClaimConfig,\n} from './types.js';\n\nexport type ClaimsControllerGetStateAction = ControllerGetStateAction<\n typeof CONTROLLER_NAME,\n ClaimsControllerState\n>;\n\nexport type ClaimsControllerActions =\n | ClaimsControllerGetStateAction\n | ClaimsControllerMethodActions;\n\nexport type AllowedActions =\n | ClaimsServiceFetchClaimsConfigurationsAction\n | ClaimsServiceGetClaimsAction\n | ClaimsServiceGetClaimByIdAction\n | ClaimsServiceGetRequestHeadersAction\n | ClaimsServiceGetClaimsApiUrlAction\n | ClaimsServiceGenerateMessageForClaimSignatureAction\n | ClaimsServiceGetClaimsAction\n | KeyringControllerSignPersonalMessageAction;\n\nexport type ClaimsControllerStateChangeEvent = ControllerStateChangeEvent<\n typeof CONTROLLER_NAME,\n ClaimsControllerState\n>;\n\nexport type ClaimsControllerMessenger = Messenger<\n typeof CONTROLLER_NAME,\n ClaimsControllerActions | AllowedActions,\n ClaimsControllerStateChangeEvent\n>;\n\nexport type ClaimsControllerOptions = {\n messenger: ClaimsControllerMessenger;\n state?: Partial<ClaimsControllerState>;\n};\n\nconst ClaimsControllerStateMetadata: StateMetadata<ClaimsControllerState> = {\n claims: {\n includeInStateLogs: false,\n persist: true,\n includeInDebugSnapshot: false,\n usedInUi: true,\n },\n claimsConfigurations: {\n includeInStateLogs: true,\n persist: true,\n includeInDebugSnapshot: true,\n usedInUi: true,\n },\n drafts: {\n includeInStateLogs: false,\n persist: true,\n includeInDebugSnapshot: false,\n usedInUi: true,\n },\n};\n\n/**\n * Get an initial default state for the controller.\n *\n * @returns The initial default controller state.\n */\nexport function getDefaultClaimsControllerState(): ClaimsControllerState {\n return {\n claimsConfigurations: DEFAULT_CLAIMS_CONFIGURATIONS,\n claims: [],\n drafts: [],\n };\n}\n\nconst MESSENGER_EXPOSED_METHODS = [\n 'fetchClaimsConfigurations',\n 'getSubmitClaimConfig',\n 'generateClaimSignature',\n 'getClaims',\n 'saveOrUpdateClaimDraft',\n 'getClaimDrafts',\n 'deleteClaimDraft',\n 'deleteAllClaimDrafts',\n 'clearState',\n] as const;\n\nexport class ClaimsController extends BaseController<\n typeof CONTROLLER_NAME,\n ClaimsControllerState,\n ClaimsControllerMessenger\n> {\n constructor({ messenger, state }: ClaimsControllerOptions) {\n super({\n messenger,\n metadata: ClaimsControllerStateMetadata,\n name: CONTROLLER_NAME,\n state: { ...getDefaultClaimsControllerState(), ...state },\n });\n\n this.messenger.registerMethodActionHandlers(\n this,\n MESSENGER_EXPOSED_METHODS,\n );\n }\n\n /**\n * Fetch the required configurations for the claims service.\n *\n * @returns The required configurations for the claims service.\n */\n async fetchClaimsConfigurations(): Promise<ClaimsConfigurations> {\n const configurations = await this.messenger.call(\n `${SERVICE_NAME}:fetchClaimsConfigurations`,\n );\n\n const supportedNetworks = configurations.networks.map((network) =>\n toHex(network),\n );\n const claimsConfigurations = {\n validSubmissionWindowDays: configurations.validSubmissionWindowDays,\n supportedNetworks,\n };\n\n this.update((state) => {\n state.claimsConfigurations = claimsConfigurations;\n });\n return claimsConfigurations;\n }\n\n /**\n * Get required config for submitting a claim.\n *\n * @param claim - The claim request to get the required config for.\n * @returns The required config for submitting the claim.\n */\n async getSubmitClaimConfig(\n claim: CreateClaimRequest,\n ): Promise<SubmitClaimConfig> {\n // Validate the claim before submitting it.\n this.#validateSubmitClaimRequest(claim);\n\n const headers = await this.messenger.call(\n `${SERVICE_NAME}:getRequestHeaders`,\n );\n const baseUrl = this.messenger.call(`${SERVICE_NAME}:getClaimsApiUrl`);\n const url = `${baseUrl}/claims`;\n\n return {\n data: claim,\n headers,\n method: 'POST',\n url,\n };\n }\n\n /**\n * Generate a signature for a claim.\n *\n * @param chainId - The chain id of the claim.\n * @param walletAddress - The impacted wallet address of the claim.\n * @returns The signature for the claim.\n */\n async generateClaimSignature(\n chainId: number,\n walletAddress: `0x${string}`,\n ): Promise<string> {\n // generate the message to be signed\n const { message } = await this.messenger.call(\n `${SERVICE_NAME}:generateMessageForClaimSignature`,\n chainId,\n walletAddress,\n );\n\n // generate and parse the SIWE message\n const messageBytes = stringToBytes(message);\n const messageHex = bytesToHex(messageBytes);\n const siwe = detectSIWE({ data: messageHex });\n if (!siwe.isSIWEMessage) {\n throw new Error(ClaimsControllerErrorMessages.INVALID_SIGNATURE_MESSAGE);\n }\n\n // sign the message\n const signature = await this.messenger.call(\n 'KeyringController:signPersonalMessage',\n {\n data: message,\n from: walletAddress,\n siwe,\n },\n );\n\n return signature;\n }\n\n /**\n * Get the list of claims for the current user.\n *\n * @returns The list of claims for the current user.\n */\n async getClaims(): Promise<Claim[]> {\n const claims = await this.messenger.call(`${SERVICE_NAME}:getClaims`);\n this.update((state) => {\n state.claims = claims;\n });\n return claims;\n }\n\n /**\n * Save a claim draft to the state.\n * If the draft name is not provided, a default name will be generated.\n * If the draft with the same id already exists, it will be updated.\n *\n * @param draft - The draft to save.\n * @returns The saved draft.\n */\n saveOrUpdateClaimDraft(draft: Partial<ClaimDraft>): ClaimDraft {\n const { drafts } = this.state;\n\n const isExistingDraft = drafts.some(\n (existingDraft) =>\n draft.draftId && existingDraft.draftId === draft.draftId,\n );\n\n if (isExistingDraft) {\n const updatedAt = new Date().toISOString();\n this.update((state) => {\n state.drafts = state.drafts.map((existingDraft) =>\n existingDraft.draftId === draft.draftId\n ? {\n ...existingDraft,\n ...draft,\n updatedAt,\n }\n : existingDraft,\n );\n });\n return { ...draft, updatedAt } as ClaimDraft;\n }\n\n // generate a new draft id, name and add it to the state\n const draftId = `draft-${Date.now()}`;\n\n const newDraft: ClaimDraft = {\n ...draft,\n draftId,\n updatedAt: new Date().toISOString(),\n };\n\n this.update((state) => {\n state.drafts.push(newDraft);\n });\n\n return newDraft;\n }\n\n /**\n * Get the list of claim drafts.\n *\n * @returns The list of claim drafts.\n */\n getClaimDrafts(): ClaimDraft[] {\n return this.state.drafts;\n }\n\n /**\n * Delete a claim draft from the state.\n *\n * @param draftId - The ID of the draft to delete.\n */\n deleteClaimDraft(draftId: string): void {\n this.update((state) => {\n state.drafts = state.drafts.filter((draft) => draft.draftId !== draftId);\n });\n }\n\n /**\n * Delete all claim drafts from the state.\n */\n deleteAllClaimDrafts(): void {\n this.update((state) => {\n state.drafts = [];\n });\n }\n\n /**\n * Clears the claims state and resets to default values.\n */\n clearState(): void {\n this.update(() => {\n return getDefaultClaimsControllerState();\n });\n }\n\n /**\n * Validate the claim before submitting it.\n *\n * @param claim - The claim to validate.\n */\n #validateSubmitClaimRequest(claim: CreateClaimRequest): void {\n const { claims: existingClaims } = this.state;\n const isClaimAlreadySubmitted = existingClaims.some(\n (existingClaim) => existingClaim.impactedTxHash === claim.impactedTxHash,\n );\n if (isClaimAlreadySubmitted) {\n throw new Error(ClaimsControllerErrorMessages.CLAIM_ALREADY_SUBMITTED);\n }\n }\n}\n"]}
@@ -2,7 +2,7 @@
2
2
  * This file is auto generated.
3
3
  * Do not edit manually.
4
4
  */
5
- import type { ClaimsService } from "./ClaimsService.cjs";
5
+ import type { ClaimsService } from './ClaimsService.js';
6
6
  /**
7
7
  * Fetch required configurations for the claims service.
8
8
  *
@@ -64,4 +64,4 @@ export type ClaimsServiceGetClaimsApiUrlAction = {
64
64
  * Union of all ClaimsService action types.
65
65
  */
66
66
  export type ClaimsServiceMethodActions = ClaimsServiceFetchClaimsConfigurationsAction | ClaimsServiceGetClaimsAction | ClaimsServiceGetClaimByIdAction | ClaimsServiceGenerateMessageForClaimSignatureAction | ClaimsServiceGetRequestHeadersAction | ClaimsServiceGetClaimsApiUrlAction;
67
- //# sourceMappingURL=ClaimsService-method-action-types.d.cts.map
67
+ //# sourceMappingURL=ClaimsService-method-action-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClaimsService-method-action-types.d.ts","sourceRoot":"","sources":["../src/ClaimsService-method-action-types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD;;;;GAIG;AACH,MAAM,MAAM,4CAA4C,GAAG;IACzD,IAAI,EAAE,yCAAyC,CAAC;IAChD,OAAO,EAAE,aAAa,CAAC,2BAA2B,CAAC,CAAC;CACrD,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,4BAA4B,GAAG;IACzC,IAAI,EAAE,yBAAyB,CAAC;IAChC,OAAO,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC;CACrC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,+BAA+B,GAAG;IAC5C,IAAI,EAAE,4BAA4B,CAAC;IACnC,OAAO,EAAE,aAAa,CAAC,cAAc,CAAC,CAAC;CACxC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,MAAM,mDAAmD,GAAG;IAChE,IAAI,EAAE,gDAAgD,CAAC;IACvD,OAAO,EAAE,aAAa,CAAC,kCAAkC,CAAC,CAAC;CAC5D,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,oCAAoC,GAAG;IACjD,IAAI,EAAE,iCAAiC,CAAC;IACxC,OAAO,EAAE,aAAa,CAAC,mBAAmB,CAAC,CAAC;CAC7C,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,kCAAkC,GAAG;IAC/C,IAAI,EAAE,+BAA+B,CAAC;IACtC,OAAO,EAAE,aAAa,CAAC,iBAAiB,CAAC,CAAC;CAC3C,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,0BAA0B,GAClC,4CAA4C,GAC5C,4BAA4B,GAC5B,+BAA+B,GAC/B,mDAAmD,GACnD,oCAAoC,GACpC,kCAAkC,CAAC"}
@@ -3,4 +3,4 @@
3
3
  * Do not edit manually.
4
4
  */
5
5
  export {};
6
- //# sourceMappingURL=ClaimsService-method-action-types.mjs.map
6
+ //# sourceMappingURL=ClaimsService-method-action-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClaimsService-method-action-types.js","sourceRoot":"","sources":["../src/ClaimsService-method-action-types.ts"],"names":[],"mappings":"AAAA;;;GAGG","sourcesContent":["/**\n * This file is auto generated.\n * Do not edit manually.\n */\n\nimport type { ClaimsService } from './ClaimsService.js';\n\n/**\n * Fetch required configurations for the claims service.\n *\n * @returns The required configurations for the claims service.\n */\nexport type ClaimsServiceFetchClaimsConfigurationsAction = {\n type: `ClaimsService:fetchClaimsConfigurations`;\n handler: ClaimsService['fetchClaimsConfigurations'];\n};\n\n/**\n * Get the claims for the current user.\n *\n * @returns The claims for the current user.\n */\nexport type ClaimsServiceGetClaimsAction = {\n type: `ClaimsService:getClaims`;\n handler: ClaimsService['getClaims'];\n};\n\n/**\n * Get the claim by id.\n *\n * @param id - The id of the claim to get.\n * @returns The claim by id.\n */\nexport type ClaimsServiceGetClaimByIdAction = {\n type: `ClaimsService:getClaimById`;\n handler: ClaimsService['getClaimById'];\n};\n\n/**\n * Generate a message to be signed by the user for the claim request.\n *\n * @param chainId - The chain id of the claim.\n * @param walletAddress - The impacted wallet address of the claim.\n * @returns The message for the claim signature.\n */\nexport type ClaimsServiceGenerateMessageForClaimSignatureAction = {\n type: `ClaimsService:generateMessageForClaimSignature`;\n handler: ClaimsService['generateMessageForClaimSignature'];\n};\n\n/**\n * Create the headers for the current request.\n *\n * @returns The headers for the current request.\n */\nexport type ClaimsServiceGetRequestHeadersAction = {\n type: `ClaimsService:getRequestHeaders`;\n handler: ClaimsService['getRequestHeaders'];\n};\n\n/**\n * Get the URL for the claims API for the current environment.\n *\n * @returns The URL for the claims API for the current environment.\n */\nexport type ClaimsServiceGetClaimsApiUrlAction = {\n type: `ClaimsService:getClaimsApiUrl`;\n handler: ClaimsService['getClaimsApiUrl'];\n};\n\n/**\n * Union of all ClaimsService action types.\n */\nexport type ClaimsServiceMethodActions =\n | ClaimsServiceFetchClaimsConfigurationsAction\n | ClaimsServiceGetClaimsAction\n | ClaimsServiceGetClaimByIdAction\n | ClaimsServiceGenerateMessageForClaimSignatureAction\n | ClaimsServiceGetRequestHeadersAction\n | ClaimsServiceGetClaimsApiUrlAction;\n"]}
@@ -1,4 +1,4 @@
1
- import { ClaimStatusEnum } from "./constants.cjs";
1
+ import { ClaimStatusEnum } from './constants.js';
2
2
  export declare const ClaimStruct: import("@metamask/superstruct").Struct<{
3
3
  id: string;
4
4
  shortId: string;
@@ -9,14 +9,14 @@ export declare const ClaimStruct: import("@metamask/superstruct").Struct<{
9
9
  reimbursementWalletAddress: string;
10
10
  description: string;
11
11
  signature: string;
12
- status: ClaimStatusEnum;
13
- createdAt: string;
14
- updatedAt: string;
15
12
  attachments?: {
16
13
  publicUrl: string;
17
14
  contentType: string;
18
15
  originalname: string;
19
16
  }[] | undefined;
17
+ status: ClaimStatusEnum;
18
+ createdAt: string;
19
+ updatedAt: string;
20
20
  intercomId?: string | undefined;
21
21
  }, {
22
22
  id: import("@metamask/superstruct").Struct<string, null>;
@@ -42,13 +42,13 @@ export declare const ClaimStruct: import("@metamask/superstruct").Struct<{
42
42
  originalname: import("@metamask/superstruct").Struct<string, null>;
43
43
  }>>;
44
44
  status: import("@metamask/superstruct").Struct<ClaimStatusEnum, {
45
+ approved: ClaimStatusEnum.APPROVED;
45
46
  created: ClaimStatusEnum.CREATED;
46
- submitted: ClaimStatusEnum.SUBMITTED;
47
47
  in_progress: ClaimStatusEnum.IN_PROGRESS;
48
- waiting_for_customer: ClaimStatusEnum.WAITING_FOR_CUSTOMER;
49
- approved: ClaimStatusEnum.APPROVED;
50
48
  rejected: ClaimStatusEnum.REJECTED;
49
+ submitted: ClaimStatusEnum.SUBMITTED;
51
50
  unknown: ClaimStatusEnum.UNKNOWN;
51
+ waiting_for_customer: ClaimStatusEnum.WAITING_FOR_CUSTOMER;
52
52
  }>;
53
53
  createdAt: import("@metamask/superstruct").Struct<string, null>;
54
54
  updatedAt: import("@metamask/superstruct").Struct<string, null>;
@@ -68,4 +68,4 @@ export declare const GenerateSignatureMessageResponseStruct: import("@metamask/s
68
68
  message: import("@metamask/superstruct").Struct<string, null>;
69
69
  nonce: import("@metamask/superstruct").Struct<string, null>;
70
70
  }>;
71
- //# sourceMappingURL=ClaimsService-structs.d.cts.map
71
+ //# sourceMappingURL=ClaimsService-structs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClaimsService-structs.d.ts","sourceRoot":"","sources":["../src/ClaimsService-structs.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAUjD,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAetB,CAAC;AAEH,eAAO,MAAM,kCAAkC;;;;;;EAG7C,CAAC;AAEH,eAAO,MAAM,sCAAsC;;;;;;EAGjD,CAAC"}
@@ -1,5 +1,5 @@
1
- import { array, enums, integer, optional, string, type } from "@metamask/superstruct";
2
- import { ClaimStatusEnum } from "./constants.mjs";
1
+ import { array, enums, integer, optional, string, type, } from '@metamask/superstruct';
2
+ import { ClaimStatusEnum } from './constants.js';
3
3
  const HexStringStruct = string();
4
4
  const AttachmentStruct = type({
5
5
  publicUrl: string(),
@@ -30,4 +30,4 @@ export const GenerateSignatureMessageResponseStruct = type({
30
30
  message: string(),
31
31
  nonce: string(),
32
32
  });
33
- //# sourceMappingURL=ClaimsService-structs.mjs.map
33
+ //# sourceMappingURL=ClaimsService-structs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClaimsService-structs.js","sourceRoot":"","sources":["../src/ClaimsService-structs.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EACL,KAAK,EACL,OAAO,EACP,QAAQ,EACR,MAAM,EACN,IAAI,GACL,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjD,MAAM,eAAe,GAAG,MAAM,EAAE,CAAC;AAEjC,MAAM,gBAAgB,GAAG,IAAI,CAAC;IAC5B,SAAS,EAAE,MAAM,EAAE;IACnB,WAAW,EAAE,MAAM,EAAE;IACrB,YAAY,EAAE,MAAM,EAAE;CACvB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,CAAC;IAC9B,EAAE,EAAE,MAAM,EAAE;IACZ,OAAO,EAAE,MAAM,EAAE;IACjB,OAAO,EAAE,MAAM,EAAE;IACjB,KAAK,EAAE,MAAM,EAAE;IACf,qBAAqB,EAAE,eAAe;IACtC,cAAc,EAAE,eAAe;IAC/B,0BAA0B,EAAE,eAAe;IAC3C,WAAW,EAAE,MAAM,EAAE;IACrB,SAAS,EAAE,eAAe;IAC1B,WAAW,EAAE,QAAQ,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;IAC9C,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;IAC7C,SAAS,EAAE,MAAM,EAAE;IACnB,SAAS,EAAE,MAAM,EAAE;IACnB,UAAU,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;CAC/B,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,kCAAkC,GAAG,IAAI,CAAC;IACrD,yBAAyB,EAAE,OAAO,EAAE;IACpC,QAAQ,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;CAC3B,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,sCAAsC,GAAG,IAAI,CAAC;IACzD,OAAO,EAAE,MAAM,EAAE;IACjB,KAAK,EAAE,MAAM,EAAE;CAChB,CAAC,CAAC","sourcesContent":["import {\n array,\n enums,\n integer,\n optional,\n string,\n type,\n} from '@metamask/superstruct';\n\nimport { ClaimStatusEnum } from './constants.js';\n\nconst HexStringStruct = string();\n\nconst AttachmentStruct = type({\n publicUrl: string(),\n contentType: string(),\n originalname: string(),\n});\n\nexport const ClaimStruct = type({\n id: string(),\n shortId: string(),\n chainId: string(),\n email: string(),\n impactedWalletAddress: HexStringStruct,\n impactedTxHash: HexStringStruct,\n reimbursementWalletAddress: HexStringStruct,\n description: string(),\n signature: HexStringStruct,\n attachments: optional(array(AttachmentStruct)),\n status: enums(Object.values(ClaimStatusEnum)),\n createdAt: string(),\n updatedAt: string(),\n intercomId: optional(string()),\n});\n\nexport const ClaimsConfigurationsResponseStruct = type({\n validSubmissionWindowDays: integer(),\n networks: array(integer()),\n});\n\nexport const GenerateSignatureMessageResponseStruct = type({\n message: string(),\n nonce: string(),\n});\n"]}
@@ -1,14 +1,14 @@
1
- import { BaseDataService } from "@metamask/base-data-service";
2
- import type { DataServiceCacheUpdatedEvent, DataServiceGranularCacheUpdatedEvent, DataServiceInvalidateQueriesAction } from "@metamask/base-data-service";
3
- import type { CreateServicePolicyOptions } from "@metamask/controller-utils";
4
- import type { Messenger } from "@metamask/messenger";
5
- import type { AuthenticationController } from "@metamask/profile-sync-controller";
6
- import type { Hex } from "@metamask/utils";
7
- import type { QueryClientConfig } from "@tanstack/query-core";
8
- import type { ClaimsServiceMethodActions } from "./ClaimsService-method-action-types.cjs";
9
- import { SERVICE_NAME } from "./constants.cjs";
10
- import type { Env } from "./constants.cjs";
11
- import type { Claim, ClaimsConfigurationsResponse, GenerateSignatureMessageResponse } from "./types.cjs";
1
+ import { BaseDataService } from '@metamask/base-data-service';
2
+ import type { DataServiceCacheUpdatedEvent, DataServiceGranularCacheUpdatedEvent, DataServiceInvalidateQueriesAction } from '@metamask/base-data-service';
3
+ import type { CreateServicePolicyOptions } from '@metamask/controller-utils';
4
+ import type { Messenger } from '@metamask/messenger';
5
+ import type { AuthenticationController } from '@metamask/profile-sync-controller';
6
+ import type { Hex } from '@metamask/utils';
7
+ import type { QueryClientConfig } from '@tanstack/query-core';
8
+ import type { ClaimsServiceMethodActions } from './ClaimsService-method-action-types.js';
9
+ import { SERVICE_NAME } from './constants.js';
10
+ import type { Env } from './constants.js';
11
+ import type { Claim, ClaimsConfigurationsResponse, GenerateSignatureMessageResponse } from './types.js';
12
12
  /**
13
13
  * Invalidates cached queries for {@link ClaimsService}.
14
14
  */
@@ -105,4 +105,4 @@ export declare class ClaimsService extends BaseDataService<typeof SERVICE_NAME,
105
105
  getClaimsApiUrl(): string;
106
106
  }
107
107
  export {};
108
- //# sourceMappingURL=ClaimsService.d.cts.map
108
+ //# sourceMappingURL=ClaimsService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClaimsService.d.ts","sourceRoot":"","sources":["../src/ClaimsService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,KAAK,EACV,4BAA4B,EAC5B,oCAAoC,EACpC,kCAAkC,EACnC,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AAC7E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AAGlF,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAE9D,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,wCAAwC,CAAC;AAMzF,OAAO,EAGL,YAAY,EACb,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAE1C,OAAO,KAAK,EACV,KAAK,EACL,4BAA4B,EAC5B,gCAAgC,EACjC,MAAM,YAAY,CAAC;AAgBpB;;GAEG;AACH,MAAM,MAAM,oCAAoC,GAC9C,kCAAkC,CAAC,OAAO,YAAY,CAAC,CAAC;AAE1D;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAC5B,0BAA0B,GAC1B,oCAAoC,CAAC;AAEzC;;GAEG;AACH,MAAM,MAAM,cAAc,GACtB,wBAAwB,CAAC,4CAA4C,GACrE,wBAAwB,CAAC,+CAA+C,CAAC;AAE7E;;GAEG;AACH,MAAM,MAAM,8BAA8B,GAAG,4BAA4B,CACvE,OAAO,YAAY,CACpB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,sCAAsC,GAChD,oCAAoC,CAAC,OAAO,YAAY,CAAC,CAAC;AAE5D;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAC3B,8BAA8B,GAC9B,sCAAsC,CAAC;AAE3C;;GAEG;AACH,KAAK,aAAa,GAAG,KAAK,CAAC;AAE3B;;;GAGG;AACH,MAAM,MAAM,sBAAsB,GAAG,SAAS,CAC5C,OAAO,YAAY,EACnB,oBAAoB,GAAG,cAAc,EACrC,mBAAmB,GAAG,aAAa,CACpC,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,GAAG,EAAE,GAAG,CAAC;IACT,SAAS,EAAE,sBAAsB,CAAC;IAClC;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,KAAK,CAAC;IAC7B,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAC1C,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,aAAa,CAAC,EAAE,0BAA0B,CAAC;CAC5C,CAAC;AAIF;;;;;;;GAOG;AACH,qBAAa,aAAc,SAAQ,eAAe,CAChD,OAAO,YAAY,EACnB,sBAAsB,CACvB;;IAOC,YAAY,EACV,GAAG,EACH,SAAS,EACT,aAAgC,EAChC,gBAAgB,EAAE,kBAAkB,EACpC,iBAAsB,EACtB,aAAkB,GACnB,EAAE,mBAAmB,EAsBrB;IAED;;;;OAIG;IACG,yBAAyB,IAAI,OAAO,CAAC,4BAA4B,CAAC,CAgCvE;IAED;;;;OAIG;IACG,SAAS,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC,CAmClC;IAED;;;;;OAKG;IACG,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAmC7C;IAED;;;;;;OAMG;IACG,gCAAgC,CACpC,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,GAAG,GACjB,OAAO,CAAC,gCAAgC,CAAC,CAkC3C;IAED;;;;OAIG;IACG,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAKzD;IAuBD;;;;OAIG;IACH,eAAe,IAAI,MAAM,CAExB;CAwBF"}
@@ -0,0 +1,215 @@
1
+ import { BaseDataService } from '@metamask/base-data-service';
2
+ import { array, validate } from '@metamask/superstruct';
3
+ import { ClaimStruct, ClaimsConfigurationsResponseStruct, GenerateSignatureMessageResponseStruct, } from './ClaimsService-structs.js';
4
+ import { CLAIMS_API_URL_MAP, ClaimsServiceErrorMessages, SERVICE_NAME, } from './constants.js';
5
+ import { createModuleLogger, projectLogger } from './logger.js';
6
+ import { createSentryError, getErrorFromResponse } from './utils.js';
7
+ const MESSENGER_EXPOSED_METHODS = [
8
+ 'fetchClaimsConfigurations',
9
+ 'getClaims',
10
+ 'getClaimById',
11
+ 'getRequestHeaders',
12
+ 'getClaimsApiUrl',
13
+ 'generateMessageForClaimSignature',
14
+ ];
15
+ const DEFAULT_POLICY_OPTIONS = {
16
+ maxRetries: 0,
17
+ };
18
+ const log = createModuleLogger(projectLogger, 'ClaimsService');
19
+ /**
20
+ * This service is responsible for communicating with the Claims API.
21
+ *
22
+ * All requests are authenticated via JWT Bearer tokens obtained from the
23
+ * `AuthenticationController:getBearerToken` messenger action. Cached GET
24
+ * queries are scoped by `profileId` from
25
+ * `AuthenticationController:getSessionProfile`.
26
+ */
27
+ export class ClaimsService extends BaseDataService {
28
+ #env;
29
+ #fetch;
30
+ #captureException;
31
+ constructor({ env, messenger, fetchFunction = globalThis.fetch, captureException: captureExceptionFn, queryClientConfig = {}, policyOptions = {}, }) {
32
+ super({
33
+ name: SERVICE_NAME,
34
+ messenger,
35
+ queryClientConfig,
36
+ policyOptions: { ...DEFAULT_POLICY_OPTIONS, ...policyOptions },
37
+ });
38
+ this.#env = env;
39
+ this.#fetch = fetchFunction;
40
+ this.#captureException = (error) => {
41
+ try {
42
+ (captureExceptionFn ?? messenger.captureException)?.(error);
43
+ }
44
+ catch {
45
+ // ignore error thrown when calling captureException
46
+ }
47
+ };
48
+ this.messenger.registerMethodActionHandlers(this, MESSENGER_EXPOSED_METHODS);
49
+ }
50
+ /**
51
+ * Fetch required configurations for the claims service.
52
+ *
53
+ * @returns The required configurations for the claims service.
54
+ */
55
+ async fetchClaimsConfigurations() {
56
+ try {
57
+ const { bearerToken, profileId } = await this.#getAuthContext();
58
+ return await this.fetchQuery({
59
+ queryKey: [`${this.name}:fetchClaimsConfigurations`, profileId],
60
+ queryFn: async () => {
61
+ const url = `${this.getClaimsApiUrl()}/configurations`;
62
+ const response = await this.#fetch(url, {
63
+ headers: this.#headersForToken(bearerToken),
64
+ });
65
+ if (!response.ok) {
66
+ throw await getErrorFromResponse(response);
67
+ }
68
+ const configurations = await response.json();
69
+ return this.#validateResponse(configurations, ClaimsConfigurationsResponseStruct, ClaimsServiceErrorMessages.FAILED_TO_FETCH_CONFIGURATIONS);
70
+ },
71
+ });
72
+ }
73
+ catch (error) {
74
+ return this.#handleError('fetchClaimsConfigurations', ClaimsServiceErrorMessages.FAILED_TO_FETCH_CONFIGURATIONS, error);
75
+ }
76
+ }
77
+ /**
78
+ * Get the claims for the current user.
79
+ *
80
+ * @returns The claims for the current user.
81
+ */
82
+ async getClaims() {
83
+ try {
84
+ const { bearerToken, profileId } = await this.#getAuthContext();
85
+ return await this.fetchQuery({
86
+ queryKey: [`${this.name}:getClaims`, profileId],
87
+ // TODO: Restore default staleTime once claim reads are invalidated
88
+ // after a successful external submit (not in getSubmitClaimConfig).
89
+ staleTime: 0,
90
+ queryFn: async () => {
91
+ const url = `${this.getClaimsApiUrl()}/claims`;
92
+ const response = await this.#fetch(url, {
93
+ headers: this.#headersForToken(bearerToken),
94
+ });
95
+ if (!response.ok) {
96
+ throw await getErrorFromResponse(response);
97
+ }
98
+ const claims = await response.json();
99
+ return this.#validateResponse(claims, array(ClaimStruct), ClaimsServiceErrorMessages.FAILED_TO_GET_CLAIMS);
100
+ },
101
+ });
102
+ }
103
+ catch (error) {
104
+ return this.#handleError('getClaims', ClaimsServiceErrorMessages.FAILED_TO_GET_CLAIMS, error);
105
+ }
106
+ }
107
+ /**
108
+ * Get the claim by id.
109
+ *
110
+ * @param id - The id of the claim to get.
111
+ * @returns The claim by id.
112
+ */
113
+ async getClaimById(id) {
114
+ try {
115
+ const { bearerToken, profileId } = await this.#getAuthContext();
116
+ return await this.fetchQuery({
117
+ queryKey: [`${this.name}:getClaimById`, id, profileId],
118
+ // TODO: Restore default staleTime once claim reads are invalidated
119
+ // after a successful external submit (not in getSubmitClaimConfig).
120
+ staleTime: 0,
121
+ queryFn: async () => {
122
+ const url = `${this.getClaimsApiUrl()}/claims/byId/${id}`;
123
+ const response = await this.#fetch(url, {
124
+ headers: this.#headersForToken(bearerToken),
125
+ });
126
+ if (!response.ok) {
127
+ throw await getErrorFromResponse(response);
128
+ }
129
+ const claim = await response.json();
130
+ return this.#validateResponse(claim, ClaimStruct, ClaimsServiceErrorMessages.FAILED_TO_GET_CLAIM_BY_ID);
131
+ },
132
+ });
133
+ }
134
+ catch (error) {
135
+ return this.#handleError('getClaimById', ClaimsServiceErrorMessages.FAILED_TO_GET_CLAIM_BY_ID, error);
136
+ }
137
+ }
138
+ /**
139
+ * Generate a message to be signed by the user for the claim request.
140
+ *
141
+ * @param chainId - The chain id of the claim.
142
+ * @param walletAddress - The impacted wallet address of the claim.
143
+ * @returns The message for the claim signature.
144
+ */
145
+ async generateMessageForClaimSignature(chainId, walletAddress) {
146
+ try {
147
+ const headers = await this.getRequestHeaders();
148
+ const url = `${this.getClaimsApiUrl()}/signature/generateMessage`;
149
+ const response = await this.#fetch(url, {
150
+ method: 'POST',
151
+ headers: {
152
+ ...headers,
153
+ 'Content-Type': 'application/json',
154
+ },
155
+ body: JSON.stringify({
156
+ chainId,
157
+ walletAddress,
158
+ }),
159
+ });
160
+ if (!response.ok) {
161
+ throw await getErrorFromResponse(response);
162
+ }
163
+ const message = await response.json();
164
+ return this.#validateResponse(message, GenerateSignatureMessageResponseStruct, ClaimsServiceErrorMessages.SIGNATURE_MESSAGE_GENERATION_FAILED);
165
+ }
166
+ catch (error) {
167
+ return this.#handleError('generateMessageForClaimSignature', ClaimsServiceErrorMessages.SIGNATURE_MESSAGE_GENERATION_FAILED, error);
168
+ }
169
+ }
170
+ /**
171
+ * Create the headers for the current request.
172
+ *
173
+ * @returns The headers for the current request.
174
+ */
175
+ async getRequestHeaders() {
176
+ const bearerToken = await this.messenger.call('AuthenticationController:getBearerToken');
177
+ return this.#headersForToken(bearerToken);
178
+ }
179
+ async #getAuthContext() {
180
+ const [bearerToken, sessionProfile] = await Promise.all([
181
+ this.messenger.call('AuthenticationController:getBearerToken'),
182
+ this.messenger.call('AuthenticationController:getSessionProfile'),
183
+ ]);
184
+ return {
185
+ bearerToken,
186
+ profileId: sessionProfile.profileId,
187
+ };
188
+ }
189
+ #headersForToken(token) {
190
+ return {
191
+ Authorization: `Bearer ${token}`,
192
+ };
193
+ }
194
+ /**
195
+ * Get the URL for the claims API for the current environment.
196
+ *
197
+ * @returns The URL for the claims API for the current environment.
198
+ */
199
+ getClaimsApiUrl() {
200
+ return `${CLAIMS_API_URL_MAP[this.#env]}`;
201
+ }
202
+ #validateResponse(responseData, struct, errorMessage) {
203
+ const [error, validatedResponseData] = validate(responseData, struct);
204
+ if (error) {
205
+ throw new Error(`${errorMessage}: ${error.message}`);
206
+ }
207
+ return validatedResponseData;
208
+ }
209
+ #handleError(methodName, errorMessage, error) {
210
+ log(methodName, error);
211
+ this.#captureException?.(createSentryError(errorMessage, error));
212
+ throw new Error(errorMessage);
213
+ }
214
+ }
215
+ //# sourceMappingURL=ClaimsService.js.map