import { LiveDatabase } from "./database.js"; import { type DatabaseData } from "../types/database.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"; import { WebRTC } from "./web-rtc.js"; import { LightStorage } from "./storage.js"; /** * LightDB의 핵심 엔진 클래스입니다. * @remarks LightStorage와 WebRtc을 조율하는 역할을 합니다. */ export declare class LightDBEngine { db: LiveDatabase; rtc: WebRTC; storage: LightStorage; /** * 현재 {@link LightStorage.database}를 업데이트한 시간 * @remarks - 'YYYY-MM-DD hh:mm:ss' 형식으로 표현하고있습니다. */ updateTimestamp: string; /** * 방장의 상태를 구분하는 변수 */ roomChief: boolean; /** * 방장의 PeerID를 담고있는 변수 */ roomId: string | null; /** * 진입점(index)에서 사용할 변수들을 업데이트하기 위한 메서드 * @remark 명시적 콜백을 위한 메서드 */ onUpdateComplete: () => void; /** * 새로운 LightDB 인스턴스를 생성 * @see {@link LightDB} */ constructor(config?: Config, storage?: StorageEngine); /** * 외부에서 커스텀 키를 받아 저장소에 전파하기 위한 메서드 * @see {@link LightStorage.onSetStorageKey} */ onSetStorageKey: (key: string) => void; /** * 데이터베이스 방을 생성하고 자신을 방장으로 설정합니다. * @param resetStorage 기존에 저장된 저장소를 초기화하여 시작할지 여부 (기본값 : false) * @returns 생성된 방의 Peer 아이디를 담은 Promise * @throws WebRTC 초기화에 실패하거나 방 생성 실패시 발생 */ createRoom(resetStorage?: boolean): Promise; /** * 지정된 방 ID를 가진 기존 방에 참여합니다. * @param targetId - 참여하고자 하는 방장의 고유 Peer 아이디 * @param resetStorage 기존에 저장된 저장소를 초기화하여 시작할지 여부 (기본값 : false) * @throws WebRtc 초기화에 실패, 방장과의 연결 수립 실패시 발생 */ joinRoom(targetId: string, resetStorage?: boolean): Promise; /** * 데이터베이스 변경사항을 구독하기 위한 메서드 * @see {@link LiveDatabase.addDBListener} */ on(table: string, handler: Function): void; /** * 데이터베이스 변경사항 구독을 취소하기 위한 메서드 * @see {@link LiveDatabase.removeDBListener} */ off(table: string): void; /** * 데이터베이스의 특정 테이블 데이터를 업데이트하는 메서드 * @returns 업데이트 완료 후 resolve되는 Promise * @see {@link LiveDatabase.updateDB} */ update(table: string | undefined, data: DatabaseData): Promise; /** * 데이터베이스의 모든 데이터를 삭제하고 초기화하는 메서드 * @returns 초기화 완료 후 resolve되는 Promise */ clear(): Promise; /** * WebRTC의 변경사항을 구독하기 위한 메서드 * @see {@link WebRTC.setHandler} */ onPeer(event: K, handler: PeerEventMap[K]): void; /** * WebRTC의 변경사항 구독을 해제하기 위한 메서드 * @see {@link WebRTC.setHandler} */ offPeer(event: K): void; /** * 메모리 할당 해제를 위한 메서드 */ destroy(): void; /** * 데이터베이스의 특정 테이블 데이터를 삭제하는 메서드 * @see {@link LiveDatabase.removeTable} * @remarks 구독은 유지됩니다. 구독 해제가 필요하면 {@link off}를 호출하세요. * @returns 삭제 완료 후 resolve되는 Promise */ remove(table: string): Promise; /** * 현재 메모리에 로드된 전체 데이터베이스의 레코드 객체 */ get database(): import("../types/database.js").DatabaseRecord; } //# sourceMappingURL=engine.d.ts.map