import { FetchJsonClient } from '@ariestools/sdk';
import { type Hash, type PromisableArray } from '@ariestools/sdk';
import type { NextOptions, Schema, Sequence } from '@xyo-network/sdk';
import type { DataLakeData, DataLakeViewer } from '@xyo-network/xl1-protocol/protocol-lib';
import { AbstractCreatableProvider, type CreatableProviderParams } from '../../CreatableProvider/index.js';
/** Parameters for AbstractRestDataLake. */
export interface AbstractRestDataLakeParams extends CreatableProviderParams {
    allowedSchemas?: Schema[];
    disallowedSchemas?: Schema[];
    /** When omitted, resolved from `providerBindings` + a `rest` connection at startup. */
    endpoint?: string;
}
/** Abstract base class for RestDataLake implementations. */
export declare abstract class AbstractRestDataLake<TParams extends AbstractRestDataLakeParams = AbstractRestDataLakeParams> extends AbstractCreatableProvider<TParams> implements Omit<DataLakeViewer, 'moniker'> {
    get allowedSchemas(): Schema[] | undefined;
    get client(): FetchJsonClient;
    get disallowedSchemas(): Schema[] | undefined;
    get endpoint(): string;
    static paramsHandler(params?: Partial<AbstractRestDataLakeParams>): Promise<{
        endpoint: string;
        context: import('../../index.js').CreatableProviderContextType;
        name?: import("@ariestools/sdk").CreatableName;
        statusReporter?: import("@ariestools/sdk").CreatableStatusReporter<void> | undefined;
        logger?: import("@ariestools/sdk").Logger;
        meterProvider?: import("@opentelemetry/api").MeterProvider;
        traceProvider?: import("@opentelemetry/api").TracerProvider;
    }>;
    get(hashes: Hash[]): Promise<DataLakeData[]>;
    next(_options?: NextOptions<Sequence>): PromisableArray<DataLakeData>;
    protected getOne(hash: Hash): Promise<DataLakeData | undefined>;
    protected isAllowed(value: DataLakeData | undefined): boolean;
    protected isAllowedSchema(schema: Schema): boolean;
}
//# sourceMappingURL=AbstractRestDataLake.d.ts.map