import CloudGraph, { Opts, ProviderData } from '@cloudgraph/sdk';
import { DocumentNode } from 'graphql';
import { Account } from './base';
export declare const enums: {
    services: {
        acm: string;
        alb: string;
        apiGatewayDomainName: string;
        apiGatewayHttpApi: string;
        apiGatewayResource: string;
        apiGatewayRestApi: string;
        apiGatewayStage: string;
        appSync: string;
        asg: string;
        athenaDataCatalog: string;
        billing: string;
        clientVpnEndpoint: string;
        cloud9: string;
        cloudFormationStack: string;
        cloudFormationStackSet: string;
        cloudfront: string;
        cloudtrail: string;
        cloudwatch: string;
        cloudwatchLog: string;
        codebuild: string;
        cognitoIdentityPool: string;
        cognitoUserPool: string;
        configurationRecorder: string;
        customerGateway: string;
        dmsReplicationInstance: string;
        dynamodb: string;
        ebs: string;
        ebsSnapshot: string;
        ec2Instance: string;
        ecr: string;
        ecsCluster: string;
        ecsContainer: string;
        ecsService: string;
        ecsTask: string;
        ecsTaskDefinition: string;
        ecsTaskSet: string;
        efs: string;
        efsMountTarget: string;
        eip: string;
        eksCluster: string;
        elasticBeanstalkApp: string;
        elasticBeanstalkEnv: string;
        elastiCacheCluster: string;
        elastiCacheReplicationGroup: string;
        elasticSearchDomain: string;
        elb: string;
        flowLog: string;
        glueJob: string;
        glueRegistry: string;
        guardDutyDetector: string;
        emrCluster: string;
        emrInstance: string;
        emrStep: string;
        iamAccessAnalyzer: string;
        iamUser: string;
        iamGroup: string;
        iamRole: string;
        iamPolicy: string;
        iamPasswordPolicy: string;
        iamSamlProvider: string;
        iamOpenIdConnectProvider: string;
        iamServerCertificate: string;
        iamInstanceProfile: string;
        igw: string;
        iot: string;
        kinesisFirehose: string;
        kinesisStream: string;
        kms: string;
        lambda: string;
        managedAirflow: string;
        managedPrefixList: string;
        mskCluster: string;
        nacl: string;
        nat: string;
        networkInterface: string;
        organization: string;
        rdsCluster: string;
        rdsClusterSnapshot: string;
        rdsDbInstance: string;
        redshiftCluster: string;
        route53HostedZone: string;
        route53Record: string;
        routeTable: string;
        sageMakerExperiment: string;
        sageMakerNotebookInstance: string;
        sageMakerProject: string;
        s3: string;
        secretsManager: string;
        securityHub: string;
        ses: string;
        sg: string;
        sns: string;
        sqs: string;
        subnet: string;
        systemsManagerInstance: string;
        systemsManagerDocument: string;
        transitGateway: string;
        transitGatewayAttachment: string;
        transitGatewayRouteTable: string;
        vpc: string;
        vpcEndpoint: string;
        vpcPeeringConnection: string;
        vpnConnection: string;
        vpnGateway: string;
        wafV2WebAcl: string;
    };
    regions: string[];
    resources: {
        acm: string;
        alb: string;
        elb: string;
        vpc: string;
        eip: string;
        nat: string;
        efs: string;
        igw: string;
        nacl: string;
        subnet: string;
        kmsKey: string;
        region: string;
        account: string;
        mskCluster: string;
        iamPasswordPolicy: string;
        iamSamlProvider: string;
        iamOpenIdConnectProvider: string;
        iamServerCertificate: string;
    };
    schemasMap: {
        [x: string]: string;
        account: string;
    };
};
export default class Provider extends CloudGraph.Client {
    constructor(config: any);
    private credentials;
    private profile;
    private role;
    private properties;
    logSelectedAccessRegionsAndResources(profilesOrRolesToLog: string[], regionsToLog: string, resourcesToLog: string): void;
    configure(): Promise<{
        [key: string]: any;
    }>;
    getIdentity(account: Account): Promise<{
        accountId: string;
    }>;
    private unsetAwsCredentials;
    private getAwsConfig;
    /**
     * getSchema is used to get the schema for provider
     * @returns A string of graphql sub schemas
     */
    getSchema(): DocumentNode;
    /**
     * Factory function to return AWS service classes based on input service
     * @param service an AWS service that is listed within the service map (current supported services)
     * @returns Instance of an AWS service class to interact with that AWS service
     */
    private getService;
    private getSharedIniFileCredentials;
    private getProfilesFromSharedConfig;
    private mergeRawData;
    private getRawData;
    private enhanceData;
    /**
     * getData is used to fetch all provider data specified in the config for the provider
     * @param opts: A set of optional values to configure how getData works
     * @returns Promise<any> All provider data
     */
    getData({ opts }: {
        opts: Opts;
    }): Promise<ProviderData>;
}
