import { CacheClient, CacheClientCreatorLambda } from "../client";
import { CacheHub, CacheHubInfo, CacheHubProp, CacheHubPropData, CacheHubPropLambda, CacheHubSecure } from "./types";
import { CacheSegment, CacheSegmentCreatorLambda, CacheSegmentPropLambda } from "../segment";
import { CacheEntity, CacheEntityCreatorLambda, CacheEntityDef } from "../entity";
import { CacheChannelCreatorLambda } from "../channel";
import { CacheInfoCheck, Id, TR } from "../types";
import { CacheProvider } from "../provider";
import { CacheRemote } from "../remote";
import { CacheInvalidatorConsumer } from "../invalidator";
export declare class CacheHubImpl implements CacheHub, CacheHubSecure {
    private readonly _segmentCreators;
    private readonly _entityCreators;
    private readonly _channelCreators;
    private readonly _clientCreators;
    private readonly _segmentMap;
    private readonly _entityMap;
    private readonly _invalidatorConsumerMap;
    private readonly _segments;
    private readonly _providers;
    private readonly _clients;
    private readonly _defaults;
    readonly prop: Readonly<CacheHubProp>;
    constructor();
    get segments(): Array<CacheSegment>;
    get clients(): Array<CacheClient>;
    get providers(): Array<CacheProvider>;
    registerClient(provider: CacheProvider, native: unknown, description?: string): CacheClient;
    newSegment(client: CacheClient, path: string, fn: CacheSegmentPropLambda, id?: string): CacheSegment;
    newRemote(id: string): CacheRemote;
    info(check: CacheInfoCheck): Promise<CacheHubInfo>;
    changeProp(lambda: CacheHubPropLambda): void;
    getInvalidatorConsumer(id: string): CacheInvalidatorConsumer;
    getEntity<A extends TR = TR>(id: string): CacheEntity<A>;
    getSegment(id: string): CacheSegment;
    get $secure(): CacheHubSecure;
    get $back(): CacheHub;
    $getSegmentCreator(provider: CacheProvider): CacheSegmentCreatorLambda;
    $setSegmentCreator(provider: CacheProvider, lambda: CacheSegmentCreatorLambda): void;
    $getEntityCreator(provider: CacheProvider): CacheEntityCreatorLambda<TR>;
    $setEntityCreator(provider: CacheProvider, lambda: CacheEntityCreatorLambda<TR>): void;
    $getChannelCreator(provider: CacheProvider): CacheChannelCreatorLambda<TR, Id>;
    $setChannelCreator(provider: CacheProvider, lambda: CacheChannelCreatorLambda<TR, Id>): void;
    $getClientCreator(provider: CacheProvider): CacheClientCreatorLambda;
    $setClientCreator(provider: CacheProvider, lambda: CacheClientCreatorLambda): void;
    $setProp(prop: CacheHubPropData): void;
    $checkInvalidatorConsumer(consumer: CacheInvalidatorConsumer): void;
    $checkEntity(entity: CacheEntityDef): void;
    $checkSegment(segment: CacheSegment): void;
}
