export interface HostOptions {
    switchboardUrl: string;
    hostId: string;
    pairingCode: string;
    ollamaModel: string;
    maxConnections?: number;
    allowMultiple?: boolean;
    contextWindow?: number;
    localOnly?: boolean;
    log: (msg: string, type?: string) => void;
    onReady?: (info: {
        hostId: string;
        pairingCode: string;
        socketPath: string;
    }) => void;
    onConnection?: (peerId: string, total: number) => void;
    onDisconnection?: (peerId: string, total: number) => void;
}
type LTMStore = Record<string, string>;
export declare function buildContextMessages(session: ClientSession): Array<{
    role: string;
    content: string;
}>;
interface ConversationEntry {
    role: 'user' | 'assistant' | 'system';
    content: string;
    timestamp: Date;
    tokenCount: number;
}
export interface ClientSession {
    peerId: string;
    clientId: string | null;
    conversationHistory: ConversationEntry[];
    systemPrompt: string;
    ltm: LTMStore;
    totalTokens: number;
    lastActivity: Date;
    contextWindow: number;
}
export declare function startHost(options: HostOptions): Promise<{
    disconnect: () => void;
    getPeerCount: () => number;
    getPeers: () => string[];
    getActiveInferences: () => number;
    getSessionStats: (peerId?: string) => any;
    clearSession: (peerId: string) => number;
    disconnectPeer: (peerId: string) => void | undefined;
    broadcast: (packet: any) => void | undefined;
    sendToPeer: (peerId: string, packet: any) => boolean | undefined;
    getRateLimitStats: (peerId?: string) => {
        requestsUsed: any;
        requestsLimit: number;
        tokensUsed: number;
        tokensLimit: number;
        resetIn: number;
        totalActiveInferences?: undefined;
        totalConnections?: undefined;
    } | {
        totalActiveInferences: number;
        totalConnections: number;
        requestsUsed?: undefined;
        requestsLimit?: undefined;
        tokensUsed?: undefined;
        tokensLimit?: undefined;
        resetIn?: undefined;
    } | null;
}>;
export {};
