import { Observable, OperatorFunction } from 'rxjs';
import { BuilderState, EndStates } from '../types';
export declare const STACK: Map<string, Set<number>>;
/**
 *
 * @param tag
 */
export declare function addToStack<T>(tag: string): OperatorFunction<BuilderState<T>, BuilderState<T>>;
/**
 * Operator function that buffers values from the source Observable until the global stack of pending builders is empty.
 * When the stack is empty, it emits all buffered values and clears the buffer.
 * @param tag
 * @template T The type of the source Observable.
 * @returns {OperatorFunction<T, T>} An OperatorFunction that can be used with pipe.
 */
export declare function whenStackIsEmpty<T>(tag?: string[]): OperatorFunction<BuilderState<T>, Array<EndStates<T>>>;
/**
 *
 * @param tags
 * @param triggers
 */
export declare function whenBuildersStackIsEmpty(tags?: string[]): Observable<void>;
/**
 *
 * @param tags
 */
export declare function afterBuilders(tags: string[]): Observable<void>;
