import { DataContextBase, DataModelBase } from '@themost/common';
import { ColumnAnnotation } from './Column';
declare interface ColumnDefaultArgs {
    context: DataContextBase;
    model: DataModelBase;
    target: any;
}
declare interface ColumnDefaultAnnotation {
    closure: (event: ColumnDefaultArgs) => any;
}
declare interface ColumnDefaultValueAnnotation extends ColumnAnnotation {
    columnDefault?: ColumnDefaultAnnotation;
}
declare type ColumnDefaultClosure<T> = (event?: ColumnDefaultArgs) => Promise<T>;
declare type ColumnDefaultSimpleClosure<T> = (event?: ColumnDefaultArgs) => T;
declare function ColumnDefault<T>(closure: ColumnDefaultClosure<T> | ColumnDefaultSimpleClosure<T>): PropertyDecorator;
export { ColumnDefaultArgs, ColumnDefaultClosure, ColumnDefaultSimpleClosure, ColumnDefaultAnnotation, ColumnDefaultValueAnnotation, ColumnDefault };
