import type { Construct } from 'constructs';
import type { CommonDestinationProps, CommonDestinationS3Props } from './common';
import type { DestinationBindOptions, DestinationConfig, IDestination } from './destination';
import type { IInputFormat, IOutputFormat, SchemaConfiguration } from './record-format';
import type * as s3 from '../../aws-s3';
import * as cdk from '../../core';
/**
 * Props for defining an S3 destination of an Amazon Data Firehose delivery stream.
 */
export interface S3BucketProps extends CommonDestinationS3Props, CommonDestinationProps {
    /**
     * Specify a file extension.
     * It will override the default file extension appended by Data Format Conversion or S3 compression features such as `.parquet` or `.gz`.
     *
     * File extension must start with a period (`.`) and can contain allowed characters: `0-9a-z!-_.*'()`.
     *
     * @see https://docs.aws.amazon.com/firehose/latest/dev/create-destination.html#create-destination-s3
     * @default - The default file extension appended by Data Format Conversion or S3 compression features
     */
    readonly fileExtension?: string;
    /**
     * The time zone you prefer.
     *
     * @see https://docs.aws.amazon.com/firehose/latest/dev/s3-prefixes.html#timestamp-namespace
     *
     * @default - UTC
     */
    readonly timeZone?: cdk.TimeZone;
    /**
     * The input format, output format, and schema config for converting data from the JSON format to the Parquet or ORC format before writing to Amazon S3.
     * @see https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-extendeds3destinationconfiguration.html#cfn-kinesisfirehose-deliverystream-extendeds3destinationconfiguration-dataformatconversionconfiguration
     *
     * @default - no data format conversion is done
     */
    readonly dataFormatConversion?: DataFormatConversionProps;
    /**
     * Specify dynamic partitioning.
     * @see https://docs.aws.amazon.com/firehose/latest/dev/dynamic-partitioning.html
     * @default - Dynamic partitioning is disabled.
     */
    readonly dynamicPartitioning?: DynamicPartitioningProps;
}
/**
 * Props for specifying data format conversion for Firehose
 *
 * @see https://docs.aws.amazon.com/firehose/latest/dev/record-format-conversion.html
 */
export interface DataFormatConversionProps {
    /**
     * Whether data format conversion is enabled or not.
     *
     * @default `true`
     */
    readonly enabled?: boolean;
    /**
     * The schema configuration to use in converting the input format to output format
     */
    readonly schemaConfiguration: SchemaConfiguration;
    /**
     * The input format to convert from for record format conversion
     */
    readonly inputFormat: IInputFormat;
    /**
     * The output format to convert to for record format conversion
     */
    readonly outputFormat: IOutputFormat;
}
/**
 * Props for defining dynamic partitioning.
 *
 * @see https://docs.aws.amazon.com/firehose/latest/dev/dynamic-partitioning.html
 */
export interface DynamicPartitioningProps {
    /**
     * Whether to enable the dynamic partitioning.
     *
     * You cannot enable dynamic partitioning for an existing Firehose stream that does not have dynamic partitioning already enabled.
     *
     * @see https://docs.aws.amazon.com/firehose/latest/dev/dynamic-partitioning-enable.html
     */
    readonly enabled: boolean;
    /**
     * The total amount of time that Data Firehose spends on retries.
     *
     * Minimum: Duration.seconds(0)
     * Maximum: Duration.seconds(7200)
     *
     * @default Duration.seconds(300)
     */
    readonly retryDuration?: cdk.Duration;
}
/**
 * An S3 bucket destination for data from an Amazon Data Firehose delivery stream.
 */
export declare class S3Bucket implements IDestination {
    private readonly bucket;
    private readonly props;
    constructor(bucket: s3.IBucket, props?: S3BucketProps);
    bind(scope: Construct, _options: DestinationBindOptions): DestinationConfig;
    private getS3BackupMode;
}
