import type { NodeInstance, SplitInBatchesBuilder, SplitInBatchesFactoryConfig, NodeChain } from '../../types/base';
export type NodeBatch = NodeInstance<string, string, unknown> | Array<NodeInstance<string, string, unknown>>;
export type BranchTarget = null | NodeInstance<string, string, unknown> | NodeChain<NodeInstance<string, string, unknown>, NodeInstance<string, string, unknown>> | Array<NodeInstance<string, string, unknown> | NodeChain<NodeInstance<string, string, unknown>, NodeInstance<string, string, unknown>>>;
export interface SplitInBatchesBranches {
    done: BranchTarget;
    each: BranchTarget;
}
declare class SplitInBatchesBuilderImpl implements SplitInBatchesBuilder<unknown> {
    readonly sibNode: NodeInstance<'n8n-nodes-base.splitInBatches', string, unknown>;
    _doneNodes: Array<NodeInstance<string, string, unknown>>;
    _eachNodes: Array<NodeInstance<string, string, unknown>>;
    _doneBatches: NodeBatch[];
    _eachBatches: NodeBatch[];
    _hasLoop: boolean;
    _doneTarget?: BranchTarget;
    _eachTarget?: BranchTarget;
    constructor(input: SplitInBatchesFactoryConfig);
    onEachBatch(target: BranchTarget): this;
    onDone(target: BranchTarget): this;
    getAllNodes(): Array<NodeInstance<string, string, unknown>>;
    getDoneNodes(): Array<NodeInstance<string, string, unknown>>;
    getEachNodes(): Array<NodeInstance<string, string, unknown>>;
    hasLoop(): boolean;
}
export declare function splitInBatches(configOrNode: SplitInBatchesFactoryConfig | NodeInstance<'n8n-nodes-base.splitInBatches', string, unknown>, branches?: SplitInBatchesBranches): SplitInBatchesBuilder<unknown>;
export declare function isSplitInBatchesBuilder(value: unknown): value is SplitInBatchesBuilderImpl;
export {};
