import type { DatabaseId, InitialSyncStatus } from "./database";
import type { CardDisplayType } from "./visualization";
import type { Collection } from ".";
export declare const ACTIVITY_MODELS: readonly ["table", "card", "dataset", "metric", "dashboard", "collection"];
export type ActivityModel = (typeof ACTIVITY_MODELS)[number];
export declare const isActivityModel: (model: string) => model is "dashboard" | "table" | "metric" | "card" | "collection" | "dataset";
export declare const isLoggableActivityModel: (item: {
    id: any;
    model: string;
}) => item is {
    id: number;
    model: ActivityModel;
};
export type BaseRecentItem = {
    id: number;
    name: string;
    model: ActivityModel;
    description?: string | null;
    timestamp: string;
};
export type RecentTableItem = BaseRecentItem & {
    model: "table";
    display_name: string;
    table_schema: string;
    database: {
        id: number;
        name: string;
        initial_sync_status: InitialSyncStatus;
    };
};
export type RecentCollectionItem = BaseRecentItem & {
    model: "collection" | "dashboard" | "card" | "dataset" | "metric";
    can_write: boolean;
    database_id?: DatabaseId;
    parent_collection: Pick<Collection, "id" | "name" | "authority_level">;
    authority_level?: "official" | null;
    moderated_status?: "verified" | null;
    display?: CardDisplayType;
};
export type RecentItem = RecentTableItem | RecentCollectionItem;
export declare const isRecentTableItem: (item: RecentItem) => item is RecentTableItem;
export declare const isRecentCollectionItem: (item: RecentItem) => item is RecentCollectionItem;
export interface RecentItemsResponse {
    recent_views: RecentItem[];
}
export type RecentContexts = "selections" | "views";
export interface RecentsRequest {
    context: RecentContexts[];
}
export interface RecentsResponse {
    recents: RecentItem[];
}
export type PopularItem = RecentItem;
export interface PopularItemsResponse {
    popular_items: PopularItem[];
}
export interface CreateRecentRequest {
    model_id: number;
    model: ActivityModel;
    context: "selection";
}
