///
import { ClientRequest } from '../../../proto/ai/inworld/engine/world-engine_pb';
import { InworldPacket as ProtoPacket } from '../../../proto/ai/inworld/packets/packets_pb';
import { ApiKey, Awaitable, ChangeSceneProps, ClientConfiguration, ConversationState, GenerateSessionTokenFn, GetterSetter, User } from '../common/data_structures';
import { ConvesationInterface, Extension } from '../common/data_structures/extension';
import { Character } from '../entities/character.entity';
import { SessionContinuation } from '../entities/continuation/session_continuation.entity';
import { InworldError } from '../entities/error.entity';
import { InworldPacket } from '../entities/packets/inworld_packet.entity';
import { Session } from '../entities/session.entity';
import { SessionToken } from '../entities/session_token.entity';
import { EventFactory } from '../factories/event';
interface ConnectionProps {
apiKey: ApiKey;
name?: string;
user?: User;
client?: ClientRequest;
config?: ClientConfiguration;
sessionGetterSetter?: GetterSetter;
sessionContinuation?: SessionContinuation;
onDisconnect?: () => Awaitable;
onError: (err: InworldError) => Awaitable;
onMessage?: (message: InworldPacketT) => Awaitable;
generateSessionToken?: GenerateSessionTokenFn;
extension?: Extension;
}
export declare class ConnectionService {
private state;
private config;
private scene;
private sceneIsLoaded;
private sessionToken;
private stream;
private connectionProps;
private disconnectTimeoutId;
private eventFactory;
private intervals;
private packetQueue;
private packetQueuePercievedLatency;
private engineService;
private stateService;
private logger;
private extension;
private MAX_LATENCY_QUEUE_SIZE;
onDisconnect: () => Awaitable;
onError: (err: InworldError) => Awaitable;
onMessage: ((message: ProtoPacket) => Awaitable) | undefined;
readonly conversations: Map;
state: ConversationState;
}>;
constructor(props: ConnectionProps);
isActive(): boolean;
isAutoReconnected(): boolean;
getSceneName(): string;
getClientConfig(): ClientConfiguration;
generateSessionToken(): Promise;
getSessionState(): Promise;
openManually(): Promise;
close(): void;
getEventFactory(): EventFactory;
getCharactersList(): Promise;
getCurrentCharacter(): Promise;
getCharactersByIds(ids: string[]): Character[];
getCharactersByResourceNames(names: string[]): Character[];
setCurrentCharacter(character: Character): void;
removeCharacters(names: string[]): void;
open(): Promise;
change(name: string, props?: ChangeSceneProps): Promise;
send(getPacket: () => ProtoPacket, props?: {
force?: boolean;
}): Promise;
private write;
private writeToStream;
private loadToken;
ensureSessionToken(props?: {
beforeLoading: () => void;
sessionToken?: SessionToken;
}): Promise;
addInterval(interval: NodeJS.Timeout): void;
removeInterval(interval: NodeJS.Timeout): void;
markPacketAsHandled(packet: InworldPacket): void;
private scheduleDisconnect;
private cancelScheduler;
private releaseQueue;
private clearQueue;
private convertPacketFromProto;
private ensureCurrentCharacter;
private setSceneFromProtoEvent;
private initializeHandlers;
private initializeExtension;
private buildConfiguration;
private pushToPerceivedLatencyQueue;
private findLastAudioSessionIndexes;
}
export {};