import { Prisma } from '@prisma/client';
import { AuditService } from '../audit/audit.service';
import { RequestUser } from '../common/request-user';
import { PrismaService } from '../database/prisma.service';
import { CreateGateDto, UpdateGateDto } from './dto/gate.dto';
export declare class GatesService {
    private readonly prisma;
    private readonly audit;
    constructor(prisma: PrismaService, audit: AuditService);
    findAll(user: RequestUser, estateId?: string): Prisma.PrismaPromise<({
        _count: {
            guards: number;
            sessions: number;
        };
    } & {
        description: string | null;
        type: import(".prisma/client").$Enums.EstateGateType;
        id: string;
        metadata: Prisma.JsonValue;
        estateId: string;
        name: string;
        createdAt: Date;
        updatedAt: Date;
        isActive: boolean;
    })[]>;
    create(dto: CreateGateDto, user: RequestUser): Promise<{
        description: string | null;
        type: import(".prisma/client").$Enums.EstateGateType;
        id: string;
        metadata: Prisma.JsonValue;
        estateId: string;
        name: string;
        createdAt: Date;
        updatedAt: Date;
        isActive: boolean;
    }>;
    update(id: string, dto: UpdateGateDto, user: RequestUser): Promise<{
        description: string | null;
        type: import(".prisma/client").$Enums.EstateGateType;
        id: string;
        metadata: Prisma.JsonValue;
        estateId: string;
        name: string;
        createdAt: Date;
        updatedAt: Date;
        isActive: boolean;
    }>;
    private assertGateLimit;
    private toJson;
}
