Files
waste-go/web/src/types.ts

107 lines
2.1 KiB
TypeScript
Raw Normal View History

// Types mirroring internal/proto — keep in sync with proto.go
export type PeerID = string // 64-char lowercase hex
export interface PeerInfo {
id: PeerID
alias: string
public_key: string
created_at: string
}
export interface NetworkInfo {
network_id: string
network_name: string
local_peer?: PeerInfo
share_dir?: string
download_dir?: string
}
export interface ChatMessage {
mid?: string
from: PeerID
to?: PeerID
room: string
text: string
ts: number // Unix ms
}
export interface FileEntry {
name: string
size_bytes: number
}
export interface FileOffer {
xid: string
name: string
size: number
sha256: string
}
// ── IPC message types ─────────────────────────────────────────────────────────
export type IpcMsgType =
// commands
| 'send_message'
| 'join_network'
| 'leave_network'
| 'get_state'
| 'send_file'
| 'set_share_dir'
| 'generate_invite'
| 'get_file_list'
| 'export_identity'
| 'import_identity'
// events
| 'state_snapshot'
| 'message_received'
| 'peer_connected'
| 'peer_disconnected'
| 'session_ready'
| 'network_joined'
| 'network_left'
| 'file_list'
| 'file_progress'
| 'file_complete'
| 'incoming_file'
| 'invite_generated'
| 'identity_exported'
| 'identity_imported'
| 'error'
export interface IpcMessage {
type: IpcMsgType
// routing
network_id?: string
// send_message
room?: string
to?: PeerID
body?: string
// join_network
network_name?: string
share_dir?: string
// send_file / set_share_dir
path?: string
peer_id?: PeerID
// identity
passphrase?: string
backup?: string
// events
peer?: PeerInfo
nick?: string
message?: ChatMessage
offer?: FileOffer
transfer_id?: string
bytes_received?: number
total_bytes?: number
master_alias?: string
master_id?: string
local_peer?: PeerInfo
connected_peers?: PeerInfo[]
rooms?: string[]
networks?: NetworkInfo[]
error_message?: string
invite?: string
files?: FileEntry[]
}