import { WorkspaceSeat } from '@/modules/gatekeeper/domain/billing' import { Workspace, WorkspaceSeatType } from '@/modules/workspacesCore/domain/types' import { Optional, WorkspacePlan, WorkspacePlanFeatures, WorkspacePlans, WorkspacePlanStatuses, WorkspaceRoles } from '@speckle/shared' export type CanWorkspaceAccessFeature = (args: { workspaceId: string workspaceFeature: WorkspacePlanFeatures }) => Promise export type WorkspaceFeatureAccessFunction = (args: { workspaceId: string }) => Promise export type GetWorkspacesByPlanDaysTillExpiry = (args: { daysTillExpiry: number planValidFor: number plan: WorkspacePlans status: WorkspacePlanStatuses }) => Promise export type GetWorkspacePlanByProjectId = ({ projectId }: { projectId: string }) => Promise export type CreateWorkspaceSeat = ( args: Pick, options?: Partial<{ skipIfExists: boolean }> ) => Promise export type DeleteWorkspaceSeat = ( args: Pick ) => Promise export type CountSeatsByTypeInWorkspace = ( params: Pick ) => Promise export type GetWorkspaceUserSeats = (params: { workspaceId: string userIds: string[] }) => Promise<{ [userId: string]: WorkspaceSeat }> export type GetWorkspaceUserSeat = (params: { workspaceId: string userId: string }) => Promise> export type GetWorkspaceDefaultSeatType = (params: { workspaceId: string workspaceRole: WorkspaceRoles }) => Promise export type GetWorkspacesUsersSeats = (params: { requests: Array<{ userId: string workspaceId: string }> }) => Promise<{ [workspaceId: string]: { [userId: string]: WorkspaceSeat } }> export type GetProjectsUsersSeats = (params: { requests: Array<{ userId: string projectId: string }> }) => Promise<{ [projectId: string]: { [userId: string]: WorkspaceSeat } }>