import type { _NSArray } from "../Foundation/NSArray.js";
import type { _NSObject } from "../Foundation/NSObject.js";
export declare class _NEPacketTunnelFlow extends _NSObject {
    static alloc(): _NEPacketTunnelFlow;
    static new(): _NEPacketTunnelFlow;
    init(): _NEPacketTunnelFlow;
    /**
     * @method readPacketsWithCompletionHandler: @discussion Read available IP packets from the flow. @param completionHandler A block that will be executed to handle the packets. This block takes an array of NSData objects and an array of NSNumber objects. The NSData and NSNumber in corresponding indicies in the array represent one packet. If after handling the packets the caller wants to read more packets then the caller must call this method again.
     */
    readPacketsWithCompletionHandler$(completionHandler: (packets: _NSArray, protocols: _NSArray) => void): void;
    /**
     * @method writePackets:completionHandler: @discussion Write multiple IP packets to the flow. @param packets An array of NSData objects, each containing packet data to be written. @param protocols An array of NSNumber objects. Each number contains the protocol of the packet in the corresponding index in the packets array.
     */
    writePackets$withProtocols$(packets: _NSArray, protocols: _NSArray): boolean;
    /**
     * @method readPacketObjectsWithCompletionHandler: @discussion Read available IP packets from the flow. @param completionHandler A block that will be executed to handle the packets. This block takes an array of NEPacket objects. If after handling the packets the caller wants to read more packets then the caller must call this method again.
     */
    readPacketObjectsWithCompletionHandler$(completionHandler: (packets: _NSArray) => void): void;
    /**
     * @method writePacketObjects: @discussion Write multiple IP packets to the flow. @param packets An array of NEPacket objects, each containing packet data and protocol family to be written.
     */
    writePacketObjects$(packets: _NSArray): boolean;
}
