import { type IWorkspaceDescriptor } from "@gooddata/sdk-backend-spi";
import { type AssignedWorkspacePermission, type IDataSourceIdentifierDescriptor } from "@gooddata/sdk-model";
export interface IAddWorkspaceSelectProps {
    onSelectWorkspace: (workspace: IWorkspaceDescriptor) => void;
    addedWorkspaces: IGrantedWorkspace[];
    grantedWorkspaces: IGrantedWorkspace[];
}
export interface IAddSingleWorkspaceSelectProps {
    onSelectWorkspace: (workspace: IWorkspaceDescriptor) => void;
    addedWorkspace: IGrantedWorkspace | undefined;
    grantedWorkspaces: IGrantedWorkspace[] | undefined;
    mode?: "VIEW" | "EDIT";
}
export interface IAddDataSourceSelectProps {
    onSelectDataSource: (dataSource: IDataSourceIdentifierDescriptor) => void;
    addedDataSources: IGrantedDataSource[];
    grantedDataSources: IGrantedDataSource[] | undefined;
}
export interface ISelectOption {
    label: string;
    value: IWorkspaceDescriptor;
}
export interface IDataSourceSelectOption {
    label: string;
    value: IDataSourceIdentifierDescriptor;
}
export declare const isWorkspaceItem: (obj: unknown) => obj is IWorkspaceDescriptor;
export declare const isDataSourceItem: (obj: unknown) => obj is IDataSourceIdentifierDescriptor;
/**
 * @internal
 */
export type UserEditDialogMode = "VIEW" | "WORKSPACE" | "USER_GROUPS" | "DATA_SOURCES" | "DETAIL";
/**
 * @internal
 */
export type UserGroupEditDialogMode = "VIEW" | "WORKSPACE" | "USERS" | "DATA_SOURCES" | "DETAIL";
export type ListMode = "VIEW" | "EDIT";
/**
 * @internal
 */
export type UserTabId = "WORKSPACES" | "USER_GROUPS" | "DETAILS" | "DATA_SOURCES";
/**
 * We should get rid of the permission combinations and keep only the AssignedWorkspacePermission
 * once the flat permissions are fully in the use.
 */
export type WorkspacePermission = "VIEW_AND_SAVE_VIEWS" | "VIEW_AND_EXPORT" | "VIEW_AND_EXPORT_AND_SAVE_VIEWS" | "ANALYZE_AND_EXPORT" | AssignedWorkspacePermission;
export type WorkspacePermissions = WorkspacePermission[];
/**
 * @internal
 */
export type DataSourcePermission = "USE" | "MANAGE";
/**
 * @internal
 */
export type WorkspacePermissionSubject = "user" | "userGroup";
/**
 * @internal
 */
export type DataSourcePermissionSubject = "user" | "userGroup";
export interface IGrantedWorkspace {
    id: string;
    title: string;
    permissions: WorkspacePermission[];
    isHierarchical: boolean;
}
/**
 * @internal
 */
export interface IGrantedDataSource {
    id: string;
    title: string;
    permission: DataSourcePermission;
}
export interface IPermissionsItem {
    id: WorkspacePermission;
    enabled: boolean;
    group?: boolean;
}
export interface IDataSourcePermissionsItem {
    id: DataSourcePermission;
    enabled: boolean;
}
export interface IGrantedUserGroup {
    id: string;
    title: string;
}
export declare const isGrantedUserGroup: (obj: unknown) => obj is IGrantedUserGroup;
export interface IUserGroupSelectOption {
    label: string;
    value: IGrantedUserGroup;
}
export interface IUserMember {
    id: string;
    title: string;
    email: string;
}
export declare const isUserItem: (obj: unknown) => obj is IUserMember;
export interface IUserSelectOption {
    label: string;
    value: IUserMember;
}
export interface ISelectErrorOption {
    isDisabled: boolean;
    type: "error";
    label: string;
    value?: never;
}
export declare const isSelectErrorOption: (obj: unknown) => obj is ISelectErrorOption;
//# sourceMappingURL=types.d.ts.map