import { PolicyActivityKind, PolicyControlKind } from '../PolicyManagement';
import { EntityId, IsoDatetime, DocumentSnapshot, InitiatorKind } from '../Foundations';
export declare type PolicyExecution = {
    id: EntityId;
    kind: PolicyActivityKind;
    status: ExecutionStatus;
    orgId: EntityId;
    dateCreated: IsoDatetime;
    initiatorKind: InitiatorKind;
    initiatingEventId: EntityId;
    /**
     * Applied poliies stored along with PolicyExecution status as-raw-json-string. This ensures that even if somebody tampers with policy, the audit log would have actual-literal representation of what was executed.
     *
     */
    documentedPolicies?: DocumentSnapshot[];
    documentedActivity: DocumentSnapshot;
    controlExecutions?: PolicyControlExecution[];
    policyId: EntityId;
};
export declare type PolicyControlExecution = {
    id: EntityId;
    status: ExecutionStatus;
    controlId: EntityId;
    dateExecuted: IsoDatetime;
    dateFullfiled?: IsoDatetime;
    policyExecutionId: EntityId;
    approvals?: string[];
    documentedActivity: DocumentSnapshot;
    controlKind: PolicyControlKind;
    author: EntityId;
    approverUsernames?: string[];
    activityKind: PolicyActivityKind;
    numApprovals?: number;
};
export declare type AppraisableActivity = {};
export declare type UpdatePolicyControlExecutionInput = {
    status: ExecutionStatus;
};
export declare enum ExecutionStatus {
    Awaiting = "Awaiting",
    Passed = "Passed",
    Failed = "Failed",
    Timedout = "Timedout"
}
