declare function base64UrlEncode(str: string): string; declare function base64UrlDecode(str: string): string; declare function encrypt(data: any, secretKey: string): string; declare function decrypt(encoded: string, secretKey: string): any; declare function generateKey(length?: number): string; type ActivityStatus = "SUCCESS" | "FAILED" | "TIMEOUT" | "PARTIAL" | "ERROR" | "DETECTED"; type ActivityCode = "la_login" | "la_logout" | "la_pwd" | "la_session" | "la_mfa" | "da_view" | "da_create" | "da_update" | "da_delete" | "da_submit" | "da_approve" | "da_reject" | "da_return" | "da_cancel" | "da_close" | "da_reopen" | "da_print" | "da_preview" | "ie_import" | "ie_export" | "ie_template" | "fm_upload" | "fm_download" | "fm_replace" | "fm_delete" | "fm_preview" | "ap_request" | "ap_response" | "er_log" | "se_detect" | "rp_generate" | "rp_export" | "rp_print" | "rp_download"; type ActivityObjectType = "MASTER" | "TRANSACTION"; interface ActivityPayload { status: ActivityStatus; object_type?: ActivityObjectType; before_value?: any; after_value?: any; [key: string]: any; } type ActivityMeta = { categoryId: string; category: string; location: "Framework" | "Application"; activity: string; allowedStatus: ActivityStatus[]; objectType?: ActivityObjectType[]; beforeValue?: true | "optional"; afterValue?: true | "optional"; }; declare const ACTIVITY_META: Record; interface ActivityConfig { endpoint: string; headers?: Record; batchSize?: number; interval?: number; } interface StartOptions { headers?: Record; requireAuth?: boolean; } interface ActivityReporter { start(opts?: StartOptions): void; track(event: ActivityCode | string, payload?: ActivityPayload | Record): void; flush(): Promise; stop(): void; destroy(): void; } declare function activity(config: ActivityConfig): ActivityReporter; type BridgeMessage = { type: string; payload: any; txn: string; __source: "host" | "remote"; __origin?: string; }; type Listener = (message: BridgeMessage) => void; interface BridgeOptions { allowedHostOrigins: string[]; cryptoKey?: string; debug?: boolean; enableNavigationSync?: boolean; } declare function createBridge(appId: string, options: BridgeOptions): { init(): void; listen(handler: Listener): void; /** * Kirim pesan ke host tanpa enkripsi otomatis. * * Gunakan ini jika host dan remote sudah punya `cryptoKey` yang sama (static key), * atau jika payload memang tidak perlu dienkripsi. * Untuk enkripsi otomatis per-pesan, gunakan `emitEncrypted`. * * @param event Nama event, contoh: `"ping"`, `"user:logout"` * @param payload Data yang ingin dikirim * @param txn (opsional) Transaction ID custom. Auto-generate UUID jika tidak diisi. * @returns `txn` yang digunakan — berguna untuk tracking response dari host. * * @example * const txn = signalBridge.emit("ping", { ts: Date.now() }); */ emit(event: string, payload: any, txn?: string): string | undefined; /** * Kirim pesan ke host dengan enkripsi otomatis. * * Setiap pemanggilan menghasilkan key acak baru (CSPRNG), * payload di-encrypt dengan key tersebut * * @param event Nama event, contoh: `"user:login"`, `"cart:update"` * @param payload Data apapun (object, string, dll) yang ingin dikirim * @returns `{ txn, key }` — keduanya bernilai sama (ephemeral key). * Simpan jika perlu referensi untuk matching response dari host. * * @example * const { txn } = bridge.emitEncrypted("order:submit", { id: 123 }); * */ emitEncrypted(event: string, payload: any): { txn: string; key: string; } | undefined; /** * Kumpulan tracker event aktivitas pengguna. * Setiap method mengirim event ke host dengan enkripsi otomatis (ephemeral key via `txn`). * * Event yang tersedia: * - `open_file` — pengguna membuka file * - `open_document` — pengguna membuka dokumen * - `view_document` — pengguna melihat/membaca dokumen * * Event name dikirim dengan prefix `activity:`, contoh: `"activity:open_file"`. * * @returns `{ txn, key }` — ephemeral key yang dipakai untuk enkripsi pesan ini. * * @example * bridge.track.open_file({ name: "laporan.pdf", size: 204800 }) * bridge.track.open_document({ docId: "DOC-001", title: "Invoice" }) * bridge.track.view_document({ docId: "DOC-001", duration: 30 }) */ track: { open_file: (payload?: any) => { txn: string; key: string; } | undefined; open_document: (payload?: any) => { txn: string; key: string; } | undefined; view_document: (payload?: any) => { txn: string; key: string; } | undefined; }; destroy(): void; }; declare function resetBridge(): void; declare function signalBridge(): { init(): void; listen(handler: Listener): void; /** * Kirim pesan ke host tanpa enkripsi otomatis. * * Gunakan ini jika host dan remote sudah punya `cryptoKey` yang sama (static key), * atau jika payload memang tidak perlu dienkripsi. * Untuk enkripsi otomatis per-pesan, gunakan `emitEncrypted`. * * @param event Nama event, contoh: `"ping"`, `"user:logout"` * @param payload Data yang ingin dikirim * @param txn (opsional) Transaction ID custom. Auto-generate UUID jika tidak diisi. * @returns `txn` yang digunakan — berguna untuk tracking response dari host. * * @example * const txn = signalBridge.emit("ping", { ts: Date.now() }); */ emit(event: string, payload: any, txn?: string): string | undefined; /** * Kirim pesan ke host dengan enkripsi otomatis. * * Setiap pemanggilan menghasilkan key acak baru (CSPRNG), * payload di-encrypt dengan key tersebut * * @param event Nama event, contoh: `"user:login"`, `"cart:update"` * @param payload Data apapun (object, string, dll) yang ingin dikirim * @returns `{ txn, key }` — keduanya bernilai sama (ephemeral key). * Simpan jika perlu referensi untuk matching response dari host. * * @example * const { txn } = bridge.emitEncrypted("order:submit", { id: 123 }); * */ emitEncrypted(event: string, payload: any): { txn: string; key: string; } | undefined; /** * Kumpulan tracker event aktivitas pengguna. * Setiap method mengirim event ke host dengan enkripsi otomatis (ephemeral key via `txn`). * * Event yang tersedia: * - `open_file` — pengguna membuka file * - `open_document` — pengguna membuka dokumen * - `view_document` — pengguna melihat/membaca dokumen * * Event name dikirim dengan prefix `activity:`, contoh: `"activity:open_file"`. * * @returns `{ txn, key }` — ephemeral key yang dipakai untuk enkripsi pesan ini. * * @example * bridge.track.open_file({ name: "laporan.pdf", size: 204800 }) * bridge.track.open_document({ docId: "DOC-001", title: "Invoice" }) * bridge.track.view_document({ docId: "DOC-001", duration: 30 }) */ track: { open_file: (payload?: any) => { txn: string; key: string; } | undefined; open_document: (payload?: any) => { txn: string; key: string; } | undefined; view_document: (payload?: any) => { txn: string; key: string; } | undefined; }; destroy(): void; } | undefined; declare function initBridge(appId: string, options: BridgeOptions): { init(): void; listen(handler: Listener): void; /** * Kirim pesan ke host tanpa enkripsi otomatis. * * Gunakan ini jika host dan remote sudah punya `cryptoKey` yang sama (static key), * atau jika payload memang tidak perlu dienkripsi. * Untuk enkripsi otomatis per-pesan, gunakan `emitEncrypted`. * * @param event Nama event, contoh: `"ping"`, `"user:logout"` * @param payload Data yang ingin dikirim * @param txn (opsional) Transaction ID custom. Auto-generate UUID jika tidak diisi. * @returns `txn` yang digunakan — berguna untuk tracking response dari host. * * @example * const txn = signalBridge.emit("ping", { ts: Date.now() }); */ emit(event: string, payload: any, txn?: string): string | undefined; /** * Kirim pesan ke host dengan enkripsi otomatis. * * Setiap pemanggilan menghasilkan key acak baru (CSPRNG), * payload di-encrypt dengan key tersebut * * @param event Nama event, contoh: `"user:login"`, `"cart:update"` * @param payload Data apapun (object, string, dll) yang ingin dikirim * @returns `{ txn, key }` — keduanya bernilai sama (ephemeral key). * Simpan jika perlu referensi untuk matching response dari host. * * @example * const { txn } = bridge.emitEncrypted("order:submit", { id: 123 }); * */ emitEncrypted(event: string, payload: any): { txn: string; key: string; } | undefined; /** * Kumpulan tracker event aktivitas pengguna. * Setiap method mengirim event ke host dengan enkripsi otomatis (ephemeral key via `txn`). * * Event yang tersedia: * - `open_file` — pengguna membuka file * - `open_document` — pengguna membuka dokumen * - `view_document` — pengguna melihat/membaca dokumen * * Event name dikirim dengan prefix `activity:`, contoh: `"activity:open_file"`. * * @returns `{ txn, key }` — ephemeral key yang dipakai untuk enkripsi pesan ini. * * @example * bridge.track.open_file({ name: "laporan.pdf", size: 204800 }) * bridge.track.open_document({ docId: "DOC-001", title: "Invoice" }) * bridge.track.view_document({ docId: "DOC-001", duration: 30 }) */ track: { open_file: (payload?: any) => { txn: string; key: string; } | undefined; open_document: (payload?: any) => { txn: string; key: string; } | undefined; view_document: (payload?: any) => { txn: string; key: string; } | undefined; }; destroy(): void; }; export { ACTIVITY_META, type ActivityCode, type ActivityObjectType, type ActivityPayload, type ActivityStatus, type StartOptions, activity, base64UrlDecode, base64UrlEncode, createBridge, decrypt, encrypt, generateKey, initBridge, resetBridge, signalBridge };