import * as iam from "../../aws-iam";
import * as cdk from "../../core";
import { Construct } from 'constructs';
import { ILogGroup } from './log-group';
import { ILogSubscriptionDestination, LogSubscriptionDestinationConfig } from './subscription-filter';
/**
 * (experimental) Properties for a CrossAccountDestination.
 *
 * @experimental
 */
export interface CrossAccountDestinationProps {
    /**
     * (experimental) The name of the log destination.
     *
     * @default Automatically generated
     * @experimental
     */
    readonly destinationName?: string;
    /**
     * (experimental) The role to assume that grants permissions to write to 'target'.
     *
     * The role must be assumable by 'logs.{REGION}.amazonaws.com'.
     *
     * @experimental
     */
    readonly role: iam.IRole;
    /**
     * (experimental) The log destination target's ARN.
     *
     * @experimental
     */
    readonly targetArn: string;
}
/**
 * (experimental) A new CloudWatch Logs Destination for use in cross-account scenarios.
 *
 * CrossAccountDestinations are used to subscribe a Kinesis stream in a
 * different account to a CloudWatch Subscription.
 *
 * Consumers will hardly ever need to use this class. Instead, directly
 * subscribe a Kinesis stream using the integration class in the
 * `@aws-cdk/aws-logs-destinations` package; if necessary, a
 * `CrossAccountDestination` will be created automatically.
 *
 * @experimental
 * @resource AWS::Logs::Destination
 */
export declare class CrossAccountDestination extends cdk.Resource implements ILogSubscriptionDestination {
    /**
     * (experimental) Policy object of this CrossAccountDestination object.
     *
     * @experimental
     */
    readonly policyDocument: iam.PolicyDocument;
    /**
     * (experimental) The name of this CrossAccountDestination object.
     *
     * @experimental
     * @attribute true
     */
    readonly destinationName: string;
    /**
     * (experimental) The ARN of this CrossAccountDestination object.
     *
     * @experimental
     * @attribute true
     */
    readonly destinationArn: string;
    /**
     * The inner resource
     */
    private readonly resource;
    /**
     * @experimental
     */
    constructor(scope: Construct, id: string, props: CrossAccountDestinationProps);
    /**
     * @experimental
     */
    addToPolicy(statement: iam.PolicyStatement): void;
    /**
     * (experimental) Return the properties required to send subscription events to this destination.
     *
     * If necessary, the destination can use the properties of the SubscriptionFilter
     * object itself to configure its permissions to allow the subscription to write
     * to it.
     *
     * The destination may reconfigure its own permissions in response to this
     * function call.
     *
     * @experimental
     */
    bind(_scope: Construct, _sourceLogGroup: ILogGroup): LogSubscriptionDestinationConfig;
    /**
     * Generate a unique Destination name in case the user didn't supply one
     */
    private generateUniqueName;
    /**
     * Return a stringified JSON version of the PolicyDocument
     */
    private lazyStringifiedPolicyDocument;
}
