import { IAM } from 'aws-sdk';
import { ArnType, DocJson } from './operation';
export interface PolicyStatementNode {
    Sid: string;
    Effect: string;
    Action: any;
    Resource: any;
}
export interface PolicyDocumentNode {
    Version: string;
    Statement: PolicyStatementNode[];
}
export interface PolicyNode {
    PolicyName: string;
    Path: string;
}
export declare class PolicyEntry {
    arn: ArnType;
    policyNode: PolicyNode;
    document: PolicyDocumentNode;
    constructor(arn: ArnType, policy: PolicyNode, document: PolicyDocumentNode);
    readonly policyName: string;
    asJson(): any;
    documentAsJson(): DocJson;
    toCreatePolicyParams(indent: number): IAM.CreatePolicyRequest;
    private convertDocToJSON;
}
export interface PolicyVersionsInfo {
    defaultId: string;
    oldestId: string;
    count: number;
}
export interface GetPolicyDefaultWithVersionInfoResult {
    currentPolicy: PolicyEntry;
}
export declare class PolicyFetcher {
    private arnPrefix?;
    constructor(arnPrefix?: string);
    getPolicyEntry(arn: string, versionId: string): Promise<PolicyEntry>;
    getPolicyDefaultWithVersionInfo(entry: PolicyEntry): Promise<GetPolicyDefaultWithVersionInfoResult & PolicyVersionsInfo>;
    getPolicyDocumentVersion(policyArn: string, verionId: string): Promise<PolicyDocumentNode>;
    private getPolicyVersionsInfoFrom;
}
export declare function getPolicyArnPrefix(): Promise<string>;
