import { ParseClassSchema, ParseFields } from '@Types/fields';
type Indexes = {
    [key: string]: {
        [key: string]: any;
    };
};
type DiffFieldsOutput = {
    change?: Record<string, Array<string>>;
    add?: ParseFields;
    remove?: ParseFields;
};
export declare const diffingFields: (obj1: ParseFields, obj2: ParseFields, schemaOptions: SchemaOutputOptions) => DiffFieldsOutput;
type ChangedIndexesMap = {
    [key: string]: Record<string, Indexes>;
};
type AddOrRemoveIndexes = Record<string, Indexes>;
type DiffIndexesOutput = {
    change?: ChangedIndexesMap;
    add?: AddOrRemoveIndexes;
    remove?: AddOrRemoveIndexes;
};
export declare const diffingIndexes: (obj1: Indexes, obj2: Indexes) => DiffIndexesOutput;
type CLP = {
    [key: string]: {
        [key: string]: any;
    };
};
type DiffClPOutput = Record<string, CLP>;
export declare const diffingCLP: (obj1: CLP, obj2: CLP) => DiffClPOutput;
type SchemaParts = {
    fields?: boolean;
    indexes?: boolean;
    classLevelPermissions?: boolean;
};
type SchemaOutputOptions = {
    ignoreClasses?: Array<string>;
    ignoreAttributes?: Array<string>;
};
export declare const getAllSchemas: (parts?: SchemaParts, outputOptions?: SchemaOutputOptions) => Promise<Array<ParseClassSchema>>;
type SchemaManagerActions = {
    commit?: boolean;
    remove?: boolean;
    purge?: boolean;
};
export declare const manageSchema: (schema: Array<ParseClassSchema>, { commit, remove, purge }: SchemaManagerActions, actionParts?: SchemaParts, schemaOptions?: SchemaOutputOptions) => Promise<Record<string, any>>;
export {};
