import type { Combine, Type } from 'ts-gems';
import { TypeThunkAsync } from 'ts-gems/lib/types';
import { OpraSchema } from '../../schema/index.js';
import { DocumentElement } from '../common/document-element.js';
import { DataType } from '../data-type/data-type.js';
import type { RpcHeader } from './rpc-header';
import type { RpcOperation } from './rpc-operation';
/**
 * @namespace RpcOperationResponse
 */
export declare namespace RpcOperationResponse {
    interface Metadata extends Combine<{
        payloadType?: TypeThunkAsync | string;
        keyType?: TypeThunkAsync | string;
        headers?: RpcHeader.Metadata[];
    }, OpraSchema.RpcOperationResponse> {
    }
    interface Options extends Combine<{
        keyType?: Type | string;
    }, Pick<Metadata, 'channel' | 'description'>> {
    }
    interface InitArguments extends Combine<{
        payloadType?: DataType | string | Type;
        keyType?: DataType | string | Type;
    }, Pick<Metadata, 'channel' | 'description'>> {
    }
}
/**
 * @class RpcOperationResponse
 */
export declare class RpcOperationResponse extends DocumentElement {
    readonly owner: RpcOperation;
    channel?: string | RegExp | (string | RegExp)[];
    description?: string;
    payloadType: DataType;
    keyType?: DataType;
    headers: RpcHeader[];
    constructor(owner: RpcOperation, initArgs?: RpcOperationResponse.InitArguments);
    findHeader(paramName: string): RpcHeader | undefined;
    toJSON(): OpraSchema.RpcOperationResponse;
}
