import { Transport } from './enums/index.js';
import { ClientOptions, PatternMetadata } from './interfaces/index.js';
import { type Controller } from '@nestjs/common/internal';
import type { MetadataScanner } from '@nestjs/core';
export interface ClientProperties {
    property: string;
    metadata: ClientOptions;
}
export interface EventOrMessageListenerDefinition {
    patterns: PatternMetadata[];
    methodKey: string;
    isEventHandler: boolean;
    targetCallback: (...args: any[]) => any;
    transport?: Transport;
    extras?: Record<string, any>;
}
export interface MessageRequestProperties {
    requestPattern: PatternMetadata;
    replyPattern: PatternMetadata;
}
export declare class ListenerMetadataExplorer {
    private readonly metadataScanner;
    constructor(metadataScanner: MetadataScanner);
    explore(instance: Controller): EventOrMessageListenerDefinition[];
    exploreMethodMetadata(instance: Controller, instancePrototype: object, methodKey: string): EventOrMessageListenerDefinition | undefined;
    scanForClientHooks(instance: Controller): IterableIterator<ClientProperties>;
}
