import { CppObservableRequests, CppObservableResponse, ObservableBindingFunc } from './binding';
import { ValueRecorder, Meter } from './metrics';
import { ObservableRequestHandler } from './observabilityhandler';
import { RequestSpan, RequestTracer } from './tracing';
/**
 * @internal
 */
export declare class NoOpSpan implements RequestSpan {
    /**
     * @internal
     */
    setAttribute(): void;
    /**
     * @internal
     */
    addEvent(): void;
    /**
     * @internal
     */
    setStatus(): void;
    /**
     * @internal
     */
    end(): void;
    /**
     * @internal
     */
    isRecording(): boolean;
    /**
     * @internal
     */
    get name(): string;
}
/**
 * @internal
 */
export declare class NoOpTracer implements RequestTracer {
    /**
     * @internal
     */
    requestSpan(): RequestSpan;
}
/**
 * @internal
 */
export declare function wrapObservableBindingCall<TReq extends CppObservableRequests, TResp extends CppObservableResponse>(fn: ObservableBindingFunc<TReq, TResp>, req: TReq, obsReqHandler: ObservableRequestHandler | null): Promise<[Error | null, TResp]>;
/**
 * @internal
 */
export declare class NoOpValueRecorder implements ValueRecorder {
    /**
     * @internal
     */
    recordValue(_value: number): void;
}
/**
 * @internal
 */
export declare class NoOpMeter implements Meter {
    /**
     * @internal
     */
    valueRecorder(_name: string, _tags: Record<string, string>): ValueRecorder;
}
