import { type SchemaDefinition } from './schema-definition.js';
import { type SchemaMigration } from './schema-migration.js';
import { Version } from '../../../../business/utils/version.js';
import { type ClassConstructor } from '../../../../business/utils/class-constructor.type.js';
import { type ObjectMapper } from '../../../mapper/api/object-mapper.js';
export declare abstract class SchemaDefinitionBase<T> implements SchemaDefinition<T> {
    protected readonly mapper: ObjectMapper;
    abstract get classConstructor(): ClassConstructor<T>;
    abstract get migrations(): SchemaMigration[];
    abstract get name(): string;
    abstract get version(): Version<number>;
    protected constructor(mapper: ObjectMapper);
    transform(data: object, sourceVersion?: Version<number>): Promise<T>;
    validateMigrations(): Promise<void>;
    protected nextVersionJump(currentVersion: Version<number>): Version<number>;
    protected applyMigrations(data: object, dataVersion: Version<number>): Promise<object>;
    protected findMigrations(dataVersion: Version<number>): SchemaMigration[];
}
