import { AppContext, UserPayload } from '../types.js';
import { RunView, UserInfo } from '@memberjunction/core';
import { RoleEntity, UserEntity } from '@memberjunction/core-entities';
export declare class SyncRolesAndUsersResultType {
    Success: boolean;
}
export declare class RoleInputType {
    ID: string;
    Name: string;
    Description: string;
}
export declare enum UserType {
    Owner = "Owner",
    User = "User"
}
export declare class UserInputType {
    ID: string;
    Name: string;
    Email: string;
    Type: UserType;
    FirstName: string;
    LastName: string;
    Title: string;
    Roles?: RoleInputType[];
}
export declare class RolesAndUsersInputType {
    Users: UserInputType[];
    Roles: RoleInputType[];
}
export declare class SyncRolesAndUsersResolver {
    SyncRolesAndUsers(data: RolesAndUsersInputType, context: AppContext): Promise<SyncRolesAndUsersResultType>;
    SyncRoles(roles: RoleInputType[], context: AppContext): Promise<SyncRolesAndUsersResultType>;
    protected UpdateExistingRoles(currentRoles: RoleEntity[], futureRoles: RoleInputType[], userPayload: UserPayload): Promise<SyncRolesAndUsersResultType>;
    protected AddNewRoles(currentRoles: RoleEntity[], futureRoles: RoleInputType[], user: UserInfo, userPayload: UserPayload): Promise<boolean>;
    protected DeleteRemovedRoles(currentRoles: RoleEntity[], futureRoles: RoleInputType[], user: UserInfo, userPayload: UserPayload): Promise<boolean>;
    get StandardRoles(): string[];
    IsStandardRole(roleName: string): boolean;
    protected DeleteSingleRole(role: RoleEntity, rv: RunView, user: UserInfo, userPayload: UserPayload): Promise<boolean>;
    SyncUsers(users: UserInputType[], context: AppContext): Promise<SyncRolesAndUsersResultType>;
    protected UpdateExistingUsers(currentUsers: UserEntity[], futureUsers: UserInputType[], userPayload: UserPayload): Promise<boolean>;
    protected AddNewUsers(currentUsers: UserEntity[], futureUsers: UserInputType[], userPayload: UserPayload): Promise<boolean>;
    protected DeleteRemovedUsers(currentUsers: UserEntity[], futureUsers: UserInputType[], u: UserInfo, userPayload: UserPayload): Promise<boolean>;
    protected DeleteSingleUser(user: UserEntity, rv: RunView, u: UserInfo, userPayload: UserPayload): Promise<boolean>;
    protected SyncUserRoles(users: UserInputType[], u: UserInfo, userPayload: UserPayload): Promise<boolean>;
}
//# sourceMappingURL=SyncRolesUsersResolver.d.ts.map