/**
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
import { Metadata } from '@grpc/grpc-js';
import { AckMessageRequest, AckMessageResponse, ChangeInvisibleDurationRequest, ChangeInvisibleDurationResponse, EndTransactionRequest, EndTransactionResponse, ForwardMessageToDeadLetterQueueRequest, ForwardMessageToDeadLetterQueueResponse, GetOffsetRequest, GetOffsetResponse, HeartbeatRequest, HeartbeatResponse, NotifyClientTerminationRequest, NotifyClientTerminationResponse, PullMessageRequest, PullMessageResponse, QueryAssignmentRequest, QueryAssignmentResponse, QueryOffsetRequest, QueryOffsetResponse, QueryRouteRequest, QueryRouteResponse, RecallMessageRequest, RecallMessageResponse, ReceiveMessageRequest, ReceiveMessageResponse, SendMessageRequest, SendMessageResponse, SyncLiteSubscriptionRequest, SyncLiteSubscriptionResponse, UpdateOffsetRequest, UpdateOffsetResponse } from '../../proto/apache/rocketmq/v2/service_pb';
import { Endpoints } from '../route';
export declare class RpcClient {
    #private;
    constructor(endpoints: Endpoints, sslEnabled: boolean);
    idleDuration(): number;
    close(): void;
    /**
     * Query topic route
     *
     * @param request query route request.
     * @param metadata gRPC request header metadata.
     * @param duration request max duration in milliseconds.
     */
    queryRoute(request: QueryRouteRequest, metadata: Metadata, duration: number): Promise<QueryRouteResponse>;
    heartbeat(request: HeartbeatRequest, metadata: Metadata, duration: number): Promise<HeartbeatResponse>;
    sendMessage(request: SendMessageRequest, metadata: Metadata, duration: number): Promise<SendMessageResponse>;
    queryAssignment(request: QueryAssignmentRequest, metadata: Metadata, duration: number): Promise<QueryAssignmentResponse>;
    receiveMessage(request: ReceiveMessageRequest, metadata: Metadata, duration: number): Promise<ReceiveMessageResponse[]>;
    ackMessage(request: AckMessageRequest, metadata: Metadata, duration: number): Promise<AckMessageResponse>;
    forwardMessageToDeadLetterQueue(request: ForwardMessageToDeadLetterQueueRequest, metadata: Metadata, duration: number): Promise<ForwardMessageToDeadLetterQueueResponse>;
    pullMessage(request: PullMessageRequest, metadata: Metadata, duration: number): Promise<PullMessageResponse[]>;
    updateOffset(request: UpdateOffsetRequest, metadata: Metadata, duration: number): Promise<UpdateOffsetResponse>;
    getOffset(request: GetOffsetRequest, metadata: Metadata, duration: number): Promise<GetOffsetResponse>;
    queryOffset(request: QueryOffsetRequest, metadata: Metadata, duration: number): Promise<QueryOffsetResponse>;
    endTransaction(request: EndTransactionRequest, metadata: Metadata, duration: number): Promise<EndTransactionResponse>;
    telemetry(metadata: Metadata): import("@grpc/grpc-js").ClientDuplexStream<import("../../proto/apache/rocketmq/v2/service_pb").TelemetryCommand, import("../../proto/apache/rocketmq/v2/service_pb").TelemetryCommand>;
    notifyClientTermination(request: NotifyClientTerminationRequest, metadata: Metadata, duration: number): Promise<NotifyClientTerminationResponse>;
    changeInvisibleDuration(request: ChangeInvisibleDurationRequest, metadata: Metadata, duration: number): Promise<ChangeInvisibleDurationResponse>;
    recallMessage(request: RecallMessageRequest, metadata: Metadata, duration: number): Promise<RecallMessageResponse>;
    syncLiteSubscription(request: SyncLiteSubscriptionRequest, metadata: Metadata, duration: number): Promise<SyncLiteSubscriptionResponse>;
}
