Type Definitions
The Moitribe JavaScript SDK provides comprehensive TypeScript definitions for all its APIs, models, and utilities.
Core Types
CallbackFunction
The fundamental callback type used throughout the SDK:
type CallbackFunction<T = any> = (result: T) => void;
Usage:
const myCallback: CallbackFunction<{ success: boolean }> = (result) => {
console.log('Success:', result.success);
};
APIResponse
Generic API response structure:
interface APIResponse<T = any> {
reqQuery?: {
statuscode: number;
msg?: string;
};
profile?: any;
gamespcfcreq?: any;
[key: string]: any;
}
Model Types
Player
Represents a game player:
interface Player {
playerID: string; // Player's unique ID
playerName: string; // Player's display name
iconImageURL: string; // URL to player's icon image
lastPlayerTimestamp: number; // Last active timestamp (10 digit)
title: string; // Player's title/rank
}
Example:
const player: Player = {
playerID: 'player_123',
playerName: 'Alex',
iconImageURL: 'https://example.com/icon.png',
lastPlayerTimestamp: 1703123456,
title: 'Champion'
};
SignedInProfile
Complete profile information for authenticated players:
interface SignedInProfile {
id: string; // Player's unique ID
bannerimgland: string; // Landscape banner image URL
bannerimgport: string; // Portrait banner image URL
name: string; // Player's display name
title: string; // Player's title/rank
profileicon: string; // Profile icon URL
profilehiresimg: string; // High-resolution profile image URL
level: string; // Player's level
friends: string[]; // Array of friend IDs
}
Example:
const profile: SignedInProfile = {
id: 'player_123',
bannerimgland: 'https://example.com/banner-land.jpg',
bannerimgport: 'https://example.com/banner-port.jpg',
name: 'Alex',
title: 'Master Player',
profileicon: 'https://example.com/icon.png',
profilehiresimg: 'https://example.com/hires.jpg',
level: '42',
friends: ['player_456', 'player_789']
};
Room
Real-time multiplayer room information:
interface Room {
id: string; // Room unique ID
name: string; // Room display name
status: RoomStatus; // Current room status
maxPlayers: number; // Maximum number of players
currentPlayers: number; // Current number of players
variant: number; // Room variant/game mode
creatorId: string; // Room creator's ID
creationTime: number; // Room creation timestamp
}
Participant
Room participant information:
interface Participant {
id: string; // Participant unique ID
playerID: string; // Player's ID
playerName: string; // Player's name
status: ParticipantStatus; // Participant status
joinedTime: number; // When participant joined
isReady: boolean; // Ready status
}
Leaderboard Types
LeaderboardMeta
Leaderboard metadata information:
interface LeaderboardMeta {
id: string; // Leaderboard ID
name: string; // Leaderboard display name
description: string; // Leaderboard description
sortOrder: 'asc' | 'desc'; // Score sorting order
scoreType: 'integer' | 'float' | 'time'; // Score type
daily: boolean; // Has daily timespan
weekly: boolean; // Has weekly timespan
allTime: boolean; // Has all-time timespan
}
LeaderboardScoreData
Individual score entry:
interface LeaderboardScoreData {
rank: number; // Score rank
playerID: string; // Player's ID
playerName: string; // Player's name
score: number; // Score value
scoreTag: string; // Additional score metadata
timestamp: number; // When score was achieved
}
Parameter Types
GameInitParams
SDK initialization parameters:
interface GameInitParams {
div?: string; // Parent div ID (deprecated)
playerid?: string; // Player ID if authenticated
channelid?: string; // Channel ID
noui?: boolean; // Disable UI (always true)
tpparams?: ThirdPartyParams; // Third-party parameters
social?: SocialLoginParams; // Social login credentials
loginCallback?: CallbackFunction | UnityCallback;
connectionCallbacks?: ConnectionCallbacks;
isUnity?: boolean; // Unity integration flag
unityGameInstanceName?: string; // Unity game instance
rtmTest?: boolean; // RTM testing mode
}
ThirdPartyParams
Third-party platform integration:
interface ThirdPartyParams {
muniqueid?: string; // Unique ID from third-party platform
mautologin?: boolean; // Auto-login flag
mchanid?: string; // Channel ID
username?: string; // Username
}
SocialLoginParams
Social login configuration:
interface SocialLoginParams {
socialplat: string; // Social platform (google/facebook)
id: string; // Social platform user ID
name?: string; // User's name
email?: string; // User's email
picture?: string; // User's profile picture URL
}
ConnectionCallbacks
Connection state monitoring:
interface ConnectionCallbacks {
onConnectionLost?: (errorCode: number, errorMsg: string) => void;
onConnected?: (isReconnect: boolean, URI: string) => void;
onSuccessConnect?: () => void;
onFailureConnect?: () => void;
}
LeaderboardParams
Leaderboard operation parameters:
interface LeaderboardParams {
leaderboardid?: string; // Leaderboard ID
score?: number; // Score value
collection?: number; // Collection (0=social, 1=global)
timespan?: number; // Timespan (0=all-time, 1=weekly, 2=daily)
maxresults?: number; // Maximum results to return
onlyData?: boolean; // Return only data without metadata
callback?: CallbackFunction;
}
ScoreSubmitParams
Score submission parameters:
interface ScoreSubmitParams {
leaderboardid: string; // Leaderboard ID (required)
score: number; // Score value (required)
scoretag?: string; // Additional score metadata
callback?: CallbackFunction;
}
TournamentParams
Tournament operation parameters:
interface TournamentParams {
tournamentid?: string; // Tournament ID
subtournamentid?: string; // Sub-tournament ID
callback?: CallbackFunction;
}
Real-Time Multiplayer Types
RTMStandardParams
Standard room creation parameters:
interface RTMStandardParams {
maxPlayers: number; // Maximum players (required)
variant: number; // Room variant (required)
minPlayers?: number; // Minimum players (optional)
}
RTMEndlessParams
Endless room creation parameters:
interface RTMEndlessParams {
maxPlayers: number; // Maximum players (required)
variant: number; // Room variant (required)
}
RealTimeMessage
Real-time message structure:
interface RealTimeMessage {
senderId: string; // Message sender ID
data: ArrayBuffer; // Message data
isReliable: boolean; // Message reliability
timestamp: number; // Message timestamp
}
Utility Types
StorageData
Local storage data structure:
interface StorageData {
playerid: string; // Player ID
playerinfo: any; // Player information
}
UnityCallback
Unity integration callback:
interface UnityCallback {
object_name: string; // Unity object name
method_name: string; // Unity method name
}
Enums
RoomStatus
Room status values:
enum RoomStatus {
LOBBY = 0, // In lobby
PLAYING = 1, // Playing
FINISHED = 2 // Finished
}
ParticipantStatus
Participant status values:
enum ParticipantStatus {
INVITED = 0, // Invited
JOINED = 1, // Joined
READY = 2, // Ready
PLAYING = 3, // Playing
DISCONNECTED = 4 // Disconnected
}
LogLevel
Logging levels:
enum LogLevel {
DEBUG = 1, // Debug messages
INFO = 2, // Info messages
ERROR = 3 // Error messages
}
Type Guards
Create type guards for better type safety:
const isSignedInProfile = (obj: any): obj is SignedInProfile => {
return obj &&
typeof obj.id === 'string' &&
typeof obj.name === 'string' &&
Array.isArray(obj.friends);
};
const isPlayer = (obj: any): obj is Player => {
return obj &&
typeof obj.playerID === 'string' &&
typeof obj.playerName === 'string' &&
typeof obj.iconImageURL === 'string';
};
// Usage
const handleProfile = (profile: any) => {
if (isSignedInProfile(profile)) {
console.log('Valid profile:', profile.name);
// TypeScript knows this is SignedInProfile
}
};
Next Steps
- Error Handling - Handle typed errors and status codes
- Callback Patterns - Understanding callback usage
- Storage - Type-safe storage operations
Use TypeScript's type inference and type guards to ensure runtime type safety when working with API responses.