import { TopicGrpcConfiguration, TopicGrpcConfigurationProps } from './grpc-configuration';
export interface TopicTransportStrategy {
    /**
     * Configures the low-level gRPC settings for the Momento client's communication
     * with the Momento server.
     * @returns {TopicGrpcConfiguration}
     */
    getGrpcConfig(): TopicGrpcConfiguration;
    /**
     * Copy constructor for overriding the gRPC configuration
     * @param {TopicGrpcConfiguration} grpcConfig
     * @returns {TopicTransportStrategy} a new TransportStrategy with the specified gRPC config.
     */
    withGrpcConfig(grpcConfig: TopicGrpcConfiguration): TopicTransportStrategy;
    /**
     * Copy constructor to update the client-side timeout
     * @param {number} clientTimeoutMillis
     * @returns {TopicTransportStrategy} a new TopicTransportStrategy with the specified client timeout
     */
    withClientTimeoutMillis(clientTimeoutMillis: number): TopicTransportStrategy;
}
export interface TopicTransportStrategyProps {
    /**
     * low-level gRPC settings for communication with the Momento server
     */
    grpcConfiguration: TopicGrpcConfiguration;
}
export declare class StaticTopicGrpcConfiguration implements TopicGrpcConfiguration {
    private readonly numClients;
    private readonly numStreamClients;
    private readonly numUnaryClients;
    private readonly keepAlivePermitWithoutCalls?;
    private readonly keepAliveTimeoutMs?;
    private readonly keepAliveTimeMs?;
    private readonly deadlineMillis;
    constructor(props: TopicGrpcConfigurationProps);
    getNumClients(): number;
    getNumStreamClients(): number;
    getNumUnaryClients(): number;
    withNumClients(numClients: number): TopicGrpcConfiguration;
    withNumStreamClients(numStreamClients: number): TopicGrpcConfiguration;
    withNumUnaryClients(numUnaryClients: number): TopicGrpcConfiguration;
    getKeepAliveTimeoutMS(): number | undefined;
    getKeepAliveTimeMS(): number | undefined;
    getKeepAlivePermitWithoutCalls(): number | undefined;
    getDeadlineMillis(): number;
    withDeadlineMillis(deadlineMillis: number): StaticTopicGrpcConfiguration;
}
export declare class StaticTopicTransportStrategy implements TopicTransportStrategy {
    private readonly grpcConfiguration;
    constructor(props: TopicTransportStrategyProps);
    getGrpcConfig(): TopicGrpcConfiguration;
    withGrpcConfig(grpcConfiguration: TopicGrpcConfiguration): StaticTopicTransportStrategy;
    withClientTimeoutMillis(clientTimeoutMillis: number): StaticTopicTransportStrategy;
}
