export declare function ensureSlotTables(): Promise; export interface ExtensionSlotRow { id: string; extensionId: string; slotId: string; config: string | null; createdAt: string; } export interface ExtensionSlotInstallRow { id: string; extensionId: string; slotId: string; ownerEmail: string; orgId: string | null; position: number; config: string | null; createdAt: string; updatedAt: string; } /** * Declare that a extension can render in a slot. Caller must have editor access on * the extension (only people who can edit a extension can change its slot targets). */ export declare function addExtensionSlotTarget(extensionId: string, slotId: string, config?: string): Promise; export declare function removeExtensionSlotTarget(extensionId: string, slotId: string): Promise; export declare function listSlotsForExtension(extensionId: string): Promise; /** * List extensions that declare a slot — but only extensions the current user has access * to. Joins through the extensions access filter. */ export declare function listExtensionsForSlot(slotId: string): Promise>; /** * Install a extension into a slot for the current user. Verifies the user has at * least viewer access to the extension. Idempotent — re-installing returns the * existing row. */ export declare function installExtensionSlot(extensionId: string, slotId: string, opts?: { position?: number; config?: string; }): Promise; export declare function uninstallExtensionSlot(extensionId: string, slotId: string): Promise; /** * List the current user's installs for a slot. Joins with `extensions` so the * caller gets extension name/description/icon/updatedAt without a second query. * Extensions the user has lost access to are silently skipped (lazy garbage * collection). */ export declare function listSlotInstallsForUser(slotId: string): Promise>; /** Delete every slot/install row referencing an extension for maintenance. */ export declare function cascadeDeleteExtensionSlots(extensionId: string): Promise; //# sourceMappingURL=store.d.ts.map