import { Dict } from './Dict';
import { IO } from './IO';
export type IOOf<T = any> = {
    input?: T;
    output?: T;
};
export type KindOf<T = any> = {
    data: T;
    ref: T;
};
export type IOKindOf<T = any> = IOOf<KindOf<T>>;
export declare function io<T>(callback: (type: IO) => void): void;
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;
