import ts from 'typescript';
import { IterableTypes } from '../../constants';
import { ScriptBuilder } from '../../sb';
import { VisitOptions } from '../../types';
import { Helper } from '../Helper';
declare type ProcessType = (options: VisitOptions) => void;
export interface ForIterableTypeHelperOptions {
    readonly type?: ts.Type;
    readonly knownType?: IterableTypes;
    readonly array: ProcessType;
    readonly map: ProcessType;
    readonly set: ProcessType;
    readonly arrayStorage: ProcessType;
    readonly mapStorage: ProcessType;
    readonly setStorage: ProcessType;
    readonly iterableIterator: ProcessType;
    readonly defaultCase?: ProcessType;
}
export declare class ForIterableTypeHelper extends Helper {
    private readonly type?;
    private readonly knownType?;
    private readonly array;
    private readonly map;
    private readonly set;
    private readonly arrayStorage;
    private readonly mapStorage;
    private readonly setStorage;
    private readonly iterableIterator;
    private readonly defaultCase?;
    constructor({ type, knownType, array, map, set, arrayStorage, mapStorage, setStorage, iterableIterator, defaultCase, }: ForIterableTypeHelperOptions);
    emit(sb: ScriptBuilder, node: ts.Node, options: VisitOptions): void;
    private processKnownType;
}
export {};
