/**
 * @license
 * Copyright 2022-2026 Matter.js Authors
 * SPDX-License-Identifier: Apache-2.0
 */
import { ServerSubscriptionConfig } from "#node/server/ServerSubscription.js";
import { Duration } from "@matter/general";
import { NetworkProfiles, PeerTimingParameters } from "@matter/protocol";
import { DiscoveryCapabilitiesBitmap, TypeFromPartialBitSchema } from "@matter/types";
import { NetworkBehavior } from "./NetworkBehavior.js";
import type { ServerNetworkRuntime } from "./ServerNetworkRuntime.js";
/**
 * Server implementation of {@link NetworkBehavior}.
 *
 * This behavior mostly deals with configuration and events.  {@link ServerNetworkRuntime} provides the actual network
 * implementation.
 */
export declare class NetworkServer extends NetworkBehavior {
    #private;
    state: NetworkServer.State;
    internal: NetworkServer.Internal;
    initialize(): import("@matter/general").MaybePromise;
}
export declare namespace NetworkServer {
    class Internal extends NetworkBehavior.Internal {
        runtime: ServerNetworkRuntime;
    }
    class TimingConfig implements Partial<PeerTimingParameters> {
        defaultConnectionTimeout?: Duration;
        maxDelayBetweenInitialContactRetries?: Duration;
        delayBeforeNextAddress?: Duration;
        delayAfterNetworkError?: Duration;
        delayAfterPeerError?: Duration;
        delayAfterUnhandledError?: Duration;
        minimumTimeBetweenMrpKicks?: Duration;
    }
    class ConcreteLimitsConfig implements Partial<NetworkProfiles.ConcreteLimits> {
        exchanges?: number;
        delay?: Duration;
        timeout?: Duration;
    }
    class LimitsConfig extends ConcreteLimitsConfig {
        connect?: ConcreteLimitsConfig;
    }
    class ProfilesConfig implements NetworkProfiles.PartialOptions {
        fast?: LimitsConfig;
        thread?: LimitsConfig;
        conservative?: LimitsConfig;
        unlimited?: LimitsConfig;
    }
    class State extends NetworkBehavior.State {
        listeningAddressIpv4?: string;
        listeningAddressIpv6?: string;
        ipv4: boolean;
        ble?: boolean;
        discoveryCapabilities: TypeFromPartialBitSchema<typeof DiscoveryCapabilitiesBitmap>;
        subscriptionOptions?: ServerSubscriptionConfig;
        timing?: TimingConfig;
        profiles?: ProfilesConfig;
    }
}
//# sourceMappingURL=NetworkServer.d.ts.map