import { type Logger } from '@ariestools/sdk';
import type { ConnectionsConfig, ProviderBindingsConfig, RestConnectionConfig } from '../../protocol-sdk/index-node.js';
/** REST connection config for the S3-backed static file layout, split by bucket role. */
export interface RestRemoteConfig {
    /** @deprecated Renamed to `finalized`. */
    blocks?: RestConnectionConfig;
    /** REST connection over a separate chain-state bucket, when the head pointer lives apart from finalized blocks. Defaults to `finalized`. */
    chainState?: RestConnectionConfig;
    /** REST connection over the finalized blocks bucket (required, unless the deprecated `blocks` alias is set — the base for BlockViewer/ChainStateViewer/ChainContractViewer). */
    finalized?: RestConnectionConfig;
    /** REST connection over a separate index bucket, when step summaries live apart from finalized blocks. Defaults to `finalized`. */
    index?: RestConnectionConfig;
}
/**
 * Resolves the `finalized` entry from a config that may still use the deprecated `blocks`
 * alias, logging a deprecation warning once per call site when the alias is used.
 */
export declare function resolveFinalizedAlias<T>(config: {
    blocks?: T;
    finalized?: T;
}, context: string, logger?: Logger): T;
export interface BasicRestViewerLocatorOptions {
    /** Extra connection profiles merged into the synthesized config (e.g. an rpc write endpoint). */
    additionalConnections?: ConnectionsConfig;
    /** Extra provider bindings merged into the synthesized config. */
    additionalProviderBindings?: ProviderBindingsConfig;
    dataLakeEndpoint?: string;
    /** Custom fetch override for every REST viewer (custom agents, auth headers, tests). Defaults to the global fetch. */
    fetchFn?: typeof globalThis.fetch;
    /**
     * Whether `XyoViewer` precomputes network-stake-reward positions across the whole chain at
     * startup. Defaults to `false` here — unlike `SimpleXyoViewer`'s own node-side default of
     * `true` — because that precompute issues one REST round trip per position/step, which against
     * a large live chain turns gateway construction from seconds into minutes-or-worse. Set `true`
     * only when the client actually needs reward data warmed at startup.
     */
    initRewardsCache?: boolean;
    /** Logger shared by every provider created from this locator. */
    logger?: Logger;
}
/**
 * Builds a config-driven, connections-native locator for a REST/S3-backed read-only gateway:
 * `BlockViewer`/`ChainStateViewer`/`FinalizationViewer`/`ChainContractViewer` are bound to REST
 * connections over the S3 static file layout; every other viewer moniker
 * (`synthesizeMemoryViewerBindings`) is bound to a shared `memory` connection, resolving to the
 * `Simple*` implementations that compute their data from the injected `BlockViewer` instead of a
 * dedicated remote source. Mirrors `basicRemoteViewerLocator`'s RPC-based counterpart.
 */
export declare function basicRestViewerLocator(name: string, restConfig: RestRemoteConfig, dataLakeEndpoint?: string, options?: BasicRestViewerLocatorOptions): Promise<import('../../protocol-sdk/index-node.js').ProviderFactoryLocatorInstance<import('../../protocol-sdk/index-node.js').CreatableProviderContextType>>;
//# sourceMappingURL=basicRestViewerLocator.d.ts.map