/**
 * @license
 * Copyright 2022-2026 Matter.js Authors
 * SPDX-License-Identifier: Apache-2.0
 */
import { Channel, ChannelType, IpNetworkChannel } from "#net/Channel.js";
import { ConnectionlessTransport } from "#net/ConnectionlessTransport.js";
import { Network } from "#net/Network.js";
import { Bytes } from "#util/Bytes.js";
import { Observable } from "#util/index.js";
import { ServerAddress, ServerAddressUdp } from "../ServerAddress.js";
import { UdpChannel } from "./UdpChannel.js";
export declare class UdpInterface implements ConnectionlessTransport {
    #private;
    static create(network: Network, type: "udp4" | "udp6", port?: number, host?: string, netInterface?: string): Promise<UdpInterface>;
    constructor(server: UdpChannel);
    protected get server(): UdpChannel;
    supports(type: ChannelType, address: string): boolean;
    openChannel(address: ServerAddress): Promise<UdpConnection>;
    onData(listener: (channel: Channel<Bytes>, messageBytes: Bytes) => void): ConnectionlessTransport.Listener;
    get port(): number;
    close(): Promise<void>;
    addMembership(address: string): import("#util/index.js").MaybePromise<void>;
    dropMembership(address: string): import("#util/index.js").MaybePromise<void>;
}
export declare class UdpConnection implements IpNetworkChannel<Bytes> {
    #private;
    readonly isReliable = false;
    readonly supportsLargeMessages = false;
    readonly type = ChannelType.UDP;
    readonly networkAddressChanged: Observable<[ServerAddressUdp], void>;
    constructor(server: UdpChannel, peerAddress: string, peerPort: number);
    get maxPayloadSize(): number;
    send(data: Bytes): Promise<void>;
    get name(): string;
    get networkAddress(): ServerAddressUdp;
    set networkAddress(address: ServerAddressUdp);
    close(): Promise<void>;
}
//# sourceMappingURL=UdpInterface.d.ts.map