import { FieldsValidator, UnknownFields } from "./fields";
import { ActionPointOptions } from "./action-point";
import { RestMethod, UnknownActionPayload } from "./endpoint";
import { DeletedRecord } from "./raw-types";
import { TableActionPoint } from "./table";
import { AirtableRecord } from "./record";
export declare type RecordDataSource<Fields extends UnknownFields> = TableActionPoint & FieldsValidator<Fields>;
export interface RecordActionPoint {
    runRecordAction<P extends UnknownActionPayload, R>(method: RestMethod, { path, ...options }: ActionPointOptions<P, R>): Promise<R>;
}
export declare class AirtableRecordDraft<Fields extends UnknownFields> implements RecordActionPoint {
    readonly source: RecordDataSource<Fields>;
    readonly id: string;
    constructor(source: RecordDataSource<Fields>, id: string);
    runRecordAction<P extends UnknownActionPayload, R>(method: RestMethod, { path, ...options }: ActionPointOptions<P, R>): Promise<R>;
    fetch(): Promise<AirtableRecord<Fields>>;
    update(data: Partial<Fields>): Promise<AirtableRecord<Fields>>;
    replace(data: Fields): Promise<AirtableRecord<Fields>>;
    destroy(): Promise<DeletedRecord>;
}
