///
///
import { EventEmitter } from "events";
import * as Long from "long";
import { DemoFile } from "./demo";
import { BitStream } from "./ext/bitbuffer";
/**
* Player info structure.
* @property {Long} xuid - 64-bit Steam ID (e.g. 76561197988627193)
* @property {string} name - Player name
* @property {int} userId - Local server user ID, unique while server is running
* @property {string} guid - Steam2 ID string (e.g. STEAM_0:1:14180732)
* @property {int} friendsId - Steam account number
* @property {string} friendsName - Friends name
* @property {bool} fakePlayer - true, if player is a bot
* @property {bool} isHltv - true, if player is the HLTV proxy
* @property {int[]} customFiles - custom files CRC for this player
*/
export interface IPlayerInfo {
xuid: Long;
name: string;
userId: number;
guid: string;
friendsId: number;
friendsName: string;
fakePlayer: boolean;
isHltv: boolean;
}
export interface IStringTableUpdateEvent {
table: IStringTable;
entryIndex: number;
entry: string;
userData: T | null;
oldUserData: T | null;
}
export interface IStringTableEntry {
entry: string;
userData: T | null;
}
export interface IStringTable {
name: string;
entries: Array>;
userDataSizeBits: number;
userDataFixedSize: boolean;
maxEntries: number;
}
export declare type WellKnownStringTable = "downloadables" | "modelprecache" | "genericprecache" | "soundprecache" | "decalprecache" | "instancebaseline" | "lightstyles" | "userinfo" | "dynamicmodel" | "server_query_info" | "ExtraParticleFilesTable" | "ParticleEffectNames" | "EffectDispatch" | "VguiScreen" | "Materials" | "InfoPanel" | "Scenes" | "Movies" | "GameRulesCreation";
export declare interface StringTables {
findTableByName(table: "userinfo"): IStringTable | undefined;
findTableByName(table: WellKnownStringTable): IStringTable | undefined;
/**
* Fired when a table is created. Entries are empty at this point.
*/
on(event: "create", listener: (table: IStringTable) => void): this;
emit(name: "create", event: IStringTable): boolean;
/**
* Fired after a table is created. Entries have been populated by now.
*/
on(event: "postcreate", listener: (table: IStringTable) => void): this;
emit(name: "postcreate", event: IStringTable): boolean;
/**
* Fired when a string table entry is updated.
*/
on(event: "update", listener: (event: IStringTableUpdateEvent) => void): this;
emit(name: "update", event: IStringTableUpdateEvent): boolean;
}
/**
* Handles string tables for a demo file.
*/
export declare class StringTables extends EventEmitter {
tables: Array>;
userDataCallbacks: Record any) | undefined>;
constructor();
listen(messageEvents: DemoFile): void;
handleStringTables(bitbuf: BitStream): void;
private _handleStringTable;
private _parseStringTableUpdate;
private _handleCreateStringTable;
private _handleUpdateStringTable;
}