import { aws_iam as iam } from 'aws-cdk-lib';
import * as constructs from 'constructs';
import * as glue from '../index';
export interface LakeFormationConfiguration {
    readonly accountId?: string | undefined;
    readonly useLakeFormationCredentials?: boolean | undefined;
}
export declare enum CrawlerLineageSettings {
    ENABLE = "ENABLE",
    DISABLE = "DISABLE"
}
export interface LineageConfiguration {
    readonly crawlerLineageSettings: CrawlerLineageSettings;
}
export declare enum RecrawlBehavior {
    CRAWL_EVERYTHING = "CRAWL_EVERTHING",
    CRAWL_NEW_FOLDERS_ONLY = "CRAWL_NEW_FOLDERS_ONLY",
    CRAWL_EVENT_MODE = "CRAWL_EVENT_MODE"
}
export interface RecrawlPolicy {
    readonly recrawlBehavior: RecrawlBehavior;
}
export declare enum DeleteBehavior {
    LOG = "LOG",
    DELETE_FROM_DATABASE = "DELETE_FROM_DATABASE",
    DEPRECATE_IN_DATABASE = "DEPRECATE_IN_DATABASE"
}
export declare enum UpdateBehavior {
    LOG = "LOG",
    UPDATE_IN_DATABASE = "UPDATE_IN_DATABASE"
}
export interface SchemaChangePolicy {
    readonly deleteBehavior: DeleteBehavior;
    readonly updateBehavior: UpdateBehavior;
}
export interface AddClassifiersProps {
    readonly classifiers: glue.GlueClassifier[];
}
export interface CrawlerProps {
    readonly name: string;
    readonly role: iam.Role;
    readonly s3Targets?: glue.S3Target[] | undefined;
    readonly jdbcTargets?: glue.JDBCTarget[];
    readonly databaseName: string;
    readonly description?: string | undefined;
}
export declare class Crawler extends constructs.Construct {
    parameters: {
        [key: string]: any;
    };
    constructor(scope: constructs.Construct, id: string, props: CrawlerProps);
    /**
     * This will add classifers to the crawler.
     * @param props addClassifierProps
     */
    addClassifiers(props: AddClassifiersProps): void;
    /**
     * Use the crawler with lakeFormation Permissions.
     * @param props LakeFormationConfiguration
     * @returns void
     *
     */
    useWithLakeFormation(props: LakeFormationConfiguration): void;
    /**
     * Set the recall  policy for the crawler.
     * @param recallpolicy RecrawlPolicy
     * @returns void
     */
    addRecrawlBehaviour(recallpolicy: RecrawlPolicy): void;
    /**
     * Enable Lineage for the Crawler
     * @param lineage
     */
    enableLineage(lineage: CrawlerLineageSettings): void;
    /**
     * Enable SchemaChangPolicy
     * @param schemaChangePolicy
     */
    addSchemaChangePolicy(schemaChangePolicy: SchemaChangePolicy): void;
    /**
     * set crawler Configuration
     * @param configuration
     */
    addConfiguration(configuration: string): void;
    /**
     * add CrawlerSecurity Configuration
     * @param configuration
     * */
    addCrawlerSecurityConfiguration(configuration: string): void;
    /**
     * add schedule for the crawler
     * @param schedule
     */
    addSchedule(schedule: string): void;
    /**
     * add table prefix for the crawler
     * @param tablePrefix
     */
    addTablePrefix(tablePrefix: string): void;
}
