import type { Client } from "../client";
import { Acknowledger, type Core, type Packet, type PacketBuffer, Serializer } from "../network";
export interface CircuitOptions {
    id: number;
    address: string;
    port: number;
}
export declare class Circuit {
    private readonly client;
    private readonly core;
    readonly id: number;
    readonly address: string;
    readonly port: number;
    readonly acknowledger: Acknowledger;
    readonly serializer: Serializer;
    private dead;
    private context;
    constructor(client: Client, core: Core, data: CircuitOptions);
    get self(): import("../structures").Self;
    get region(): import("..").Region;
    send(packets: Array<Packet<any>>): Promise<void[]>;
    /**
     * @param packets Packets to send.
     * @param timeout Timeout in milliseconds, must be at least 1000ms.
     */
    sendReliable(packets: Array<Packet<any>>, timeout?: number): Promise<void[]>;
    /**
     * @internal
     */
    sendReliableWithRetries(packet: Packet<any>, retryAttemptIndex: number): void;
    receive(buffer: PacketBuffer): Promise<void>;
    handshake(): Promise<void>;
}
