import { BaseRepositoryPort } from '@humand-packages/common';
import { LimitOffsetPagination } from 'humand-packages/monolith/src/api/types/listOptions';
import { TimeTrackingKioskUserForCreation, TimeTrackingKioskUser } from '../../../business/models/timeTracking/timeTrackingKioskUser';

export default abstract class TimeTrackingKioskUserRepositoryPort extends BaseRepositoryPort {
    abstract bulkCreate(kioskUsers: TimeTrackingKioskUserForCreation[]): Promise<TimeTrackingKioskUser[]>;
    abstract bulkDeleteBySiteId(instanceId: number, siteId: number, userIds?: number[]): Promise<void>;
    abstract bulkDeleteByRegionId(instanceId: number, regionId: number, userIds?: number[]): Promise<void>;
    abstract bulkDeleteByUserIds(instanceId: number, userIds: number[]): Promise<void>;
    abstract getChangedByDate(
        instanceId: number,
        siteId: number | null,
        since: Date,
        pagination: LimitOffsetPagination,
    ): Promise<{ count: number; rows: TimeTrackingKioskUser[] }>;

    abstract getUserIdsBySiteOrGlobal(
        instanceId: number,
        siteId: number | null,
        pagination: LimitOffsetPagination,
    ): Promise<{ count: number; rows: TimeTrackingKioskUser[] }>;
}
