import { z } from 'zod';
/**
 * Schema for a scanner app.
 */
export declare const ScannerAppSchema: z.ZodObject<{
    id: z.ZodString;
    name: z.ZodString;
    description: z.ZodString;
    registrationCode: z.ZodString;
    organizationId: z.ZodString;
    parentId: z.ZodString;
    tags: z.ZodArray<z.ZodString>;
    attributes: z.ZodObject<{
        items: z.ZodArray<z.ZodObject<{
            key: z.ZodString;
            description: z.ZodString;
            value: z.ZodUnion<readonly [z.ZodString, z.ZodBoolean]>;
            type: z.ZodEnum<{
                number: "number";
                boolean: "boolean";
                text: "text";
            }>;
        }, z.core.$loose>>;
    }, z.core.$loose>;
    webviewScanUrl: z.ZodString;
    webviewStandbyUrl: z.ZodString;
    webviewErrorUrl: z.ZodString;
    webviewPassword: z.ZodString;
    passCode: z.ZodOptional<z.ZodString>;
    brandColor: z.ZodOptional<z.ZodString>;
    brandLogoUrl: z.ZodOptional<z.ZodString>;
    isKioskMode: z.ZodOptional<z.ZodBoolean>;
    isJsonConfigured: z.ZodOptional<z.ZodBoolean>;
    jsonConfig: z.ZodOptional<z.ZodString>;
    jsonConfigUrl: z.ZodOptional<z.ZodString>;
    scannerCount: z.ZodNumber;
    settings: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
}, z.core.$loose>;
/**
 * Represents a scanner app.
 */
export type ScannerApp = z.infer<typeof ScannerAppSchema>;
type ScannerAppServerManagedField = 'id' | 'organizationId' | 'parentId' | 'registrationCode' | 'scannerCount' | 'createdDate';
type ScannerAppSettableFields = Omit<ScannerApp, ScannerAppServerManagedField>;
type ScannerAppJsonConfigurationField = 'isJsonConfigured' | 'jsonConfig' | 'jsonConfigUrl';
type ScannerAppStandardField = Exclude<keyof ScannerAppSettableFields, ScannerAppJsonConfigurationField>;
type ScannerAppJsonConfiguredInput = Pick<ScannerAppSettableFields, 'jsonConfig' | 'jsonConfigUrl'> & {
    isJsonConfigured: true;
} & {
    [Field in ScannerAppStandardField]?: never;
};
type ScannerAppStandardInput = Omit<ScannerAppSettableFields, ScannerAppJsonConfigurationField> & {
    isJsonConfigured?: false;
    jsonConfig?: never;
    jsonConfigUrl?: never;
};
/**
 * Body accepted by `client.scanners.createApp(...)` / `updateApp(...)`.
 */
export type ScannerAppInput = ScannerAppJsonConfiguredInput | ScannerAppStandardInput;
export {};
