import { type SpaceDashboard } from './dashboard';
import { type OrganizationMemberRole } from './organizationMemberProfile';
import { type ProjectMemberRole } from './projectMemberRole';
import { type SpaceQuery } from './savedCharts';
export type Space = {
    organizationUuid: string;
    uuid: string;
    name: string;
    isPrivate: boolean;
    queries: SpaceQuery[];
    projectUuid: string;
    dashboards: SpaceDashboard[];
    access: SpaceShare[];
    groupsAccess: SpaceGroup[];
    pinnedListUuid: string | null;
    pinnedListOrder: number | null;
    slug: string;
    childSpaces: Omit<SpaceSummary, 'userAccess'>[];
    parentSpaceUuid: string | null;
    path: string;
    breadcrumbs?: {
        name: string;
        uuid: string;
    }[];
};
export type SpaceSummary = Pick<Space, 'organizationUuid' | 'projectUuid' | 'uuid' | 'name' | 'isPrivate' | 'pinnedListUuid' | 'pinnedListOrder' | 'slug' | 'parentSpaceUuid' | 'path'> & {
    userAccess: SpaceShare | undefined;
    access: string[];
    chartCount: number;
    dashboardCount: number;
};
export type CreateSpace = {
    name: string;
    isPrivate?: boolean;
    access?: Pick<SpaceShare, 'userUuid' | 'role'>[];
    parentSpaceUuid?: string;
};
export type UpdateSpace = {
    name: string;
    isPrivate?: boolean;
};
export type SpaceShare = {
    userUuid: string;
    firstName: string;
    lastName: string;
    email: string;
    role: SpaceMemberRole;
    hasDirectAccess: boolean;
    projectRole: ProjectMemberRole | undefined;
    inheritedRole: OrganizationMemberRole | ProjectMemberRole | undefined;
    inheritedFrom: 'organization' | 'project' | 'group' | 'space_group' | undefined;
};
export type SpaceGroup = {
    groupUuid: string;
    groupName: string;
    spaceRole: SpaceMemberRole;
};
export declare enum SpaceMemberRole {
    VIEWER = "viewer",
    EDITOR = "editor",
    ADMIN = "admin"
}
export type ApiSpaceSummaryListResponse = {
    status: 'ok';
    results: SpaceSummary[];
};
export type ApiSpaceResponse = {
    status: 'ok';
    results: Space;
};
export type AddSpaceUserAccess = {
    userUuid: string;
    spaceRole: SpaceMemberRole;
};
export type AddSpaceGroupAccess = {
    groupUuid: string;
    spaceRole: SpaceMemberRole;
};
//# sourceMappingURL=space.d.ts.map