import { DeepClient, DeepClientResult, Table } from "../client";
import { MutationInputLink } from "../client_types";
import { IGenerateMutationBuilder, ISerialOptions } from "../gql";
import { Id } from "../minilinks";
export declare class SerialTransitionsBuilder {
    private deep;
    private serialActions;
    private defaultTable;
    private executeOptions;
    constructor(options: SerialTransitionsBuilderOptions);
    append(options: AppendTransitionOptions): this;
    appendMultiple(options: AppendTransitionOptions[]): this;
    clear(): this;
    execute(options?: ExecuteOptions): Promise<DeepClientResult<Record<string, {
        id: Id;
    }>>>;
    actions(): SerialAction[];
    getTransitionType(transition: Transition): TransitionType;
    setDefaultTable(table: Table<'insert' | 'update' | 'delete'>): this;
    getDefaultTable(): Table<"update" | "insert" | "delete">;
    setDeep(deep: DeepClient): this;
    getDeep(): DeepClient<import("../minilinks").Link<Id>>;
    setExecuteOptions(options: ExecuteOptions): this;
    getExecuteOptions(): ExecuteOptions;
}
export interface AppendTransitionOptions {
    transition: Transition;
    table?: Table<Transition[0] extends null ? 'insert' : Transition[1] extends null ? 'delete' : 'update'>;
    alias?: string;
}
export type TransitionType = 'insert' | 'update' | 'delete';
export type TransitionItem = MutationInputLink | null;
export type Transition = Array<TransitionItem>;
export type ExecuteOptions = Omit<ISerialOptions, 'actions'>;
export type SerialTransitionsBuilderOptions = {
    deep: DeepClient;
    defaultTable?: Table<'insert' | 'update' | 'delete'>;
    executeOptions?: ExecuteOptions;
};
type SerialAction = {
    mutation: IGenerateMutationBuilder;
    alias?: string;
    index: number;
    transitionType: TransitionType;
    table: Table<'insert' | 'update' | 'delete'>;
};
export {};
