import { DataContextBase, DataModelBase } from '@themost/common';
import { ColumnAnnotation } from './Column';
declare interface FormulaArgs {
    context: DataContextBase;
    model: DataModelBase;
    target: any;
}
declare interface FormulaAnnotation {
    closure: (event: FormulaArgs) => unknown;
}
declare interface FormulaColumnAnnotation extends ColumnAnnotation {
    formula?: FormulaAnnotation;
}
declare type FormulaClosure<T> = (event?: FormulaArgs) => Promise<T>;
declare type FormulaSimpleClosure<T> = (event?: FormulaArgs) => T;
declare function Formula<T>(closure: FormulaClosure<T> | FormulaSimpleClosure<T>): PropertyDecorator;
export { FormulaArgs, FormulaClosure, FormulaSimpleClosure, FormulaAnnotation, FormulaColumnAnnotation, Formula };
