import { type DatabaseData, type DatabaseRecord } from "./types/database.js"; import type { CreateRoomConfig, JoinRoomConfig } from "./types/engine.js"; import type { Config } from "./types/light-db.js"; import type { StorageEngine } from "./types/storage.js"; import type { HandlerType, PeerEventMap } from "./types/web-rtc.js"; /** * WebRTC 기반의 실시간 P2P 데이터베이스 메인 클래스입니다. * @see {@link LightDBEngine} */ export declare class LightDB { /** * 현재 메모리에 로드된 데이터베이스의 전체 레코드 객체 */ database: DatabaseRecord; /** * 방장의 상태를 구분하는 변수 */ roomChief: boolean; /** * 현재 접속 중인 방의 아이디 */ roomId: string | null; /** * 현재 {@link database}를 업데이트한 시간 * @remarks - 'YYYY-MM-DD hh:mm:ss' 형식으로 표현하고있습니다. */ updateTimestamp: string; /** * 새로운 LightDB 인스턴스를 생성 * @param [config] - 외부 커스텀 {@link Config} 객체 (선택 사항) * @param [storage] - 데이터를 저장할 {@link LightStorage} 구현체 (선택 사항) */ constructor(config?: Config, storage?: StorageEngine); /** * 데이터베이스 방을 생성하고 자신을 방장으로 설정합니다. * @param [config.storageKey] - 저장소 그룹의 기준 키 (선택사항) * @param [config.resetStorage] - 기존에 저장된 저장소를 초기화하여 시작할지 여부 (기본값 : false) * @returns 생성된 방의 Peer 아이디를 담은 Promise */ createRoom(config?: CreateRoomConfig): Promise; /** * 데이터베이스 방을 생성하고 자신을 방장으로 설정합니다. * @param targetId - 참여하고자 하는 방 아이디 {@link roomId} * @param [config.clear] - 기존에 저장된 저장소를 초기화하여 시작할지 여부 (기본값 : false) * @returns 생성된 방의 Peer 아이디를 담은 Promise */ joinRoom(targetId: string, config?: JoinRoomConfig): Promise; /** * 데이터베이스 변경사항을 구독하기 위한 메서드 * @param table - 구독할 테이블 키 * @param handler - 데이터 변경 시 실행될 콜백 함수 */ on(table: string, handler: Function): void; /** * 데이터베이스 변경사항 구독을 취소하기 위한 메서드 * @param table - 변경사항 구독을 취소할 키 */ off(table: string): void; /** * 데이터베이스의 특정 테이블 데이터를 업데이트하는 메서드 * @remarks 특정 키의 값을 'null'로 설정하면 해당 데이터가 데이터베이스에서 삭제됩니다. * @param table - 업데이트할 테이블 키 (기본값: {@link DB_PATH.ROOT}) * @param data - 저장할 {@link DatabaseData} 객체 * @returns 업데이트 완료 후 resolve되는 Promise */ update(table: string | undefined, data: DatabaseData): Promise; /** * 데이터베이스의 모든 데이터를 삭제하고 초기화하는 메서드 * @returns 초기화 완료 후 resolve되는 Promise */ clear(): Promise; /** * WebRTC의 변경사항을 구독하기 위한 메서드 * @param event - 설정할 핵심 이벤트 {@link HandlerType} * @param handler - 할당할 핸들러 {@link PeerEventMap} */ onPeer(event: K, handler: PeerEventMap[K]): void; /** * WebRTC의 변경사항 구독을 해제하기 위한 메서드 * @param event - 설정할 핵심 이벤트 {@link HandlerType} */ offPeer(event: K): void; /** * 메모리 할당 해제를 위한 메서드 */ destroy(): void; /** * 데이터베이스의 특정 테이블 데이터를 삭제하는 메서드 * @param table - 삭제할 테이블 키 * @remarks 구독은 유지됩니다. 구독 해제가 필요하면 {@link off}를 호출하세요. * @returns 삭제 완료 후 resolve되는 Promise */ remove(table: string): Promise; } declare const lightDB: LightDB; export default lightDB; //# sourceMappingURL=index.d.ts.map