import * as utils from '@prismamedia/graphql-platform-utils';
import type { Schema } from '../schema.js';
import type { SchemaInformation, TableInformation } from '../statement.js';
import { type SchemaFixOptions } from './diagnosis/fix.js';
import { TableDiagnosis, type ColumnInformationsByColumnName, type ConstraintInformationsByColumnName, type ForeignKeyInformationsByForeignKeyName, type IndexInformationsByColumnNameByIndexName, type Table, type TableDiagnosisOptions, type TableDiagnosisSummary } from './table.js';
export * from './diagnosis/fix.js';
export type DiagnosisError = {
message?: string;
expected: any;
actual: any;
hint?: string;
};
export type TableInformationsByTableName = Map
;
export type ColumnInformationsByColumnNameByTableName = Map;
export type ConstraintInformationsByColumnNameByTableName = Map;
export type IndexInformationsByIndexNameByTableName = Map;
export type ForeignKeyInformationsByForeignKeyNameByTableName = Map;
export type SchemaDiagnosisInformations = {
schema: SchemaInformation;
tables: TableInformationsByTableName;
columns: ColumnInformationsByColumnNameByTableName;
constraints: ConstraintInformationsByColumnNameByTableName;
indexes: IndexInformationsByIndexNameByTableName;
foreignKeys: ForeignKeyInformationsByForeignKeyNameByTableName;
};
export type SchemaDiagnosisOptions = {
charset?: utils.OptionalFlag;
collation?: utils.OptionalFlag;
comment?: utils.OptionalFlag;
tables?: TableDiagnosisOptions;
extraTables?: utils.OptionalFlag | Table['name'][];
};
export type SchemaDiagnosisSummary = {
errors: number;
charset?: DiagnosisError;
collation?: DiagnosisError;
comment?: DiagnosisError;
tables?: {
extra?: ReadonlyArray;
missing?: ReadonlyArray;
invalid?: Record;
};
};
export declare class SchemaDiagnosis {
readonly schema: Schema;
readonly charsetError?: DiagnosisError;
readonly collationError?: DiagnosisError;
readonly commentError?: DiagnosisError;
readonly diagnosesByTable: ReadonlyMap;
readonly missingTables: ReadonlyArray;
readonly invalidTables: ReadonlyArray;
readonly extraTables: ReadonlyArray;
readonly fixableTableNames: ReadonlyArray;
readonly errorCount: number;
constructor(schema: Schema, informations: SchemaDiagnosisInformations, options?: SchemaDiagnosisOptions);
isValid(): boolean;
summarize(): SchemaDiagnosisSummary;
printSummary(): string;
fix(options?: SchemaFixOptions): Promise;
}
//# sourceMappingURL=diagnosis.d.ts.map