TypeScript Types

Complete type definitions exported from the Talker SDK package.

Importing Types

TypeScript
import type {
  // User types
  Platform,
  CreateUserConfig,
  SetUserConfig,
  UserData,
  UserInfo,

  // Channel types
  ChannelType,
  CreateChannelConfig,
  ChannelParticipant,
  Channel,

  // Event types
  BroadcastStartEvent,
  BroadcastEndEvent,
  ConnectionChangeEvent,
  ConnectionStatus,
  NewChannelEvent,
  RoomNameUpdateEvent,
  ParticipantAddedEvent,
  ParticipantRemovedEvent,
  AdminAddedEvent,
  AdminRemovedEvent,
  NewSdkUserEvent,
  MessageEvent,
  PlaybackProgressEvent,

  // PTT result types
  StartTalkingResult,
  StartTalkingResultCode,

  // Config types
  TalkerAdminConfig,
  TalkerClientConfig,
  LoggerConfig,

  // Credentials
  CredentialsData,
  WebRTCCredentials,
} from '@talker-network/talker-sdk';

User Types

Platform

TypeScript
type Platform = 'WEB' | 'ANDROID' | 'IOS';

CreateUserConfig

TypeScript
interface CreateUserConfig {
  name: string;           // Required: Display name
  platform?: Platform;    // Optional: Platform identifier
  fcmToken?: string;      // Optional: Firebase Cloud Messaging token
}

SetUserConfig

TypeScript
interface SetUserConfig {
  userId: string;         // Required: Existing user ID
  platform?: Platform;    // Optional: Platform identifier
  fcmToken?: string;      // Optional: Firebase Cloud Messaging token
}

UserData

TypeScript
interface UserData {
  userId: string;
  name: string;
  userAuthToken: string;  // Pass to TalkerClient
  aUsername: string;      // Pass to TalkerClient
  aPassword: string;      // Pass to TalkerClient
}

UserInfo

TypeScript
interface UserInfo {
  id: string;
  name: string;
  platform: string;
}

Channel Types

ChannelType

TypeScript
type ChannelType = 'group' | 'direct';

CreateChannelConfig

TypeScript
interface CreateChannelConfig {
  name: string;              // Required: Channel name
  participants: string[];    // Required: Array of user IDs
  workspaceId: string;       // Required: Workspace ID
  type?: ChannelType;        // Optional: 'group' | 'direct'
}

ChannelParticipant

TypeScript
interface ChannelParticipant {
  id: string;
  name: string;
  isAdmin: boolean;
}

Channel

TypeScript
interface Channel {
  channelId: string;
  channelName: string;
  channelType: ChannelType;
  participants: ChannelParticipant[];
}

Event Types

ConnectionStatus

TypeScript
type ConnectionStatus = 'connected' | 'connecting' | 'disconnected';

ConnectionChangeEvent

TypeScript
interface ConnectionChangeEvent {
  connected: boolean;
  status: ConnectionStatus;
}

BroadcastStartEvent

TypeScript
interface BroadcastStartEvent {
  channelId: string;
  senderId: string;
  senderName: string;
  messageId?: string;
  timestamp: number;
}

BroadcastEndEvent

TypeScript
interface BroadcastEndEvent {
  channelId: string;
  senderId: string;
  timestamp: number;
}

PlaybackProgressEvent

TypeScript
interface PlaybackProgressEvent {
  duration: number;  // seconds elapsed
}

NewChannelEvent

TypeScript
interface NewChannelEvent {
  channel: {
    channelId: string;
    channelName: string;
    channelType: ChannelType;
  };
  timestamp: number;
}

RoomNameUpdateEvent

TypeScript
interface RoomNameUpdateEvent {
  channelId: string;
  newName: string;
  timestamp: number;
}

ParticipantAddedEvent

TypeScript
interface ParticipantAddedEvent {
  channelId: string;
  userId: string;
  userName: string;
  timestamp: number;
}

ParticipantRemovedEvent

TypeScript
interface ParticipantRemovedEvent {
  channelId: string;
  userId: string;
  timestamp: number;
}

AdminAddedEvent / AdminRemovedEvent

TypeScript
interface AdminAddedEvent {
  channelId: string;
  userId: string;
  timestamp: number;
}

interface AdminRemovedEvent {
  channelId: string;
  userId: string;
  timestamp: number;
}

NewSdkUserEvent

TypeScript
interface NewSdkUserEvent {
  userId: string;
  userName: string;
  timestamp: number;
}

MessageEvent

TypeScript
interface MessageEvent {
  message: {
    messageId: string;
    channelId: string;
    senderId: string;
    senderName: string;
    type: string;
    text?: string;
    mediaUrl?: string;
    timestamp: string;
  };
}

PTT Types

StartTalkingResultCode

TypeScript
type StartTalkingResultCode =
  | 'success'
  | 'already_talking'
  | 'not_connected'
  | 'no_user_id'
  | 'error';

StartTalkingResult

TypeScript
interface StartTalkingResult {
  success: boolean;
  code: StartTalkingResultCode;
  message: string;
}

Configuration Types

TalkerAdminConfig

TypeScript
interface TalkerAdminConfig {
  sdkKey: string;       // Required: SDK key
  baseUrl?: string;     // Optional: API base URL
}

TalkerClientConfig

TypeScript
interface TalkerClientConfig {
  userAuthToken: string;    // Required: From backend
  userId: string;           // Required: From backend
  a_username: string;       // Required: From backend
  a_password: string;       // Required: From backend
  baseUrl?: string;         // Optional: API base URL
  socketUrl?: string;       // Optional: Socket.IO URL
  loggerConfig?: LoggerConfig;
}

LoggerConfig

TypeScript
interface LoggerConfig {
  level?: LogLevel;                    // DEBUG, INFO, WARN, ERROR, OFF
  enableConsole?: boolean;             // Force console output
  customHandler?: (entry: LogEntry) => void;
}

enum LogLevel {
  TRACE = 0,
  DEBUG = 1,
  INFO = 2,
  WARN = 3,
  ERROR = 4,
  OFF = 5
}

interface LogEntry {
  level: LogLevel;
  component: string;
  event: string;
  data?: any;
  timestamp: Date;
}

Credentials Types

CredentialsData

TypeScript
interface CredentialsData {
  workspaceId: string;
  // Additional credential properties
}

WebRTCCredentials

TypeScript
interface WebRTCCredentials {
  username: string;
  credential: string;
  urls: string[];
  ttl: number;
}