import { SubscriptionOptions } from './subscription';
import { ITopic } from './topic-base';
import { Construct } from 'constructs';
/**
 * (experimental) Subscription configuration.
 *
 * @experimental
 */
export interface TopicSubscriptionConfig extends SubscriptionOptions {
    /**
     * (experimental) The scope in which to create the SNS subscription resource.
     *
     * Normally you'd
     * want the subscription to be created on the consuming stack because the
     * topic is usually referenced by the consumer's resource policy (e.g. SQS
     * queue policy). Otherwise, it will cause a cyclic reference.
     *
     * If this is undefined, the subscription will be created on the topic's stack.
     *
     * @default - use the topic as the scope of the subscription, in which case `subscriberId` must be defined.
     * @experimental
     */
    readonly subscriberScope?: Construct;
    /**
     * (experimental) The id of the SNS subscription resource created under `scope`.
     *
     * In most
     * cases, it is recommended to use the `uniqueId` of the topic you are
     * subscribing to.
     *
     * @experimental
     */
    readonly subscriberId: string;
}
/**
 * (experimental) Topic subscription.
 *
 * @experimental
 */
export interface ITopicSubscription {
    /**
     * (experimental) Returns a configuration used to subscribe to an SNS topic.
     *
     * @param topic topic for which subscription will be configured.
     * @experimental
     */
    bind(topic: ITopic): TopicSubscriptionConfig;
}
