import { MaterialViewEntity, SqlService } from '@servicelabsco/nestjs-utility-services'; export type CatalogFinding = string; export type CatalogGateResult = { table_name: string; ok: boolean; findings: CatalogFinding[]; agent_visible: boolean; dropped?: boolean; }; export type ColumnDescribePatch = { name: string; display_name?: string; description?: string; visibility?: boolean; attributes?: Record; }; export type ColumnsSyncInput = { table_name?: string; source_type?: string; source_id?: number; name?: string; prune?: boolean; }; export declare class AdminReportViewService { private readonly sqlService; private readonly logger; constructor(sqlService: SqlService); list(): Promise<{ views: Array>; }>; register(body: { table_name?: string; timing?: string; active?: boolean; attributes?: Record; }): Promise; update(tableName: string, body: { timing?: string; active?: boolean; attributes?: Record; }): Promise<{ view: MaterialViewEntity; gate: CatalogGateResult; }>; sample(tableName: string, limit?: number | string, offset?: number | string): Promise<{ table_name: string; limit: number; offset: number; rows: any[]; }>; columnsSync(input?: string | ColumnsSyncInput): Promise<{ table_name: string; created: string[]; adopted: string[]; orphaned: string[]; pruned: string[]; }>; private resolveView; private upsertLiveColumn; describeColumns(tableName: string, patches?: ColumnDescribePatch[]): Promise<{ table_name: string; updated: string[]; missing: string[]; gate: CatalogGateResult; }>; validate(tableName: string): Promise; validate(): Promise<{ views: CatalogGateResult[]; }>; listBusinesses(tableName: string): Promise<{ table_name: string; view_id: number; grants: { business_id: number; active: boolean; }[]; }>; setBusiness(tableName: string, businessId: number, active: boolean): Promise<{ table_name: string; business_id: number; active: boolean; }>; clearBusiness(tableName: string, businessId: number): Promise<{ table_name: string; business_id: number; cleared: boolean; }>; private evaluate; private parseViewAttributes; private parseColumnAttributes; private tryParseViewAttributes; private tryParseColumnAttributes; private formatErrors; private assertRelationships; private catalogNameOf; private applyViewDefaults; private defaultCatalogName; private tenancyColumn; private asViewRow; private requireRegisteredView; private assertTableName; private quoteIdent; private clampLimit; private clampOffset; private assertRelationExists; private relationExists; private boundReadFirst; private loadLiveColumns; private normalizeLiveColumn; private resolveTypeId; private loadLiveColumnsSafe; private loadUniqueIndexKeys; private columnTypeMapping; private displayName; private hasEnumMap; }