import type { TypeValidation } from '@altostra/type-validations';
import type { CloudFormationString } from "./IntrinsicFunctions";
export interface IamPolicyDocument {
    Version: '2012-10-17';
    Id?: string;
    Statement: IamPolicyStatement[];
}
export interface IamPolicyStatement {
    Sid?: string;
    Effect: 'Allow' | 'Deny';
    Action?: string[] | string;
    NotAction?: string[] | string;
    Resource?: CloudFormationString | CloudFormationString[];
    NotResource?: CloudFormationString | CloudFormationString[];
    Principal?: Principal;
    NotPrincipal?: Principal;
    Condition?: Record<any, any>;
}
export declare type Principal = CloudFormationString | Record<string, CloudFormationString | CloudFormationString[]>;
export declare const isPrincipal: TypeValidation<Principal>;
export declare const isIamPolicyStatement: import("@altostra/type-validations").ObjectOfTypeValidation<IamPolicyStatement>;
export declare const isIamPolicyDocument: import("@altostra/type-validations").ObjectOfTypeValidation<IamPolicyDocument>;
