import { RainwayChannelMode, RainwayInputLevel, RainwayStreamType } from "./rainway-ffi";
/**
 * Options for configuring a Peer.
 */
export interface PeerOptions {
    /**
     * The minimum port from which local UDP ports will be allocated.
     * The default value `0` means a port will be allocated from the dynamic client port range.
     * See https://docs.microsoft.com/en-us/windows/win32/api/winsock/nf-winsock-bind for more information.
     */
    minPort: number;
    /**
     * The maximum port from which local UDP ports will be allocated.
     * The default value `0` disables the port limit.
     */
    maxPort: number;
}
/**
 * Options for connecting to a remote peer on the Rainway Network.
 */
export interface PeerConnectOptions {
    /**
     * The ID of the remote peer you wish to connect to.
     * To enumerate connected peers, consider using the Rainway API library.
     * See https://docs.rainway.com/docs/api-getting-started#c for more information.
     */
    id: BigInt;
}
/**
 * Options for creating an outbound stream.
 */
export interface OutboundStreamOptions {
    /**
     * The type of the stream to create. This impacts how the stream captures video content.
     * see {@link RainwayStreamType} for more information.
     */
    type: RainwayStreamType;
    /**
     * Input permissions to grant the remote peer the ability to transmit.
     * By default, no input permissions are granted.
     */
    permissions: RainwayInputLevel;
    /**
     * The process ids to isolate the stream to. Requires that {@link type} is {@link RainwayStreamType.AppIsolation}.
     */
    processIds?: number[];
}
/**
 * Options for creating a data channel.
 */
export interface DataChannelOptions {
    /**
     *  The ID (label) of the data channel.
     */
    id: string;
    /**
     * The reliability mode of the data channel.
     */
    mode: RainwayChannelMode;
}
/**
 * Options for connecting to the Rainway Network.
 */
export interface ConnectOptions {
    /**
     * The Rainway API key of your organization.
     * To obtain an API key, sign in to your Rainway Hub account at https://hub.rainway.com/
     */
    apiKey: string;
    /**
     * An (optional) identifying string that your application can recognize and tie back to a user.
     */
    externalId?: string;
}
