export interface DashboardPanelColumn { name: string; type: string; } export interface PanelSourceRequest { source: TSource; query: string; } export interface PanelSourceResult { rows: Record[]; schema?: DashboardPanelColumn[]; truncated?: boolean; bytesProcessed?: number; } export interface PanelSourceFailure { error: string; message?: string; } export type PanelSourceResponse = PanelSourceResult | PanelSourceFailure; export interface PanelSourceResolver { source: TSource; resolve(request: PanelSourceRequest, context: TContext): Promise; } export interface PanelSourceResolverRegistry { readonly sources: readonly TSource[]; resolve(request: PanelSourceRequest, context: TContext): Promise; } export declare function createPanelSourceResolverRegistry(options: { resolvers: readonly PanelSourceResolver[]; }): PanelSourceResolverRegistry; export interface ProgramPanelContext { userEmail: string; orgId?: string | null; } export interface ProgramPanelDescriptor { programId: string; params?: Record; } export interface ProgramPanelRunResult { ok: boolean; rows?: Record[]; schema?: DashboardPanelColumn[]; truncated?: boolean; lastGoodRun?: { rows: Record[]; schema: DashboardPanelColumn[]; truncated?: boolean; }; error?: { code: string; message: string; }; } export declare function parseProgramPanelDescriptor(query: string): ProgramPanelDescriptor; export declare function createProgramPanelSourceResolver(options: { appId: string; run?: (args: { programId: string; appId: string; params?: Record; ctx: { userEmail: string; orgId: string | null; }; triggeredBy: "panel_view"; }) => Promise; }): PanelSourceResolver<"program", ProgramPanelContext>; //# sourceMappingURL=panel-source.d.ts.map