export declare enum ScimSchema {
    CORE = "urn:scim:schemas:core:1.0",
    USER = "urn:ietf:params:scim:schemas:core:2.0:User",
    USER_ENTERPRISE = "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User",
    LIST = "urn:ietf:params:scim:api:messages:2.0:ListResponse",
    PATCH = "urn:ietf:params:scim:api:messages:2.0:PatchOp",
    GROUP = "urn:ietf:params:scim:schemas:core:2.0:Group"
}
export declare enum OperationCode {
    replace = "replace",
    add = "add",
    remove = "remove"
}
export type ScimEmail = {
    primary: boolean;
    value: string;
    type: string;
};
export declare enum ScimResourceType {
    USER = "User",
    GROUP = "Group"
}
type ScimResource = {
    schemas: ScimSchema[];
    id: string;
    meta: ScimMeta;
};
type ScimMeta = {
    resourceType: ScimResourceType;
    created: Date;
    lastModified: Date;
    location: string;
};
export type ScimUserName = {
    givenName: string;
    middleName?: string;
    familyName: string;
};
export type ScimUser = ScimResource & {
    active: boolean | string;
    userName: string;
    displayName: string;
    name: ScimUserName;
    emails: ScimEmail[];
    groups: ScimMember[];
};
type ListResponse<T> = {
    schemas: ScimSchema[];
    totalResults: number;
    startIndex: number;
    itemsPerPage: number;
    Resources: T[];
};
export type UsersListResponse = ListResponse<ScimUser>;
export type GroupsListResponse = ListResponse<ScimGroup>;
export type ScimUserPatchOperation = {
    schemas: [ScimSchema.PATCH];
    Operations: (UserReplaceOperation | UserReplacePathOperation | UserRemovePathOperation)[];
};
export type UserReplaceOperation = {
    op: unknown;
    value: Partial<ScimUser>;
};
export type UserReplacePathOperation = {
    op: unknown;
    value: string | boolean;
    path: string;
};
export type UserRemovePathOperation = {
    op: unknown;
    path: string;
    value?: string | boolean;
};
export type ScimGroupPatchOperation = {
    schemas: [ScimSchema.PATCH];
    Operations: (GroupNameOperation | GroupMemberOperation)[];
};
export type GroupNameOperation = {
    op: unknown;
    value: {
        displayName: string;
    };
};
export type GroupMemberOperation = {
    op: unknown;
    path: string;
    value?: ScimMember[] | ScimMember;
};
export type ScimGroup = ScimResource & {
    displayName: string;
    members?: ScimMember[];
};
export type ScimMember = {
    value: string;
    display?: string;
    type?: ScimMemberType;
    ref?: string;
};
export declare enum ScimMemberType {
    USER = "User",
    GROUP = "Group"
}
export {};
//# sourceMappingURL=index.d.ts.map