import { SdkError } from '../../errors';
import { BaseResponseError, BaseResponseSubscription } from './response-base';
import { SubscriptionState } from '../../internal/subscription-state';
import { TopicSubscribeResponse } from './enums';
import { MomentoLoggerFactory } from '../../config/logging';
interface IResponse {
    readonly type: TopicSubscribeResponse;
}
/**
 * Encapsulates a topic subscription.
 *
 * @remarks Currently allows unsubscribing from the topic.
 * In the future, this may be extended to include additional
 * statistics about the subscription.
 */
export declare class Subscription extends BaseResponseSubscription implements IResponse {
    private subscriptionState;
    private readonly logger;
    readonly type: TopicSubscribeResponse.Subscription;
    constructor(loggerFactory: MomentoLoggerFactory, subscriptionState: SubscriptionState);
    /**
     * Unsubscribes from the topic.
     *
     * @returns void
     */
    unsubscribe(): void;
    get isSubscribed(): boolean;
}
/**
 * Indicates that an error occurred during the topic subscribe request.
 *
 * This response object includes the following fields that you can use to determine
 * how you would like to handle the error:
 *
 * - `errorCode()` - a unique Momento error code indicating the type of error that occurred.
 * - `message()` - a human-readable description of the error
 * - `innerException()` - the original error that caused the failure; can be re-thrown.
 */
export declare class Error extends BaseResponseError implements IResponse {
    readonly type: TopicSubscribeResponse.Error;
    constructor(_innerException: SdkError);
}
export type Response = Subscription | Error;
export {};
