import * as schema from '../../schema';
import { AbsType } from './AbsType';
import type { SchemaOf, Type } from '../types';
export declare class FnType<Req extends Type, Res extends Type, Ctx = unknown> extends AbsType<schema.FnSchema<SchemaOf<Req>, SchemaOf<Res>, Ctx>> {
    readonly req: Req;
    readonly res: Res;
    constructor(req: Req, res: Res, options?: schema.Optional<schema.FnSchema<SchemaOf<Req>, SchemaOf<Res>>>);
    input<T extends Type>(req: T): FnType<T, Res>;
    inp<T extends Type>(req: T): FnType<T, Res>;
    output<T extends Type>(res: T): FnType<Req, T>;
    out<T extends Type>(res: T): FnType<Req, T>;
    io<I extends Type, O extends Type>(request: I, response: O): FnType<I, O, Ctx>;
    signature<I extends Type, O extends Type>(request: I, response: O): FnType<I, O, Ctx>;
    ctx<T>(): FnType<Req, Res, T>;
    getSchema(): schema.FnSchema<SchemaOf<Req>, SchemaOf<Res>, Ctx>;
    default(value: schema.FunctionValue<schema.TypeOf<SchemaOf<Req>>, schema.TypeOf<SchemaOf<Res>>>): this;
    exec(input: schema.TypeOf<SchemaOf<Req>>): schema.TypeOf<SchemaOf<Res>> | Promise<schema.TypeOf<SchemaOf<Res>>>;
    toString(tab?: string): string;
}
export declare class FnRxType<Req extends Type, Res extends Type, Ctx = unknown> extends AbsType<schema.FnRxSchema<SchemaOf<Req>, SchemaOf<Res>, Ctx>> {
    readonly req: Req;
    readonly res: Res;
    readonly isStreaming = true;
    constructor(req: Req, res: Res, options?: schema.Optional<schema.FnRxSchema<SchemaOf<Req>, SchemaOf<Res>>>);
    input<T extends Type>(req: T): FnRxType<T, Res>;
    inp<T extends Type>(req: T): FnRxType<T, Res>;
    output<T extends Type>(res: T): FnRxType<Req, T>;
    out<T extends Type>(res: T): FnRxType<Req, T>;
    io<I extends Type, O extends Type>(request: I, response: O): FnRxType<I, O, Ctx>;
    signature<I extends Type, O extends Type>(request: I, response: O): FnRxType<I, O, Ctx>;
    ctx<T>(): FnRxType<Req, Res, T>;
    getSchema(): schema.FnRxSchema<SchemaOf<Req>, SchemaOf<Res>, Ctx>;
    default(value: schema.FnStreamingValue<schema.TypeOf<SchemaOf<Req>>, schema.TypeOf<SchemaOf<Res>>>): this;
    toString(tab?: string): string;
}
//# sourceMappingURL=FnType.d.ts.map