import IAM, { AccessKeyLastUsed, AccessKeyMetadata, AttachedPolicy, MFADevice, User, VirtualMFADevice } from 'aws-sdk/clients/iam';
import { Config } from 'aws-sdk/lib/config';
import { TagMap } from '../../types';
export interface RawAwsAccessKey extends AccessKeyMetadata {
    AccessKeyLastUsed: AccessKeyLastUsed;
}
export interface RawAwsIamUserReport {
    User: string;
    Arn: string;
    UserCreationTime: string;
    PasswordEnabled: string;
    PasswordLastUsed: string;
    PasswordLastChanged: string;
    PasswordNextRotation: string;
    MfaActive: string;
    AccessKey1Active: string;
    AccessKey1LastRotated: string;
    AccessKey1LastUsedDate: string;
    AccessKey1LastUsedRegion: string;
    AccessKey1LastUsedService: string;
    AccessKey2Active: string;
    AccessKey2LastRotated: string;
    AccessKey2LastUsedDate: string;
    AccessKey2LastUsedRegion: string;
    AccessKey2LastUsedService: string;
    Cert1Active: string;
    Cert1LastRotated: string;
    Cert2Active: string;
    Cert2LastRotated: string;
}
export interface RawAwsIamUser extends Omit<User, 'Tags'> {
    AccessKeyLastUsedData: RawAwsAccessKey[];
    MFADevices: MFADevice[];
    VirtualMFADevices?: VirtualMFADevice[];
    Groups: string[];
    Policies: string[];
    ManagedPolicies: AttachedPolicy[];
    ReportData?: RawAwsIamUserReport;
    region: string;
    Tags?: TagMap;
}
export declare const listMFADevicesByUsername: (iam: IAM, user: User, marker?: string) => Promise<{
    UserName: string;
    MFADevices: MFADevice[];
}>;
export declare const listVirtualMFADevices: (iam: IAM) => Promise<VirtualMFADevice[]>;
export declare const listIamUsers: (iam: IAM, marker?: string) => Promise<RawAwsIamUser[]>;
export declare const getCredentialReportData: (iam: IAM) => Promise<RawAwsIamUserReport[]>;
declare const _default: ({ config, }: {
    regions: string;
    config: Config;
    rawData: any;
}) => Promise<{
    [region: string]: RawAwsIamUser[];
}>;
/**
 * IAM User
 */
export default _default;
