import FilteredActions from '../../actions/filtered-actions';
import type { ActionsNS } from '../../actions/namespace';
import { PrimaryKeyType } from '../../adapters/api/namespace';
import { FormAdapter } from '../../adapters/namespace';
import FormPayload from '../../form/definitions/form-payload';
import FormLayout from '../../form/definitions/layout';
import { APIConsumer } from '../namespace';
import { FormConsumerHooks, FormExecuteResult } from './namespace';
type IHandlers = ActionsNS.IHandlers;
export default abstract class FormConsumerBase<T = any> {
    pkName: keyof T & string;
    ux_def: APIConsumer.FormUXDefinition;
    layout: FormLayout;
    titles: APIConsumer.Titles;
    actions: FilteredActions;
    data: FormPayload;
    loading: boolean;
    errors: any;
    actionHandlers?: IHandlers;
    protected api: FormAdapter<T>;
    beforeDialog?: (instance: any) => void;
    afterDialog?: (instance: any, action: any) => void;
    protected constructor(handlers?: IHandlers, hooks?: FormConsumerHooks<FormConsumerBase>);
    title(which: 'table' | 'new' | 'edit'): string;
    get pkValue(): PrimaryKeyType;
    get definition(): APIConsumer.FormDefinition;
    withErrors(errors: any): this;
    execute(defaultData?: Partial<T> | null): Promise<FormExecuteResult<T>>;
    delete(): Promise<T>;
    save(): Promise<T>;
    getRecord(): Promise<APIConsumer.FormPayloadJSON>;
    getUXDefinition(): Promise<APIConsumer.FormDefinition>;
}
export {};
//# sourceMappingURL=base.d.ts.map