import { Request, Athena as AWSAthena } from 'aws-sdk';
declare type ReturnTypeFrom<K extends keyof AWSAthena> = AWSAthena[K] extends (...args: any) => Request<infer R, any> ? R : never;
declare type ParamsFrom<K extends keyof AWSAthena, Extras> = AWSAthena[K] extends {
    (param: infer P, callback: (...args: any) => void): Request<infer R, any>;
    (callback: (...args: any) => void): any;
} ? P & Extras : never;
export declare class Athena {
    private readonly client;
    private constructor();
    readonly signingRegion: undefined;
    readonly service: "athena";
    readonly global: false;
    readonly category: "Analytics";
    readonly topLevelCalls: readonly ["listDataCatalogs", "listEngineVersions", "listNamedQueries", "listQueryExecutions", "listWorkGroups"];
    batchGetNamedQuery: (params: ParamsFrom<'batchGetNamedQuery', Record<string, never>>) => Promise<ReturnTypeFrom<'batchGetNamedQuery'>>;
    batchGetPreparedStatement: (params: ParamsFrom<'batchGetPreparedStatement', Record<string, never>>) => Promise<ReturnTypeFrom<'batchGetPreparedStatement'>>;
    batchGetQueryExecution: (params: ParamsFrom<'batchGetQueryExecution', Record<string, never>>) => Promise<ReturnTypeFrom<'batchGetQueryExecution'>>;
    createDataCatalog: (params: ParamsFrom<'createDataCatalog', Record<string, never>>) => Promise<ReturnTypeFrom<'createDataCatalog'>>;
    createNamedQuery: (params: ParamsFrom<'createNamedQuery', Record<string, never>>) => Promise<ReturnTypeFrom<'createNamedQuery'>>;
    createPreparedStatement: (params: ParamsFrom<'createPreparedStatement', Record<string, never>>) => Promise<ReturnTypeFrom<'createPreparedStatement'>>;
    createWorkGroup: (params: ParamsFrom<'createWorkGroup', Record<string, never>>) => Promise<ReturnTypeFrom<'createWorkGroup'>>;
    deleteDataCatalog: (params: ParamsFrom<'deleteDataCatalog', Record<string, never>>) => Promise<ReturnTypeFrom<'deleteDataCatalog'>>;
    deleteNamedQuery: (params: ParamsFrom<'deleteNamedQuery', Record<string, never>>) => Promise<ReturnTypeFrom<'deleteNamedQuery'>>;
    deletePreparedStatement: (params: ParamsFrom<'deletePreparedStatement', Record<string, never>>) => Promise<ReturnTypeFrom<'deletePreparedStatement'>>;
    deleteWorkGroup: (params: ParamsFrom<'deleteWorkGroup', Record<string, never>>) => Promise<ReturnTypeFrom<'deleteWorkGroup'>>;
    getDataCatalog: (params: ParamsFrom<'getDataCatalog', Record<string, never>>) => Promise<ReturnTypeFrom<'getDataCatalog'>>;
    getDatabase: (params: ParamsFrom<'getDatabase', Record<string, never>>) => Promise<ReturnTypeFrom<'getDatabase'>>;
    getNamedQuery: (params: ParamsFrom<'getNamedQuery', Record<string, never>>) => Promise<ReturnTypeFrom<'getNamedQuery'>>;
    getPreparedStatement: (params: ParamsFrom<'getPreparedStatement', Record<string, never>>) => Promise<ReturnTypeFrom<'getPreparedStatement'>>;
    getQueryExecution: (params: ParamsFrom<'getQueryExecution', Record<string, never>>) => Promise<ReturnTypeFrom<'getQueryExecution'>>;
    getQueryResults: (params: ParamsFrom<'getQueryResults', Record<string, never>>) => Promise<ReturnTypeFrom<'getQueryResults'>>;
    getQueryRuntimeStatistics: (params: ParamsFrom<'getQueryRuntimeStatistics', Record<string, never>>) => Promise<ReturnTypeFrom<'getQueryRuntimeStatistics'>>;
    getTableMetadata: (params: ParamsFrom<'getTableMetadata', Record<string, never>>) => Promise<ReturnTypeFrom<'getTableMetadata'>>;
    getWorkGroup: (params: ParamsFrom<'getWorkGroup', Record<string, never>>) => Promise<ReturnTypeFrom<'getWorkGroup'>>;
    listDataCatalogs(params: {
        [K in keyof ParamsFrom<'listDataCatalogs', {
            next?: string;
            limit?: number;
        }>]: ParamsFrom<'listDataCatalogs', {
            next?: string;
            limit?: number;
        }>[K];
    }): Promise<{
        next?: string | number;
        totalItems: number;
        member: {
            [K in keyof ReturnTypeFrom<'listDataCatalogs'>]-?: ReturnTypeFrom<'listDataCatalogs'>[K];
        }['DataCatalogsSummary'];
    }>;
    listDatabases(params: {
        [K in keyof ParamsFrom<'listDatabases', {
            next?: string;
            limit?: number;
        }>]: ParamsFrom<'listDatabases', {
            next?: string;
            limit?: number;
        }>[K];
    }): Promise<{
        next?: string | number;
        totalItems: number;
        member: {
            [K in keyof ReturnTypeFrom<'listDatabases'>]-?: ReturnTypeFrom<'listDatabases'>[K];
        }['DatabaseList'];
    }>;
    listEngineVersions: (params: ParamsFrom<'listEngineVersions', Record<string, never>>) => Promise<ReturnTypeFrom<'listEngineVersions'>>;
    listNamedQueries: (params: ParamsFrom<'listNamedQueries', Record<string, never>>) => Promise<ReturnTypeFrom<'listNamedQueries'>>;
    listPreparedStatements: (params: ParamsFrom<'listPreparedStatements', Record<string, never>>) => Promise<ReturnTypeFrom<'listPreparedStatements'>>;
    listQueryExecutions: (params: ParamsFrom<'listQueryExecutions', Record<string, never>>) => Promise<ReturnTypeFrom<'listQueryExecutions'>>;
    listTableMetadata(params: {
        [K in keyof ParamsFrom<'listTableMetadata', {
            next?: string;
            limit?: number;
        }>]: ParamsFrom<'listTableMetadata', {
            next?: string;
            limit?: number;
        }>[K];
    }): Promise<{
        next?: string | number;
        totalItems: number;
        member: {
            [K in keyof ReturnTypeFrom<'listTableMetadata'>]-?: ReturnTypeFrom<'listTableMetadata'>[K];
        }['TableMetadataList'];
    }>;
    listTagsForResource(params: {
        [K in keyof ParamsFrom<'listTagsForResource', {
            next?: string;
            limit?: number;
        }>]: ParamsFrom<'listTagsForResource', {
            next?: string;
            limit?: number;
        }>[K];
    }): Promise<{
        next?: string | number;
        totalItems: number;
        member: {
            [K in keyof ReturnTypeFrom<'listTagsForResource'>]-?: ReturnTypeFrom<'listTagsForResource'>[K];
        }['Tags'];
    }>;
    listWorkGroups: (params: ParamsFrom<'listWorkGroups', Record<string, never>>) => Promise<ReturnTypeFrom<'listWorkGroups'>>;
    startQueryExecution: (params: ParamsFrom<'startQueryExecution', Record<string, never>>) => Promise<ReturnTypeFrom<'startQueryExecution'>>;
    stopQueryExecution: (params: ParamsFrom<'stopQueryExecution', Record<string, never>>) => Promise<ReturnTypeFrom<'stopQueryExecution'>>;
    tagResource: (params: ParamsFrom<'tagResource', Record<string, never>>) => Promise<ReturnTypeFrom<'tagResource'>>;
    untagResource: (params: ParamsFrom<'untagResource', Record<string, never>>) => Promise<ReturnTypeFrom<'untagResource'>>;
    updateDataCatalog: (params: ParamsFrom<'updateDataCatalog', Record<string, never>>) => Promise<ReturnTypeFrom<'updateDataCatalog'>>;
    updateNamedQuery: (params: ParamsFrom<'updateNamedQuery', Record<string, never>>) => Promise<ReturnTypeFrom<'updateNamedQuery'>>;
    updatePreparedStatement: (params: ParamsFrom<'updatePreparedStatement', Record<string, never>>) => Promise<ReturnTypeFrom<'updatePreparedStatement'>>;
    updateWorkGroup: (params: ParamsFrom<'updateWorkGroup', Record<string, never>>) => Promise<ReturnTypeFrom<'updateWorkGroup'>>;
    static fromClient(client: AWSAthena): Athena;
    static client(options?: AWSAthena.Types.ClientConfiguration): Athena;
}
export {};
