import type { Request } from 'express';
import { Repository } from 'typeorm';
import type { AuthenticatedUser } from '../../common/interfaces/authenticated-user.interface';
import { AuditService } from '../audit/audit.service';
import { UserCompany } from '../companies/entities/user-company.entity';
import { MailService } from '../mail/mail.service';
import { Site } from '../sites/entities/site.entity';
import { User } from '../users/entities/user.entity';
import { CreatePeriodDto } from './dto/create-period.dto';
import { PeriodsQueryDto } from './dto/periods-query.dto';
import { RejectPeriodDto } from './dto/reject-period.dto';
import { UnlockPeriodDto } from './dto/unlock-period.dto';
import { UpdatePeriodDatesDto } from './dto/update-period-dates.dto';
import { Period } from './entities/period.entity';
import { PeriodsService } from './periods.service';
export declare class PeriodsController {
    private readonly periodsService;
    private readonly auditService;
    private readonly mailService;
    private readonly usersRepository;
    private readonly userCompaniesRepository;
    private readonly sitesRepository;
    constructor(periodsService: PeriodsService, auditService: AuditService, mailService: MailService, usersRepository: Repository<User>, userCompaniesRepository: Repository<UserCompany>, sitesRepository: Repository<Site>);
    private monthLabel;
    private loadSiteAndCompanyManagers;
    private loadSubmitter;
    private actorFullName;
    listForSite(siteId: number, query: PeriodsQueryDto): Promise<Period[]>;
    createForSite(siteId: number, dto: CreatePeriodDto, user: AuthenticatedUser, req: Request): Promise<Period>;
    listForCompany(companyId: number, query: PeriodsQueryDto, user: AuthenticatedUser): Promise<Period[]>;
    getOne(id: number): Promise<Period>;
    updateDates(id: number, dto: UpdatePeriodDatesDto, user: AuthenticatedUser, req: Request): Promise<Period>;
    submit(id: number, user: AuthenticatedUser, req: Request): Promise<Period>;
    validate(id: number, user: AuthenticatedUser, req: Request): Promise<Period>;
    reject(id: number, dto: RejectPeriodDto, user: AuthenticatedUser, req: Request): Promise<Period>;
    unlock(id: number, dto: UnlockPeriodDto, user: AuthenticatedUser, req: Request): Promise<Period>;
    remove(id: number, user: AuthenticatedUser, req: Request): Promise<void>;
}
