import type { Hash } from '@ariestools/sdk';
import type { AsyncMap, BlockViewer, IndexSummaryFamily, IndexViewer } from '@xyo-network/xl1-protocol/protocol-lib';
/** The minimum shape a step-summary frame needs to place itself: its head hash and frame size. */
interface FramePlacement {
    hash: Hash;
    stepSize: number;
}
/**
 * A read-only summary map backed by a located `IndexViewer`. On a hit, returns the published
 * frame; on a miss — not yet published, or no `IndexViewer` located at all — returns undefined
 * so the caller builds the frame itself. Never writes anywhere: keeping the index current is the
 * publisher's job, not the reader's, so `set`/`setMany`/`clear`/`delete` are all no-ops.
 */
export declare class IndexViewerSummaryMap<T extends FramePlacement> implements AsyncMap<string, T> {
    private readonly blockViewer;
    private readonly family;
    private readonly indexViewer?;
    /** Creates an instance with the supplied configuration. */
    constructor(family: IndexSummaryFamily, blockViewer: BlockViewer, indexViewer?: IndexViewer);
    /** No-op because this map is a read-only view of publisher-owned summaries. */
    clear(): void;
    /** Returns `false` because this read-only map never deletes published summaries. */
    delete(_id: string): boolean;
    /** Returns a published summary for the encoded placement key, when available. */
    get(id: string): Promise<T | undefined>;
    /** Returns the published summaries found for the supplied placement keys. */
    getMany(ids: string[]): Promise<T[]>;
    /** Returns whether a published summary exists for the placement key. */
    has(id: string): Promise<boolean>;
    /** No-op because summary publication is owned by the index publisher. */
    set(_id: string, _data: T): Promise<void>;
    /** No-op because summary publication is owned by the index publisher. */
    setMany(_entries: [string, T][]): Promise<void>;
}
export {};
//# sourceMappingURL=IndexViewerSummaryMap.d.ts.map