import type { CardDisplayType } from "./card";
import type { InitialSyncStatus } from "./database";
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 interface BaseRecentItem {
    id: number;
    name: string;
    model: ActivityModel;
    description?: string | null;
    timestamp: string;
}
export interface RecentTableItem extends BaseRecentItem {
    model: "table";
    display_name: string;
    database: {
        id: number;
        name: string;
        initial_sync_status: InitialSyncStatus;
    };
}
export interface RecentCollectionItem extends BaseRecentItem {
    model: "collection" | "dashboard" | "card" | "dataset" | "metric";
    can_write: boolean;
    parent_collection: {
        id: number | null;
        name: string;
        authority_level?: "official" | null;
    };
    authority_level?: "official" | null;
    moderated_status?: "verified" | null;
    display?: CardDisplayType;
}
export type RecentItem = RecentTableItem | 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";
}
