/**
 * =========================
 * Enums (STRING enums)
 * =========================
 */
export type Driver = 'Wia' | 'Twain' | 'Sane' | 'Escl';
export type PaperSource = 'Auto' | 'Flatbed' | 'Feeder' | 'Duplex';
export type BitDepth = 'Color' | 'Grayscale' | 'BlackAndWhite';
export type PrintDataType = 'Pdf' | 'Image' | 'Text' | 'Html' | 'Office';
export declare const DRIVER: {
    readonly Wia: "Wia";
    readonly Twain: "Twain";
    readonly Sane: "Sane";
    readonly Escl: "Escl";
};
export declare const PAPER_SOURCE: {
    readonly Auto: "Auto";
    readonly Flatbed: "Flatbed";
    readonly Feeder: "Feeder";
    readonly Duplex: "Duplex";
};
export declare const BIT_DEPTH: {
    readonly Color: "Color";
    readonly Grayscale: "Grayscale";
    readonly BlackAndWhite: "BlackAndWhite";
};
export declare const PRINT_DATA_TYPE: {
    readonly Pdf: "Pdf";
    readonly Image: "Image";
    readonly Text: "Text";
    readonly Html: "Html";
    readonly Office: "Office";
};
/**
 * =========================
 * REST DTOs
 * =========================
 */
export interface HostSettings {
    printerA4?: string | null;
    printerA5?: string | null;
    defaultScanner?: string | null;
    dpi?: number;
    colorMode?: string | null;
    pageSize?: string | null;
    duplex?: boolean;
    chromiumExecutablePath?: string | null;
}
export interface PrintRequest {
    printData: string;
    dataType: PrintDataType;
    paperSize?: string | null;
    printerName?: string | null;
    copies?: number;
    fileName?: string | null;
}
export interface PrintAcceptedResponse {
    status: 'queued' | string;
    printerName: string;
    /** server returns DataType as string (effective.DataType.ToString()) */
    DataType: PrintDataType | string;
    paperSize?: string | null;
    copies: number;
}
export interface ScanRequest {
    deviceName?: string | null;
    driver?: Driver | null;
    paperSource?: PaperSource;
    pageSize?: string | null;
    dpi: number;
    bitDepth?: BitDepth;
    quality?: number;
    maxQuality?: boolean;
    autoDeskew?: boolean;
    excludeBlankPages?: boolean;
    brightness?: number;
    contrast?: number;
}
export interface ScanResult {
    base64String: string;
}
export interface ProblemDetails {
    type?: string | null;
    title?: string | null;
    status?: number | null;
    detail?: string | null;
    instance?: string | null;
    [k: string]: any;
}
export type DeviceNameList = string[];
export type LogFileList = string[];
/**
 * =========================
 * IDCardController result types
 * =========================
 */
export type JsonMeta = unknown;
export interface PatientRegisterInput {
    citizenId?: string | null;
    citizenIdVerified: boolean;
    dob?: string | null;
    dobPrecision?: 'yearMonthDay' | 'yearMonth' | 'year' | string;
    gender?: string | null;
    meta?: JsonMeta | null;
}
export interface PatientNameRegisterInput {
    nameType: string;
    prefix?: string | null;
    firstName: string;
    middleName?: string | null;
    lastName?: string | null;
    suffix?: string | null;
}
export interface PatientAddressRegisterInput {
    mrn?: string | null;
    addressType: string;
    text: string;
    place?: string | null;
    villageNo?: string | null;
    alleyWay?: string | null;
    alley?: string | null;
    street?: string | null;
    subDistrictCode?: string | null;
    districtCode?: string | null;
    provinceCode?: string | null;
}
export interface PatientPhotoRegisterInput {
    photoSource?: string | null;
    base64String: string;
}
export interface PatientRegisterPayload {
    patient: PatientRegisterInput;
    patientNames?: PatientNameRegisterInput[] | null;
    patientAddresses?: PatientAddressRegisterInput[] | null;
    patientPhotos?: PatientPhotoRegisterInput[] | null;
}
export interface CitizenIdResult {
    CitizenId?: string | null;
}
export interface MachineInfo {
    computerName: string;
    userName: string;
    ipAddresses: string[];
    softwareVersion: string;
}
/**
 * =========================
 * WS protocol types (exported for useHostAgentWs)
 * =========================
 */
export type IdCardWsClientMessage = {
    action: 'subscribe';
    reader?: string | null;
    withPhoto?: boolean;
} | {
    action: 'ping';
} | {
    action: 'switchReader';
    reader?: string | null;
} | {
    action: 'unsubscribe';
} | {
    action: string;
    [k: string]: any;
};
export type IdCardWsServerMessage = {
    type: 'monitor.subscribed';
    ok: boolean;
    reader?: string | null;
    withPhoto?: boolean;
} | {
    type: 'monitor.started';
    reader?: string | null;
} | {
    type: 'monitor.switchAck';
    ok: boolean;
    reader?: string | null;
} | {
    type: 'monitor.switched';
    reader?: string | null;
} | {
    type: 'monitor.unsubscribed';
    ok: boolean;
} | {
    type: 'pong';
    ts?: string;
} | {
    type: 'card.inserted';
    payload: PatientRegisterPayload;
} | {
    type: 'card.removed';
} | {
    type: 'card.error';
    message?: string;
} | {
    type: 'error';
    code?: string;
    message?: string;
} | {
    type: string;
    [k: string]: any;
};
export type IdCardWsEvent = {
    type: 'open';
} | {
    type: 'close';
    code?: number;
    reason?: string;
} | {
    type: 'error';
    error?: any;
} | {
    type: 'message';
    data: IdCardWsServerMessage;
    raw: MessageEvent;
};
/**
 * =========================
 * Main REST composable (no WS, no lifecycle hooks)
 * =========================
 */
export declare function useHostAgent(): {
    DRIVER: {
        readonly Wia: "Wia";
        readonly Twain: "Twain";
        readonly Sane: "Sane";
        readonly Escl: "Escl";
    };
    PAPER_SOURCE: {
        readonly Auto: "Auto";
        readonly Flatbed: "Flatbed";
        readonly Feeder: "Feeder";
        readonly Duplex: "Duplex";
    };
    BIT_DEPTH: {
        readonly Color: "Color";
        readonly Grayscale: "Grayscale";
        readonly BlackAndWhite: "BlackAndWhite";
    };
    PRINT_DATA_TYPE: {
        readonly Pdf: "Pdf";
        readonly Image: "Image";
        readonly Text: "Text";
        readonly Html: "Html";
        readonly Office: "Office";
    };
    getSettings: (cache?: boolean | number) => Promise<HostSettings>;
    updateSettings: (settings: HostSettings) => Promise<HostSettings>;
    getPrinters: (cache?: boolean | number) => Promise<DeviceNameList>;
    getScanners: (cache?: boolean | number) => Promise<DeviceNameList>;
    getIdCardInfo: (reader?: string) => Promise<PatientRegisterPayload>;
    getIdCardInfoAndPhoto: (reader?: string) => Promise<PatientRegisterPayload>;
    getCitizenId: (reader?: string) => Promise<CitizenIdResult>;
    getMachineInfo: () => Promise<MachineInfo>;
    print: (req: PrintRequest) => Promise<PrintAcceptedResponse>;
    scan: (req: ScanRequest) => Promise<ScanResult[]>;
    getLogFiles: (cache?: boolean | number) => Promise<LogFileList>;
    tailLog: (file: string, lines?: number) => Promise<unknown>;
    isProblemDetails: (x: any) => x is ProblemDetails;
};
