import { RoleEntry, RoleDocument, RoleNode } from '../aws/role';
import { Result } from '../utils/result';
import { IAM } from 'aws-sdk';
import { RolePolicyPair } from '../aws/attach';
export declare class RoleRegisterer {
    private _overwrite;
    constructor(opts?: any);
    register(roleEntry: RoleEntry): Promise<Result | Result[]>;
    _createRoleOrWithInstanceProfile(roleEntry: RoleEntry, results: Result[]): Promise<Result | RoleNode | null>;
    _createRole(roleNode: RoleNode, results: Result[]): Promise<RoleNode | Result | null>;
    _createInstanceProfile(roleName: string, results: Result[]): Promise<IAM.InstanceProfile | null>;
    _addRoleToInstanceProfile(profileName: string, roleName: string, results: Result[]): Promise<void>;
    _getRolePolicies(role: RoleDocument): Promise<{
        attaching: RolePolicyPair[];
        detaching: RolePolicyPair[];
        unchanged: RolePolicyPair[];
    }>;
    _attachRolePolicy(params: RolePolicyPair): Promise<Result>;
    _detachRolePolicy(params: RolePolicyPair): Promise<Result>;
}
