import type { NobjcObject } from "objc-js";
import type { _NSObject } from "../Foundation/NSObject.js";
import type { _IOUSBHostControllerInterface } from "./IOUSBHostControllerInterface.js";
export declare class _IOUSBHostCIPortStateMachine extends _NSObject {
    static alloc(): _IOUSBHostCIPortStateMachine;
    static new(): _IOUSBHostCIPortStateMachine;
    init(): _IOUSBHostCIPortStateMachine;
    /**
     * Initializes an IOUSBHostCIPortStateMachine object The IOUSBHostCIPortStateMachine defaults to the IOUSBHostCIPortStateOff state. IOUSBHostControllerInterface which will be used to send command responses. NSUInteger for the root port number tracked by this instance IOUSBHostCIPortStateMachine instance, to be released by the caller.
     */
    initWithInterface$portNumber$error$(interface_: _IOUSBHostControllerInterface, portNumber: number, error: NobjcObject | null): _IOUSBHostCIPortStateMachine | null;
    /**
     * Inspect an IOUSBHostCIMessage command The IOUSBHostCIMessage command is inspected to determine if it is handled by the state machine, and is appropriate for the current state. IOUSBHostCIMessage command structure received from the kernel driver. BOOL YES if the command is targeting a controller, and can be handled in the current state BOOL NO if the command does not target a controller, or cannot be handled in the current state
     */
    inspectCommand$error$(command: NobjcObject, error: NobjcObject | null): boolean;
    /**
     * Advance the state machine and respond to an IOUSBHostCIMessage command If the command passes inspectCommand and the client indicates the command was processed successfully, the state machine is advanced, and a properly formatted command response message is sent to the kernel driver. If the client indicates the command was not processed successfully, the state machine is not advanced but a properly formatted command response message is sent to the kernel driver. IOUSBHostCIMessage command structure received from the kernel driver. IOUSBHostCIMessageStatus reported by the user-mode USB host controller implementation for the command response. BOOL YES if the command response was sent to the kernel driver BOOL NO if the command response was not sent to the kernel driver
     */
    respondToCommand$status$error$(command: NobjcObject, status: NobjcObject, error: NobjcObject | null): boolean;
    updateLinkState$speed$inhibitLinkStateChange$error$(linkState: NobjcObject, speed: NobjcObject, inhibitLinkStateChange: NobjcObject, error: NobjcObject | null): boolean;
    portNumber(): number;
    portState(): NobjcObject;
    portStatus(): number;
    controllerInterface(): _IOUSBHostControllerInterface;
    /**
     * Set the powered state of the port Before a port can be used, it must be powered on via a IOUSBHostCIMessageTypePortPowerOn command. As part of successfully processing this command the powered property must be set to YES. Similarly, successful processing of the IOUSBHostCIMessageTypePortPowerOff command must set the powered property to NO.
     */
    powered(): boolean;
    setPowered$(value: boolean): void;
    /**
     * Set the connection state of the port The connected property cannot be set for an unpowered port, and will read back as NO, just at IOUSBHostCIPortStatusConnected in the port status will always read as 0. For a powered port, writing to the connected property will set IOUSBHostCIPortStatusConnected to match the provided value, and if the new value is different from the previous value an IOUSBHostCIMessageTypePortEvent message will be sent to the kernel with IOUSBHostCIPortStatusConnectChange set.
     */
    connected(): boolean;
    setConnected$(value: boolean): void;
    /**
     * Set the overcurrent state of the port The overcurrent property cannot be set for an unpowered port, and will read back as NO, just as IOUSBHostCIPortStatusOvercurrent in the port status will always read as 0. For a powered port, writing to the overcurrent property will set IOUSBHostCIPortStatusOvercurrent to match the provided value, and if the new value is different from the previous value an IOUSBHostCIMessageTypePortEvent message will be sent to the kernel with IOUSBHostCIPortStatusOvercurrentChange set.
     */
    overcurrent(): boolean;
    setOvercurrent$(value: boolean): void;
    linkState(): NobjcObject;
    speed(): NobjcObject;
}
