import { Dict } from './Dict';
import { IO } from './IO';
export declare type IOOf<T = any> = {
    input: T;
    output: T;
};
export declare type _IOOf<T = any> = {
    input?: T;
    output?: T;
};
export declare type KindOf<T = any> = {
    data: T;
    ref: T;
};
export declare type IOKindOf<T = any> = IOOf<KindOf<T>>;
export declare function forIO<T>(data: _IOOf<T>, callback: (type: IO, data: T) => void): void;
export declare function forIOObjKV<T>(data: _IOOf<Dict<T>>, callback: (type: IO, key: string, data: T) => void): void;
export declare function forIOObjVK<T>(data: _IOOf<Dict<T>>, callback: (type: IO, data: T, key: string) => void): void;
