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