import type { NobjcObject } from "objc-js";
import type { _NSObject } from "../Foundation/NSObject.js";
import type { _IOUSBHostControllerInterface } from "./IOUSBHostControllerInterface.js";
export declare class _IOUSBHostCIEndpointStateMachine extends _NSObject {
    static alloc(): _IOUSBHostCIEndpointStateMachine;
    static new(): _IOUSBHostCIEndpointStateMachine;
    init(): _IOUSBHostCIEndpointStateMachine;
    /**
     * Initializes an IOUSBHostCIEndpointStateMachine object The IOUSBHostCIEndpointStateMachine defaults to the IOUSBHostCIEndpointStatePaused state. IOUSBHostControllerInterface which will be used to send command responses. IOUSBHostCIMessage with type IOUSBHostCIMessageTypeEndpointCreate IOUSBHostCIEndpointStateMachine instance, to be released by the caller.
     */
    initWithInterface$command$error$(interface_: _IOUSBHostControllerInterface, command: NobjcObject, error: NobjcObject | null): _IOUSBHostCIEndpointStateMachine | null;
    /**
     * Inspect an IOUSBHostCIMessage command The IOUSBHostCIMessage command is inspected to determine if it is handled by this state machine and is appropriate for the current state. IOUSBHostCIMessage command structure received from the kernel driver. BOOL YES if the command is targeting this endpoint, and can be handled in the current state BOOL NO if the command does not target this endpoint, 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, endpointState is updated and a properly formatted command response message is sent to the kernel driver. If the client indicates the command was not processed successfully, endpointState is not updated 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;
    /**
     * Advance the state machine and process an IOUSBHostCIDoorbell message The IOUSBHostCIDoorbell is inspected to determine if it is handled by this state machine and is appropriate for the current state. If successful, the client should check for an IOUSBHostCIEndpointStateActive endpointState and a currentTransferMessage with IOUSBHostCIMessageControlValid set to determine if more IOUSBHostCIMessages should be processed. IOUSBHostCIDoorbell message received from the kernel driver. BOOL YES if the doorbell is targeting this endpoint and can be handled in the current state. BOOL NO is the doorbell does not target this endpoint or cannot be handled in the current state.
     */
    processDoorbell$error$(doorbell: NobjcObject, error: NobjcObject | null): boolean;
    /**
     * Send an IOUSBHostCIMessage representing a transfer completion to the kernel, and advance the state machine When a client has processed an IOUSBHostCIMessage representing a transfer, the result is reported to the kernel by another IOUSBHostCIMessage. If successful, this object will use controllerInterface's enqueueInterrupt interface to send a properly formatted IOUSBHostCIMessage to the kernel with IOUSBHostCITransferCompletionMessageData1TransferStructure populated with currentTransferMessage's virtual address, and endpointState and currentTransferMessage are updated. After a successful call, the client should check for an IOUSBHostCIEndpointStateActive endpointState and a currentTransferMessage with IOUSBHostCIMessageControlValid set to determine if more IOUSBHostCIMessages should be processed. pointer to the IOUSBHostCIMessage which generated this tranafer completion message. This must match currentTransferMessage to be successful. IOUSBHostCIMessageStatus The number of bytes transferred for the specified transfer structure.
     */
    enqueueTransferCompletionForMessage$status$transferLength$error$(message: NobjcObject, status: NobjcObject, transferLength: number, error: NobjcObject | null): boolean;
    endpointState(): NobjcObject;
    deviceAddress(): number;
    endpointAddress(): number;
    currentTransferMessage(): NobjcObject;
    controllerInterface(): _IOUSBHostControllerInterface;
}
