import type { Badge, LeaderboardEntry, Player, PlayerRank, PointBalance, Quest, RedemptionResult, Reward, TrackEventInput } from '../types'; interface ClientConfig { apiKey: string; tenantId: string; baseUrl?: string; fetchImpl?: typeof fetch; timeoutMs?: number; retries?: number; } export declare class PlaybasisClient { private readonly baseUrl; private readonly fetchImpl; private readonly apiKey; private readonly tenantId; private readonly timeoutMs; private readonly retries; constructor(config: ClientConfig); /** * Generate a unique ID for idempotency keys. * Uses crypto.randomUUID when available, falls back to timestamp + random. */ private generateId; private request; createPlayer(input: { displayName: string; email?: string; metadata?: Record; }): Promise; getPlayer(playerId: string): Promise; updatePlayer(playerId: string, updates: Partial<{ displayName: string; metadata: Record; }>): Promise; getBalances(playerId: string): Promise; earnPoints(input: { playerId: string; currency: string; amount: number; reason?: string; }): Promise; redeemPoints(input: { playerId: string; currency: string; amount: number; reason?: string; }): Promise; trackEvent(input: TrackEventInput): Promise<{ eventId: string; }>; getQuests(): Promise; getPlayerQuests(playerId: string): Promise; getQuestProgress(playerId: string, questId: string): Promise; getBadges(): Promise; getPlayerBadges(playerId: string): Promise; getRewards(): Promise; redeemReward(playerId: string, rewardId: string): Promise; getLeaderboard(leaderboardId: string, options?: { limit?: number; cursor?: string; }): Promise<{ entries: LeaderboardEntry[]; total: number; }>; getPlayerRank(leaderboardId: string, playerId: string): Promise; health(): Promise<{ status: string; }>; } export default PlaybasisClient; //# sourceMappingURL=client.d.ts.map