import { TwirpOptions } from "./twirp-options";
import { ClientStreamingCall, DuplexStreamingCall, MethodInfo, RpcOptions, RpcTransport, ServerStreamingCall, UnaryCall } from "@protobuf-ts/runtime-rpc";
/**
 * Implements the Twirp protocol, supporting JSON or binary format on
 * the wire. Uses the fetch API to do the HTTP requests.
 *
 * See https://twitchtv.github.io/twirp/docs/spec_v5.html
 */
export declare class TwirpFetchTransport implements RpcTransport {
    protected readonly defaultOptions: TwirpOptions;
    constructor(options: TwirpOptions);
    mergeOptions(options?: Partial<RpcOptions>): RpcOptions;
    unary<I extends object, O extends object>(method: MethodInfo<I, O>, input: I, options: RpcOptions): UnaryCall<I, O>;
    /**
     * Create an URI for a RPC call.
     *
     * Takes the `baseUrl` option and appends:
     * - slash "/"
     * - package name
     * - dot "."
     * - service name
     * - slash "/"
     * - method name
     *
     * If the service was declared without a package, the package name and dot
     * are omitted.
     *
     * The method name is CamelCased just as it would be in Go, unless the
     * option `useProtoMethodName` is `true`.
     */
    protected makeUrl(method: MethodInfo, options: TwirpOptions): string;
    clientStreaming<I extends object, O extends object>(method: MethodInfo<I, O>): ClientStreamingCall<I, O>;
    duplex<I extends object, O extends object>(method: MethodInfo<I, O>): DuplexStreamingCall<I, O>;
    serverStreaming<I extends object, O extends object>(method: MethodInfo<I, O>): ServerStreamingCall<I, O>;
}
