@metamask-previews/claims-controller 0.2.0-preview-cd26c284 → 0.2.0-preview-9379dbe4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -7,6 +7,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ### Added
11
+
12
+ - Added claims draft to controller and persist in the state as `drafts`. ([#7456](https://github.com/MetaMask/core/pull/7456))
13
+ - Added public methods (CRUD) with relate to the `ClaimDraft`. ([#7456](https://github.com/MetaMask/core/pull/7456))
14
+
10
15
  ### Changed
11
16
 
12
17
  - Bump `@metamask/controller-utils` from `^11.15.0` to `^11.16.0` ([#7202](https://github.com/MetaMask/core/pull/7202))
@@ -24,6 +24,12 @@ const ClaimsControllerStateMetadata = {
24
24
  includeInDebugSnapshot: true,
25
25
  usedInUi: true,
26
26
  },
27
+ drafts: {
28
+ includeInStateLogs: false,
29
+ persist: true,
30
+ includeInDebugSnapshot: false,
31
+ usedInUi: true,
32
+ },
27
33
  };
28
34
  /**
29
35
  * Get an initial default state for the controller.
@@ -34,6 +40,7 @@ function getDefaultClaimsControllerState() {
34
40
  return {
35
41
  claimsConfigurations: constants_1.DEFAULT_CLAIMS_CONFIGURATIONS,
36
42
  claims: [],
43
+ drafts: [],
37
44
  };
38
45
  }
39
46
  exports.getDefaultClaimsControllerState = getDefaultClaimsControllerState;
@@ -120,6 +127,65 @@ class ClaimsController extends base_controller_1.BaseController {
120
127
  });
121
128
  return claims;
122
129
  }
130
+ /**
131
+ * Save a claim draft to the state.
132
+ * If the draft name is not provided, a default name will be generated.
133
+ * If the draft with the same id already exists, it will be updated.
134
+ *
135
+ * @param draft - The draft to save.
136
+ * @returns The saved draft.
137
+ */
138
+ saveOrUpdateClaimDraft(draft) {
139
+ const { drafts } = this.state;
140
+ const draftCount = drafts.length;
141
+ const isExistingDraft = drafts.some((existingDraft) => draft.draftId && existingDraft.draftId === draft.draftId);
142
+ if (isExistingDraft) {
143
+ this.update((state) => {
144
+ state.drafts = state.drafts.map((existingDraft) => existingDraft.draftId === draft.draftId
145
+ ? { ...existingDraft, ...draft }
146
+ : existingDraft);
147
+ });
148
+ return draft;
149
+ }
150
+ // generate a new draft id, name and add it to the state
151
+ const draftId = `claims-draft-${Date.now()}`;
152
+ const draftName = draft.draftName ?? `Draft ${draftCount + 1}`;
153
+ const newDraft = {
154
+ ...draft,
155
+ draftId,
156
+ draftName,
157
+ };
158
+ this.update((state) => {
159
+ state.drafts.push(newDraft);
160
+ });
161
+ return newDraft;
162
+ }
163
+ /**
164
+ * Get the list of claim drafts.
165
+ *
166
+ * @returns The list of claim drafts.
167
+ */
168
+ getClaimDrafts() {
169
+ return this.state.drafts;
170
+ }
171
+ /**
172
+ * Delete a claim draft from the state.
173
+ *
174
+ * @param draftId - The ID of the draft to delete.
175
+ */
176
+ deleteClaimDraft(draftId) {
177
+ this.update((state) => {
178
+ state.drafts = state.drafts.filter((draft) => draft.draftId !== draftId);
179
+ });
180
+ }
181
+ /**
182
+ * Delete all claim drafts from the state.
183
+ */
184
+ deleteAllClaimDrafts() {
185
+ this.update((state) => {
186
+ state.drafts = [];
187
+ });
188
+ }
123
189
  }
124
190
  exports.ClaimsController = ClaimsController;
125
191
  _ClaimsController_instances = new WeakSet(), _ClaimsController_validateSubmitClaimRequest = function _ClaimsController_validateSubmitClaimRequest(claim) {
@@ -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 {\n ClaimsServiceFetchClaimsConfigurationsAction,\n ClaimsServiceGenerateMessageForClaimSignatureAction,\n ClaimsServiceGetClaimByIdAction,\n ClaimsServiceGetClaimsAction,\n ClaimsServiceGetClaimsApiUrlAction,\n ClaimsServiceGetRequestHeadersAction,\n} from './ClaimsService';\nimport {\n ClaimsControllerErrorMessages,\n CONTROLLER_NAME,\n DEFAULT_CLAIMS_CONFIGURATIONS,\n SERVICE_NAME,\n} from './constants';\nimport type {\n Claim,\n ClaimsConfigurations,\n ClaimsControllerState,\n CreateClaimRequest,\n SubmitClaimConfig,\n} from './types';\n\nexport type ClaimsControllerGetStateAction = ControllerGetStateAction<\n typeof CONTROLLER_NAME,\n ClaimsControllerState\n>;\n\nexport type ClaimsControllerActions = ClaimsControllerGetStateAction;\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};\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 };\n}\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\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 * 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.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 {\n ClaimsServiceFetchClaimsConfigurationsAction,\n ClaimsServiceGenerateMessageForClaimSignatureAction,\n ClaimsServiceGetClaimByIdAction,\n ClaimsServiceGetClaimsAction,\n ClaimsServiceGetClaimsApiUrlAction,\n ClaimsServiceGetRequestHeadersAction,\n} from './ClaimsService';\nimport {\n ClaimsControllerErrorMessages,\n CONTROLLER_NAME,\n DEFAULT_CLAIMS_CONFIGURATIONS,\n SERVICE_NAME,\n} from './constants';\nimport type {\n Claim,\n ClaimDraft,\n ClaimsConfigurations,\n ClaimsControllerState,\n CreateClaimRequest,\n SubmitClaimConfig,\n} from './types';\n\nexport type ClaimsControllerGetStateAction = ControllerGetStateAction<\n typeof CONTROLLER_NAME,\n ClaimsControllerState\n>;\n\nexport type ClaimsControllerActions = ClaimsControllerGetStateAction;\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\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\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 const draftCount = drafts.length;\n\n const isExistingDraft = drafts.some(\n (existingDraft) =>\n draft.draftId && existingDraft.draftId === draft.draftId,\n );\n\n if (isExistingDraft) {\n this.update((state) => {\n state.drafts = state.drafts.map((existingDraft) =>\n existingDraft.draftId === draft.draftId\n ? { ...existingDraft, ...draft }\n : existingDraft,\n );\n });\n return draft as ClaimDraft;\n }\n\n // generate a new draft id, name and add it to the state\n const draftId = `claims-draft-${Date.now()}`;\n const draftName = draft.draftName ?? `Draft ${draftCount + 1}`;\n\n const newDraft: ClaimDraft = {\n ...draft,\n draftId,\n draftName,\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 * 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"]}
@@ -4,7 +4,7 @@ import type { KeyringControllerSignPersonalMessageAction } from "@metamask/keyri
4
4
  import type { Messenger } from "@metamask/messenger";
5
5
  import type { ClaimsServiceFetchClaimsConfigurationsAction, ClaimsServiceGenerateMessageForClaimSignatureAction, ClaimsServiceGetClaimByIdAction, ClaimsServiceGetClaimsAction, ClaimsServiceGetClaimsApiUrlAction, ClaimsServiceGetRequestHeadersAction } from "./ClaimsService.cjs";
6
6
  import { CONTROLLER_NAME } from "./constants.cjs";
7
- import type { Claim, ClaimsConfigurations, ClaimsControllerState, CreateClaimRequest, SubmitClaimConfig } from "./types.cjs";
7
+ import type { Claim, ClaimDraft, ClaimsConfigurations, ClaimsControllerState, CreateClaimRequest, SubmitClaimConfig } from "./types.cjs";
8
8
  export type ClaimsControllerGetStateAction = ControllerGetStateAction<typeof CONTROLLER_NAME, ClaimsControllerState>;
9
9
  export type ClaimsControllerActions = ClaimsControllerGetStateAction;
10
10
  export type AllowedActions = ClaimsServiceFetchClaimsConfigurationsAction | ClaimsServiceGetClaimsAction | ClaimsServiceGetClaimByIdAction | ClaimsServiceGetRequestHeadersAction | ClaimsServiceGetClaimsApiUrlAction | ClaimsServiceGenerateMessageForClaimSignatureAction | ClaimsServiceGetClaimsAction | KeyringControllerSignPersonalMessageAction;
@@ -50,5 +50,30 @@ export declare class ClaimsController extends BaseController<typeof CONTROLLER_N
50
50
  * @returns The list of claims for the current user.
51
51
  */
52
52
  getClaims(): Promise<Claim[]>;
53
+ /**
54
+ * Save a claim draft to the state.
55
+ * If the draft name is not provided, a default name will be generated.
56
+ * If the draft with the same id already exists, it will be updated.
57
+ *
58
+ * @param draft - The draft to save.
59
+ * @returns The saved draft.
60
+ */
61
+ saveOrUpdateClaimDraft(draft: Partial<ClaimDraft>): ClaimDraft;
62
+ /**
63
+ * Get the list of claim drafts.
64
+ *
65
+ * @returns The list of claim drafts.
66
+ */
67
+ getClaimDrafts(): ClaimDraft[];
68
+ /**
69
+ * Delete a claim draft from the state.
70
+ *
71
+ * @param draftId - The ID of the draft to delete.
72
+ */
73
+ deleteClaimDraft(draftId: string): void;
74
+ /**
75
+ * Delete all claim drafts from the state.
76
+ */
77
+ deleteAllClaimDrafts(): void;
53
78
  }
54
79
  //# sourceMappingURL=ClaimsController.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ClaimsController.d.cts","sourceRoot":"","sources":["../src/ClaimsController.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,wBAAwB,EACxB,0BAA0B,EAE3B,kCAAkC;AACnC,OAAO,EAAE,cAAc,EAAE,kCAAkC;AAE3D,OAAO,KAAK,EAAE,0CAA0C,EAAE,qCAAqC;AAC/F,OAAO,KAAK,EAAE,SAAS,EAAE,4BAA4B;AAGrD,OAAO,KAAK,EACV,4CAA4C,EAC5C,mDAAmD,EACnD,+BAA+B,EAC/B,4BAA4B,EAC5B,kCAAkC,EAClC,oCAAoC,EACrC,4BAAwB;AACzB,OAAO,EAEL,eAAe,EAGhB,wBAAoB;AACrB,OAAO,KAAK,EACV,KAAK,EACL,oBAAoB,EACpB,qBAAqB,EACrB,kBAAkB,EAClB,iBAAiB,EAClB,oBAAgB;AAEjB,MAAM,MAAM,8BAA8B,GAAG,wBAAwB,CACnE,OAAO,eAAe,EACtB,qBAAqB,CACtB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG,8BAA8B,CAAC;AAErE,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;AAiBF;;;;GAIG;AACH,wBAAgB,+BAA+B,IAAI,qBAAqB,CAKvE;AAED,qBAAa,gBAAiB,SAAQ,cAAc,CAClD,OAAO,eAAe,EACtB,qBAAqB,EACrB,yBAAyB,CAC1B;;gBACa,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,uBAAuB;IASzD;;;;OAIG;IACG,yBAAyB,IAAI,OAAO,CAAC,oBAAoB,CAAC;IAmBhE;;;;;OAKG;IACG,oBAAoB,CACxB,KAAK,EAAE,kBAAkB,GACxB,OAAO,CAAC,iBAAiB,CAAC;IAkB7B;;;;;;OAMG;IACG,sBAAsB,CAC1B,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,KAAK,MAAM,EAAE,GAC3B,OAAO,CAAC,MAAM,CAAC;IA6BlB;;;;OAIG;IACG,SAAS,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;CAsBpC"}
1
+ {"version":3,"file":"ClaimsController.d.cts","sourceRoot":"","sources":["../src/ClaimsController.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,wBAAwB,EACxB,0BAA0B,EAE3B,kCAAkC;AACnC,OAAO,EAAE,cAAc,EAAE,kCAAkC;AAE3D,OAAO,KAAK,EAAE,0CAA0C,EAAE,qCAAqC;AAC/F,OAAO,KAAK,EAAE,SAAS,EAAE,4BAA4B;AAGrD,OAAO,KAAK,EACV,4CAA4C,EAC5C,mDAAmD,EACnD,+BAA+B,EAC/B,4BAA4B,EAC5B,kCAAkC,EAClC,oCAAoC,EACrC,4BAAwB;AACzB,OAAO,EAEL,eAAe,EAGhB,wBAAoB;AACrB,OAAO,KAAK,EACV,KAAK,EACL,UAAU,EACV,oBAAoB,EACpB,qBAAqB,EACrB,kBAAkB,EAClB,iBAAiB,EAClB,oBAAgB;AAEjB,MAAM,MAAM,8BAA8B,GAAG,wBAAwB,CACnE,OAAO,eAAe,EACtB,qBAAqB,CACtB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG,8BAA8B,CAAC;AAErE,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;AAED,qBAAa,gBAAiB,SAAQ,cAAc,CAClD,OAAO,eAAe,EACtB,qBAAqB,EACrB,yBAAyB,CAC1B;;gBACa,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,uBAAuB;IASzD;;;;OAIG;IACG,yBAAyB,IAAI,OAAO,CAAC,oBAAoB,CAAC;IAmBhE;;;;;OAKG;IACG,oBAAoB,CACxB,KAAK,EAAE,kBAAkB,GACxB,OAAO,CAAC,iBAAiB,CAAC;IAkB7B;;;;;;OAMG;IACG,sBAAsB,CAC1B,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,KAAK,MAAM,EAAE,GAC3B,OAAO,CAAC,MAAM,CAAC;IA6BlB;;;;OAIG;IACG,SAAS,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;IAQnC;;;;;;;OAOG;IACH,sBAAsB,CAAC,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,UAAU;IAqC9D;;;;OAIG;IACH,cAAc,IAAI,UAAU,EAAE;IAI9B;;;;OAIG;IACH,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAMvC;;OAEG;IACH,oBAAoB,IAAI,IAAI;CAoB7B"}
@@ -4,7 +4,7 @@ import type { KeyringControllerSignPersonalMessageAction } from "@metamask/keyri
4
4
  import type { Messenger } from "@metamask/messenger";
5
5
  import type { ClaimsServiceFetchClaimsConfigurationsAction, ClaimsServiceGenerateMessageForClaimSignatureAction, ClaimsServiceGetClaimByIdAction, ClaimsServiceGetClaimsAction, ClaimsServiceGetClaimsApiUrlAction, ClaimsServiceGetRequestHeadersAction } from "./ClaimsService.mjs";
6
6
  import { CONTROLLER_NAME } from "./constants.mjs";
7
- import type { Claim, ClaimsConfigurations, ClaimsControllerState, CreateClaimRequest, SubmitClaimConfig } from "./types.mjs";
7
+ import type { Claim, ClaimDraft, ClaimsConfigurations, ClaimsControllerState, CreateClaimRequest, SubmitClaimConfig } from "./types.mjs";
8
8
  export type ClaimsControllerGetStateAction = ControllerGetStateAction<typeof CONTROLLER_NAME, ClaimsControllerState>;
9
9
  export type ClaimsControllerActions = ClaimsControllerGetStateAction;
10
10
  export type AllowedActions = ClaimsServiceFetchClaimsConfigurationsAction | ClaimsServiceGetClaimsAction | ClaimsServiceGetClaimByIdAction | ClaimsServiceGetRequestHeadersAction | ClaimsServiceGetClaimsApiUrlAction | ClaimsServiceGenerateMessageForClaimSignatureAction | ClaimsServiceGetClaimsAction | KeyringControllerSignPersonalMessageAction;
@@ -50,5 +50,30 @@ export declare class ClaimsController extends BaseController<typeof CONTROLLER_N
50
50
  * @returns The list of claims for the current user.
51
51
  */
52
52
  getClaims(): Promise<Claim[]>;
53
+ /**
54
+ * Save a claim draft to the state.
55
+ * If the draft name is not provided, a default name will be generated.
56
+ * If the draft with the same id already exists, it will be updated.
57
+ *
58
+ * @param draft - The draft to save.
59
+ * @returns The saved draft.
60
+ */
61
+ saveOrUpdateClaimDraft(draft: Partial<ClaimDraft>): ClaimDraft;
62
+ /**
63
+ * Get the list of claim drafts.
64
+ *
65
+ * @returns The list of claim drafts.
66
+ */
67
+ getClaimDrafts(): ClaimDraft[];
68
+ /**
69
+ * Delete a claim draft from the state.
70
+ *
71
+ * @param draftId - The ID of the draft to delete.
72
+ */
73
+ deleteClaimDraft(draftId: string): void;
74
+ /**
75
+ * Delete all claim drafts from the state.
76
+ */
77
+ deleteAllClaimDrafts(): void;
53
78
  }
54
79
  //# sourceMappingURL=ClaimsController.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ClaimsController.d.mts","sourceRoot":"","sources":["../src/ClaimsController.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,wBAAwB,EACxB,0BAA0B,EAE3B,kCAAkC;AACnC,OAAO,EAAE,cAAc,EAAE,kCAAkC;AAE3D,OAAO,KAAK,EAAE,0CAA0C,EAAE,qCAAqC;AAC/F,OAAO,KAAK,EAAE,SAAS,EAAE,4BAA4B;AAGrD,OAAO,KAAK,EACV,4CAA4C,EAC5C,mDAAmD,EACnD,+BAA+B,EAC/B,4BAA4B,EAC5B,kCAAkC,EAClC,oCAAoC,EACrC,4BAAwB;AACzB,OAAO,EAEL,eAAe,EAGhB,wBAAoB;AACrB,OAAO,KAAK,EACV,KAAK,EACL,oBAAoB,EACpB,qBAAqB,EACrB,kBAAkB,EAClB,iBAAiB,EAClB,oBAAgB;AAEjB,MAAM,MAAM,8BAA8B,GAAG,wBAAwB,CACnE,OAAO,eAAe,EACtB,qBAAqB,CACtB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG,8BAA8B,CAAC;AAErE,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;AAiBF;;;;GAIG;AACH,wBAAgB,+BAA+B,IAAI,qBAAqB,CAKvE;AAED,qBAAa,gBAAiB,SAAQ,cAAc,CAClD,OAAO,eAAe,EACtB,qBAAqB,EACrB,yBAAyB,CAC1B;;gBACa,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,uBAAuB;IASzD;;;;OAIG;IACG,yBAAyB,IAAI,OAAO,CAAC,oBAAoB,CAAC;IAmBhE;;;;;OAKG;IACG,oBAAoB,CACxB,KAAK,EAAE,kBAAkB,GACxB,OAAO,CAAC,iBAAiB,CAAC;IAkB7B;;;;;;OAMG;IACG,sBAAsB,CAC1B,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,KAAK,MAAM,EAAE,GAC3B,OAAO,CAAC,MAAM,CAAC;IA6BlB;;;;OAIG;IACG,SAAS,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;CAsBpC"}
1
+ {"version":3,"file":"ClaimsController.d.mts","sourceRoot":"","sources":["../src/ClaimsController.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,wBAAwB,EACxB,0BAA0B,EAE3B,kCAAkC;AACnC,OAAO,EAAE,cAAc,EAAE,kCAAkC;AAE3D,OAAO,KAAK,EAAE,0CAA0C,EAAE,qCAAqC;AAC/F,OAAO,KAAK,EAAE,SAAS,EAAE,4BAA4B;AAGrD,OAAO,KAAK,EACV,4CAA4C,EAC5C,mDAAmD,EACnD,+BAA+B,EAC/B,4BAA4B,EAC5B,kCAAkC,EAClC,oCAAoC,EACrC,4BAAwB;AACzB,OAAO,EAEL,eAAe,EAGhB,wBAAoB;AACrB,OAAO,KAAK,EACV,KAAK,EACL,UAAU,EACV,oBAAoB,EACpB,qBAAqB,EACrB,kBAAkB,EAClB,iBAAiB,EAClB,oBAAgB;AAEjB,MAAM,MAAM,8BAA8B,GAAG,wBAAwB,CACnE,OAAO,eAAe,EACtB,qBAAqB,CACtB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG,8BAA8B,CAAC;AAErE,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;AAED,qBAAa,gBAAiB,SAAQ,cAAc,CAClD,OAAO,eAAe,EACtB,qBAAqB,EACrB,yBAAyB,CAC1B;;gBACa,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,uBAAuB;IASzD;;;;OAIG;IACG,yBAAyB,IAAI,OAAO,CAAC,oBAAoB,CAAC;IAmBhE;;;;;OAKG;IACG,oBAAoB,CACxB,KAAK,EAAE,kBAAkB,GACxB,OAAO,CAAC,iBAAiB,CAAC;IAkB7B;;;;;;OAMG;IACG,sBAAsB,CAC1B,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,KAAK,MAAM,EAAE,GAC3B,OAAO,CAAC,MAAM,CAAC;IA6BlB;;;;OAIG;IACG,SAAS,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;IAQnC;;;;;;;OAOG;IACH,sBAAsB,CAAC,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,UAAU;IAqC9D;;;;OAIG;IACH,cAAc,IAAI,UAAU,EAAE;IAI9B;;;;OAIG;IACH,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAMvC;;OAEG;IACH,oBAAoB,IAAI,IAAI;CAoB7B"}
@@ -21,6 +21,12 @@ const ClaimsControllerStateMetadata = {
21
21
  includeInDebugSnapshot: true,
22
22
  usedInUi: true,
23
23
  },
24
+ drafts: {
25
+ includeInStateLogs: false,
26
+ persist: true,
27
+ includeInDebugSnapshot: false,
28
+ usedInUi: true,
29
+ },
24
30
  };
25
31
  /**
26
32
  * Get an initial default state for the controller.
@@ -31,6 +37,7 @@ export function getDefaultClaimsControllerState() {
31
37
  return {
32
38
  claimsConfigurations: DEFAULT_CLAIMS_CONFIGURATIONS,
33
39
  claims: [],
40
+ drafts: [],
34
41
  };
35
42
  }
36
43
  export class ClaimsController extends BaseController {
@@ -116,6 +123,65 @@ export class ClaimsController extends BaseController {
116
123
  });
117
124
  return claims;
118
125
  }
126
+ /**
127
+ * Save a claim draft to the state.
128
+ * If the draft name is not provided, a default name will be generated.
129
+ * If the draft with the same id already exists, it will be updated.
130
+ *
131
+ * @param draft - The draft to save.
132
+ * @returns The saved draft.
133
+ */
134
+ saveOrUpdateClaimDraft(draft) {
135
+ const { drafts } = this.state;
136
+ const draftCount = drafts.length;
137
+ const isExistingDraft = drafts.some((existingDraft) => draft.draftId && existingDraft.draftId === draft.draftId);
138
+ if (isExistingDraft) {
139
+ this.update((state) => {
140
+ state.drafts = state.drafts.map((existingDraft) => existingDraft.draftId === draft.draftId
141
+ ? { ...existingDraft, ...draft }
142
+ : existingDraft);
143
+ });
144
+ return draft;
145
+ }
146
+ // generate a new draft id, name and add it to the state
147
+ const draftId = `claims-draft-${Date.now()}`;
148
+ const draftName = draft.draftName ?? `Draft ${draftCount + 1}`;
149
+ const newDraft = {
150
+ ...draft,
151
+ draftId,
152
+ draftName,
153
+ };
154
+ this.update((state) => {
155
+ state.drafts.push(newDraft);
156
+ });
157
+ return newDraft;
158
+ }
159
+ /**
160
+ * Get the list of claim drafts.
161
+ *
162
+ * @returns The list of claim drafts.
163
+ */
164
+ getClaimDrafts() {
165
+ return this.state.drafts;
166
+ }
167
+ /**
168
+ * Delete a claim draft from the state.
169
+ *
170
+ * @param draftId - The ID of the draft to delete.
171
+ */
172
+ deleteClaimDraft(draftId) {
173
+ this.update((state) => {
174
+ state.drafts = state.drafts.filter((draft) => draft.draftId !== draftId);
175
+ });
176
+ }
177
+ /**
178
+ * Delete all claim drafts from the state.
179
+ */
180
+ deleteAllClaimDrafts() {
181
+ this.update((state) => {
182
+ state.drafts = [];
183
+ });
184
+ }
119
185
  }
120
186
  _ClaimsController_instances = new WeakSet(), _ClaimsController_validateSubmitClaimRequest = function _ClaimsController_validateSubmitClaimRequest(claim) {
121
187
  const { claims: existingClaims } = this.state;
@@ -1 +1 @@
1
- {"version":3,"file":"ClaimsController.mjs","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 {\n ClaimsServiceFetchClaimsConfigurationsAction,\n ClaimsServiceGenerateMessageForClaimSignatureAction,\n ClaimsServiceGetClaimByIdAction,\n ClaimsServiceGetClaimsAction,\n ClaimsServiceGetClaimsApiUrlAction,\n ClaimsServiceGetRequestHeadersAction,\n} from './ClaimsService';\nimport {\n ClaimsControllerErrorMessages,\n CONTROLLER_NAME,\n DEFAULT_CLAIMS_CONFIGURATIONS,\n SERVICE_NAME,\n} from './constants';\nimport type {\n Claim,\n ClaimsConfigurations,\n ClaimsControllerState,\n CreateClaimRequest,\n SubmitClaimConfig,\n} from './types';\n\nexport type ClaimsControllerGetStateAction = ControllerGetStateAction<\n typeof CONTROLLER_NAME,\n ClaimsControllerState\n>;\n\nexport type ClaimsControllerActions = ClaimsControllerGetStateAction;\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};\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 };\n}\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\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 * 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.mjs","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 {\n ClaimsServiceFetchClaimsConfigurationsAction,\n ClaimsServiceGenerateMessageForClaimSignatureAction,\n ClaimsServiceGetClaimByIdAction,\n ClaimsServiceGetClaimsAction,\n ClaimsServiceGetClaimsApiUrlAction,\n ClaimsServiceGetRequestHeadersAction,\n} from './ClaimsService';\nimport {\n ClaimsControllerErrorMessages,\n CONTROLLER_NAME,\n DEFAULT_CLAIMS_CONFIGURATIONS,\n SERVICE_NAME,\n} from './constants';\nimport type {\n Claim,\n ClaimDraft,\n ClaimsConfigurations,\n ClaimsControllerState,\n CreateClaimRequest,\n SubmitClaimConfig,\n} from './types';\n\nexport type ClaimsControllerGetStateAction = ControllerGetStateAction<\n typeof CONTROLLER_NAME,\n ClaimsControllerState\n>;\n\nexport type ClaimsControllerActions = ClaimsControllerGetStateAction;\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\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\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 const draftCount = drafts.length;\n\n const isExistingDraft = drafts.some(\n (existingDraft) =>\n draft.draftId && existingDraft.draftId === draft.draftId,\n );\n\n if (isExistingDraft) {\n this.update((state) => {\n state.drafts = state.drafts.map((existingDraft) =>\n existingDraft.draftId === draft.draftId\n ? { ...existingDraft, ...draft }\n : existingDraft,\n );\n });\n return draft as ClaimDraft;\n }\n\n // generate a new draft id, name and add it to the state\n const draftId = `claims-draft-${Date.now()}`;\n const draftName = draft.draftName ?? `Draft ${draftCount + 1}`;\n\n const newDraft: ClaimDraft = {\n ...draft,\n draftId,\n draftName,\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 * 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"]}
@@ -17,8 +17,10 @@ var ClaimStatusEnum;
17
17
  // submitted to Intercom
18
18
  ClaimStatusEnum["SUBMITTED"] = "submitted";
19
19
  // in progress by Intercom
20
+ // eslint-disable-next-line @typescript-eslint/naming-convention -- to match the API response format
20
21
  ClaimStatusEnum["IN_PROGRESS"] = "in_progress";
21
22
  // waiting for customer reply
23
+ // eslint-disable-next-line @typescript-eslint/naming-convention -- to match the API response format
22
24
  ClaimStatusEnum["WAITING_FOR_CUSTOMER"] = "waiting_for_customer";
23
25
  // approved by Intercom
24
26
  ClaimStatusEnum["APPROVED"] = "approved";
@@ -1 +1 @@
1
- {"version":3,"file":"constants.cjs","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AAAA,iEAAyE;AAE5D,QAAA,eAAe,GAAG,kBAAkB,CAAC;AAErC,QAAA,YAAY,GAAG,eAAe,CAAC;AAE5C,IAAY,GAIX;AAJD,WAAY,GAAG;IACb,kBAAW,CAAA;IACX,kBAAW,CAAA;IACX,kBAAW,CAAA;AACb,CAAC,EAJW,GAAG,mBAAH,GAAG,QAId;AAED,IAAY,eAeX;AAfD,WAAY,eAAe;IACzB,4CAA4C;IAC5C,sCAAmB,CAAA;IACnB,wBAAwB;IACxB,0CAAuB,CAAA;IACvB,0BAA0B;IAC1B,8CAA2B,CAAA;IAC3B,6BAA6B;IAC7B,gEAA6C,CAAA;IAC7C,uBAAuB;IACvB,wCAAqB,CAAA;IACrB,uBAAuB;IACvB,wCAAqB,CAAA;IACrB,iBAAiB;IACjB,sCAAmB,CAAA;AACrB,CAAC,EAfW,eAAe,+BAAf,eAAe,QAe1B;AAEY,QAAA,kBAAkB,GAAwB;IACrD,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,uCAAuC;IAClD,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,uCAAuC;IAClD,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,mCAAmC;CAC/C,CAAC;AAEW,QAAA,6BAA6B,GAAG;IAC3C,uBAAuB,EAAE,yBAAyB;IAClD,uBAAuB,EAAE,yBAAyB;IAClD,yBAAyB,EAAE,2BAA2B;CACvD,CAAC;AAEW,QAAA,0BAA0B,GAAG;IACxC,8BAA8B,EAAE,uCAAuC;IACvE,oBAAoB,EAAE,sBAAsB;IAC5C,yBAAyB,EAAE,2BAA2B;IACtD,mCAAmC,EACjC,gDAAgD;IAClD,2CAA2C,EACzC,kCAAkC;CACrC,CAAC;AAEF;;GAEG;AACU,QAAA,6BAA6B,GAAG;IAC3C,yBAAyB,EAAE,EAAE;IAC7B,iBAAiB,EAAE;QACjB,0BAAO,CAAC,qCAAkB,CAAC,OAAO,CAAC;QACnC,0BAAO,CAAC,qCAAkB,CAAC,YAAY,CAAC;KACzC;CACF,CAAC","sourcesContent":["import { BuiltInNetworkName, ChainId } from '@metamask/controller-utils';\n\nexport const CONTROLLER_NAME = 'ClaimsController';\n\nexport const SERVICE_NAME = 'ClaimsService';\n\nexport enum Env {\n DEV = 'dev',\n UAT = 'uat',\n PRD = 'prd',\n}\n\nexport enum ClaimStatusEnum {\n // created but not yet submitted to Intercom\n CREATED = 'created',\n // submitted to Intercom\n SUBMITTED = 'submitted',\n // in progress by Intercom\n IN_PROGRESS = 'in_progress',\n // waiting for customer reply\n WAITING_FOR_CUSTOMER = 'waiting_for_customer',\n // approved by Intercom\n APPROVED = 'approved',\n // rejected by Intercom\n REJECTED = 'rejected',\n // unknown status\n UNKNOWN = 'unknown',\n}\n\nexport const CLAIMS_API_URL_MAP: Record<Env, string> = {\n [Env.DEV]: 'https://claims.dev-api.cx.metamask.io',\n [Env.UAT]: 'https://claims.uat-api.cx.metamask.io',\n [Env.PRD]: 'https://claims.api.cx.metamask.io',\n};\n\nexport const ClaimsControllerErrorMessages = {\n CLAIM_ALREADY_SUBMITTED: 'Claim already submitted',\n INVALID_CLAIM_SIGNATURE: 'Invalid claim signature',\n INVALID_SIGNATURE_MESSAGE: 'Invalid signature message',\n};\n\nexport const ClaimsServiceErrorMessages = {\n FAILED_TO_FETCH_CONFIGURATIONS: 'Failed to fetch claims configurations',\n FAILED_TO_GET_CLAIMS: 'Failed to get claims',\n FAILED_TO_GET_CLAIM_BY_ID: 'Failed to get claim by id',\n SIGNATURE_MESSAGE_GENERATION_FAILED:\n 'Failed to generate message for claim signature',\n CLAIM_SIGNATURE_VERIFICATION_REQUEST_FAILED:\n 'Failed to verify claim signature',\n};\n\n/**\n * Default claims configurations.\n */\nexport const DEFAULT_CLAIMS_CONFIGURATIONS = {\n validSubmissionWindowDays: 21,\n supportedNetworks: [\n ChainId[BuiltInNetworkName.Mainnet],\n ChainId[BuiltInNetworkName.LineaMainnet],\n ],\n};\n"]}
1
+ {"version":3,"file":"constants.cjs","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AAAA,iEAAyE;AAE5D,QAAA,eAAe,GAAG,kBAAkB,CAAC;AAErC,QAAA,YAAY,GAAG,eAAe,CAAC;AAE5C,IAAY,GAIX;AAJD,WAAY,GAAG;IACb,kBAAW,CAAA;IACX,kBAAW,CAAA;IACX,kBAAW,CAAA;AACb,CAAC,EAJW,GAAG,mBAAH,GAAG,QAId;AAED,IAAY,eAiBX;AAjBD,WAAY,eAAe;IACzB,4CAA4C;IAC5C,sCAAmB,CAAA;IACnB,wBAAwB;IACxB,0CAAuB,CAAA;IACvB,0BAA0B;IAC1B,oGAAoG;IACpG,8CAA2B,CAAA;IAC3B,6BAA6B;IAC7B,oGAAoG;IACpG,gEAA6C,CAAA;IAC7C,uBAAuB;IACvB,wCAAqB,CAAA;IACrB,uBAAuB;IACvB,wCAAqB,CAAA;IACrB,iBAAiB;IACjB,sCAAmB,CAAA;AACrB,CAAC,EAjBW,eAAe,+BAAf,eAAe,QAiB1B;AAEY,QAAA,kBAAkB,GAAwB;IACrD,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,uCAAuC;IAClD,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,uCAAuC;IAClD,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,mCAAmC;CAC/C,CAAC;AAEW,QAAA,6BAA6B,GAAG;IAC3C,uBAAuB,EAAE,yBAAyB;IAClD,uBAAuB,EAAE,yBAAyB;IAClD,yBAAyB,EAAE,2BAA2B;CACvD,CAAC;AAEW,QAAA,0BAA0B,GAAG;IACxC,8BAA8B,EAAE,uCAAuC;IACvE,oBAAoB,EAAE,sBAAsB;IAC5C,yBAAyB,EAAE,2BAA2B;IACtD,mCAAmC,EACjC,gDAAgD;IAClD,2CAA2C,EACzC,kCAAkC;CACrC,CAAC;AAEF;;GAEG;AACU,QAAA,6BAA6B,GAAG;IAC3C,yBAAyB,EAAE,EAAE;IAC7B,iBAAiB,EAAE;QACjB,0BAAO,CAAC,qCAAkB,CAAC,OAAO,CAAC;QACnC,0BAAO,CAAC,qCAAkB,CAAC,YAAY,CAAC;KACzC;CACF,CAAC","sourcesContent":["import { BuiltInNetworkName, ChainId } from '@metamask/controller-utils';\n\nexport const CONTROLLER_NAME = 'ClaimsController';\n\nexport const SERVICE_NAME = 'ClaimsService';\n\nexport enum Env {\n DEV = 'dev',\n UAT = 'uat',\n PRD = 'prd',\n}\n\nexport enum ClaimStatusEnum {\n // created but not yet submitted to Intercom\n CREATED = 'created',\n // submitted to Intercom\n SUBMITTED = 'submitted',\n // in progress by Intercom\n // eslint-disable-next-line @typescript-eslint/naming-convention -- to match the API response format\n IN_PROGRESS = 'in_progress',\n // waiting for customer reply\n // eslint-disable-next-line @typescript-eslint/naming-convention -- to match the API response format\n WAITING_FOR_CUSTOMER = 'waiting_for_customer',\n // approved by Intercom\n APPROVED = 'approved',\n // rejected by Intercom\n REJECTED = 'rejected',\n // unknown status\n UNKNOWN = 'unknown',\n}\n\nexport const CLAIMS_API_URL_MAP: Record<Env, string> = {\n [Env.DEV]: 'https://claims.dev-api.cx.metamask.io',\n [Env.UAT]: 'https://claims.uat-api.cx.metamask.io',\n [Env.PRD]: 'https://claims.api.cx.metamask.io',\n};\n\nexport const ClaimsControllerErrorMessages = {\n CLAIM_ALREADY_SUBMITTED: 'Claim already submitted',\n INVALID_CLAIM_SIGNATURE: 'Invalid claim signature',\n INVALID_SIGNATURE_MESSAGE: 'Invalid signature message',\n};\n\nexport const ClaimsServiceErrorMessages = {\n FAILED_TO_FETCH_CONFIGURATIONS: 'Failed to fetch claims configurations',\n FAILED_TO_GET_CLAIMS: 'Failed to get claims',\n FAILED_TO_GET_CLAIM_BY_ID: 'Failed to get claim by id',\n SIGNATURE_MESSAGE_GENERATION_FAILED:\n 'Failed to generate message for claim signature',\n CLAIM_SIGNATURE_VERIFICATION_REQUEST_FAILED:\n 'Failed to verify claim signature',\n};\n\n/**\n * Default claims configurations.\n */\nexport const DEFAULT_CLAIMS_CONFIGURATIONS = {\n validSubmissionWindowDays: 21,\n supportedNetworks: [\n ChainId[BuiltInNetworkName.Mainnet],\n ChainId[BuiltInNetworkName.LineaMainnet],\n ],\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.cts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,eAAe,qBAAqB,CAAC;AAElD,eAAO,MAAM,YAAY,kBAAkB,CAAC;AAE5C,oBAAY,GAAG;IACb,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,GAAG,QAAQ;CACZ;AAED,oBAAY,eAAe;IAEzB,OAAO,YAAY;IAEnB,SAAS,cAAc;IAEvB,WAAW,gBAAgB;IAE3B,oBAAoB,yBAAyB;IAE7C,QAAQ,aAAa;IAErB,QAAQ,aAAa;IAErB,OAAO,YAAY;CACpB;AAED,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,CAIlD,CAAC;AAEF,eAAO,MAAM,6BAA6B;;;;CAIzC,CAAC;AAEF,eAAO,MAAM,0BAA0B;;;;;;CAQtC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,6BAA6B;;;CAMzC,CAAC"}
1
+ {"version":3,"file":"constants.d.cts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,eAAe,qBAAqB,CAAC;AAElD,eAAO,MAAM,YAAY,kBAAkB,CAAC;AAE5C,oBAAY,GAAG;IACb,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,GAAG,QAAQ;CACZ;AAED,oBAAY,eAAe;IAEzB,OAAO,YAAY;IAEnB,SAAS,cAAc;IAGvB,WAAW,gBAAgB;IAG3B,oBAAoB,yBAAyB;IAE7C,QAAQ,aAAa;IAErB,QAAQ,aAAa;IAErB,OAAO,YAAY;CACpB;AAED,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,CAIlD,CAAC;AAEF,eAAO,MAAM,6BAA6B;;;;CAIzC,CAAC;AAEF,eAAO,MAAM,0BAA0B;;;;;;CAQtC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,6BAA6B;;;CAMzC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.mts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,eAAe,qBAAqB,CAAC;AAElD,eAAO,MAAM,YAAY,kBAAkB,CAAC;AAE5C,oBAAY,GAAG;IACb,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,GAAG,QAAQ;CACZ;AAED,oBAAY,eAAe;IAEzB,OAAO,YAAY;IAEnB,SAAS,cAAc;IAEvB,WAAW,gBAAgB;IAE3B,oBAAoB,yBAAyB;IAE7C,QAAQ,aAAa;IAErB,QAAQ,aAAa;IAErB,OAAO,YAAY;CACpB;AAED,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,CAIlD,CAAC;AAEF,eAAO,MAAM,6BAA6B;;;;CAIzC,CAAC;AAEF,eAAO,MAAM,0BAA0B;;;;;;CAQtC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,6BAA6B;;;CAMzC,CAAC"}
1
+ {"version":3,"file":"constants.d.mts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,eAAe,qBAAqB,CAAC;AAElD,eAAO,MAAM,YAAY,kBAAkB,CAAC;AAE5C,oBAAY,GAAG;IACb,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,GAAG,QAAQ;CACZ;AAED,oBAAY,eAAe;IAEzB,OAAO,YAAY;IAEnB,SAAS,cAAc;IAGvB,WAAW,gBAAgB;IAG3B,oBAAoB,yBAAyB;IAE7C,QAAQ,aAAa;IAErB,QAAQ,aAAa;IAErB,OAAO,YAAY;CACpB;AAED,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,CAIlD,CAAC;AAEF,eAAO,MAAM,6BAA6B;;;;CAIzC,CAAC;AAEF,eAAO,MAAM,0BAA0B;;;;;;CAQtC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,6BAA6B;;;CAMzC,CAAC"}
@@ -14,8 +14,10 @@ export var ClaimStatusEnum;
14
14
  // submitted to Intercom
15
15
  ClaimStatusEnum["SUBMITTED"] = "submitted";
16
16
  // in progress by Intercom
17
+ // eslint-disable-next-line @typescript-eslint/naming-convention -- to match the API response format
17
18
  ClaimStatusEnum["IN_PROGRESS"] = "in_progress";
18
19
  // waiting for customer reply
20
+ // eslint-disable-next-line @typescript-eslint/naming-convention -- to match the API response format
19
21
  ClaimStatusEnum["WAITING_FOR_CUSTOMER"] = "waiting_for_customer";
20
22
  // approved by Intercom
21
23
  ClaimStatusEnum["APPROVED"] = "approved";
@@ -1 +1 @@
1
- {"version":3,"file":"constants.mjs","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,OAAO,EAAE,mCAAmC;AAEzE,MAAM,CAAC,MAAM,eAAe,GAAG,kBAAkB,CAAC;AAElD,MAAM,CAAC,MAAM,YAAY,GAAG,eAAe,CAAC;AAE5C,MAAM,CAAN,IAAY,GAIX;AAJD,WAAY,GAAG;IACb,kBAAW,CAAA;IACX,kBAAW,CAAA;IACX,kBAAW,CAAA;AACb,CAAC,EAJW,GAAG,KAAH,GAAG,QAId;AAED,MAAM,CAAN,IAAY,eAeX;AAfD,WAAY,eAAe;IACzB,4CAA4C;IAC5C,sCAAmB,CAAA;IACnB,wBAAwB;IACxB,0CAAuB,CAAA;IACvB,0BAA0B;IAC1B,8CAA2B,CAAA;IAC3B,6BAA6B;IAC7B,gEAA6C,CAAA;IAC7C,uBAAuB;IACvB,wCAAqB,CAAA;IACrB,uBAAuB;IACvB,wCAAqB,CAAA;IACrB,iBAAiB;IACjB,sCAAmB,CAAA;AACrB,CAAC,EAfW,eAAe,KAAf,eAAe,QAe1B;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAwB;IACrD,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,uCAAuC;IAClD,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,uCAAuC;IAClD,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,mCAAmC;CAC/C,CAAC;AAEF,MAAM,CAAC,MAAM,6BAA6B,GAAG;IAC3C,uBAAuB,EAAE,yBAAyB;IAClD,uBAAuB,EAAE,yBAAyB;IAClD,yBAAyB,EAAE,2BAA2B;CACvD,CAAC;AAEF,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,8BAA8B,EAAE,uCAAuC;IACvE,oBAAoB,EAAE,sBAAsB;IAC5C,yBAAyB,EAAE,2BAA2B;IACtD,mCAAmC,EACjC,gDAAgD;IAClD,2CAA2C,EACzC,kCAAkC;CACrC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG;IAC3C,yBAAyB,EAAE,EAAE;IAC7B,iBAAiB,EAAE;QACjB,OAAO,CAAC,kBAAkB,CAAC,OAAO,CAAC;QACnC,OAAO,CAAC,kBAAkB,CAAC,YAAY,CAAC;KACzC;CACF,CAAC","sourcesContent":["import { BuiltInNetworkName, ChainId } from '@metamask/controller-utils';\n\nexport const CONTROLLER_NAME = 'ClaimsController';\n\nexport const SERVICE_NAME = 'ClaimsService';\n\nexport enum Env {\n DEV = 'dev',\n UAT = 'uat',\n PRD = 'prd',\n}\n\nexport enum ClaimStatusEnum {\n // created but not yet submitted to Intercom\n CREATED = 'created',\n // submitted to Intercom\n SUBMITTED = 'submitted',\n // in progress by Intercom\n IN_PROGRESS = 'in_progress',\n // waiting for customer reply\n WAITING_FOR_CUSTOMER = 'waiting_for_customer',\n // approved by Intercom\n APPROVED = 'approved',\n // rejected by Intercom\n REJECTED = 'rejected',\n // unknown status\n UNKNOWN = 'unknown',\n}\n\nexport const CLAIMS_API_URL_MAP: Record<Env, string> = {\n [Env.DEV]: 'https://claims.dev-api.cx.metamask.io',\n [Env.UAT]: 'https://claims.uat-api.cx.metamask.io',\n [Env.PRD]: 'https://claims.api.cx.metamask.io',\n};\n\nexport const ClaimsControllerErrorMessages = {\n CLAIM_ALREADY_SUBMITTED: 'Claim already submitted',\n INVALID_CLAIM_SIGNATURE: 'Invalid claim signature',\n INVALID_SIGNATURE_MESSAGE: 'Invalid signature message',\n};\n\nexport const ClaimsServiceErrorMessages = {\n FAILED_TO_FETCH_CONFIGURATIONS: 'Failed to fetch claims configurations',\n FAILED_TO_GET_CLAIMS: 'Failed to get claims',\n FAILED_TO_GET_CLAIM_BY_ID: 'Failed to get claim by id',\n SIGNATURE_MESSAGE_GENERATION_FAILED:\n 'Failed to generate message for claim signature',\n CLAIM_SIGNATURE_VERIFICATION_REQUEST_FAILED:\n 'Failed to verify claim signature',\n};\n\n/**\n * Default claims configurations.\n */\nexport const DEFAULT_CLAIMS_CONFIGURATIONS = {\n validSubmissionWindowDays: 21,\n supportedNetworks: [\n ChainId[BuiltInNetworkName.Mainnet],\n ChainId[BuiltInNetworkName.LineaMainnet],\n ],\n};\n"]}
1
+ {"version":3,"file":"constants.mjs","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,OAAO,EAAE,mCAAmC;AAEzE,MAAM,CAAC,MAAM,eAAe,GAAG,kBAAkB,CAAC;AAElD,MAAM,CAAC,MAAM,YAAY,GAAG,eAAe,CAAC;AAE5C,MAAM,CAAN,IAAY,GAIX;AAJD,WAAY,GAAG;IACb,kBAAW,CAAA;IACX,kBAAW,CAAA;IACX,kBAAW,CAAA;AACb,CAAC,EAJW,GAAG,KAAH,GAAG,QAId;AAED,MAAM,CAAN,IAAY,eAiBX;AAjBD,WAAY,eAAe;IACzB,4CAA4C;IAC5C,sCAAmB,CAAA;IACnB,wBAAwB;IACxB,0CAAuB,CAAA;IACvB,0BAA0B;IAC1B,oGAAoG;IACpG,8CAA2B,CAAA;IAC3B,6BAA6B;IAC7B,oGAAoG;IACpG,gEAA6C,CAAA;IAC7C,uBAAuB;IACvB,wCAAqB,CAAA;IACrB,uBAAuB;IACvB,wCAAqB,CAAA;IACrB,iBAAiB;IACjB,sCAAmB,CAAA;AACrB,CAAC,EAjBW,eAAe,KAAf,eAAe,QAiB1B;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAwB;IACrD,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,uCAAuC;IAClD,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,uCAAuC;IAClD,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,mCAAmC;CAC/C,CAAC;AAEF,MAAM,CAAC,MAAM,6BAA6B,GAAG;IAC3C,uBAAuB,EAAE,yBAAyB;IAClD,uBAAuB,EAAE,yBAAyB;IAClD,yBAAyB,EAAE,2BAA2B;CACvD,CAAC;AAEF,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,8BAA8B,EAAE,uCAAuC;IACvE,oBAAoB,EAAE,sBAAsB;IAC5C,yBAAyB,EAAE,2BAA2B;IACtD,mCAAmC,EACjC,gDAAgD;IAClD,2CAA2C,EACzC,kCAAkC;CACrC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG;IAC3C,yBAAyB,EAAE,EAAE;IAC7B,iBAAiB,EAAE;QACjB,OAAO,CAAC,kBAAkB,CAAC,OAAO,CAAC;QACnC,OAAO,CAAC,kBAAkB,CAAC,YAAY,CAAC;KACzC;CACF,CAAC","sourcesContent":["import { BuiltInNetworkName, ChainId } from '@metamask/controller-utils';\n\nexport const CONTROLLER_NAME = 'ClaimsController';\n\nexport const SERVICE_NAME = 'ClaimsService';\n\nexport enum Env {\n DEV = 'dev',\n UAT = 'uat',\n PRD = 'prd',\n}\n\nexport enum ClaimStatusEnum {\n // created but not yet submitted to Intercom\n CREATED = 'created',\n // submitted to Intercom\n SUBMITTED = 'submitted',\n // in progress by Intercom\n // eslint-disable-next-line @typescript-eslint/naming-convention -- to match the API response format\n IN_PROGRESS = 'in_progress',\n // waiting for customer reply\n // eslint-disable-next-line @typescript-eslint/naming-convention -- to match the API response format\n WAITING_FOR_CUSTOMER = 'waiting_for_customer',\n // approved by Intercom\n APPROVED = 'approved',\n // rejected by Intercom\n REJECTED = 'rejected',\n // unknown status\n UNKNOWN = 'unknown',\n}\n\nexport const CLAIMS_API_URL_MAP: Record<Env, string> = {\n [Env.DEV]: 'https://claims.dev-api.cx.metamask.io',\n [Env.UAT]: 'https://claims.uat-api.cx.metamask.io',\n [Env.PRD]: 'https://claims.api.cx.metamask.io',\n};\n\nexport const ClaimsControllerErrorMessages = {\n CLAIM_ALREADY_SUBMITTED: 'Claim already submitted',\n INVALID_CLAIM_SIGNATURE: 'Invalid claim signature',\n INVALID_SIGNATURE_MESSAGE: 'Invalid signature message',\n};\n\nexport const ClaimsServiceErrorMessages = {\n FAILED_TO_FETCH_CONFIGURATIONS: 'Failed to fetch claims configurations',\n FAILED_TO_GET_CLAIMS: 'Failed to get claims',\n FAILED_TO_GET_CLAIM_BY_ID: 'Failed to get claim by id',\n SIGNATURE_MESSAGE_GENERATION_FAILED:\n 'Failed to generate message for claim signature',\n CLAIM_SIGNATURE_VERIFICATION_REQUEST_FAILED:\n 'Failed to verify claim signature',\n};\n\n/**\n * Default claims configurations.\n */\nexport const DEFAULT_CLAIMS_CONFIGURATIONS = {\n validSubmissionWindowDays: 21,\n supportedNetworks: [\n ChainId[BuiltInNetworkName.Mainnet],\n ChainId[BuiltInNetworkName.LineaMainnet],\n ],\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,2DAG4B;AAF1B,oHAAA,gBAAgB,OAAA;AAChB,mIAAA,+BAA+B,OAAA;AAmBjC,qDAAgD;AAAvC,8GAAA,aAAa,OAAA;AAatB,6CAOqB;AANnB,4GAAA,eAAe,OAAA;AACf,gGAAA,GAAG,OAAA;AACH,0HAAA,6BAA6B,OAAA;AAC7B,0HAAA,6BAA6B,OAAA;AAC7B,uHAAA,0BAA0B,OAAA;AAC1B,+GAAA,kBAAkB,OAAA","sourcesContent":["export {\n ClaimsController,\n getDefaultClaimsControllerState,\n} from './ClaimsController';\n\nexport type {\n ClaimsControllerGetStateAction,\n ClaimsControllerActions,\n ClaimsControllerStateChangeEvent,\n ClaimsControllerMessenger,\n} from './ClaimsController';\n\nexport type {\n Claim,\n ClaimsControllerState,\n Attachment,\n ClaimsConfigurations,\n CreateClaimRequest,\n SubmitClaimConfig,\n} from './types';\n\nexport { ClaimsService } from './ClaimsService';\n\nexport type {\n ClaimsServiceFetchClaimsConfigurationsAction,\n ClaimsServiceGetClaimsAction,\n ClaimsServiceGetRequestHeadersAction,\n ClaimsServiceGetClaimsApiUrlAction,\n ClaimsServiceGetClaimByIdAction,\n ClaimsServiceGenerateMessageForClaimSignatureAction,\n ClaimsServiceActions,\n ClaimsServiceMessenger,\n} from './ClaimsService';\n\nexport {\n ClaimStatusEnum,\n Env,\n ClaimsControllerErrorMessages,\n DEFAULT_CLAIMS_CONFIGURATIONS,\n ClaimsServiceErrorMessages,\n CLAIMS_API_URL_MAP,\n} from './constants';\n"]}
1
+ {"version":3,"file":"index.cjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,2DAG4B;AAF1B,oHAAA,gBAAgB,OAAA;AAChB,mIAAA,+BAA+B,OAAA;AAoBjC,qDAAgD;AAAvC,8GAAA,aAAa,OAAA;AAatB,6CAOqB;AANnB,4GAAA,eAAe,OAAA;AACf,gGAAA,GAAG,OAAA;AACH,0HAAA,6BAA6B,OAAA;AAC7B,0HAAA,6BAA6B,OAAA;AAC7B,uHAAA,0BAA0B,OAAA;AAC1B,+GAAA,kBAAkB,OAAA","sourcesContent":["export {\n ClaimsController,\n getDefaultClaimsControllerState,\n} from './ClaimsController';\n\nexport type {\n ClaimsControllerGetStateAction,\n ClaimsControllerActions,\n ClaimsControllerStateChangeEvent,\n ClaimsControllerMessenger,\n} from './ClaimsController';\n\nexport type {\n Claim,\n ClaimsControllerState,\n Attachment,\n ClaimsConfigurations,\n CreateClaimRequest,\n SubmitClaimConfig,\n ClaimDraft,\n} from './types';\n\nexport { ClaimsService } from './ClaimsService';\n\nexport type {\n ClaimsServiceFetchClaimsConfigurationsAction,\n ClaimsServiceGetClaimsAction,\n ClaimsServiceGetRequestHeadersAction,\n ClaimsServiceGetClaimsApiUrlAction,\n ClaimsServiceGetClaimByIdAction,\n ClaimsServiceGenerateMessageForClaimSignatureAction,\n ClaimsServiceActions,\n ClaimsServiceMessenger,\n} from './ClaimsService';\n\nexport {\n ClaimStatusEnum,\n Env,\n ClaimsControllerErrorMessages,\n DEFAULT_CLAIMS_CONFIGURATIONS,\n ClaimsServiceErrorMessages,\n CLAIMS_API_URL_MAP,\n} from './constants';\n"]}
package/dist/index.d.cts CHANGED
@@ -1,6 +1,6 @@
1
1
  export { ClaimsController, getDefaultClaimsControllerState, } from "./ClaimsController.cjs";
2
2
  export type { ClaimsControllerGetStateAction, ClaimsControllerActions, ClaimsControllerStateChangeEvent, ClaimsControllerMessenger, } from "./ClaimsController.cjs";
3
- export type { Claim, ClaimsControllerState, Attachment, ClaimsConfigurations, CreateClaimRequest, SubmitClaimConfig, } from "./types.cjs";
3
+ export type { Claim, ClaimsControllerState, Attachment, ClaimsConfigurations, CreateClaimRequest, SubmitClaimConfig, ClaimDraft, } from "./types.cjs";
4
4
  export { ClaimsService } from "./ClaimsService.cjs";
5
5
  export type { ClaimsServiceFetchClaimsConfigurationsAction, ClaimsServiceGetClaimsAction, ClaimsServiceGetRequestHeadersAction, ClaimsServiceGetClaimsApiUrlAction, ClaimsServiceGetClaimByIdAction, ClaimsServiceGenerateMessageForClaimSignatureAction, ClaimsServiceActions, ClaimsServiceMessenger, } from "./ClaimsService.cjs";
6
6
  export { ClaimStatusEnum, Env, ClaimsControllerErrorMessages, DEFAULT_CLAIMS_CONFIGURATIONS, ClaimsServiceErrorMessages, CLAIMS_API_URL_MAP, } from "./constants.cjs";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,+BAA+B,GAChC,+BAA2B;AAE5B,YAAY,EACV,8BAA8B,EAC9B,uBAAuB,EACvB,gCAAgC,EAChC,yBAAyB,GAC1B,+BAA2B;AAE5B,YAAY,EACV,KAAK,EACL,qBAAqB,EACrB,UAAU,EACV,oBAAoB,EACpB,kBAAkB,EAClB,iBAAiB,GAClB,oBAAgB;AAEjB,OAAO,EAAE,aAAa,EAAE,4BAAwB;AAEhD,YAAY,EACV,4CAA4C,EAC5C,4BAA4B,EAC5B,oCAAoC,EACpC,kCAAkC,EAClC,+BAA+B,EAC/B,mDAAmD,EACnD,oBAAoB,EACpB,sBAAsB,GACvB,4BAAwB;AAEzB,OAAO,EACL,eAAe,EACf,GAAG,EACH,6BAA6B,EAC7B,6BAA6B,EAC7B,0BAA0B,EAC1B,kBAAkB,GACnB,wBAAoB"}
1
+ {"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,+BAA+B,GAChC,+BAA2B;AAE5B,YAAY,EACV,8BAA8B,EAC9B,uBAAuB,EACvB,gCAAgC,EAChC,yBAAyB,GAC1B,+BAA2B;AAE5B,YAAY,EACV,KAAK,EACL,qBAAqB,EACrB,UAAU,EACV,oBAAoB,EACpB,kBAAkB,EAClB,iBAAiB,EACjB,UAAU,GACX,oBAAgB;AAEjB,OAAO,EAAE,aAAa,EAAE,4BAAwB;AAEhD,YAAY,EACV,4CAA4C,EAC5C,4BAA4B,EAC5B,oCAAoC,EACpC,kCAAkC,EAClC,+BAA+B,EAC/B,mDAAmD,EACnD,oBAAoB,EACpB,sBAAsB,GACvB,4BAAwB;AAEzB,OAAO,EACL,eAAe,EACf,GAAG,EACH,6BAA6B,EAC7B,6BAA6B,EAC7B,0BAA0B,EAC1B,kBAAkB,GACnB,wBAAoB"}
package/dist/index.d.mts CHANGED
@@ -1,6 +1,6 @@
1
1
  export { ClaimsController, getDefaultClaimsControllerState, } from "./ClaimsController.mjs";
2
2
  export type { ClaimsControllerGetStateAction, ClaimsControllerActions, ClaimsControllerStateChangeEvent, ClaimsControllerMessenger, } from "./ClaimsController.mjs";
3
- export type { Claim, ClaimsControllerState, Attachment, ClaimsConfigurations, CreateClaimRequest, SubmitClaimConfig, } from "./types.mjs";
3
+ export type { Claim, ClaimsControllerState, Attachment, ClaimsConfigurations, CreateClaimRequest, SubmitClaimConfig, ClaimDraft, } from "./types.mjs";
4
4
  export { ClaimsService } from "./ClaimsService.mjs";
5
5
  export type { ClaimsServiceFetchClaimsConfigurationsAction, ClaimsServiceGetClaimsAction, ClaimsServiceGetRequestHeadersAction, ClaimsServiceGetClaimsApiUrlAction, ClaimsServiceGetClaimByIdAction, ClaimsServiceGenerateMessageForClaimSignatureAction, ClaimsServiceActions, ClaimsServiceMessenger, } from "./ClaimsService.mjs";
6
6
  export { ClaimStatusEnum, Env, ClaimsControllerErrorMessages, DEFAULT_CLAIMS_CONFIGURATIONS, ClaimsServiceErrorMessages, CLAIMS_API_URL_MAP, } from "./constants.mjs";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,+BAA+B,GAChC,+BAA2B;AAE5B,YAAY,EACV,8BAA8B,EAC9B,uBAAuB,EACvB,gCAAgC,EAChC,yBAAyB,GAC1B,+BAA2B;AAE5B,YAAY,EACV,KAAK,EACL,qBAAqB,EACrB,UAAU,EACV,oBAAoB,EACpB,kBAAkB,EAClB,iBAAiB,GAClB,oBAAgB;AAEjB,OAAO,EAAE,aAAa,EAAE,4BAAwB;AAEhD,YAAY,EACV,4CAA4C,EAC5C,4BAA4B,EAC5B,oCAAoC,EACpC,kCAAkC,EAClC,+BAA+B,EAC/B,mDAAmD,EACnD,oBAAoB,EACpB,sBAAsB,GACvB,4BAAwB;AAEzB,OAAO,EACL,eAAe,EACf,GAAG,EACH,6BAA6B,EAC7B,6BAA6B,EAC7B,0BAA0B,EAC1B,kBAAkB,GACnB,wBAAoB"}
1
+ {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,+BAA+B,GAChC,+BAA2B;AAE5B,YAAY,EACV,8BAA8B,EAC9B,uBAAuB,EACvB,gCAAgC,EAChC,yBAAyB,GAC1B,+BAA2B;AAE5B,YAAY,EACV,KAAK,EACL,qBAAqB,EACrB,UAAU,EACV,oBAAoB,EACpB,kBAAkB,EAClB,iBAAiB,EACjB,UAAU,GACX,oBAAgB;AAEjB,OAAO,EAAE,aAAa,EAAE,4BAAwB;AAEhD,YAAY,EACV,4CAA4C,EAC5C,4BAA4B,EAC5B,oCAAoC,EACpC,kCAAkC,EAClC,+BAA+B,EAC/B,mDAAmD,EACnD,oBAAoB,EACpB,sBAAsB,GACvB,4BAAwB;AAEzB,OAAO,EACL,eAAe,EACf,GAAG,EACH,6BAA6B,EAC7B,6BAA6B,EAC7B,0BAA0B,EAC1B,kBAAkB,GACnB,wBAAoB"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,+BAA+B,EAChC,+BAA2B;AAkB5B,OAAO,EAAE,aAAa,EAAE,4BAAwB;AAahD,OAAO,EACL,eAAe,EACf,GAAG,EACH,6BAA6B,EAC7B,6BAA6B,EAC7B,0BAA0B,EAC1B,kBAAkB,EACnB,wBAAoB","sourcesContent":["export {\n ClaimsController,\n getDefaultClaimsControllerState,\n} from './ClaimsController';\n\nexport type {\n ClaimsControllerGetStateAction,\n ClaimsControllerActions,\n ClaimsControllerStateChangeEvent,\n ClaimsControllerMessenger,\n} from './ClaimsController';\n\nexport type {\n Claim,\n ClaimsControllerState,\n Attachment,\n ClaimsConfigurations,\n CreateClaimRequest,\n SubmitClaimConfig,\n} from './types';\n\nexport { ClaimsService } from './ClaimsService';\n\nexport type {\n ClaimsServiceFetchClaimsConfigurationsAction,\n ClaimsServiceGetClaimsAction,\n ClaimsServiceGetRequestHeadersAction,\n ClaimsServiceGetClaimsApiUrlAction,\n ClaimsServiceGetClaimByIdAction,\n ClaimsServiceGenerateMessageForClaimSignatureAction,\n ClaimsServiceActions,\n ClaimsServiceMessenger,\n} from './ClaimsService';\n\nexport {\n ClaimStatusEnum,\n Env,\n ClaimsControllerErrorMessages,\n DEFAULT_CLAIMS_CONFIGURATIONS,\n ClaimsServiceErrorMessages,\n CLAIMS_API_URL_MAP,\n} from './constants';\n"]}
1
+ {"version":3,"file":"index.mjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,+BAA+B,EAChC,+BAA2B;AAmB5B,OAAO,EAAE,aAAa,EAAE,4BAAwB;AAahD,OAAO,EACL,eAAe,EACf,GAAG,EACH,6BAA6B,EAC7B,6BAA6B,EAC7B,0BAA0B,EAC1B,kBAAkB,EACnB,wBAAoB","sourcesContent":["export {\n ClaimsController,\n getDefaultClaimsControllerState,\n} from './ClaimsController';\n\nexport type {\n ClaimsControllerGetStateAction,\n ClaimsControllerActions,\n ClaimsControllerStateChangeEvent,\n ClaimsControllerMessenger,\n} from './ClaimsController';\n\nexport type {\n Claim,\n ClaimsControllerState,\n Attachment,\n ClaimsConfigurations,\n CreateClaimRequest,\n SubmitClaimConfig,\n ClaimDraft,\n} from './types';\n\nexport { ClaimsService } from './ClaimsService';\n\nexport type {\n ClaimsServiceFetchClaimsConfigurationsAction,\n ClaimsServiceGetClaimsAction,\n ClaimsServiceGetRequestHeadersAction,\n ClaimsServiceGetClaimsApiUrlAction,\n ClaimsServiceGetClaimByIdAction,\n ClaimsServiceGenerateMessageForClaimSignatureAction,\n ClaimsServiceActions,\n ClaimsServiceMessenger,\n} from './ClaimsService';\n\nexport {\n ClaimStatusEnum,\n Env,\n ClaimsControllerErrorMessages,\n DEFAULT_CLAIMS_CONFIGURATIONS,\n ClaimsServiceErrorMessages,\n CLAIMS_API_URL_MAP,\n} from './constants';\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"types.cjs","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { Hex } from '@metamask/utils';\n\nimport type { ClaimStatusEnum } from './constants';\n\nexport type Attachment = {\n publicUrl: string;\n contentType: string;\n originalname: string;\n};\n\nexport type ClaimsConfigurations = {\n /**\n * The number of days the claim is valid for submission.\n */\n validSubmissionWindowDays: number;\n\n /**\n * List of supported chain IDs in hexadecimal format.\n */\n supportedNetworks: `0x${string}`[];\n};\n\nexport type ClaimsConfigurationsResponse = Omit<\n ClaimsConfigurations,\n 'supportedNetworks'\n> & {\n /**\n * List of supported chain IDs.\n * Claims API response for `supportedNetworks` field (in decimal format).\n */\n networks: number[];\n};\n\nexport type Claim = {\n id: string;\n shortId: string;\n chainId: string;\n email: string;\n impactedWalletAddress: Hex;\n impactedTxHash: Hex;\n reimbursementWalletAddress: Hex;\n description: string;\n signature: Hex;\n attachments?: Attachment[];\n status: ClaimStatusEnum;\n createdAt: string;\n updatedAt: string;\n intercomId?: string;\n};\n\nexport type CreateClaimRequest = Omit<\n Claim,\n 'id' | 'shortId' | 'createdAt' | 'updatedAt' | 'intercomId' | 'status'\n>;\n\nexport type ClaimsControllerState = {\n /**\n * List of claims.\n */\n claims: Claim[];\n\n /**\n * The claims configurations.\n * This is used to store the claims configurations fetched from the backend.\n */\n claimsConfigurations: ClaimsConfigurations;\n};\n\nexport type SubmitClaimConfig = {\n /**\n * The sanitized and validated data to be submitted.\n */\n data: CreateClaimRequest;\n /**\n * The headers to be used in the request.\n */\n headers: Record<string, string>;\n /**\n * The HTTP method to submit.\n */\n method: 'POST';\n /**\n * The URL to submit the claim to.\n */\n url: string;\n};\n\nexport type GenerateSignatureMessageResponse = {\n message: string;\n nonce: string;\n};\n"]}
1
+ {"version":3,"file":"types.cjs","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { Hex } from '@metamask/utils';\n\nimport type { ClaimStatusEnum } from './constants';\n\nexport type Attachment = {\n publicUrl: string;\n contentType: string;\n originalname: string;\n};\n\nexport type ClaimsConfigurations = {\n /**\n * The number of days the claim is valid for submission.\n */\n validSubmissionWindowDays: number;\n\n /**\n * List of supported chain IDs in hexadecimal format.\n */\n supportedNetworks: `0x${string}`[];\n};\n\nexport type ClaimsConfigurationsResponse = Omit<\n ClaimsConfigurations,\n 'supportedNetworks'\n> & {\n /**\n * List of supported chain IDs.\n * Claims API response for `supportedNetworks` field (in decimal format).\n */\n networks: number[];\n};\n\nexport type Claim = {\n id: string;\n shortId: string;\n chainId: string;\n email: string;\n impactedWalletAddress: Hex;\n impactedTxHash: Hex;\n reimbursementWalletAddress: Hex;\n description: string;\n signature: Hex;\n attachments?: Attachment[];\n status: ClaimStatusEnum;\n createdAt: string;\n updatedAt: string;\n intercomId?: string;\n};\n\nexport type ClaimDraft = Partial<\n Omit<\n Claim,\n | 'id'\n | 'shortId'\n | 'createdAt'\n | 'updatedAt'\n | 'intercomId'\n | 'status'\n | 'attachments'\n >\n> & {\n /**\n * The draft ID.\n */\n draftId: string;\n /**\n * The draft name.\n */\n draftName?: string;\n};\n\nexport type CreateClaimRequest = Omit<\n Claim,\n 'id' | 'shortId' | 'createdAt' | 'updatedAt' | 'intercomId' | 'status'\n>;\n\nexport type ClaimsControllerState = {\n /**\n * List of claims.\n */\n claims: Claim[];\n\n /**\n * The claims configurations.\n * This is used to store the claims configurations fetched from the backend.\n */\n claimsConfigurations: ClaimsConfigurations;\n\n /**\n * List of claim drafts before submission.\n */\n drafts: ClaimDraft[];\n};\n\nexport type SubmitClaimConfig = {\n /**\n * The sanitized and validated data to be submitted.\n */\n data: CreateClaimRequest;\n /**\n * The headers to be used in the request.\n */\n headers: Record<string, string>;\n /**\n * The HTTP method to submit.\n */\n method: 'POST';\n /**\n * The URL to submit the claim to.\n */\n url: string;\n};\n\nexport type GenerateSignatureMessageResponse = {\n message: string;\n nonce: string;\n};\n"]}
package/dist/types.d.cts CHANGED
@@ -38,6 +38,16 @@ export type Claim = {
38
38
  updatedAt: string;
39
39
  intercomId?: string;
40
40
  };
41
+ export type ClaimDraft = Partial<Omit<Claim, 'id' | 'shortId' | 'createdAt' | 'updatedAt' | 'intercomId' | 'status' | 'attachments'>> & {
42
+ /**
43
+ * The draft ID.
44
+ */
45
+ draftId: string;
46
+ /**
47
+ * The draft name.
48
+ */
49
+ draftName?: string;
50
+ };
41
51
  export type CreateClaimRequest = Omit<Claim, 'id' | 'shortId' | 'createdAt' | 'updatedAt' | 'intercomId' | 'status'>;
42
52
  export type ClaimsControllerState = {
43
53
  /**
@@ -49,6 +59,10 @@ export type ClaimsControllerState = {
49
59
  * This is used to store the claims configurations fetched from the backend.
50
60
  */
51
61
  claimsConfigurations: ClaimsConfigurations;
62
+ /**
63
+ * List of claim drafts before submission.
64
+ */
65
+ drafts: ClaimDraft[];
52
66
  };
53
67
  export type SubmitClaimConfig = {
54
68
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.cts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,wBAAwB;AAE3C,OAAO,KAAK,EAAE,eAAe,EAAE,wBAAoB;AAEnD,MAAM,MAAM,UAAU,GAAG;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC;;OAEG;IACH,yBAAyB,EAAE,MAAM,CAAC;IAElC;;OAEG;IACH,iBAAiB,EAAE,KAAK,MAAM,EAAE,EAAE,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,4BAA4B,GAAG,IAAI,CAC7C,oBAAoB,EACpB,mBAAmB,CACpB,GAAG;IACF;;;OAGG;IACH,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,KAAK,GAAG;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,qBAAqB,EAAE,GAAG,CAAC;IAC3B,cAAc,EAAE,GAAG,CAAC;IACpB,0BAA0B,EAAE,GAAG,CAAC;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,GAAG,CAAC;IACf,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;IAC3B,MAAM,EAAE,eAAe,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,IAAI,CACnC,KAAK,EACL,IAAI,GAAG,SAAS,GAAG,WAAW,GAAG,WAAW,GAAG,YAAY,GAAG,QAAQ,CACvE,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC;;OAEG;IACH,MAAM,EAAE,KAAK,EAAE,CAAC;IAEhB;;;OAGG;IACH,oBAAoB,EAAE,oBAAoB,CAAC;CAC5C,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B;;OAEG;IACH,IAAI,EAAE,kBAAkB,CAAC;IACzB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,gCAAgC,GAAG;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC"}
1
+ {"version":3,"file":"types.d.cts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,wBAAwB;AAE3C,OAAO,KAAK,EAAE,eAAe,EAAE,wBAAoB;AAEnD,MAAM,MAAM,UAAU,GAAG;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC;;OAEG;IACH,yBAAyB,EAAE,MAAM,CAAC;IAElC;;OAEG;IACH,iBAAiB,EAAE,KAAK,MAAM,EAAE,EAAE,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,4BAA4B,GAAG,IAAI,CAC7C,oBAAoB,EACpB,mBAAmB,CACpB,GAAG;IACF;;;OAGG;IACH,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,KAAK,GAAG;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,qBAAqB,EAAE,GAAG,CAAC;IAC3B,cAAc,EAAE,GAAG,CAAC;IACpB,0BAA0B,EAAE,GAAG,CAAC;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,GAAG,CAAC;IACf,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;IAC3B,MAAM,EAAE,eAAe,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,OAAO,CAC9B,IAAI,CACF,KAAK,EACH,IAAI,GACJ,SAAS,GACT,WAAW,GACX,WAAW,GACX,YAAY,GACZ,QAAQ,GACR,aAAa,CAChB,CACF,GAAG;IACF;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,IAAI,CACnC,KAAK,EACL,IAAI,GAAG,SAAS,GAAG,WAAW,GAAG,WAAW,GAAG,YAAY,GAAG,QAAQ,CACvE,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC;;OAEG;IACH,MAAM,EAAE,KAAK,EAAE,CAAC;IAEhB;;;OAGG;IACH,oBAAoB,EAAE,oBAAoB,CAAC;IAE3C;;OAEG;IACH,MAAM,EAAE,UAAU,EAAE,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B;;OAEG;IACH,IAAI,EAAE,kBAAkB,CAAC;IACzB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,gCAAgC,GAAG;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC"}
package/dist/types.d.mts CHANGED
@@ -38,6 +38,16 @@ export type Claim = {
38
38
  updatedAt: string;
39
39
  intercomId?: string;
40
40
  };
41
+ export type ClaimDraft = Partial<Omit<Claim, 'id' | 'shortId' | 'createdAt' | 'updatedAt' | 'intercomId' | 'status' | 'attachments'>> & {
42
+ /**
43
+ * The draft ID.
44
+ */
45
+ draftId: string;
46
+ /**
47
+ * The draft name.
48
+ */
49
+ draftName?: string;
50
+ };
41
51
  export type CreateClaimRequest = Omit<Claim, 'id' | 'shortId' | 'createdAt' | 'updatedAt' | 'intercomId' | 'status'>;
42
52
  export type ClaimsControllerState = {
43
53
  /**
@@ -49,6 +59,10 @@ export type ClaimsControllerState = {
49
59
  * This is used to store the claims configurations fetched from the backend.
50
60
  */
51
61
  claimsConfigurations: ClaimsConfigurations;
62
+ /**
63
+ * List of claim drafts before submission.
64
+ */
65
+ drafts: ClaimDraft[];
52
66
  };
53
67
  export type SubmitClaimConfig = {
54
68
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.mts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,wBAAwB;AAE3C,OAAO,KAAK,EAAE,eAAe,EAAE,wBAAoB;AAEnD,MAAM,MAAM,UAAU,GAAG;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC;;OAEG;IACH,yBAAyB,EAAE,MAAM,CAAC;IAElC;;OAEG;IACH,iBAAiB,EAAE,KAAK,MAAM,EAAE,EAAE,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,4BAA4B,GAAG,IAAI,CAC7C,oBAAoB,EACpB,mBAAmB,CACpB,GAAG;IACF;;;OAGG;IACH,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,KAAK,GAAG;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,qBAAqB,EAAE,GAAG,CAAC;IAC3B,cAAc,EAAE,GAAG,CAAC;IACpB,0BAA0B,EAAE,GAAG,CAAC;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,GAAG,CAAC;IACf,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;IAC3B,MAAM,EAAE,eAAe,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,IAAI,CACnC,KAAK,EACL,IAAI,GAAG,SAAS,GAAG,WAAW,GAAG,WAAW,GAAG,YAAY,GAAG,QAAQ,CACvE,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC;;OAEG;IACH,MAAM,EAAE,KAAK,EAAE,CAAC;IAEhB;;;OAGG;IACH,oBAAoB,EAAE,oBAAoB,CAAC;CAC5C,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B;;OAEG;IACH,IAAI,EAAE,kBAAkB,CAAC;IACzB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,gCAAgC,GAAG;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC"}
1
+ {"version":3,"file":"types.d.mts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,wBAAwB;AAE3C,OAAO,KAAK,EAAE,eAAe,EAAE,wBAAoB;AAEnD,MAAM,MAAM,UAAU,GAAG;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC;;OAEG;IACH,yBAAyB,EAAE,MAAM,CAAC;IAElC;;OAEG;IACH,iBAAiB,EAAE,KAAK,MAAM,EAAE,EAAE,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,4BAA4B,GAAG,IAAI,CAC7C,oBAAoB,EACpB,mBAAmB,CACpB,GAAG;IACF;;;OAGG;IACH,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,KAAK,GAAG;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,qBAAqB,EAAE,GAAG,CAAC;IAC3B,cAAc,EAAE,GAAG,CAAC;IACpB,0BAA0B,EAAE,GAAG,CAAC;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,GAAG,CAAC;IACf,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;IAC3B,MAAM,EAAE,eAAe,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,OAAO,CAC9B,IAAI,CACF,KAAK,EACH,IAAI,GACJ,SAAS,GACT,WAAW,GACX,WAAW,GACX,YAAY,GACZ,QAAQ,GACR,aAAa,CAChB,CACF,GAAG;IACF;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,IAAI,CACnC,KAAK,EACL,IAAI,GAAG,SAAS,GAAG,WAAW,GAAG,WAAW,GAAG,YAAY,GAAG,QAAQ,CACvE,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC;;OAEG;IACH,MAAM,EAAE,KAAK,EAAE,CAAC;IAEhB;;;OAGG;IACH,oBAAoB,EAAE,oBAAoB,CAAC;IAE3C;;OAEG;IACH,MAAM,EAAE,UAAU,EAAE,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B;;OAEG;IACH,IAAI,EAAE,kBAAkB,CAAC;IACzB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,gCAAgC,GAAG;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.mjs","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { Hex } from '@metamask/utils';\n\nimport type { ClaimStatusEnum } from './constants';\n\nexport type Attachment = {\n publicUrl: string;\n contentType: string;\n originalname: string;\n};\n\nexport type ClaimsConfigurations = {\n /**\n * The number of days the claim is valid for submission.\n */\n validSubmissionWindowDays: number;\n\n /**\n * List of supported chain IDs in hexadecimal format.\n */\n supportedNetworks: `0x${string}`[];\n};\n\nexport type ClaimsConfigurationsResponse = Omit<\n ClaimsConfigurations,\n 'supportedNetworks'\n> & {\n /**\n * List of supported chain IDs.\n * Claims API response for `supportedNetworks` field (in decimal format).\n */\n networks: number[];\n};\n\nexport type Claim = {\n id: string;\n shortId: string;\n chainId: string;\n email: string;\n impactedWalletAddress: Hex;\n impactedTxHash: Hex;\n reimbursementWalletAddress: Hex;\n description: string;\n signature: Hex;\n attachments?: Attachment[];\n status: ClaimStatusEnum;\n createdAt: string;\n updatedAt: string;\n intercomId?: string;\n};\n\nexport type CreateClaimRequest = Omit<\n Claim,\n 'id' | 'shortId' | 'createdAt' | 'updatedAt' | 'intercomId' | 'status'\n>;\n\nexport type ClaimsControllerState = {\n /**\n * List of claims.\n */\n claims: Claim[];\n\n /**\n * The claims configurations.\n * This is used to store the claims configurations fetched from the backend.\n */\n claimsConfigurations: ClaimsConfigurations;\n};\n\nexport type SubmitClaimConfig = {\n /**\n * The sanitized and validated data to be submitted.\n */\n data: CreateClaimRequest;\n /**\n * The headers to be used in the request.\n */\n headers: Record<string, string>;\n /**\n * The HTTP method to submit.\n */\n method: 'POST';\n /**\n * The URL to submit the claim to.\n */\n url: string;\n};\n\nexport type GenerateSignatureMessageResponse = {\n message: string;\n nonce: string;\n};\n"]}
1
+ {"version":3,"file":"types.mjs","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { Hex } from '@metamask/utils';\n\nimport type { ClaimStatusEnum } from './constants';\n\nexport type Attachment = {\n publicUrl: string;\n contentType: string;\n originalname: string;\n};\n\nexport type ClaimsConfigurations = {\n /**\n * The number of days the claim is valid for submission.\n */\n validSubmissionWindowDays: number;\n\n /**\n * List of supported chain IDs in hexadecimal format.\n */\n supportedNetworks: `0x${string}`[];\n};\n\nexport type ClaimsConfigurationsResponse = Omit<\n ClaimsConfigurations,\n 'supportedNetworks'\n> & {\n /**\n * List of supported chain IDs.\n * Claims API response for `supportedNetworks` field (in decimal format).\n */\n networks: number[];\n};\n\nexport type Claim = {\n id: string;\n shortId: string;\n chainId: string;\n email: string;\n impactedWalletAddress: Hex;\n impactedTxHash: Hex;\n reimbursementWalletAddress: Hex;\n description: string;\n signature: Hex;\n attachments?: Attachment[];\n status: ClaimStatusEnum;\n createdAt: string;\n updatedAt: string;\n intercomId?: string;\n};\n\nexport type ClaimDraft = Partial<\n Omit<\n Claim,\n | 'id'\n | 'shortId'\n | 'createdAt'\n | 'updatedAt'\n | 'intercomId'\n | 'status'\n | 'attachments'\n >\n> & {\n /**\n * The draft ID.\n */\n draftId: string;\n /**\n * The draft name.\n */\n draftName?: string;\n};\n\nexport type CreateClaimRequest = Omit<\n Claim,\n 'id' | 'shortId' | 'createdAt' | 'updatedAt' | 'intercomId' | 'status'\n>;\n\nexport type ClaimsControllerState = {\n /**\n * List of claims.\n */\n claims: Claim[];\n\n /**\n * The claims configurations.\n * This is used to store the claims configurations fetched from the backend.\n */\n claimsConfigurations: ClaimsConfigurations;\n\n /**\n * List of claim drafts before submission.\n */\n drafts: ClaimDraft[];\n};\n\nexport type SubmitClaimConfig = {\n /**\n * The sanitized and validated data to be submitted.\n */\n data: CreateClaimRequest;\n /**\n * The headers to be used in the request.\n */\n headers: Record<string, string>;\n /**\n * The HTTP method to submit.\n */\n method: 'POST';\n /**\n * The URL to submit the claim to.\n */\n url: string;\n};\n\nexport type GenerateSignatureMessageResponse = {\n message: string;\n nonce: string;\n};\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@metamask-previews/claims-controller",
3
- "version": "0.2.0-preview-cd26c284",
3
+ "version": "0.2.0-preview-9379dbe4",
4
4
  "description": "Controller handling shield subscription claims logic",
5
5
  "keywords": [
6
6
  "MetaMask",