import { AccessHIDProvider, AccessHIDState } from "./access_hid_provider";
export interface AccessWebHIDProviderOptions {
    /** Attach to this specific HIDDevice instead of discovering one */
    device?: HIDDevice;
}
/** Callback invoked for each device selected via the WebHID permission dialog */
export type AccessWebHIDDeviceCallback = (device: HIDDevice) => void;
export declare class AccessWebHIDProvider extends AccessHIDProvider {
    device?: HIDDevice;
    wireless?: boolean;
    buffer?: DataView;
    private readonly targetDevice?;
    constructor(options?: AccessWebHIDProviderOptions);
    /**
     * Detect USB vs BT by checking for Feature Report 0x63 in the HID descriptor.
     * Present in BT descriptor, absent in USB.
     */
    detectConnectionType(): void;
    /** Derive a stable identity string for a WebHID device */
    private static deviceKey;
    attach(device: HIDDevice): void;
    /**
     * Detach the current HIDDevice and attach a different one in place.
     * Used by the manager to transplant a freshly-discovered device.
     */
    replaceDevice(device: HIDDevice): void;
    /**
     * Returns a callback for triggering the WebHID permissions request
     * filtered to Access controllers.
     */
    getRequest(): () => Promise<unknown>;
    /** Request permission for multiple Access devices at once */
    static getMultiRequest(onDevice: AccessWebHIDDeviceCallback, onError?: (error: Error) => void): () => Promise<void>;
    /** List already-permitted Access devices */
    static enumerate(): Promise<HIDDevice[]>;
    connect(): void;
    get connected(): boolean;
    disconnect(): void;
    readFeatureReport(reportId: number): Promise<Uint8Array>;
    sendFeatureReport(reportId: number, data: Uint8Array): Promise<void>;
    /** Query the HID descriptor for the expected payload length of a feature report */
    private getFeatureReportLength;
    write(data: Uint8Array): Promise<void>;
    process({ reportId, buffer, }: {
        reportId: number;
        buffer: DataView;
    }): AccessHIDState;
}
//# sourceMappingURL=access_web_hid_provider.d.ts.map