import { z } from 'zod';
import { type InferProvider } from './capability-definition.js';
import { DeviceType } from '../device/device-type.js';
declare const ProviderStatusSchema: z.ZodObject<{
    connected: z.ZodBoolean;
    deviceCount: z.ZodNumber;
    error: z.ZodOptional<z.ZodString>;
}, z.core.$strip>;
declare const DiscoveredDeviceSchema: z.ZodObject<{
    externalId: z.ZodString;
    name: z.ZodString;
    type: z.ZodString;
    metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
}, z.core.$strip>;
/**
 * Candidate handed back from discovery and accepted by
 * `adoptDiscoveredDevice`. Shape mirrors the in-process
 * `DiscoveredDevice` interface used by `DeviceDiscovery`.
 */
declare const DiscoveryCandidateSchema: z.ZodObject<{
    stableId: z.ZodString;
    type: z.ZodEnum<typeof DeviceType>;
    suggestedName: z.ZodString;
    prefilledConfig: z.ZodRecord<z.ZodString, z.ZodUnknown>;
}, z.core.$strip>;
/**
 * Flat device summary returned by `createDevice` / `adoptDiscoveredDevice`.
 * Mirrors `toDeviceShape()` output in `device-management.router.ts` so the
 * tRPC layer can pass it through without reshaping.
 */
declare const DeviceSummarySchema: z.ZodObject<{
    id: z.ZodNumber;
    stableId: z.ZodString;
    addonId: z.ZodString;
    type: z.ZodString;
    name: z.ZodString;
    parentDeviceId: z.ZodNullable<z.ZodNumber>;
    online: z.ZodBoolean;
    features: z.ZodArray<z.ZodString>;
    config: z.ZodRecord<z.ZodString, z.ZodUnknown>;
}, z.core.$strip>;
/**
 * Result of a live field test (e.g. probing an RTSP URL during device
 * creation). Matches the UI-side `FieldProbeResult` in
 * `interfaces/config-ui.ts` — the admin `FormBuilder` renders the
 * returned `labels` as chips next to the input.
 */
declare const FieldProbeResultSchema: z.ZodObject<{
    status: z.ZodEnum<{
        error: "error";
        ok: "ok";
    }>;
    labels: z.ZodOptional<z.ZodArray<z.ZodString>>;
    error: z.ZodOptional<z.ZodString>;
}, z.core.$strip>;
export declare const deviceProviderCapability: {
    readonly name: "device-provider";
    readonly scope: "system";
    readonly mode: "collection";
    readonly methods: {
        readonly start: import("./capability-definition.js").CapabilityMethodSchema<z.ZodVoid, z.ZodVoid, "mutation">;
        readonly stop: import("./capability-definition.js").CapabilityMethodSchema<z.ZodVoid, z.ZodVoid, "mutation">;
        readonly getStatus: import("./capability-definition.js").CapabilityMethodSchema<z.ZodVoid, z.ZodObject<{
            connected: z.ZodBoolean;
            deviceCount: z.ZodNumber;
            error: z.ZodOptional<z.ZodString>;
        }, z.core.$strip>, import("./capability-definition.js").CapabilityMethodKind>;
        readonly getDevices: import("./capability-definition.js").CapabilityMethodSchema<z.ZodVoid, z.ZodArray<z.ZodObject<{
            id: z.ZodString;
            name: z.ZodString;
            type: z.ZodString;
        }, z.core.$strip>>, import("./capability-definition.js").CapabilityMethodKind>;
        readonly supportsDiscovery: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{}, z.core.$strip>, z.ZodBoolean, import("./capability-definition.js").CapabilityMethodKind>;
        readonly discoverDevices: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{}, z.core.$strip>, z.ZodArray<z.ZodObject<{
            stableId: z.ZodString;
            type: z.ZodEnum<typeof DeviceType>;
            suggestedName: z.ZodString;
            prefilledConfig: z.ZodRecord<z.ZodString, z.ZodUnknown>;
        }, z.core.$strip>>, "mutation">;
        readonly adoptDiscoveredDevice: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
            candidate: z.ZodObject<{
                stableId: z.ZodString;
                type: z.ZodEnum<typeof DeviceType>;
                suggestedName: z.ZodString;
                prefilledConfig: z.ZodRecord<z.ZodString, z.ZodUnknown>;
            }, z.core.$strip>;
        }, z.core.$strip>, z.ZodObject<{
            id: z.ZodNumber;
            stableId: z.ZodString;
            addonId: z.ZodString;
            type: z.ZodString;
            name: z.ZodString;
            parentDeviceId: z.ZodNullable<z.ZodNumber>;
            online: z.ZodBoolean;
            features: z.ZodArray<z.ZodString>;
            config: z.ZodRecord<z.ZodString, z.ZodUnknown>;
        }, z.core.$strip>, "mutation">;
        readonly supportsManualCreation: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{}, z.core.$strip>, z.ZodBoolean, import("./capability-definition.js").CapabilityMethodKind>;
        /**
         * Fetch the creation form schema for a given DeviceType. Returns
         * `null` when the provider does not support manually creating
         * devices of that type. The output is a `ConfigUISchema` — the
         * router type-asserts it at the boundary.
         */
        readonly getChildCreationSchema: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
            type: z.ZodEnum<typeof DeviceType>;
        }, z.core.$strip>, z.ZodUnknown, import("./capability-definition.js").CapabilityMethodKind>;
        readonly createDevice: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
            type: z.ZodEnum<typeof DeviceType>;
            config: z.ZodRecord<z.ZodString, z.ZodUnknown>;
        }, z.core.$strip>, z.ZodObject<{
            id: z.ZodNumber;
            stableId: z.ZodString;
            addonId: z.ZodString;
            type: z.ZodString;
            name: z.ZodString;
            parentDeviceId: z.ZodNullable<z.ZodNumber>;
            online: z.ZodBoolean;
            features: z.ZodArray<z.ZodString>;
            config: z.ZodRecord<z.ZodString, z.ZodUnknown>;
        }, z.core.$strip>, "mutation">;
        /**
         * Test a single field in the creation form before the device has
         * been persisted. Typical use: probing an RTSP URL entered by the
         * user. Providers that don't support field probing return
         * `{ success: true, message: 'Field test not supported' }`.
         *
         * `formValues` is the live snapshot of every field in the form at
         * the moment the user clicked Test — useful for probes that depend
         * on multiple fields together (e.g. Reolink autodetect needs host
         * + credentials + UID + transport mode in a single call). Optional
         * for backwards compatibility; providers free to ignore it.
         */
        readonly testCreationField: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
            type: z.ZodEnum<typeof DeviceType>;
            key: z.ZodString;
            value: z.ZodUnknown;
            formValues: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
        }, z.core.$strip>, z.ZodObject<{
            status: z.ZodEnum<{
                error: "error";
                ok: "ok";
            }>;
            labels: z.ZodOptional<z.ZodArray<z.ZodString>>;
            error: z.ZodOptional<z.ZodString>;
        }, z.core.$strip>, "mutation">;
    };
};
export type IDeviceProvider = InferProvider<typeof deviceProviderCapability>;
export { ProviderStatusSchema, DiscoveredDeviceSchema, DiscoveryCandidateSchema, DeviceSummarySchema, FieldProbeResultSchema, };
//# sourceMappingURL=device-provider.cap.d.ts.map