import type { ChartSourceType, ContentType } from './content';
import type { KnexPaginatedData } from './knex-paginate';
import type { ChartKind } from './savedCharts';
type DescendantCountKey = 'nestedSpace' | 'dashboard' | 'chart' | 'scheduler' | 'app';
export type WithDescendantCounts<T, K extends DescendantCountKey = never> = [
    K
] extends [never] ? T : T & {
    [P in K as `${P}Count`]: number;
};
type DeletedChartBase = {
    uuid: string;
    name: string;
    description: string | null;
    contentType: ContentType.CHART;
    chartKind: ChartKind | null;
    deletedAt: Date;
    deletedBy: {
        userUuid: string;
        firstName: string;
        lastName: string;
    } | null;
    spaceUuid: string;
    spaceName: string;
    projectUuid: string;
    organizationUuid: string;
};
export type DeletedDbtChartContentSummary = DeletedChartBase & {
    source: ChartSourceType.DBT_EXPLORE;
};
export type DeletedSqlChartContentSummary = DeletedChartBase & {
    source: ChartSourceType.SQL;
};
export type DeletedChartContentSummary = DeletedDbtChartContentSummary | DeletedSqlChartContentSummary;
export type DeletedDashboardContentSummary = {
    uuid: string;
    name: string;
    description: string | null;
    contentType: ContentType.DASHBOARD;
    deletedAt: Date;
    deletedBy: {
        userUuid: string;
        firstName: string;
        lastName: string;
    } | null;
    spaceUuid: string;
    spaceName: string;
    projectUuid: string;
    organizationUuid: string;
};
export type DeletedSpaceContentSummary = {
    uuid: string;
    name: string;
    description: string | null;
    contentType: ContentType.SPACE;
    deletedAt: Date;
    deletedBy: {
        userUuid: string;
        firstName: string;
        lastName: string;
    } | null;
    spaceUuid: string;
    spaceName: string;
    projectUuid: string;
    organizationUuid: string;
};
export type DeletedDataAppContentSummary = {
    uuid: string;
    name: string;
    description: string | null;
    contentType: ContentType.DATA_APP;
    deletedAt: Date;
    deletedBy: {
        userUuid: string;
        firstName: string;
        lastName: string;
    } | null;
    spaceUuid: string | null;
    spaceName: string | null;
    projectUuid: string;
    organizationUuid: string;
};
export type DeletedContentSummary = DeletedChartContentSummary | DeletedDashboardContentSummary | DeletedSpaceContentSummary | DeletedDataAppContentSummary;
export type DeletedContentWithDescendants = WithDescendantCounts<DeletedDbtChartContentSummary, 'scheduler'> | WithDescendantCounts<DeletedSqlChartContentSummary, never> | WithDescendantCounts<DeletedDashboardContentSummary, 'chart' | 'scheduler'> | WithDescendantCounts<DeletedSpaceContentSummary, 'nestedSpace' | 'dashboard' | 'chart' | 'scheduler' | 'app'> | WithDescendantCounts<DeletedDataAppContentSummary, never>;
export type DeletedContentFilters = {
    projectUuids: string[];
    search?: string;
    contentTypes?: ContentType[];
    deletedByUserUuids?: string[];
};
export type ApiDeletedContentResponse = {
    status: 'ok';
    results: KnexPaginatedData<DeletedContentWithDescendants[]>;
};
export type DeletedContentItem = {
    uuid: string;
    contentType: ContentType.CHART;
    source: ChartSourceType;
} | {
    uuid: string;
    contentType: ContentType.DASHBOARD;
} | {
    uuid: string;
    contentType: ContentType.SPACE;
} | {
    uuid: string;
    contentType: ContentType.DATA_APP;
};
export type ApiRestoreContentBody = {
    item: DeletedContentItem;
};
export type ApiPermanentlyDeleteContentBody = {
    item: DeletedContentItem;
};
export {};
//# sourceMappingURL=softDelete.d.ts.map