import iam = require('@aws-cdk/aws-iam');
import cdk = require('@aws-cdk/cdk');
import { LogGroup } from './log-group';
import { DestinationArn } from './logs.generated';
import { ILogSubscriptionDestination, LogSubscriptionDestination } from './subscription-filter';
export interface CrossAccountDestinationProps {
    /**
     * The name of the log destination.
     *
     * @default Automatically generated
     */
    destinationName?: string;
    /**
     * The role to assume that grants permissions to write to 'target'.
     *
     * The role must be assumable by 'logs.{REGION}.amazonaws.com'.
     */
    role: iam.Role;
    /**
     * The log destination target's ARN
     */
    targetArn: cdk.Arn;
}
/**
 * A new CloudWatch Logs Destination for use in cross-account scenarios
 *
 * Log destinations can be used to subscribe a Kinesis stream in a different
 * account to a CloudWatch Subscription. A Kinesis stream in the same account
 * can be subscribed directly.
 *
 * The @aws-cdk/aws-kinesis library takes care of this automatically; you shouldn't
 * need to bother with this class.
 */
export declare class CrossAccountDestination extends cdk.Construct implements ILogSubscriptionDestination {
    /**
     * Policy object of this CrossAccountDestination object
     */
    readonly policyDocument: cdk.PolicyDocument;
    /**
     * The name of this CrossAccountDestination object
     */
    readonly destinationName: DestinationName;
    /**
     * The ARN of this CrossAccountDestination object
     */
    readonly destinationArn: DestinationArn;
    /**
     * The inner resource
     */
    private readonly resource;
    constructor(parent: cdk.Construct, id: string, props: CrossAccountDestinationProps);
    addToPolicy(statement: cdk.PolicyStatement): void;
    logSubscriptionDestination(_sourceLogGroup: LogGroup): LogSubscriptionDestination;
    /**
     * Generate a unique Destination name in case the user didn't supply one
     */
    private generateUniqueName;
    /**
     * Return a stringified JSON version of the PolicyDocument
     */
    private stringifiedPolicyDocument;
}
/**
 * Name of a CloudWatch Destination
 */
export declare class DestinationName extends cdk.Token {
}
