import { EntityId, IsoDatetime } from '../Foundations';
export declare type Permission = {
    id: EntityId;
    orgId: EntityId;
    name: string;
    operations: string[];
    status: PermissionStatus;
    resourceId?: string;
    isImmutable: boolean;
    predicates?: PermissionPredicate[];
    dateCreated: IsoDatetime;
    dateUpdated: IsoDatetime;
    isArchived: boolean;
};
export declare type PermissionPredicate = {
    id: EntityId;
    permissionId: EntityId;
    fieldName: string;
    evaluatorKind: FieldEvaluatorKind;
    parameters: string[];
    isImmutable: boolean;
    dateCreated: IsoDatetime;
    dateUpdated: IsoDatetime;
    isArchived: boolean;
};
export declare type PermissionAssignment = {
    id: EntityId;
    permissionId: string;
    identityId: EntityId;
    identityKind: IdentityKind;
    dateCreated: IsoDatetime;
    dateUpdated: IsoDatetime;
};
export declare type DeletionAcknowledgement = {
    id: string;
};
export declare type ResourceOwnership = {
    id: EntityId;
    orgId: EntityId;
    resourceId: EntityId;
    resourceKind: string;
    ownerId: EntityId;
    ownerKind: OwnerKind;
    dateCreated: IsoDatetime;
    dateUpdated: IsoDatetime;
};
export declare type CreatePermissionInput = {
    name: string;
    operations: string[];
};
export declare type UpdatePermissionInput = {
    name?: string;
    operations?: string[];
};
export declare type ArchivePermissionInput = {
    isArchived: boolean;
};
export declare type CreatePermissionPredicateInput = {
    fieldName: string;
    evaluatorKind: FieldEvaluatorKind;
    parameters: string[];
};
export declare type UpdatePermissionPredicateInput = {
    fieldName?: string;
    evaluatorKind?: FieldEvaluatorKind;
    parameters?: string[];
};
export declare type ArchivePermissionPredicateInput = {
    isArchived: boolean;
};
export declare type CreatePermissionAssignmentInput = {
    permissionId: string;
    identityId: string;
    identityKind: IdentityKindCustomerFacing;
};
export declare enum FieldEvaluatorKind {
    ContainsAll = "ContainsAll",
    ContainsOneOf = "ContainsOneOf",
    DateAfter = "DateAfter",
    DateBefore = "DateBefore",
    Is = "Is",
    ValueGreaterThan = "ValueGreaterThan",
    ValueLessThan = "ValueLessThan"
}
export declare enum PermissionStatus {
    Active = "Active"
}
export declare enum IdentityKind {
    Application = "Application",
    CustomerEmployee = "CustomerEmployee",
    DfnsStaff = "DfnsStaff",
    EndUser = "EndUser"
}
export declare enum IdentityKindCustomerFacing {
    Application = "Application",
    CustomerEmployee = "CustomerEmployee",
    EndUser = "EndUser"
}
export declare enum OwnerKind {
    LegalPerson = "LegalPerson",
    NaturalPerson = "NaturalPerson"
}
export declare enum ResourceKind {
    Wallet = "Wallet",
    PublicKey = "PublicKey"
}
