import type { Request as ExpressRequest } from 'express';
import { SharedCheckinService } from '../services/shared-checkin.service';
import { CreatePartnerDto, UpdatePartnerDto, DispatchRequestDto, ValidateTicketRequestDto } from '../dto/shared-checkin.dto';
export declare class SharedCheckinController {
    private readonly sharedCheckinService;
    constructor(sharedCheckinService: SharedCheckinService);
    getQrToken(code: string): Promise<{
        token: string;
        expiresAt: number | null;
        scope: import("../utils/shared-checkin.util").QrTokenScope;
        rotationSeconds: number | null;
        graceSeconds: number;
    }>;
    getDispatchOptions(code: string, qrToken: string): Promise<{
        self: {
            companyId: string;
            companyLabel: string;
            checkpointCode: string;
            checkpointName: string;
        };
        partners: {
            partnerId: string;
            companyId: string;
            companyLabel: string;
            displayLabel: string | undefined;
            isExternal: boolean;
        }[];
    }>;
    dispatch(dto: DispatchRequestDto, req: ExpressRequest): Promise<{
        redirectUrl: string;
        ticketExpiresAt: number;
        targetMode: "local";
    } | {
        redirectUrl: string;
        ticketExpiresAt: number;
        targetMode: "external";
    }>;
    validateTicket(dto: ValidateTicketRequestDto): Promise<{
        valid: boolean;
        payload: {
            companyId: string;
            dispatchOrigin: string;
            expiresAt: number;
        };
    }>;
    cleanupTicketUsage(): Promise<{
        deletedCount: number;
    }>;
    listPartners(id: string): Promise<{
        partners: {
            id: string;
            createdAt: Date;
            sortOrder: number;
            updatedAt: Date;
            isActive: boolean;
            updatedBy: string;
            createdBy: string;
            checkpointId: string;
            companyId: string;
            companyLabel: string;
            displayLabel: string | null;
            targetUrl: string;
        }[];
    }>;
    createPartner(id: string, dto: CreatePartnerDto, req: ExpressRequest): Promise<{
        id: string;
        createdAt: Date;
        sortOrder: number;
        updatedAt: Date;
        isActive: boolean;
        updatedBy: string;
        createdBy: string;
        checkpointId: string;
        companyId: string;
        companyLabel: string;
        displayLabel: string | null;
        targetUrl: string;
    }>;
    updatePartner(partnerId: string, dto: UpdatePartnerDto, req: ExpressRequest): Promise<{
        id: string;
        createdAt: Date;
        sortOrder: number;
        updatedAt: Date;
        isActive: boolean;
        updatedBy: string;
        createdBy: string;
        checkpointId: string;
        companyId: string;
        companyLabel: string;
        displayLabel: string | null;
        targetUrl: string;
    }>;
    deletePartner(partnerId: string): Promise<void>;
}
