import { Logger as Log4jsLogger } from 'log4js';
import StateManager from '.';
import Crypto from '../crypto';
import Logger from '../logger';
import { P2PModuleContext as P2P } from '../p2p/Context';
import * as Shardus from '../shardus/shardus-types';
import Profiler from '../utils/profiler';
import { CachedAppData, CacheTopic } from './state-manager-types';
declare class CachedAppDataManager {
    app: Shardus.App;
    crypto: Crypto;
    config: Shardus.StrictServerConfiguration;
    profiler: Profiler;
    p2p: P2P;
    logger: Logger;
    mainLogger: Log4jsLogger;
    fatalLogger: Log4jsLogger;
    shardLogger: Log4jsLogger;
    statsLogger: Log4jsLogger;
    statemanager_fatal: (key: string, log: string) => void;
    stateManager: StateManager;
    cacheTopicMap: Map<string, CacheTopic>;
    constructor(stateManager: StateManager, profiler: Profiler, app: Shardus.App, logger: Logger, crypto: Crypto, p2p: P2P, config: Shardus.StrictServerConfiguration);
    setupHandlers(): void;
    registerTopic(topic: string, maxCycleAge: number, maxCacheElements: number): boolean;
    getCachedItem(topic: string, dataID: string): CachedAppData;
    pruneCachedItems(): void;
    insertCachedItem(topic: string, dataID: string, appData: unknown, cycle: number): void;
    setMemoryLimit(topic: string, maxItemSize: number): void;
    factValidateCorrespondingCachedAppDataSender(dataID: string, senderNodeId: string, executionShardKey: string, txId: string): boolean;
    factSendCorrespondingCachedAppData(topic: string, dataID: string, appData: unknown, cycle: number, _formId: string, txId: string): void;
    sendCorrespondingCachedAppData(topic: string, dataID: string, appData: unknown, cycle: number, _formId: string, txId: string): Promise<unknown>;
    getLocalOrRemoteCachedAppData(topic: string, dataId: string): Promise<CachedAppData | null>;
}
export default CachedAppDataManager;
