/**
 * @license
 * Copyright 2022-2026 Matter.js Authors
 * SPDX-License-Identifier: Apache-2.0
 */
import { Bytes, Channel, DiagnosticPresentation } from "#general";
import { BleChannel } from "#protocol";
import { BleOptions } from "./NodeJsBle.js";
/**
 * Implements the Matter over BLE server using Bleno as Peripheral.
 *
 * Note: Bleno is only supporting a single connection at a time right now - mainly because it also only can announce
 * one BLE device at a time!
 */
export declare class BlenoBleServer extends BleChannel<Bytes> {
    #private;
    private state;
    isAdvertising: boolean;
    private additionalAdvertisingData;
    private advertisingData;
    private latestHandshakePayload;
    private btpSession;
    private onMatterMessageListener;
    private writeConformationResolver;
    clientAddress: string | undefined;
    private btpHandshakeTimeout;
    private readonly matterBleService;
    constructor(options?: BleOptions);
    /**
     * Process a Write request on characteristic C1 from the Matter service.
     * The data are checked if it might be a handshake request and stored until the subscribe request comes in.
     * Otherwise, the data are forwarded to the BTP session handler to be decoded and processed.
     *
     * @param data
     * @param offset
     * @param withoutResponse
     */
    handleC1WriteRequest(data: Buffer<ArrayBufferLike>, offset: number, withoutResponse: boolean): void;
    /**
     * Process a Subscribe request on characteristic C2 from the Matter service.
     * This is expected directly after a handshake request and initializes the BTP session handler with the stored
     * handshake payload.
     * The BtpSessionHandler instance is wired with the bleno instance for sending data and disconnecting.
     *
     * @param maxValueSize
     * @param updateValueCallback
     */
    handleC2SubscribeRequest(maxValueSize: number, updateValueCallback: (data: Buffer) => void): Promise<void>;
    handleC2Indicate(): void;
    /**
     * Process a Read request on characteristic C3 from the Matter service.
     * The relevant data needs optionally to be set before advertising, else empty data are used.
     *
     * @param offset
     */
    handleC3ReadRequest(offset: number): Buffer<ArrayBufferLike>;
    advertise(advertiseData: Bytes, additionalAdvertisementData?: Bytes, interval?: import("#general").Duration): Promise<void>;
    stopAdvertising(): Promise<void>;
    setMatterMessageListener(listener: (socket: Channel<Bytes>, data: Bytes) => void): void;
    btpHandshakeTimeoutTriggered(): Promise<void>;
    close(): Promise<void>;
    disconnect(): Promise<void>;
    /**
     * Send a Matter message to the connected device - need to do BTP assembly first.
     *
     * @param data
     */
    send(data: Bytes): Promise<void>;
    get name(): string;
    [DiagnosticPresentation.name]: string;
}
//# sourceMappingURL=BlenoBleServer.d.ts.map