import { AccessBadgeType, AccessDirection } from '@prisma/client';
import { AccessService } from './access.service';
import { AuthenticatedUser } from '../../common/decorators/current-user.decorator';
declare class IssueBadgeDto {
    userId: string;
    complexId: string;
    type?: AccessBadgeType;
    label?: string;
    validUntil?: string;
    plateNumber?: string;
}
declare class VerifyAccessDto {
    complexId: string;
    code?: string;
    plateImageBase64?: string;
    direction?: AccessDirection;
    gate?: string;
    apiKey?: string;
}
export declare class AccessController {
    private readonly service;
    constructor(service: AccessService);
    issue(user: AuthenticatedUser, dto: IssueBadgeDto): Promise<{
        badge: {
            id: string;
            code: string;
            label: string | null;
            createdAt: Date;
            userId: string;
            complexId: string;
            type: import(".prisma/client").$Enums.AccessBadgeType;
            validFrom: Date;
            validUntil: Date | null;
            revoked: boolean;
        };
        qrDataUrl: string | undefined;
    }>;
    list(user: AuthenticatedUser, complexId?: string): Promise<({
        user: {
            id: string;
            email: string;
            firstName: string | null;
        };
    } & {
        id: string;
        code: string;
        label: string | null;
        createdAt: Date;
        userId: string;
        complexId: string;
        type: import(".prisma/client").$Enums.AccessBadgeType;
        validFrom: Date;
        validUntil: Date | null;
        revoked: boolean;
    })[]>;
    revoke(user: AuthenticatedUser, id: string): Promise<{
        id: string;
        code: string;
        label: string | null;
        createdAt: Date;
        userId: string;
        complexId: string;
        type: import(".prisma/client").$Enums.AccessBadgeType;
        validFrom: Date;
        validUntil: Date | null;
        revoked: boolean;
    }>;
    logs(user: AuthenticatedUser, complexId: string, limit?: string): Promise<({
        user: {
            id: string;
            email: string;
            firstName: string | null;
        } | null;
    } & {
        id: string;
        result: import(".prisma/client").$Enums.AccessResult;
        createdAt: Date;
        userId: string | null;
        complexId: string;
        type: import(".prisma/client").$Enums.AccessBadgeType;
        badgeCode: string | null;
        direction: import(".prisma/client").$Enums.AccessDirection;
        gate: string | null;
        confidence: number | null;
        rawPayload: import("@prisma/client/runtime/library").JsonValue | null;
    })[]>;
    verify(dto: VerifyAccessDto): Promise<{
        granted: boolean;
        logId: string;
        userId: string | null;
        type: import(".prisma/client").$Enums.AccessBadgeType;
    }> | {
        granted: boolean;
        error: string;
    };
}
export {};
