import { type Ability, type ForcedSubject } from '@casl/ability';
import { type OrganizationMemberProfile } from '../types/organizationMemberProfile';
export type AbilityAction = 'create' | 'delete' | 'export' | 'manage' | 'promote' | 'update' | 'view';
interface Project {
    organizationUuid: string;
    projectUuid: string;
}
interface Organization {
    organizationUuid: string;
}
export type CaslSubjectNames = 'AiAgent' | 'AiAgentThread' | 'Analytics' | 'ChangeCsvResults' | 'CompileProject' | 'ContentAsCode' | 'CustomSql' | 'Dashboard' | 'DashboardComments' | 'DashboardCsv' | 'DashboardImage' | 'DashboardPdf' | 'Explore' | 'ExportCsv' | 'GoogleSheets' | 'Group' | 'InviteLink' | 'Job' | 'JobStatus' | 'MetricsTree' | 'Organization' | 'OrganizationMemberProfile' | 'OrganizationWarehouseCredentials' | 'PersonalAccessToken' | 'PinnedItems' | 'Project' | 'SavedChart' | 'ScheduledDeliveries' | 'SemanticViewer' | 'SourceCode' | 'Space' | 'SpotlightTableConfig' | 'SqlRunner' | 'Tags' | 'UnderlyingData' | 'Validation' | 'VirtualView';
export type Subject = CaslSubjectNames | Project | Organization | OrganizationMemberProfile | 'all';
export type PossibleAbilities = [
    AbilityAction,
    Subject | ForcedSubject<Exclude<Subject, 'all'>>
];
export type MemberAbility = Ability<PossibleAbilities>;
export {};
//# sourceMappingURL=types.d.ts.map