import type { AccessContext } from "../sharing/access.js"; import type { DashboardStorageSchema } from "./schema.js"; export interface DashboardRecord> { id: string; kind: TKind; title: string; config: TConfig; ownerEmail: string; orgId: string | null; visibility: "private" | "org" | "public"; createdAt: string; updatedAt: string; updatedBy: string | null; archivedAt: string | null; } export interface DashboardRevisionRecord> { id: string; dashboardId: string; kind: TKind; title: string; config: TConfig; createdAt: string; createdBy: string | null; } export interface DashboardWriteInput> { id: string; kind: TKind; title: string; config: TConfig; expectedUpdatedAt?: string; } export declare class DashboardStorageConflictError extends Error { constructor(id: string); } export interface DashboardStorageOptions { schema: DashboardStorageSchema; getDb: () => any; resourceType: string; displayName?: string; maxRevisions?: number; validateKind?: (kind: string) => kind is TKind; parseConfig?: (raw: string) => TConfig; serializeConfig?: (config: TConfig) => string; getResourcePath?: (dashboard: { id: string; }) => string; allowPublic?: boolean; requireOrgMemberForUserShares?: boolean; onChange?: (event: { type: "change" | "delete"; dashboard: DashboardRecord; }) => void; } export declare function createDashboardStorage>(options: DashboardStorageOptions): { get: (id: string, ctx: AccessContext) => Promise | null>; list: (ctx: AccessContext, archive?: "active" | "archived" | "all") => Promise; write: (input: DashboardWriteInput, ctx: AccessContext) => Promise>; listRevisions: (id: string, ctx: AccessContext) => Promise; restore: (id: string, revisionId: string, ctx: AccessContext) => Promise | null>; registerShareable: () => void; }; //# sourceMappingURL=store.d.ts.map