import { TChannel, TChannelType } from '../interfaces/TChannel';
import { ISessionEvent } from '../sessionConnectors/renderer/events';
declare type TPrimitive = string | number | boolean;
export interface IChannelMementoRecord {
    timestamp: number;
    events: ISessionEvent[];
    sessionId?: string;
    data?: {
        [key: string]: TPrimitive;
    };
}
export declare class ChannelSession {
    channel: TChannel;
    siblingChannels: ChannelSession[];
    sessionId?: string | undefined;
    events: ISessionEvent[];
    isDisposed: boolean;
    private heartbeatInterval;
    private id;
    private mementoRecordExpirationThreshold;
    type: TChannelType | 'generic';
    private getMementoId;
    constructor(channel: TChannel, siblingChannels: ChannelSession[], sessionId?: string | undefined);
    readExistingRecord(): IChannelMementoRecord | null;
    deleteExistingRecord: () => void;
    init: () => Promise<void>;
    onEvent(e: ISessionEvent): Promise<void>;
    onPersistData: (record: IChannelMementoRecord) => IChannelMementoRecord;
    persistData: () => void;
    dispose: () => Promise<void>;
}
export {};
//# sourceMappingURL=ChannelSession.d.ts.map