type ConditionOperator = '==' | '!=' | '>' | '>=' | '<' | '<=' | 'in' | 'list_contains'; interface FieldCondition { type: 'field'; field: string; operator: ConditionOperator; value: unknown; } interface ExpressionCondition { type: 'expression'; field: string; path: string; operator: ConditionOperator; value: unknown; clazz: string; } interface ContainerCondition { type: 'container'; resourceType: string; conditions: PermissionCondition[]; } type PermissionCondition = FieldCondition | ExpressionCondition | ContainerCondition; interface Permission { resourceType: string; action?: string; actions?: string[]; roleKey: string; conditions?: PermissionCondition[]; contextResourceType?: string; contextConditions?: PermissionCondition[]; } interface ResourcePermissionGroup { resourceType: string; permissions: Permission[]; } export { ConditionOperator, ContainerCondition, ExpressionCondition, FieldCondition, Permission, PermissionCondition, ResourcePermissionGroup, };