import type { NobjcObject } from "objc-js";
import type { _NSError } from "./NSError.js";
import type { _NSHost } from "./NSHost.js";
import type { _NSObject } from "./NSObject.js";
import type { _NSRunLoop } from "./NSRunLoop.js";
import type { _NSStreamDelegate } from "./NSStreamDelegate.js";
import type { _NSString } from "./NSString.js";
import type { NSStreamPropertyKey } from "./NSStreamPropertyKey.js";
import type { NSStreamStatus } from "./NSStreamStatus.js";
export declare class _NSStream extends _NSObject {
    static alloc(): _NSStream;
    static new(): _NSStream;
    init(): _NSStream;
    /** @deprecated Use nw_connection_t in Network framework instead */
    static getStreamsToHostWithName$port$inputStream$outputStream$(hostname: _NSString, port: number, inputStream: NobjcObject | null, outputStream: NobjcObject | null): void;
    /** @deprecated Use nw_connection_t in Network framework instead */
    static getStreamsToHost$port$inputStream$outputStream$(host: _NSHost, port: number, inputStream: NobjcObject | null, outputStream: NobjcObject | null): void;
    static getBoundStreamsWithBufferSize$inputStream$outputStream$(bufferSize: number, inputStream: NobjcObject | null, outputStream: NobjcObject | null): void;
    open(): void;
    close(): void;
    /**
     * By default, a stream is its own delegate, and subclassers of NSInputStream and NSOutputStream must maintain this contract. [someStream setDelegate:nil] must restore this behavior. As usual, delegates are not retained.
     */
    propertyForKey$(key: NSStreamPropertyKey): NobjcObject | null;
    setProperty$forKey$(property: NobjcObject | null, key: NSStreamPropertyKey): boolean;
    scheduleInRunLoop$forMode$(aRunLoop: _NSRunLoop, mode: _NSString): void;
    removeFromRunLoop$forMode$(aRunLoop: _NSRunLoop, mode: _NSString): void;
    delegate(): _NSStreamDelegate | null;
    setDelegate$(value: _NSStreamDelegate | null): void;
    streamStatus(): NSStreamStatus;
    streamError(): _NSError | null;
}
