import { DataPage } from 'pip-services3-commons-node';
import { FilterParams } from 'pip-services3-commons-node';
import { PagingParams } from 'pip-services3-commons-node';

import { UserRolesV1 } from '../data/version1/UserRolesV1';

export interface IRolesController {
    getRolesByFilter(correlationId: string, filter: FilterParams, paging: PagingParams, 
        callback: (err: any, page: DataPage<UserRolesV1>) => void): void;

    getRolesById(correlationId: string, userId: string,
        callback: (err: any, roles: string[]) => void): void;

    setRoles(correlationId: string, userId: string, roles: string[],
        callback?: (err: any, roles: string[]) => void): void;

    grantRoles(correlationId: string, userId: string, roles: string[],
        callback?: (err: any, roles: string[]) => void): void;

    revokeRoles(correlationId: string, userId: string, roles: string[],
        callback?: (err: any, roles: string[]) => void): void;

    authorize(correlationId: string, userId: string, roles: string[],
        callback: (err: any, authorized: boolean) => void): void;
}
