@overmap-ai/core 1.0.43-projects-licensing.3 → 1.0.43

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/dist/sdk/sdk.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { AttachmentService, AuthService, CategoryService, ComponentService, ComponentStageCompletionService, ComponentStageService, ComponentTypeService, EmailVerificationService, FileService, IssueCommentService, IssueService, MainService, OrganizationAccessService, ProjectAccessService, ProjectFileService, ProjectService, UserFormService, UserFormSubmissionService, WorkspaceService, OrganizationService, EmailDomainsService, LicenseService } from "./services";
1
+ import { AttachmentService, AuthService, CategoryService, ComponentService, ComponentStageCompletionService, ComponentStageService, ComponentTypeService, EmailVerificationService, FileService, IssueCommentService, IssueService, MainService, OrganizationAccessService, ProjectAccessService, ProjectFileService, ProjectService, UserFormService, UserFormSubmissionService, WorkspaceService, OrganizationService, EmailDomainsService } from "./services";
2
2
  import { ToolkitStore } from "@reduxjs/toolkit/dist/configureStore.js";
3
3
  import { RootState } from "../typings";
4
4
  export declare class OvermapSDK {
@@ -26,6 +26,5 @@ export declare class OvermapSDK {
26
26
  projectFiles: ProjectFileService;
27
27
  emailVerification: EmailVerificationService;
28
28
  emailDomains: EmailDomainsService;
29
- licenses: LicenseService;
30
29
  }
31
30
  export declare const makeClient: (apiUrl: string, store: ToolkitStore<RootState>) => OvermapSDK;
@@ -1,17 +1,39 @@
1
1
  import { BaseApiService } from "./BaseApiService";
2
- import type { OptimisticGenericResult, OptimisticModelResult, OptimisticMultipleModelResult } from "../typings";
3
- import { IssueAttachment, MaybeObjectURL, PhotoAttachmentPayload } from "../../typings";
2
+ import type { OptimisticModelResult } from "../typings";
3
+ import { ComponentAttachment, ComponentTypeAttachment, Created, IssueAttachment, MaybeObjectURL, AttachmentPayload, Stored } from "../../typings";
4
4
  /**
5
5
  * Handles creation and caching of attachments
6
6
  */
7
+ interface StoredAttachments {
8
+ issue_attachments: Stored<IssueAttachment>[];
9
+ component_attachments: Stored<ComponentAttachment>[];
10
+ component_type_attachments: Stored<ComponentTypeAttachment>[];
11
+ }
12
+ interface CreatedAttachments {
13
+ issue_attachments: Created<IssueAttachment>[];
14
+ component_attachments: Created<ComponentAttachment>[];
15
+ component_type_attachments: Created<ComponentTypeAttachment>[];
16
+ }
7
17
  export declare class AttachmentService extends BaseApiService {
8
- fetchAll(projectId: number): OptimisticMultipleModelResult<IssueAttachment>;
9
- add(attachmentPayload: PhotoAttachmentPayload): Promise<OptimisticModelResult<IssueAttachment>>;
10
- attachFilesToIssue(filesToSubmit: File[], issueId: string): Promise<PromiseSettledResult<OptimisticGenericResult<IssueAttachment>>[]>;
11
- replaceFile(attachmentId: string, newFile: MaybeObjectURL<File>): Promise<OptimisticModelResult<IssueAttachment>>;
18
+ fetchAll(projectId: number): [StoredAttachments, Promise<CreatedAttachments>];
19
+ addIssueAttachment(attachmentPayload: AttachmentPayload<IssueAttachment>): Promise<OptimisticModelResult<IssueAttachment>>;
20
+ addComponentAttachment(attachmentPayload: AttachmentPayload<ComponentAttachment>): Promise<OptimisticModelResult<ComponentAttachment>>;
21
+ addComponentTypeAttachment(attachmentPayload: AttachmentPayload<ComponentTypeAttachment>): Promise<OptimisticModelResult<ComponentTypeAttachment>>;
22
+ /** the outer Promise is needed to await the hashing of each file, which is required before offline use. If wanting to
23
+ * attach promise handlers to the request to add the attachment in the backend, apply it on the promise returned from the
24
+ * OptimisticModelResult. */
25
+ attachFilesToIssue(filesToSubmit: File[], issueId: string): Promise<OptimisticModelResult<IssueAttachment>>[];
26
+ attachFilesToComponent(filesToSubmit: File[], componentId: string): Promise<OptimisticModelResult<ComponentAttachment>>[];
27
+ attachFilesToComponentType(filesToSubmit: File[], componentTypeId: string): Promise<OptimisticModelResult<ComponentTypeAttachment>>[];
28
+ replaceIssueAttachmentFile(attachmentId: string, newFile: MaybeObjectURL<File>): Promise<OptimisticModelResult<IssueAttachment>>;
29
+ replaceComponentAttachmentFile(attachmentId: string, newFile: MaybeObjectURL<File>): Promise<OptimisticModelResult<ComponentAttachment>>;
30
+ replaceComponentTypeAttachmentFile(attachmentId: string, newFile: MaybeObjectURL<File>): Promise<OptimisticModelResult<ComponentTypeAttachment>>;
12
31
  /**
13
32
  * Deletes an attachment and associated data in the cloud, in the Redux store and the cache.
14
- * @param attachmentId
33
+ * @param issueAttachmentId
15
34
  */
16
- delete(attachmentId: string): Promise<undefined>;
35
+ deleteIssueAttachment(issueAttachmentId: string): Promise<undefined>;
36
+ deleteComponentAttachment(componentAttachmentId: string): Promise<undefined>;
37
+ deleteComponentTypeAttachment(componentTypeAttachmentId: string): Promise<undefined>;
17
38
  }
39
+ export {};
@@ -1,5 +1,5 @@
1
1
  import { BaseApiService } from "./BaseApiService";
2
- import { Category, License, Organization, Project, User } from "../../typings";
2
+ import { Category, Organization, Project, User } from "../../typings";
3
3
  export interface InitialAPIData {
4
4
  projects: (Project & {
5
5
  workspaces: {
@@ -13,7 +13,6 @@ export interface InitialAPIData {
13
13
  organizations: Organization[];
14
14
  user: User;
15
15
  project_owners: User[];
16
- licenses: License[];
17
16
  }
18
17
  export declare class MainService extends BaseApiService {
19
18
  fetchInitialData(replaceExisting: boolean, uuid?: string): Promise<InitialAPIData>;
@@ -1,4 +1,5 @@
1
1
  import { Project } from '../../typings/models/projects';
2
+ import type { ApiSuccessResult } from "../typings";
2
3
  import { BaseApiService } from "./BaseApiService";
3
4
  import { Payload } from "../../typings";
4
5
  interface JoinProjectResponse {
@@ -13,9 +14,9 @@ export declare class ProjectService extends BaseApiService {
13
14
  */
14
15
  add(project: Payload<Project>): Promise<Project>;
15
16
  update(project: Project): Promise<Project>;
16
- delete(projectId: number): Promise<void>;
17
+ delete(projectId: number): Promise<ApiSuccessResult<undefined>>;
17
18
  invite(projectId: number, email: string): Promise<undefined>;
18
- joinProject(projectId: number, userId: number, inviteCode: string): Promise<JoinProjectResponse>;
19
+ joinProject(projectId: number, userId: number, inviteCode: string): Promise<ApiSuccessResult<JoinProjectResponse>>;
19
20
  acceptInvite(projectId: number): Promise<void>;
20
21
  }
21
22
  export {};
@@ -20,4 +20,3 @@ export * from "./FileService";
20
20
  export * from "./EmailVerificationService";
21
21
  export * from "./EmailDomainsService";
22
22
  export * from "./OrganizationService";
23
- export * from "./LicenseService.ts";
@@ -64,7 +64,6 @@ export declare const selectCategories: ((state: import("redux").EmptyObject & {
64
64
  userReducer: import('..').UserState;
65
65
  workspaceReducer: import('..').WorkspaceState;
66
66
  emailDomainsReducer: import('..').EmailDomainState;
67
- licenseReducer: import('..').LicenseState;
68
67
  } & {
69
68
  offline: import("@redux-offline/redux-offline/lib/types").OfflineState;
70
69
  }) => Category[]) & import("reselect").OutputSelectorFields<(args_0: Record<string, Category>, args_1: string | null) => Category[], {
@@ -1,7 +1,8 @@
1
1
  import { PayloadAction, Reducer } from "@reduxjs/toolkit";
2
- import { Component, ComponentType, RootState, Selector, SelectorWithArgs, Submitted } from "../../typings";
2
+ import { Component, ComponentAttachment, ComponentType, RootState, Selector, SelectorWithArgs, Stored, Submitted } from "../../typings";
3
3
  export interface ComponentState {
4
4
  components: Record<string, Component | Submitted<Component>>;
5
+ attachments: Record<string, Stored<ComponentAttachment>>;
5
6
  }
6
7
  export declare const componentSlice: import("@reduxjs/toolkit").Slice<ComponentState, {
7
8
  addComponent: (state: import("immer/dist/internal.js").WritableDraft<ComponentState>, action: {
@@ -13,6 +14,30 @@ export declare const componentSlice: import("@reduxjs/toolkit").Slice<ComponentS
13
14
  setComponents: (state: import("immer/dist/internal.js").WritableDraft<ComponentState>, action: {
14
15
  payload: Component[];
15
16
  }) => void;
17
+ setComponentAttachments: (state: ComponentState, action: {
18
+ payload: import('../../typings/models/issues.ts').Created<ComponentAttachment>[];
19
+ type: string;
20
+ }) => void;
21
+ addComponentAttachment: (state: ComponentState, action: {
22
+ payload: Submitted<ComponentAttachment>;
23
+ type: string;
24
+ }) => void;
25
+ addComponentAttachments: (state: ComponentState, action: {
26
+ payload: Submitted<ComponentAttachment>[];
27
+ type: string;
28
+ }) => void;
29
+ updateComponentAttachment: (state: ComponentState, action: {
30
+ payload: Submitted<ComponentAttachment>;
31
+ type: string;
32
+ }) => void;
33
+ removeComponentAttachment: (state: ComponentState, action: {
34
+ payload: string;
35
+ type: string;
36
+ }) => void;
37
+ removeComponentAttachments: (state: ComponentState, action: {
38
+ payload: string[];
39
+ type: string;
40
+ }) => void;
16
41
  updateComponent: (state: import("immer/dist/internal.js").WritableDraft<ComponentState>, action: {
17
42
  payload: Component;
18
43
  }) => void;
@@ -27,5 +52,8 @@ export declare const selectComponentTypeFromComponents: Selector<Record<string,
27
52
  export declare const selectComponentsByType: SelectorWithArgs<string, Component[]>;
28
53
  export declare const selectNumberOfComponentsOfComponentType: SelectorWithArgs<string | undefined, number>;
29
54
  export declare const selectComponentTypesFromIds: SelectorWithArgs<string[], ComponentType[]>;
30
- export declare const addComponent: import("@reduxjs/toolkit").ActionCreatorWithPayload<Component, "components/addComponent">, updateComponent: import("@reduxjs/toolkit").ActionCreatorWithPayload<Component, "components/updateComponent">, removeComponent: import("@reduxjs/toolkit").ActionCreatorWithPayload<string, "components/removeComponent">, addComponentsInBatches: import("@reduxjs/toolkit").ActionCreatorWithPayload<(Component | Submitted<Component>)[], "components/addComponentsInBatches">, setComponents: import("@reduxjs/toolkit").ActionCreatorWithPayload<Component[], "components/setComponents">, removeAllComponentsOfType: import("@reduxjs/toolkit").ActionCreatorWithPayload<string, "components/removeAllComponentsOfType">;
55
+ export declare const selectComponentAttachmentMapping: (state: RootState) => Record<string, Stored<ComponentAttachment>>;
56
+ export declare const selectAllComponentAttachments: Selector<Stored<ComponentAttachment>[]>;
57
+ export declare const selectAttachmentsOfComponent: (args: string) => (state: RootState) => Stored<ComponentAttachment>[];
58
+ export declare const addComponent: import("@reduxjs/toolkit").ActionCreatorWithPayload<Component, "components/addComponent">, updateComponent: import("@reduxjs/toolkit").ActionCreatorWithPayload<Component, "components/updateComponent">, removeComponent: import("@reduxjs/toolkit").ActionCreatorWithPayload<string, "components/removeComponent">, addComponentsInBatches: import("@reduxjs/toolkit").ActionCreatorWithPayload<(Component | Submitted<Component>)[], "components/addComponentsInBatches">, setComponents: import("@reduxjs/toolkit").ActionCreatorWithPayload<Component[], "components/setComponents">, setComponentAttachments: import("@reduxjs/toolkit").ActionCreatorWithPayload<import('../../typings/models/issues.ts').Created<ComponentAttachment>[], "components/setComponentAttachments">, addComponentAttachment: import("@reduxjs/toolkit").ActionCreatorWithPayload<Submitted<ComponentAttachment>, "components/addComponentAttachment">, addComponentAttachments: import("@reduxjs/toolkit").ActionCreatorWithPayload<Submitted<ComponentAttachment>[], "components/addComponentAttachments">, updateComponentAttachment: import("@reduxjs/toolkit").ActionCreatorWithPayload<Submitted<ComponentAttachment>, "components/updateComponentAttachment">, removeComponentAttachment: import("@reduxjs/toolkit").ActionCreatorWithPayload<string, "components/removeComponentAttachment">, removeComponentAttachments: import("@reduxjs/toolkit").ActionCreatorWithPayload<string[], "components/removeComponentAttachments">, removeAllComponentsOfType: import("@reduxjs/toolkit").ActionCreatorWithPayload<string, "components/removeAllComponentsOfType">;
31
59
  export declare const componentReducer: Reducer<ComponentState>;
@@ -1,8 +1,9 @@
1
1
  import type { Reducer } from "@reduxjs/toolkit";
2
- import type { ComponentType, RootState, SelectorWithArgs } from "../../typings";
2
+ import type { ComponentType, ComponentTypeAttachment, RootState, Selector, SelectorWithArgs, Stored } from "../../typings";
3
3
  export interface ComponentTypeState {
4
4
  componentTypes: Record<string, ComponentType>;
5
5
  hiddenComponentTypeIds: Record<string, boolean>;
6
+ attachments: Record<string, ComponentTypeAttachment>;
6
7
  }
7
8
  export declare const componentTypeSlice: import("@reduxjs/toolkit").Slice<ComponentTypeState, {
8
9
  addComponentType: (state: import("immer/dist/internal.js").WritableDraft<ComponentTypeState>, action: {
@@ -11,6 +12,30 @@ export declare const componentTypeSlice: import("@reduxjs/toolkit").Slice<Compon
11
12
  setComponentTypes: (state: import("immer/dist/internal.js").WritableDraft<ComponentTypeState>, action: {
12
13
  payload: ComponentType[];
13
14
  }) => void;
15
+ setComponentTypeAttachments: (state: ComponentTypeState, action: {
16
+ payload: import('../../typings/models/issues.ts').Created<ComponentTypeAttachment>[];
17
+ type: string;
18
+ }) => void;
19
+ addComponentTypeAttachment: (state: ComponentTypeState, action: {
20
+ payload: import('../../typings/models/issues.ts').Submitted<ComponentTypeAttachment>;
21
+ type: string;
22
+ }) => void;
23
+ addComponentTypeAttachments: (state: ComponentTypeState, action: {
24
+ payload: import('../../typings/models/issues.ts').Submitted<ComponentTypeAttachment>[];
25
+ type: string;
26
+ }) => void;
27
+ updateComponentTypeAttachment: (state: ComponentTypeState, action: {
28
+ payload: import('../../typings/models/issues.ts').Submitted<ComponentTypeAttachment>;
29
+ type: string;
30
+ }) => void;
31
+ removeComponentTypeAttachment: (state: ComponentTypeState, action: {
32
+ payload: string;
33
+ type: string;
34
+ }) => void;
35
+ removeComponentTypeAttachments: (state: ComponentTypeState, action: {
36
+ payload: string[];
37
+ type: string;
38
+ }) => void;
14
39
  toggleComponentTypeVisibility: (state: import("immer/dist/internal.js").WritableDraft<ComponentTypeState>, action: {
15
40
  payload: string;
16
41
  }) => void;
@@ -29,6 +54,9 @@ interface selectNumberOfComponentTypesMatchingCaseInsensitiveNameProps {
29
54
  export declare const selectNumberOfComponentTypesMatchingCaseInsensitiveName: SelectorWithArgs<selectNumberOfComponentTypesMatchingCaseInsensitiveNameProps, number>;
30
55
  export declare const selectComponentTypesByName: SelectorWithArgs<string, ComponentType[]>;
31
56
  export declare const selectHiddenComponentTypeIds: AppSelector<Record<string, boolean | undefined>>;
32
- export declare const addComponentType: import("@reduxjs/toolkit").ActionCreatorWithPayload<ComponentType, "componentTypes/addComponentType">, setComponentTypes: import("@reduxjs/toolkit").ActionCreatorWithPayload<ComponentType[], "componentTypes/setComponentTypes">, toggleComponentTypeVisibility: import("@reduxjs/toolkit").ActionCreatorWithPayload<string, "componentTypes/toggleComponentTypeVisibility">, deleteComponentType: import("@reduxjs/toolkit").ActionCreatorWithPayload<string, "componentTypes/deleteComponentType">;
57
+ export declare const selectComponentTypeAttachmentMapping: (state: RootState) => Record<string, ComponentTypeAttachment>;
58
+ export declare const selectAllComponentTypeAttachments: Selector<Stored<ComponentTypeAttachment>[]>;
59
+ export declare const selectAttachmentsOfComponentType: (args: string) => (state: RootState) => Stored<ComponentTypeAttachment>[];
60
+ export declare const addComponentType: import("@reduxjs/toolkit").ActionCreatorWithPayload<ComponentType, "componentTypes/addComponentType">, setComponentTypes: import("@reduxjs/toolkit").ActionCreatorWithPayload<ComponentType[], "componentTypes/setComponentTypes">, setComponentTypeAttachments: import("@reduxjs/toolkit").ActionCreatorWithPayload<import('../../typings/models/issues.ts').Created<ComponentTypeAttachment>[], "componentTypes/setComponentTypeAttachments">, addComponentTypeAttachment: import("@reduxjs/toolkit").ActionCreatorWithPayload<import('../../typings/models/issues.ts').Submitted<ComponentTypeAttachment>, "componentTypes/addComponentTypeAttachment">, addComponentTypeAttachments: import("@reduxjs/toolkit").ActionCreatorWithPayload<import('../../typings/models/issues.ts').Submitted<ComponentTypeAttachment>[], "componentTypes/addComponentTypeAttachments">, updateComponentTypeAttachment: import("@reduxjs/toolkit").ActionCreatorWithPayload<import('../../typings/models/issues.ts').Submitted<ComponentTypeAttachment>, "componentTypes/updateComponentTypeAttachment">, removeComponentTypeAttachment: import("@reduxjs/toolkit").ActionCreatorWithPayload<string, "componentTypes/removeComponentTypeAttachment">, removeComponentTypeAttachments: import("@reduxjs/toolkit").ActionCreatorWithPayload<string[], "componentTypes/removeComponentTypeAttachments">, toggleComponentTypeVisibility: import("@reduxjs/toolkit").ActionCreatorWithPayload<string, "componentTypes/toggleComponentTypeVisibility">, deleteComponentType: import("@reduxjs/toolkit").ActionCreatorWithPayload<string, "componentTypes/deleteComponentType">;
33
61
  export declare const componentTypeReducer: Reducer<ComponentTypeState>;
34
62
  export {};
@@ -19,4 +19,3 @@ export * from "./userSlice";
19
19
  export * from "./workspaceSlice";
20
20
  export * from "./organizationAccessSlice";
21
21
  export * from "./emailDomainsSlice";
22
- export * from "./licenseSlice";
@@ -12,6 +12,7 @@ export interface IssueState {
12
12
  comments: Record<string, Stored<IssueComment>>;
13
13
  visibleStatuses: IssueStatus[];
14
14
  visibleUserIds: (number | null)[] | null;
15
+ isFetchingInitialData: boolean;
15
16
  recentIssueIds: RecentIssueId[];
16
17
  activeIssueId: string | null;
17
18
  }
@@ -24,23 +25,39 @@ export declare const issueSlice: import("@reduxjs/toolkit").Slice<IssueState, {
24
25
  setIssues: (state: import("immer/dist/internal.js").WritableDraft<IssueState>, action: {
25
26
  payload: Created<Issue>[];
26
27
  }) => void;
27
- setAttachments: (state: import("immer/dist/internal.js").WritableDraft<IssueState>, action: PayloadAction<Created<IssueAttachment>[]>) => void;
28
+ setIssueAttachments: (state: IssueState, action: {
29
+ payload: Created<IssueAttachment>[];
30
+ type: string;
31
+ }) => void;
28
32
  setActiveIssueId: (state: import("immer/dist/internal.js").WritableDraft<IssueState>, action: {
29
33
  payload: string | null;
30
34
  }) => void;
31
35
  addIssue: (state: import("immer/dist/internal.js").WritableDraft<IssueState>, action: {
32
36
  payload: Submitted<Issue>;
33
37
  }) => void;
34
- addAttachment: (state: import("immer/dist/internal.js").WritableDraft<IssueState>, action: PayloadAction<Submitted<IssueAttachment>>) => void;
35
- addAttachments: (state: import("immer/dist/internal.js").WritableDraft<IssueState>, action: PayloadAction<Submitted<IssueAttachment>[]>) => void;
38
+ addIssueAttachment: (state: IssueState, action: {
39
+ payload: Submitted<IssueAttachment>;
40
+ type: string;
41
+ }) => void;
42
+ addIssueAttachments: (state: IssueState, action: {
43
+ payload: Submitted<IssueAttachment>[];
44
+ type: string;
45
+ }) => void;
36
46
  updateIssue: (state: import("immer/dist/internal.js").WritableDraft<IssueState>, action: {
37
47
  payload: Submitted<Partial<Issue>>;
38
48
  }) => void;
39
- updateAttachment: (state: import("immer/dist/internal.js").WritableDraft<IssueState>, action: PayloadAction<Submitted<IssueAttachment>>) => void;
49
+ updateIssueAttachment: (state: IssueState, action: {
50
+ payload: Submitted<IssueAttachment>;
51
+ type: string;
52
+ }) => void;
40
53
  removeIssue: (state: import("immer/dist/internal.js").WritableDraft<IssueState>, action: PayloadAction<string>) => void;
41
- removeAttachment: (state: import("immer/dist/internal.js").WritableDraft<IssueState>, action: PayloadAction<string>) => void;
54
+ removeIssueAttachment: (state: IssueState, action: {
55
+ payload: string;
56
+ type: string;
57
+ }) => void;
42
58
  removeAttachmentsOfIssue: (state: import("immer/dist/internal.js").WritableDraft<IssueState>, action: PayloadAction<string>) => void;
43
59
  setVisibleStatuses: (state: import("immer/dist/internal.js").WritableDraft<IssueState>, action: PayloadAction<IssueStatus[]>) => void;
60
+ setIsFetchingInitialData: (state: import("immer/dist/internal.js").WritableDraft<IssueState>, action: PayloadAction<boolean>) => void;
44
61
  setVisibleUserIds: (state: import("immer/dist/internal.js").WritableDraft<IssueState>, action: {
45
62
  payload: (number | null)[];
46
63
  }) => void;
@@ -54,7 +71,7 @@ export declare const issueSlice: import("@reduxjs/toolkit").Slice<IssueState, {
54
71
  resetRecentIssues: (state: import("immer/dist/internal.js").WritableDraft<IssueState>) => void;
55
72
  removeRecentIssue: (state: import("immer/dist/internal.js").WritableDraft<IssueState>, action: PayloadAction<string>) => void;
56
73
  }, "issues">;
57
- export declare const addAttachment: import("@reduxjs/toolkit").ActionCreatorWithPayload<Submitted<IssueAttachment>, "issues/addAttachment">, addAttachments: import("@reduxjs/toolkit").ActionCreatorWithPayload<Submitted<IssueAttachment>[], "issues/addAttachments">, addIssue: import("@reduxjs/toolkit").ActionCreatorWithPayload<Submitted<Issue>, "issues/addIssue">, addOrReplaceIssueComment: import("@reduxjs/toolkit").ActionCreatorWithPayload<Submitted<IssueComment>, "issues/addOrReplaceIssueComment">, addToRecentIssues: import("@reduxjs/toolkit").ActionCreatorWithPayload<string, "issues/addToRecentIssues">, cleanRecentIssues: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"issues/cleanRecentIssues">, removeAttachment: import("@reduxjs/toolkit").ActionCreatorWithPayload<string, "issues/removeAttachment">, removeAttachmentsOfIssue: import("@reduxjs/toolkit").ActionCreatorWithPayload<string, "issues/removeAttachmentsOfIssue">, removeIssue: import("@reduxjs/toolkit").ActionCreatorWithPayload<string, "issues/removeIssue">, removeIssueComment: import("@reduxjs/toolkit").ActionCreatorWithPayload<string, "issues/removeIssueComment">, removeRecentIssue: import("@reduxjs/toolkit").ActionCreatorWithPayload<string, "issues/removeRecentIssue">, resetRecentIssues: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"issues/resetRecentIssues">, setActiveIssueId: import("@reduxjs/toolkit").ActionCreatorWithPayload<string | null, "issues/setActiveIssueId">, setAttachments: import("@reduxjs/toolkit").ActionCreatorWithPayload<Created<IssueAttachment>[], "issues/setAttachments">, setIssueComments: import("@reduxjs/toolkit").ActionCreatorWithPayload<Created<IssueComment>[], "issues/setIssueComments">, setIssues: import("@reduxjs/toolkit").ActionCreatorWithPayload<Created<Issue>[], "issues/setIssues">, setVisibleStatuses: import("@reduxjs/toolkit").ActionCreatorWithPayload<IssueStatus[], "issues/setVisibleStatuses">, setVisibleUserIds: import("@reduxjs/toolkit").ActionCreatorWithPayload<(number | null)[], "issues/setVisibleUserIds">, updateAttachment: import("@reduxjs/toolkit").ActionCreatorWithPayload<Submitted<IssueAttachment>, "issues/updateAttachment">, updateIssue: import("@reduxjs/toolkit").ActionCreatorWithPayload<Submitted<Partial<Issue>>, "issues/updateIssue">;
74
+ export declare const addIssueAttachment: import("@reduxjs/toolkit").ActionCreatorWithPayload<Submitted<IssueAttachment>, "issues/addIssueAttachment">, addIssueAttachments: import("@reduxjs/toolkit").ActionCreatorWithPayload<Submitted<IssueAttachment>[], "issues/addIssueAttachments">, addIssue: import("@reduxjs/toolkit").ActionCreatorWithPayload<Submitted<Issue>, "issues/addIssue">, addOrReplaceIssueComment: import("@reduxjs/toolkit").ActionCreatorWithPayload<Submitted<IssueComment>, "issues/addOrReplaceIssueComment">, addToRecentIssues: import("@reduxjs/toolkit").ActionCreatorWithPayload<string, "issues/addToRecentIssues">, cleanRecentIssues: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"issues/cleanRecentIssues">, removeIssueAttachment: import("@reduxjs/toolkit").ActionCreatorWithPayload<string, "issues/removeIssueAttachment">, removeAttachmentsOfIssue: import("@reduxjs/toolkit").ActionCreatorWithPayload<string, "issues/removeAttachmentsOfIssue">, removeIssue: import("@reduxjs/toolkit").ActionCreatorWithPayload<string, "issues/removeIssue">, removeIssueComment: import("@reduxjs/toolkit").ActionCreatorWithPayload<string, "issues/removeIssueComment">, removeRecentIssue: import("@reduxjs/toolkit").ActionCreatorWithPayload<string, "issues/removeRecentIssue">, resetRecentIssues: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"issues/resetRecentIssues">, setActiveIssueId: import("@reduxjs/toolkit").ActionCreatorWithPayload<string | null, "issues/setActiveIssueId">, setIssueAttachments: import("@reduxjs/toolkit").ActionCreatorWithPayload<Created<IssueAttachment>[], "issues/setIssueAttachments">, setIsFetchingInitialData: import("@reduxjs/toolkit").ActionCreatorWithPayload<boolean, "issues/setIsFetchingInitialData">, setIssueComments: import("@reduxjs/toolkit").ActionCreatorWithPayload<Created<IssueComment>[], "issues/setIssueComments">, setIssues: import("@reduxjs/toolkit").ActionCreatorWithPayload<Created<Issue>[], "issues/setIssues">, setVisibleStatuses: import("@reduxjs/toolkit").ActionCreatorWithPayload<IssueStatus[], "issues/setVisibleStatuses">, setVisibleUserIds: import("@reduxjs/toolkit").ActionCreatorWithPayload<(number | null)[], "issues/setVisibleUserIds">, updateIssueAttachment: import("@reduxjs/toolkit").ActionCreatorWithPayload<Submitted<IssueAttachment>, "issues/updateIssueAttachment">, updateIssue: import("@reduxjs/toolkit").ActionCreatorWithPayload<Submitted<Partial<Issue>>, "issues/updateIssue">;
58
75
  export interface IssueFilterArgs {
59
76
  filterByAssignedTo: boolean;
60
77
  filterByStatus: boolean;
@@ -74,30 +91,30 @@ export declare const selectCommentMapping: (state: RootState) => Record<string,
74
91
  export declare const selectCommentsOfIssue: (args: string) => (state: RootState) => Stored<IssueComment>[];
75
92
  export declare const selectFileAttachmentsOfIssue: (args: string) => (state: RootState) => Stored<IssueAttachment>[] | undefined;
76
93
  export declare const selectIssue: SelectorWithArgs<string, Stored<Issue> | undefined>;
94
+ export declare const selectIsFetchingInitialData: (state: RootState) => boolean;
77
95
  export declare const selectAllAttachments: ((state: import("redux").EmptyObject & {
78
- versioning: import('../slices/versioningSlice').VersioningState;
79
- fileReducer: import('..').FileState;
80
- authReducer: import('..').AuthState;
96
+ versioning: import('../slices/versioningSlice.ts').VersioningState;
97
+ fileReducer: import("index.ts").FileState;
98
+ authReducer: import("index.ts").AuthState;
81
99
  categoryReducer: import("./categorySlice").CategoryState;
82
- componentReducer: import('..').ComponentState;
83
- componentStageCompletionReducer: import('..').ComponentStageCompletionState;
84
- componentStageReducer: import('..').ComponentStageState;
85
- componentTypeReducer: import('..').ComponentTypeState;
100
+ componentReducer: import("index.ts").ComponentState;
101
+ componentStageCompletionReducer: import("index.ts").ComponentStageCompletionState;
102
+ componentStageReducer: import("index.ts").ComponentStageState;
103
+ componentTypeReducer: import("index.ts").ComponentTypeState;
86
104
  issueReducer: IssueState;
87
- mapReducer: import('..').MapState;
88
- organizationReducer: import('..').OrganizationState;
89
- outboxReducer: import('..').OutboxState;
90
- projectReducer: import('..').ProjectState;
91
- projectAccessReducer: import('..').ProjectAccessState;
92
- organizationAccessReducer: import('..').OrganizationAccessState;
93
- projectFileReducer: import('..').ProjectFileState;
94
- rehydratedReducer: import('..').RehydratedState;
95
- settingReducer: import('..').SettingState;
96
- userFormReducer: import('..').UserFormState;
97
- userReducer: import('..').UserState;
105
+ mapReducer: import("index.ts").MapState;
106
+ organizationReducer: import("index.ts").OrganizationState;
107
+ outboxReducer: import("index.ts").OutboxState;
108
+ projectReducer: import("index.ts").ProjectState;
109
+ projectAccessReducer: import("index.ts").ProjectAccessState;
110
+ organizationAccessReducer: import("index.ts").OrganizationAccessState;
111
+ projectFileReducer: import("index.ts").ProjectFileState;
112
+ rehydratedReducer: import("index.ts").RehydratedState;
113
+ settingReducer: import("index.ts").SettingState;
114
+ userFormReducer: import("index.ts").UserFormState;
115
+ userReducer: import("index.ts").UserState;
98
116
  workspaceReducer: import("./workspaceSlice").WorkspaceState;
99
- emailDomainsReducer: import('..').EmailDomainState;
100
- licenseReducer: import('..').LicenseState;
117
+ emailDomainsReducer: import("index.ts").EmailDomainState;
101
118
  } & {
102
119
  offline: import("@redux-offline/redux-offline/lib/types").OfflineState;
103
120
  }) => Stored<IssueAttachment>[]) & import("reselect").OutputSelectorFields<(args_0: Record<string, Stored<IssueAttachment>>) => Stored<IssueAttachment>[], {
@@ -1,6 +1,6 @@
1
1
  import { Reducer } from "@reduxjs/toolkit";
2
2
  import { Selector, SelectorWithArgs } from '../../typings/store';
3
- import { User, Organization, License, Project } from "../../typings";
3
+ import { User, Organization } from "../../typings";
4
4
  export interface OrganizationState {
5
5
  organizations: Record<number, Organization>;
6
6
  activeOrganizationId: number | null;
@@ -19,13 +19,9 @@ export declare const organizationSlice: import("@reduxjs/toolkit").Slice<Organiz
19
19
  export declare const setOrganizations: import("@reduxjs/toolkit").ActionCreatorWithPayload<Organization[], "organizations/setOrganizations">, setActiveOrganizationId: import("@reduxjs/toolkit").ActionCreatorWithPayload<number, "organizations/setActiveOrganizationId">, updateActiveOrganization: import("@reduxjs/toolkit").ActionCreatorWithPayload<Organization, "organizations/updateActiveOrganization">;
20
20
  export declare const selectActiveOrganizationId: Selector<number | null>;
21
21
  export declare const selectOrganizations: Selector<Organization[]>;
22
- export declare const selectOrganizationsMapping: Selector<Record<number, Organization>>;
23
22
  export declare const selectOrganizationsWithAccess: Selector<Organization[]>;
24
23
  export declare const selectActiveOrganization: Selector<Organization | null>;
25
24
  export declare const selectOrganizationUsersIds: Selector<number[]>;
26
- export declare const selectActiveOrganizationProjects: Selector<Project[]>;
27
- export declare const selectActiveOrganizationLicenses: Selector<License[]>;
28
- export declare const selectSortedOrganizationLicenses: Selector<License[]>;
29
25
  export declare const selectOrganizationUsersAsMapping: Selector<Record<number, User>>;
30
26
  export declare const selectSortedOrganizationUsers: Selector<User[]>;
31
27
  export declare const selectOrganization: SelectorWithArgs<number, Organization | undefined>;
@@ -72,7 +72,6 @@ export declare const selectProjectFiles: ((state: import("redux").EmptyObject &
72
72
  userReducer: import('..').UserState;
73
73
  workspaceReducer: import('..').WorkspaceState;
74
74
  emailDomainsReducer: import('..').EmailDomainState;
75
- licenseReducer: import('..').LicenseState;
76
75
  } & {
77
76
  offline: import("@redux-offline/redux-offline/lib/types").OfflineState;
78
77
  }) => ProjectFile[]) & import("reselect").OutputSelectorFields<(args_0: Record<string, ProjectFile>, args_1: number | null) => ProjectFile[], {
@@ -29,14 +29,8 @@ export declare const projectSlice: import("@reduxjs/toolkit").Slice<ProjectState
29
29
  acceptProjectInvite: (state: import("immer/dist/internal.js").WritableDraft<ProjectState>, action: {
30
30
  payload: number;
31
31
  }) => void;
32
- addActiveProjectIssuesCount: (state: import("immer/dist/internal.js").WritableDraft<ProjectState>, action: {
33
- payload: number;
34
- }) => void;
35
- addActiveProjectFormSubmissionsCount: (state: import("immer/dist/internal.js").WritableDraft<ProjectState>, action: {
36
- payload: number;
37
- }) => void;
38
32
  }, "projects">;
39
- export declare const setProjects: import("@reduxjs/toolkit").ActionCreatorWithPayload<Project[], "projects/setProjects">, updateOrCreateProject: import("@reduxjs/toolkit").ActionCreatorWithPayload<Project, "projects/updateOrCreateProject">, addOrReplaceProjects: import("@reduxjs/toolkit").ActionCreatorWithPayload<Project[], "projects/updateOrCreateProjects">, setActiveProjectId: import("@reduxjs/toolkit").ActionCreatorWithPayload<number | null, "projects/setActiveProjectId">, setCreateProjectType: import("@reduxjs/toolkit").ActionCreatorWithPayload<ProjectType, "projects/setCreateProjectType">, deleteProject: import("@reduxjs/toolkit").ActionCreatorWithPayload<Project, "projects/deleteProject">, acceptProjectInvite: import("@reduxjs/toolkit").ActionCreatorWithPayload<number, "projects/acceptProjectInvite">, addActiveProjectIssuesCount: import("@reduxjs/toolkit").ActionCreatorWithPayload<number, "projects/addActiveProjectIssuesCount">, addActiveProjectFormSubmissionsCount: import("@reduxjs/toolkit").ActionCreatorWithPayload<number, "projects/addActiveProjectFormSubmissionsCount">;
33
+ export declare const setProjects: import("@reduxjs/toolkit").ActionCreatorWithPayload<Project[], "projects/setProjects">, updateOrCreateProject: import("@reduxjs/toolkit").ActionCreatorWithPayload<Project, "projects/updateOrCreateProject">, addOrReplaceProjects: import("@reduxjs/toolkit").ActionCreatorWithPayload<Project[], "projects/updateOrCreateProjects">, setActiveProjectId: import("@reduxjs/toolkit").ActionCreatorWithPayload<number | null, "projects/setActiveProjectId">, setCreateProjectType: import("@reduxjs/toolkit").ActionCreatorWithPayload<ProjectType, "projects/setCreateProjectType">, deleteProject: import("@reduxjs/toolkit").ActionCreatorWithPayload<Project, "projects/deleteProject">, acceptProjectInvite: import("@reduxjs/toolkit").ActionCreatorWithPayload<number, "projects/acceptProjectInvite">;
40
34
  export declare const selectProjects: Selector<Record<number, Project>>;
41
35
  export declare const selectActiveProjectId: (state: RootState) => number | null;
42
36
  export declare const selectActiveProject: (state: RootState) => Project | null;
@@ -7,8 +7,6 @@ export interface SettingState {
7
7
  svgLayout: boolean;
8
8
  expandedSections: Record<string, boolean>;
9
9
  appearance: Appearance;
10
- isFetchingInitialData: boolean;
11
- isLoading: boolean;
12
10
  }
13
11
  export declare const settingSlice: import("@reduxjs/toolkit").Slice<SettingState, {
14
12
  setEnableDuplicateIssues: (state: import("immer/dist/internal.js").WritableDraft<SettingState>, action: PayloadAction<boolean>) => void;
@@ -17,10 +15,8 @@ export declare const settingSlice: import("@reduxjs/toolkit").Slice<SettingState
17
15
  setSectionExpanded: (state: import("immer/dist/internal.js").WritableDraft<SettingState>, action: PayloadAction<Record<string, boolean>>) => void;
18
16
  setEnableClustering: (state: import("immer/dist/internal.js").WritableDraft<SettingState>, action: PayloadAction<boolean>) => void;
19
17
  setAppearance: (state: import("immer/dist/internal.js").WritableDraft<SettingState>, action: PayloadAction<"dark" | "light">) => void;
20
- setIsFetchingInitialData: (state: import("immer/dist/internal.js").WritableDraft<SettingState>, action: PayloadAction<boolean>) => void;
21
- setIsLoading: (state: import("immer/dist/internal.js").WritableDraft<SettingState>, action: PayloadAction<boolean>) => void;
22
18
  }, "settings">;
23
- export declare const setEnableDuplicateIssues: import("@reduxjs/toolkit").ActionCreatorWithPayload<boolean, "settings/setEnableDuplicateIssues">, setEnablePlacementMode: import("@reduxjs/toolkit").ActionCreatorWithPayload<boolean, "settings/setEnablePlacementMode">, setSectionExpanded: import("@reduxjs/toolkit").ActionCreatorWithPayload<Record<string, boolean>, "settings/setSectionExpanded">, setEnableClustering: import("@reduxjs/toolkit").ActionCreatorWithPayload<boolean, "settings/setEnableClustering">, setAppearance: import("@reduxjs/toolkit").ActionCreatorWithPayload<"light" | "dark", "settings/setAppearance">, setIsFetchingInitialData: import("@reduxjs/toolkit").ActionCreatorWithPayload<boolean, "settings/setIsFetchingInitialData">, setIsLoading: import("@reduxjs/toolkit").ActionCreatorWithPayload<boolean, "settings/setIsLoading">;
19
+ export declare const setEnableDuplicateIssues: import("@reduxjs/toolkit").ActionCreatorWithPayload<boolean, "settings/setEnableDuplicateIssues">, setEnablePlacementMode: import("@reduxjs/toolkit").ActionCreatorWithPayload<boolean, "settings/setEnablePlacementMode">, setSectionExpanded: import("@reduxjs/toolkit").ActionCreatorWithPayload<Record<string, boolean>, "settings/setSectionExpanded">, setEnableClustering: import("@reduxjs/toolkit").ActionCreatorWithPayload<boolean, "settings/setEnableClustering">, setAppearance: import("@reduxjs/toolkit").ActionCreatorWithPayload<"light" | "dark", "settings/setAppearance">;
24
20
  export declare const selectEnablePlacementMode: (state: RootState) => boolean;
25
21
  export declare const selectEnableDuplicateIssues: (state: RootState) => boolean;
26
22
  export declare const selectEnableSvgLayout: (state: RootState) => boolean;
@@ -28,5 +24,3 @@ export declare const selectExpandedSections: (state: RootState) => Record<string
28
24
  export declare const selectEnableClustering: (state: RootState) => boolean;
29
25
  export declare const selectAppearance: (state: RootState) => ("inherit" | "light" | "dark") | undefined;
30
26
  export declare const settingReducer: Reducer<SettingState>;
31
- export declare const selectIsFetchingInitialData: (state: RootState) => boolean;
32
- export declare const selectIsLoading: (state: RootState) => boolean;
@@ -0,0 +1,12 @@
1
+ import { PayloadAction } from "@reduxjs/toolkit";
2
+ import { Created, Stored, Submitted } from "../../typings";
3
+ interface AttachmentState<TState> {
4
+ attachments: Record<string, Stored<TState>>;
5
+ }
6
+ export declare function setAttachments<TAttachment, TState extends AttachmentState<TAttachment>>(state: TState, action: PayloadAction<Created<TAttachment>[]>): void;
7
+ export declare function addAttachment<TAttachment, TState extends AttachmentState<TAttachment>>(state: TState, action: PayloadAction<Submitted<TAttachment>>): void;
8
+ export declare function addAttachments<TAttachment, TState extends AttachmentState<TAttachment>>(state: TState, action: PayloadAction<Submitted<TAttachment>[]>): void;
9
+ export declare function updateAttachment<TAttachment, TState extends AttachmentState<TAttachment>>(state: TState, action: PayloadAction<Submitted<TAttachment>>): void;
10
+ export declare function removeAttachment<TAttachment, TState extends AttachmentState<TAttachment>>(state: TState, action: PayloadAction<string>): void;
11
+ export declare function removeAttachments<TAttachment, TState extends AttachmentState<TAttachment>>(state: TState, action: PayloadAction<string[]>): void;
12
+ export {};
@@ -50,7 +50,6 @@ export declare const selectWorkspaces: ((state: import("redux").EmptyObject & {
50
50
  userReducer: import('..').UserState;
51
51
  workspaceReducer: WorkspaceState;
52
52
  emailDomainsReducer: import('..').EmailDomainState;
53
- licenseReducer: import('..').LicenseState;
54
53
  } & {
55
54
  offline: import("@redux-offline/redux-offline/lib/types").OfflineState;
56
55
  }) => Workspace[]) & import("reselect").OutputSelectorFields<(args_0: Record<string, Workspace>) => Workspace[], {
@@ -3,7 +3,7 @@ import { AnyAction, Reducer } from "redux";
3
3
  import { Config, OfflineAction, OfflineMetadata, OfflineState } from "@redux-offline/redux-offline/lib/types";
4
4
  import request from "superagent";
5
5
  import { type OfflineMetaEffect, type OvermapSDK, RequestDetails } from "../sdk";
6
- import { AuthState, CategoryState, ComponentStageCompletionState, ComponentStageState, ComponentState, ComponentTypeState, EmailDomainState, FileState, IssueState, LicenseState, MapState, OrganizationAccessState, OrganizationState, OutboxState, ProjectAccessState, ProjectFileState, ProjectState, RehydratedState, SettingState, UserFormState, UserState, WorkspaceState } from "./slices";
6
+ import { AuthState, CategoryState, ComponentStageCompletionState, ComponentStageState, ComponentState, ComponentTypeState, EmailDomainState, FileState, IssueState, MapState, OrganizationAccessState, OrganizationState, OutboxState, ProjectAccessState, ProjectFileState, ProjectState, RehydratedState, SettingState, UserFormState, UserState, WorkspaceState } from "./slices";
7
7
  import { VersioningState } from "./slices/versioningSlice";
8
8
  import { RootState } from "../typings";
9
9
  export declare const overmapReducers: {
@@ -29,7 +29,6 @@ export declare const overmapReducers: {
29
29
  userReducer: Reducer<UserState>;
30
30
  workspaceReducer: Reducer<WorkspaceState>;
31
31
  emailDomainsReducer: Reducer<EmailDomainState>;
32
- licenseReducer: Reducer<LicenseState>;
33
32
  };
34
33
  export declare const overmapReducer: Reducer<import("redux").CombinedState<{
35
34
  versioning: VersioningState;
@@ -54,7 +53,6 @@ export declare const overmapReducer: Reducer<import("redux").CombinedState<{
54
53
  userReducer: UserState;
55
54
  workspaceReducer: WorkspaceState;
56
55
  emailDomainsReducer: EmailDomainState;
57
- licenseReducer: LicenseState;
58
56
  }>, AnyAction>;
59
57
  export declare const resetStore = "RESET";
60
58
  export declare const rootReducer: Reducer<RootState>;
@@ -97,7 +95,6 @@ export declare const defaultStore: import("@reduxjs/toolkit/dist/configureStore"
97
95
  userReducer: UserState;
98
96
  workspaceReducer: WorkspaceState;
99
97
  emailDomainsReducer: EmailDomainState;
100
- licenseReducer: LicenseState;
101
98
  } & {
102
99
  offline: OfflineState;
103
100
  }, AnyAction, import("@reduxjs/toolkit").MiddlewareArray<[import("@reduxjs/toolkit").ThunkMiddleware<RootState, AnyAction>]>>;
@@ -1,17 +1,24 @@
1
1
  import { OfflineModel } from "./base";
2
2
  import { MaybeObjectURL, UploadedFileModel } from "../files";
3
- interface Attachment extends OfflineModel, UploadedFileModel {
4
- issue_id: string;
3
+ export interface Attachment extends OfflineModel, UploadedFileModel {
5
4
  description?: string;
6
- }
7
- export interface IssueAttachment extends Attachment, UploadedFileModel {
8
5
  file_name: string;
9
6
  file_type: string;
10
7
  }
11
- export interface PhotoAttachmentPayload extends Omit<Attachment, "file"> {
12
- file: MaybeObjectURL<File>;
8
+ export interface IssueAttachment extends Attachment, UploadedFileModel {
9
+ issue_id: string;
10
+ }
11
+ export interface ComponentAttachment extends Attachment, UploadedFileModel {
12
+ component_id: string;
13
13
  }
14
+ export interface ComponentTypeAttachment extends Attachment, UploadedFileModel {
15
+ component_type_id: string;
16
+ }
17
+ /** to get an AttachmentPayload for a specific type, pass in the given AttachmentType
18
+ * ex. AttachmentPayload<IssueAttachment> */
19
+ export type AttachmentPayload<TAttachment> = Omit<TAttachment, "file"> & {
20
+ file: MaybeObjectURL<File>;
21
+ };
14
22
  export interface ProfilePic extends UploadedFileModel {
15
23
  file: string;
16
24
  }
17
- export {};
@@ -16,7 +16,3 @@ export interface FileObject {
16
16
  file: string;
17
17
  objectURL?: string;
18
18
  }
19
- export interface OwnedByUserOrOrganization {
20
- user_owner: number;
21
- organization_owner: number;
22
- }
@@ -13,4 +13,3 @@ export * from "./workspace";
13
13
  export * from "./emailVerification";
14
14
  export * from "./store";
15
15
  export * from "./emailDomain";
16
- export * from "./license";
@@ -2,7 +2,6 @@ import { Model } from "./base";
2
2
  import { OrganizationAccess } from "./access";
3
3
  import { EmailDomain } from "./emailDomain";
4
4
  import { User } from "./users";
5
- import { License } from "./license";
6
5
  export interface Organization extends Model {
7
6
  id: number;
8
7
  name: string;
@@ -14,5 +13,4 @@ export interface InitialOrganizationData {
14
13
  users: User[];
15
14
  organization_accesses: OrganizationAccess[];
16
15
  email_domains: EmailDomain[];
17
- licenses: License[];
18
16
  }
@@ -11,8 +11,6 @@ export interface Project extends Model {
11
11
  owner_user: number | null;
12
12
  bounds: [L.LatLngTuple, L.LatLngTuple] | undefined;
13
13
  invited?: boolean;
14
- issues_count?: number;
15
- form_submissions_count?: number;
16
14
  }
17
15
  export interface ProjectFile extends Model, FileObject {
18
16
  offline_id: string;