import { Plugin } from "@webiny/plugins";
import { CmsEntry, CmsEntryValues, CmsModel } from "@webiny/api-headless-cms/types";
interface CmsEntryElasticsearchValuesModifierCbParamsSetValuesCb<T = CmsEntryValues> {
    (prev: Partial<T>): Partial<T>;
}
interface CmsEntryElasticsearchValuesModifierCbParams<T = CmsEntryValues> {
    model: CmsModel;
    entry: CmsEntry<T>;
    values: T;
    setValues: (cb: CmsEntryElasticsearchValuesModifierCbParamsSetValuesCb<T>) => void;
}
export interface CmsEntryElasticsearchValuesModifierCb<T = CmsEntryValues> {
    (params: CmsEntryElasticsearchValuesModifierCbParams<T>): void;
}
export interface CmsEntryElasticsearchValuesModifierExecParams<T = CmsEntryValues> {
    model: CmsModel;
    entry: CmsEntry<T>;
    values: Partial<T>;
}
export type CmsEntryElasticsearchValuesModifierParams<T> = CmsEntryElasticsearchValuesModifierCb<T> | {
    models: string[];
    modifier: CmsEntryElasticsearchValuesModifierCb<T>;
};
export declare class CmsEntryElasticsearchValuesModifier<T = CmsEntryValues> extends Plugin {
    static readonly type: string;
    private readonly models?;
    private readonly cb;
    constructor(params: CmsEntryElasticsearchValuesModifierParams<T>);
    canModify(modelId: string): boolean;
    modify(params: CmsEntryElasticsearchValuesModifierExecParams<T>): Partial<T>;
}
export declare const createCmsEntryElasticsearchValuesModifier: <T = CmsEntryValues>(params: CmsEntryElasticsearchValuesModifierParams<T>) => CmsEntryElasticsearchValuesModifier<T>;
export {};
