import { type SchemaDefinition } from './schema-definition.js';
import { type SchemaMigration } from './schema-migration.js';
import { SemanticVersion } from '../../../../business/utils/semantic-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(): SemanticVersion<number>;
    protected constructor(mapper: ObjectMapper);
    transform(data: object, sourceVersion?: SemanticVersion<number>): Promise<T>;
    validateMigrations(): Promise<void>;
    protected nextVersionJump(currentVersion: SemanticVersion<number>): SemanticVersion<number>;
    protected applyMigrations(data: object, dataVersion: SemanticVersion<number>): Promise<object>;
    protected findMigrations(dataVersion: SemanticVersion<number>): SchemaMigration[];
}
