/*!
 * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
 * Licensed under the MIT License.
 */
import { TypedEventEmitter } from "@fluid-internal/client-utils";
import type { IDeltaManagerEvents, IDeltaManagerFull, IDeltaQueue, IDeltaSender, ReadOnlyInfo } from "@fluidframework/container-definitions/internal";
import { IClientDetails } from "@fluidframework/driver-definitions";
import { IClientConfiguration, IDocumentMessage, ISequencedDocumentMessage, ISignalMessage } from "@fluidframework/driver-definitions/internal";
import type { PendingStateManager } from "./pendingStateManager.js";
/**
 * Base class for DeltaManager proxy that proxy's access to the real DeltaManager.
 *
 * This class allows us to build proxy functionality without actually having to implement all the methods
 * of the DeltaManager.
 */
export declare abstract class BaseDeltaManagerProxy extends TypedEventEmitter<IDeltaManagerEvents> implements IDeltaManagerFull {
    protected readonly deltaManager: IDeltaManagerFull;
    get IDeltaSender(): IDeltaSender;
    get inbound(): IDeltaQueue<ISequencedDocumentMessage>;
    get outbound(): IDeltaQueue<IDocumentMessage[]>;
    get inboundSignal(): IDeltaQueue<ISignalMessage>;
    get minimumSequenceNumber(): number;
    get lastSequenceNumber(): number;
    get lastMessage(): ISequencedDocumentMessage | undefined;
    get lastKnownSeqNumber(): number;
    get initialSequenceNumber(): number;
    get hasCheckpointSequenceNumber(): boolean;
    get clientDetails(): IClientDetails;
    get version(): string;
    get maxMessageSize(): number;
    get serviceConfiguration(): IClientConfiguration | undefined;
    get active(): boolean;
    get readOnlyInfo(): ReadOnlyInfo;
    constructor(deltaManager: IDeltaManagerFull);
    dispose(): void;
    submitSignal(content: string, targetClientId?: string): void;
    flush(): void;
    private readonly onPrepareSend;
    private readonly onSubmitOp;
    protected readonly onOp: (message: ISequencedDocumentMessage, processingTime: number) => void;
    private readonly onPong;
    private readonly onConnect;
    private readonly onDisconnect;
    private readonly onReadonly;
}
/**
 * Proxy to the real IDeltaManager for restricting certain access to layers below container runtime in summarizer clients:
 * - Summarizer client should be read-only to layers below the container runtime to restrict local changes.
 * - Summarizer client should not be active to layers below the container runtime to restrict local changes.
 */
export declare class DeltaManagerSummarizerProxy extends BaseDeltaManagerProxy {
    protected readonly deltaManager: IDeltaManagerFull;
    get active(): boolean;
    get readOnlyInfo(): ReadOnlyInfo;
    private readonly isSummarizerClient;
    constructor(deltaManager: IDeltaManagerFull);
}
export declare class DeltaManagerPendingOpsProxy extends BaseDeltaManagerProxy {
    protected readonly deltaManager: IDeltaManagerFull;
    private readonly pendingStateManager;
    get minimumSequenceNumber(): number;
    get lastMessage(): ISequencedDocumentMessage | undefined;
    protected readonly onOp: (message: ISequencedDocumentMessage, processingTime: number) => void;
    constructor(deltaManager: IDeltaManagerFull, pendingStateManager: Pick<PendingStateManager, "minimumPendingMessageSequenceNumber">);
}
//# sourceMappingURL=deltaManagerProxies.d.ts.map