@masterunoco/casinowebengine-api 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +227 -0
- package/dist/index.cjs +902 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +1379 -0
- package/dist/index.d.ts +1379 -0
- package/dist/index.js +892 -0
- package/dist/index.js.map +1 -0
- package/package.json +29 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/errors.ts","../src/http/client.ts","../src/localStorage.ts","../src/apis/geo.ts","../src/auth/jwtAuth.ts","../src/apis/affiliate.ts","../src/apis/content.ts","../src/apis/deposit.ts","../src/apis/games.ts","../src/apis/luckyWheel.ts","../src/apis/media.ts","../src/apis/player.ts","../src/apis/promotions.ts","../src/apis/raffle.ts","../src/apis/region.ts","../src/apis/settings.ts","../src/apis/sport.ts","../src/apis/voucher.ts","../src/apis/withdraw.ts","../src/sdk.ts","../src/types/auth.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["// src/errors.ts\r\n\r\n/** Common shape we expect from the API when an error happens */\r\nexport type ErrorPayload = {\r\n error?: string; // \"Invalid credentials\"\r\n message?: string; // Human-readable details\r\n code?: string | number; // Optional machine code\r\n details?: unknown; // Optional extra data (validation errors, etc.)\r\n [k: string]: unknown;\r\n};\r\n\r\nexport class ApiError extends Error {\r\n /** HTTP status (e.g., 400/401/429/500) or 0 if network failure */\r\n readonly status: number;\r\n /** Requested method+url to aid debugging */\r\n readonly url: string;\r\n readonly method: string;\r\n /** Raw payload (JSON if available; else text) */\r\n readonly payload?: ErrorPayload | string | null | undefined;\r\n /** Useful server-provided correlator (if any) */\r\n readonly requestId?: string | null;\r\n\r\n constructor(params: {\r\n status: number;\r\n url: string;\r\n method: string;\r\n message: string;\r\n payload?: ErrorPayload | string | null;\r\n requestId?: string | null;\r\n }) {\r\n super(params.message);\r\n this.name = 'ApiError';\r\n this.status = params.status;\r\n this.url = params.url;\r\n this.method = params.method;\r\n this.payload = params.payload;\r\n this.requestId = params.requestId ?? null;\r\n }\r\n}\r\n\r\n/** TS type guard */\r\nexport function isApiError(err: unknown): err is ApiError {\r\n return !!err && typeof err === 'object' && (err as any).name === 'ApiError';\r\n}\r\n","// src/http/client.ts\r\nimport { ApiError, type ErrorPayload } from '../errors';\r\n\r\nexport type AuthPolicy = 'required' | 'optional' | 'none';\r\n\r\nexport interface ClientOptions {\r\n baseUrl: string;\r\n auth?: { getToken: () => string | null };\r\n defaultHeaders?: Record<string, string>;\r\n fetchFn?: typeof fetch;\r\n timeoutMs?: number;\r\n}\r\n\r\nexport class HttpClient {\r\n constructor(private opts: ClientOptions) {}\r\n\r\n setAuthProvider(auth?: { getToken: () => string | null }) {\r\n if (auth) {\r\n this.opts.auth = auth;\r\n }\r\n }\r\n\r\n async request<T>(\r\n path: string,\r\n init: RequestInit = {},\r\n authPolicy: AuthPolicy = 'optional'\r\n ): Promise<T> {\r\n const url = joinUrl(this.opts.baseUrl, path);\r\n const method = (init.method || 'GET').toUpperCase();\r\n const controller = new AbortController();\r\n const timer = setTimeout(() => controller.abort(), this.opts.timeoutMs ?? 15000);\r\n\r\n try {\r\n const headers = new Headers(this.opts.defaultHeaders || {});\r\n // attach JWT if needed\r\n if (authPolicy !== 'none') {\r\n const token = this.opts.auth?.getToken?.() ?? null;\r\n if (token) headers.set('Authorization', `JWT ${token}`);\r\n if (authPolicy === 'required' && !token) {\r\n throw new ApiError({\r\n status: 401,\r\n url,\r\n method,\r\n message: 'Authentication required',\r\n payload: { code: 'AUTH_REQUIRED' },\r\n });\r\n }\r\n }\r\n if (init.body && !headers.has('Content-Type')) headers.set('Content-Type', 'application/json');\r\n\r\n // Merge headers last to allow per-request overrides\r\n const res = await (this.opts.fetchFn ?? fetch)(url, {\r\n ...init,\r\n headers: { ...Object.fromEntries(headers.entries()), ...(init.headers || {}) },\r\n signal: controller.signal,\r\n });\r\n\r\n const reqId = res.headers.get('x-request-id') || res.headers.get('x-correlation-id') || null;\r\n const contentType = res.headers.get('content-type') || '';\r\n const isJson = contentType.includes('application/json');\r\n\r\n if (!res.ok) {\r\n const payload = await readBody(res, isJson);\r\n const message =\r\n (isJson && typeof payload === 'object' && payload && ('message' in payload || 'error' in payload))\r\n ? String((payload as ErrorPayload).message ?? (payload as ErrorPayload).error)\r\n : res.statusText || `HTTP ${res.status}`;\r\n\r\n throw new ApiError({\r\n status: res.status,\r\n url,\r\n method,\r\n message,\r\n payload: (isJson ? (payload as ErrorPayload) : payload) ?? null,\r\n requestId: reqId,\r\n });\r\n }\r\n\r\n // success\r\n if (isJson) return (await res.json()) as T;\r\n // no body / text fallback\r\n const text = await res.text();\r\n return (text ? (text as unknown as T) : (null as unknown as T));\r\n } catch (err: any) {\r\n if (err?.name === 'AbortError') {\r\n throw new ApiError({\r\n status: 408,\r\n url,\r\n method,\r\n message: 'Request timeout',\r\n payload: { code: 'TIMEOUT' },\r\n });\r\n }\r\n if (err instanceof ApiError) throw err;\r\n\r\n // network error / CORS / DNS, etc.\r\n throw new ApiError({\r\n status: 0,\r\n url,\r\n method,\r\n message: err?.message || 'Network error',\r\n payload: { code: 'NETWORK_ERROR' },\r\n });\r\n } finally {\r\n clearTimeout(timer);\r\n }\r\n }\r\n\r\n get<T>(path: string, authPolicy?: AuthPolicy) {\r\n return this.request<T>(path, { method: 'GET' }, authPolicy);\r\n }\r\n post<T>(path: string, body?: unknown, authPolicy?: AuthPolicy) {\r\n return this.request<T>(\r\n path,\r\n { method: 'POST', body: body !== undefined ? JSON.stringify(body) : null },\r\n authPolicy\r\n );\r\n }\r\n patch<T>(path: string, body?: unknown, authPolicy?: AuthPolicy) {\r\n return this.request<T>(\r\n path,\r\n { method: 'PATCH', body: body !== undefined ? JSON.stringify(body) : null },\r\n authPolicy\r\n );\r\n }\r\n delete<T>(path: string, authPolicy?: AuthPolicy) {\r\n return this.request<T>(path, { method: 'DELETE' }, authPolicy);\r\n }\r\n}\r\n\r\nfunction joinUrl(base: string, path: string) {\r\n return `${base.replace(/\\/+$/, '')}${path.startsWith('/') ? '' : '/'}${path}`;\r\n}\r\n\r\nasync function readBody(res: Response, isJson: boolean): Promise<ErrorPayload | string | null> {\r\n try {\r\n return isJson ? ((await res.json()) as ErrorPayload) : await res.text();\r\n } catch {\r\n return null;\r\n }\r\n}\r\n","import type {User} from \"./types/auth\";\r\n\r\nexport class LocalStorage {\r\n protected tokenKey = 'gs.token';\r\n protected userDataKey = 'gs.userData';\r\n protected avatarKey = 'gs.avatar';\r\n protected socketTokenKey = 'gs.socketToken';\r\n protected pinKey = 'gs.pin';\r\n protected pinTokenKey = 'gs.pinToken';\r\n protected geoLocalStorageKey = 'gs.visitorLocation';\r\n\r\n private isLocalStorageAvailable(): boolean {\r\n return typeof localStorage !== 'undefined';\r\n }\r\n\r\n setToken(token: string) {\r\n if (this.isLocalStorageAvailable()) {\r\n localStorage.setItem(this.tokenKey, token);\r\n }\r\n }\r\n\r\n getToken(): string | null {\r\n if (this.isLocalStorageAvailable()) {\r\n return localStorage.getItem(this.tokenKey);\r\n }\r\n return null;\r\n }\r\n\r\n setUser(data: User) {\r\n if (this.isLocalStorageAvailable()) {\r\n localStorage.setItem(this.userDataKey, JSON.stringify(data));\r\n }\r\n }\r\n\r\n getUser(): User | null {\r\n if (this.isLocalStorageAvailable()) {\r\n const data = localStorage.getItem(this.userDataKey);\r\n if (data) {\r\n try {\r\n return JSON.parse(data) as User;\r\n } catch {\r\n return null;\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n setAvatar(avatarUrl: string) {\r\n if (this.isLocalStorageAvailable()) {\r\n localStorage.setItem(this.avatarKey, avatarUrl);\r\n }\r\n }\r\n\r\n getAvatar(): string | null {\r\n if (this.isLocalStorageAvailable()) {\r\n return localStorage.getItem(this.avatarKey);\r\n }\r\n return null;\r\n }\r\n\r\n setSocketToken(token: string) {\r\n if (this.isLocalStorageAvailable()) {\r\n localStorage.setItem(this.socketTokenKey, token);\r\n }\r\n }\r\n\r\n getSocketToken(): string | null {\r\n if (this.isLocalStorageAvailable()) {\r\n return localStorage.getItem(this.socketTokenKey);\r\n }\r\n return null;\r\n }\r\n\r\n setPin(pin: string) {\r\n if (this.isLocalStorageAvailable()) {\r\n localStorage.setItem(this.pinKey, pin);\r\n }\r\n }\r\n\r\n getPin(): string | null {\r\n if (this.isLocalStorageAvailable()) {\r\n return localStorage.getItem(this.pinKey);\r\n }\r\n return null;\r\n }\r\n\r\n setPinToken(token: string) {\r\n if (this.isLocalStorageAvailable()) {\r\n localStorage.setItem(this.pinTokenKey, token);\r\n }\r\n }\r\n\r\n getPinToken(): string | null {\r\n if (this.isLocalStorageAvailable()) {\r\n return localStorage.getItem(this.pinTokenKey);\r\n }\r\n return null;\r\n }\r\n\r\n setGeolocation(data: any) {\r\n if (this.isLocalStorageAvailable()) {\r\n data.timestamp = Date.now();\r\n localStorage.setItem(this.geoLocalStorageKey, JSON.stringify(data));\r\n }\r\n }\r\n\r\n getGeolocation(): any | null {\r\n if (this.isLocalStorageAvailable()) {\r\n const data = localStorage.getItem(this.geoLocalStorageKey);\r\n if (data) {\r\n try {\r\n const parsedData = JSON.parse(data);\r\n if (parsedData.timestamp) {\r\n const now = Date.now();\r\n const age = now - parsedData.timestamp;\r\n const cacheTime = 10 * 60 * 1000; // 10 minutes\r\n if (age > cacheTime) {\r\n return null;\r\n }\r\n }\r\n return parsedData;\r\n } catch {\r\n return null;\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n clear() {\r\n if (this.isLocalStorageAvailable()) {\r\n localStorage.removeItem(this.tokenKey);\r\n localStorage.removeItem(this.userDataKey);\r\n localStorage.removeItem(this.avatarKey);\r\n localStorage.removeItem(this.socketTokenKey);\r\n localStorage.removeItem(this.pinKey);\r\n localStorage.removeItem(this.pinTokenKey);\r\n localStorage.removeItem(this.geoLocalStorageKey);\r\n }\r\n }\r\n}\r\n\r\nexport const storage = new LocalStorage();\r\n","import { storage } from '../localStorage';\r\nimport type { HttpClient } from '../http/client';\r\nimport type { FreeIpApiGeo, FailObj } from '../types/geo';\r\nexport class GeolocationAPI {\r\n constructor(private http: HttpClient) {}\r\n private failObj = {\r\n ip: \"0.0.0.0\",\r\n countryCode: \"undefined\",\r\n status: \"fail\",\r\n message: \"invalid query\",\r\n query: \"undefined\"\r\n };\r\n async getGeolocationFromAPI(): Promise<FreeIpApiGeo | undefined> {\r\n try {\r\n const geo = await this.http.get<FreeIpApiGeo>('/geo/location', 'none');\r\n if (geo.ipAddress && geo.ipVersion) {\r\n delete geo.ipVersion;\r\n delete geo.ipAddress;\r\n storage.setGeolocation(geo);\r\n return geo;\r\n }\r\n } catch {\r\n return undefined;\r\n }\r\n }\r\n async getGeolocation(): Promise<FreeIpApiGeo | FailObj> {\r\n const geoData = storage.getGeolocation();\r\n if (geoData) {\r\n try {\r\n const geo = JSON.parse(geoData);\r\n if (geo && geo.ipVersion) {\r\n delete geo.ipVersion;\r\n delete geo.ipAddress;\r\n return geo;\r\n } else {\r\n return this.failObj;\r\n }\r\n } catch {\r\n return this.failObj;\r\n }\r\n } else {\r\n return await this.getGeolocationFromAPI() || this.failObj;\r\n }\r\n }\r\n\r\n async getCountryCode(): Promise<string | false> {\r\n const geo = await this.getGeolocation();\r\n if (geo && geo.countryCode && geo.countryCode === 'undefined') {\r\n return geo.countryCode;\r\n } else {\r\n return false;\r\n }\r\n }\r\n}\r\n","// src/auth/jwtAuth.ts\r\nimport type {\r\n AuthResponse,\r\n pinCodeResponse,\r\n pinCodeCheckResponse,\r\n CreatePlayerInput,\r\n CreatePlayerV2Input,\r\n CreatePlayerV2Step2Input,\r\n GoogleLoginRequest,\r\n SignupResponse, SignupV2ValidateResponse,\r\n RegisterResponse\r\n} from '../types/auth';\r\nimport type {AuthPolicy, HttpClient} from '../http/client';\r\nimport {GeolocationAPI} from \"../apis/geo\";\r\nimport {storage} from '../localStorage';\r\n\r\nexport class JwtAuth {\r\n private token: string | null = null;\r\n private user: AuthResponse['user'] | null = null;\r\n\r\n constructor(\r\n private client: HttpClient,\r\n ) {\r\n this.token = storage.getToken();\r\n this.user = storage.getUser();\r\n }\r\n\r\n setToken(token: string | null) {\r\n if (token) {\r\n storage.setToken(token);\r\n this.token = token;\r\n } else {\r\n storage.clear();\r\n }\r\n }\r\n setUser(user: AuthResponse['user'], token: string) {\r\n storage.setUser(user);\r\n storage.setToken(token);\r\n this.user = user;\r\n this.token = token;\r\n }\r\n\r\n async login(username: string, password: string, recaptchaToken: string): Promise<AuthResponse> {\r\n const authPolicy: AuthPolicy = 'none';\r\n const payload = { username, password, recaptchaToken };\r\n const res = await this.client.post<AuthResponse>('/auth/login', payload, authPolicy);\r\n\r\n this.setUser(res.user, res.token);\r\n return res;\r\n }\r\n\r\n async GoogleLogin(data: GoogleLoginRequest): Promise<AuthResponse> {\r\n const geo = new GeolocationAPI(this.client);\r\n const geoData = await geo.getGeolocation();\r\n if (geoData) {\r\n data.geo = geoData;\r\n }\r\n const authPolicy: AuthPolicy = 'none';\r\n const res = await this.client.post<AuthResponse>('/auth/google/signin', data, authPolicy);\r\n\r\n this.setUser(res.user, res.token);\r\n return res;\r\n }\r\n\r\n async forgetPassword(email: string): Promise<void> {\r\n const authPolicy: AuthPolicy = 'none';\r\n await this.client.post<void>('/auth/forgot-password', { email }, authPolicy);\r\n }\r\n\r\n async register(data: CreatePlayerInput, param?: string | undefined): Promise<RegisterResponse | SignupResponse> {\r\n const geo = new GeolocationAPI(this.client);\r\n const geoData = await geo.getGeolocation();\r\n if (geoData) {\r\n data.geo = geoData;\r\n }\r\n let apiRouter = '/auth/signup';\r\n if (param) {\r\n apiRouter += `?ref=${param}`\r\n }\r\n const authPolicy: AuthPolicy = 'none';\r\n const registerData = await this.client.post<SignupResponse>(apiRouter, data, authPolicy);\r\n if (registerData.player) {\r\n const loginData = await this.login(data.username, data.password, data.recaptchaToken);\r\n return {\r\n ...registerData,\r\n ...loginData,\r\n };\r\n } else {\r\n return {\r\n ...registerData,\r\n }\r\n }\r\n }\r\n\r\n async registerV2(data: CreatePlayerV2Input, param?: string | undefined): Promise<RegisterResponse | SignupResponse> {\r\n const geo = new GeolocationAPI(this.client);\r\n const geoData = await geo.getGeolocation();\r\n if (geoData) {\r\n data.geo = geoData;\r\n }\r\n let apiRouter = '/auth/signupv2';\r\n if (param) {\r\n apiRouter += `?ref=${param}`\r\n }\r\n const authPolicy: AuthPolicy = 'none';\r\n const registerData = await this.client.post<SignupResponse>(apiRouter, data, authPolicy);\r\n if (registerData.player) {\r\n const loginData = await this.login(data.username, data.password, data.recaptchaToken);\r\n return {\r\n ...registerData,\r\n ...loginData,\r\n };\r\n } else {\r\n return {\r\n ...registerData\r\n }\r\n }\r\n }\r\n\r\n async registerV2Validate(data: CreatePlayerV2Step2Input ): Promise<SignupV2ValidateResponse> {\r\n const authPolicy: AuthPolicy = 'none';\r\n return await this.client.post<SignupV2ValidateResponse>('/auth/signupv2/validate-username-email', data, authPolicy);\r\n }\r\n\r\n clear() {\r\n this.setToken(null);\r\n this.user = null;\r\n }\r\n\r\n async logout(): Promise<void> {\r\n const authPolicy: AuthPolicy = 'required';\r\n await this.client.post<void>('/auth/logout', {}, authPolicy);\r\n this.clear();\r\n }\r\n async pinCode(pin: string): Promise<pinCodeResponse> {\r\n const authPolicy: AuthPolicy = 'none';\r\n return await this.client.post<pinCodeResponse>('/auth/website', { pin }, authPolicy);\r\n }\r\n async pinCheck(token: string): Promise<pinCodeCheckResponse> {\r\n const authPolicy: AuthPolicy = 'none';\r\n return await this.client.post<pinCodeCheckResponse>('/auth/website/check', { token }, authPolicy);\r\n }\r\n\r\n getToken(): string | null {\r\n if (!this.token) {\r\n this.token = storage.getToken();\r\n }\r\n return this.token;\r\n }\r\n\r\n getUser(): AuthResponse['user'] | null {\r\n if (!this.user) {\r\n this.user = storage.getUser();\r\n }\r\n return this.user;\r\n }\r\n isAuthenticated(): boolean {\r\n const Token = this.token || this.getToken();\r\n return !!Token;\r\n }\r\n}\r\n","// src/apis/affiliate.ts\r\nimport {HttpClient} from '../http/client';\r\nimport * as AffiliateTypes from '../types/affiliate';\r\nimport {GetPrizes, GetPrizesRequest, GetPrizesResult, Rewards, Summery} from \"../types/affiliate\";\r\n\r\nexport class AffiliateAPI {\r\n constructor(private http: HttpClient) {}\r\n\r\n async generateReferralCode(description: string): Promise<AffiliateTypes.GenerateReferralCode> {\r\n return await this.http.post<AffiliateTypes.GenerateReferralCode>(`/referral/generate`, {description});\r\n }\r\n\r\n async getReferralCode(): Promise<AffiliateTypes.GetReferralCode> {\r\n return await this.http.get<AffiliateTypes.GetReferralCode>(`/referral/get`);\r\n }\r\n\r\n async getReferralCount(): Promise<number> {\r\n return await this.http.get<number>(`/referral/max-codes`);\r\n }\r\n\r\n async getReferralStatus(): Promise<AffiliateTypes.ReferralStatus> {\r\n return await this.http.get<AffiliateTypes.ReferralStatus>(`/referral/status`);\r\n }\r\n\r\n async getReferralFriends(page: number, limit: number): Promise<AffiliateTypes.ReferralFriends> {\r\n return await this.http.get<AffiliateTypes.ReferralFriends>(`/referral/friends?page=${page}&limit=${limit}`);\r\n }\r\n\r\n async getBannerImage(lang: string, key: string): Promise<AffiliateTypes.BannerImage> {\r\n return await this.http.get<AffiliateTypes.BannerImage>(`/website-settings?language=${lang}&key=${key}`);\r\n }\r\n\r\n async getRewards(): Promise<AffiliateTypes.Rewards> {\r\n return await this.http.get<AffiliateTypes.Rewards>(`/referral/rewards`);\r\n }\r\n\r\n async getAvailablePrizes(): Promise<AffiliateTypes.AvailablePrizes> {\r\n return await this.http.get<AffiliateTypes.AvailablePrizes>(`/referral/available-prizes`);\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n async getPrizes(params: AffiliateTypes.GetPrizesRequest): Promise<AffiliateTypes.GetPrizes> {\r\n const queryParams = new URLSearchParams();\r\n for (const key in params) {\r\n if (params[key as keyof GetPrizesRequest] !== undefined) {\r\n queryParams.append(key, String(params[key as keyof GetPrizesRequest]));\r\n }\r\n }\r\n const query = queryParams.toString();\r\n return await this.http.get<AffiliateTypes.GetPrizes>(`/referral/prizes?${query}`);\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n async convert(data: AffiliateTypes.ConvertRequest): Promise<{message: string}> {\r\n return await this.http.post<{message: string}>(`/referral/convert`, data);\r\n }\r\n\r\n async getSummary(): Promise<AffiliateTypes.Summery> {\r\n return await this.http.get(`/referral/summary`);\r\n }\r\n}\r\n","// src/apis/content.ts (public: no auth)\r\nimport { HttpClient } from '../http/client';\r\n\r\nexport interface ContentPage {\r\n id: number; slug: string; title: string; body: string;\r\n createdAt: string; updatedAt: string;\r\n}\r\n\r\nexport class ContentAPI {\r\n constructor(private http: HttpClient) {}\r\n list() { return this.http.get<ContentPage[]>('/content-pages', 'none'); }\r\n get(slug: string) { return this.http.get<ContentPage>(`/content-pages/${slug}`, 'none'); }\r\n}\r\n","// src/apis/deposit.ts\r\nimport {HttpClient} from '../http/client';\r\nimport { ChargeData, PaymentMethodSchema, GetDeposits } from '../types/deposit';\r\nexport class DepositAPI {\r\n constructor(private http: HttpClient) {\r\n }\r\n charge(data: ChargeData) {\r\n return this.http.post< string >('/deposit/charge', data, 'required');\r\n }\r\n\r\n getPaymentMethods():Promise<PaymentMethodSchema[]>{\r\n return this.http.get<PaymentMethodSchema[]>('/payment-methods', 'required');\r\n }\r\n\r\n getDeposits(status = 'pending', page = 1, limit = 20): Promise<GetDeposits> {\r\n return this.http.get<GetDeposits>(`/payment/${status}?page=${page}&limit=${limit}`, 'required');\r\n }\r\n}\r\n","import { HttpClient } from '../http/client';\r\nimport {\r\n GameCategoriesResponse,\r\n SearchRequest,\r\n GameSearchResponse, GamesSearchResponse, SetFavoriteGamesResponse,\r\n FavoriteGamesResponse, recentBigWinsResponse, GlobalFavorites, Providers,\r\n TopRated, Lobby\r\n} from '../types/game';\r\nimport {GeolocationAPI} from \"./geo\";\r\n\r\nexport interface GameLinkResponse { message: string; gameLink: string; isFavorite?: boolean; }\r\n\r\nexport class GamesAPI {\r\n constructor(private http: HttpClient) {\r\n }\r\n\r\n /** Public: search games */\r\n search(request: SearchRequest): Promise<GamesSearchResponse> {\r\n return this.http.post<GamesSearchResponse>('/games/search', request, 'none');\r\n }\r\n\r\n getCategories(): Promise<GameCategoriesResponse> {\r\n return this.http.get<GameCategoriesResponse>('/games/categories', 'none');\r\n }\r\n\r\n /** Requires auth: player link */\r\n getLink(gameId: string) {\r\n return this.http.post<GameLinkResponse>(`/games/getLink`, {gameId}, 'required');\r\n }\r\n\r\n /** Public: demo link */\r\n getDemoLink(gameId: number) {\r\n return this.http.post<GameLinkResponse>('/games/getDemoLink', {gameId}, 'none');\r\n }\r\n\r\n setFavorite(gameId: number, isFavorite: boolean): Promise<SetFavoriteGamesResponse> {\r\n return this.http.post<SetFavoriteGamesResponse>('/games/favorites', {gameId, isFavorite}, 'required');\r\n }\r\n getFavorite(): Promise<FavoriteGamesResponse[]> {\r\n return this.http.get<FavoriteGamesResponse[]>('/games/player-favorites', 'required');\r\n }\r\n getRecentBigWins(category: string): Promise<recentBigWinsResponse[]> {\r\n return this.http.get<recentBigWinsResponse[]>(`/games/recent-big-wins?category=${category}`, 'none');\r\n }\r\n getRecent(page=1, limit=10): Promise<GamesSearchResponse> {\r\n return this.http.get<GamesSearchResponse>(`/games/recent?page=${page}&limit=${limit}`);\r\n }\r\n\r\n getGlobalFavorites(): Promise<GlobalFavorites> {\r\n return this.http.get<GlobalFavorites>('/games/global-favorites', 'none');\r\n }\r\n getTopRated():Promise<{ topRated :TopRated[] }>{\r\n const geo = new GeolocationAPI(this.http);\r\n const countryCode = geo.getCountryCode();\r\n let url = '/games/top-rated';\r\n if (countryCode) {\r\n url += `?region=${countryCode}`;\r\n }\r\n return this.http.get<{ topRated :TopRated[] }>(url, 'none');\r\n }\r\n getProviders(): Promise<Providers> {\r\n return this.http.get<Providers>('/games/providers', 'none');\r\n }\r\n getLobby(): Promise<Lobby[]> {\r\n const geo = new GeolocationAPI(this.http);\r\n const countryCode = geo.getCountryCode();\r\n let url = '/games/lobby';\r\n if (countryCode) {\r\n url += `?region=${countryCode}`;\r\n }\r\n return this.http.get<Lobby[]>(url, 'none');\r\n }\r\n\r\n}\r\n","// src/apis/lucky.ts\r\nimport { HttpClient } from '../http/client';\r\nimport * as LuckyWheelTypes from '../types/luckyWheel';\r\nexport class LuckyWheelAPI {\r\n constructor(private http: HttpClient) {}\r\n\r\n getStatistics(): Promise<LuckyWheelTypes.LuckyWheelStatistics> {\r\n return this.http.get<LuckyWheelTypes.LuckyWheelStatistics>('/lucky-wheel/statistics', 'required');\r\n }\r\n getWinners():Promise<LuckyWheelTypes.LuckyWheelWinners[]> {\r\n return this.http.get<LuckyWheelTypes.LuckyWheelWinners[]>('/lucky-wheel/get-winners?offset=1&limit=100', 'none');\r\n }\r\n getPrizes():Promise<LuckyWheelTypes.LuckyWheelPrize[]>{\r\n return this.http.get<LuckyWheelTypes.LuckyWheelPrize[]>('/lucky-wheel/get-prizes');\r\n }\r\n getStatus():Promise<LuckyWheelTypes.LuckyWheelStatus>{\r\n return this.http.get<LuckyWheelTypes.LuckyWheelStatus>('/lucky-wheel/status');\r\n }\r\n play(data: { luckyWheelId: number }):Promise<LuckyWheelTypes.LuckyWheelSpinPlay | LuckyWheelTypes.LuckyWheelSpinPlayNA>{\r\n return this.http.post<LuckyWheelTypes.LuckyWheelSpinPlay | LuckyWheelTypes.LuckyWheelSpinPlayNA>('/lucky-wheel/play', data);\r\n }\r\n collect(data: { collectHash: string }):Promise<LuckyWheelTypes.LuckyWheelCollect>{\r\n return this.http.post<LuckyWheelTypes.LuckyWheelCollect>('/lucky-wheel/collect', data);\r\n }\r\n\r\n}\r\n","// src/apis/media.ts\r\nimport { HttpClient } from '../http/client';\r\nimport * as MediaTypes from '../types/media';\r\nexport class MediaAPI {\r\n constructor(private http: HttpClient) {}\r\n upload(file: File): Promise<MediaTypes.uploadResponse> {\r\n const formData = new FormData();\r\n formData.append('file', file);\r\n formData.append('upload_preset', 'demo');\r\n return this.http.post<MediaTypes.uploadResponse>('/media/upload', formData, 'none');\r\n }\r\n getFileUrl(filePath: string): Promise<string> {\r\n return this.http.get<string>(`/media/get-file-url?filePath=${filePath}`)\r\n }\r\n\r\n}\r\n","// src/apis/player.ts\r\nimport { HttpClient } from '../http/client';\r\nimport * as PlayerTypes from '../types/player';\r\nimport {BalanceHistory, GameHistory} from \"../types/player\";\r\n\r\nexport class PlayerAPI {\r\n constructor(private http: HttpClient) {\r\n }\r\n changePassword(data: PlayerTypes.ChangePasswordData): Promise<{ message: string }> {\r\n return this.http.post<{ message: string}>('/player/change-password', data);\r\n }\r\n getBalanceHistory(data: PlayerTypes.GetBalanceHistoryQuery): Promise<PlayerTypes.BalanceHistory[]> {\r\n const queryParams = new URLSearchParams();\r\n if (data.limit !== undefined) queryParams.append('limit', data.limit.toString());\r\n if (data.startDate !== undefined) queryParams.append('startDate', data.startDate);\r\n if (data.endDate !== undefined) queryParams.append('endDate', data.endDate);\r\n const queryString = queryParams.toString() ? `?${queryParams.toString()}` : '';\r\n return this.http.get<PlayerTypes.BalanceHistory[]>(`/player/balance-history${queryString}`);\r\n }\r\n getGameHistory(data: PlayerTypes.GetBalanceHistoryQuery): Promise<GameHistory[]> {\r\n const queryParams = new URLSearchParams();\r\n if (data.limit !== undefined) queryParams.append('limit', data.limit.toString());\r\n if (data.startDate !== undefined) queryParams.append('startDate', data.startDate);\r\n if (data.endDate !== undefined) queryParams.append('endDate', data.endDate);\r\n const queryString = queryParams.toString() ? `?${queryParams.toString()}` : '';\r\n return this.http.get<GameHistory[]>(`/player/game-transaction${queryString}`);\r\n }\r\n verifyEmail(data: PlayerTypes.EmailVerifyProps): Promise<{ message: string }> {\r\n return this.http.post<{ message: string}>('/verify/email/send', data);\r\n }\r\n verifyEmailCode(data: { verificationCode: string }): Promise<{ message: string }> {\r\n return this.http.post<{ message: string}>('/verify/email/confirm', data);\r\n }\r\n verifyPhone(data: PlayerTypes.PhoneVerifyProps): Promise<{ message: string }> {\r\n return this.http.post<{ message: string}>('/verify/phone/send', data);\r\n }\r\n verifyPhoneCode(data: { verificationCode: string }): Promise<{ message: string }> {\r\n return this.http.post<{ message: string}>('/verify/phone/confirm', data);\r\n }\r\n getVerificationStatus(): Promise<PlayerTypes.VerificationStatus[]> {\r\n return this.http.get<PlayerTypes.VerificationStatus[]>('/player/verification-status');\r\n }\r\n getAvatars(): Promise<PlayerTypes.Avatar[]> {\r\n return this.http.get<PlayerTypes.Avatar[]>('/avatars/get');\r\n }\r\n changeAvatar(data: FormData): Promise<{ message: string, avatar: PlayerTypes.Avatar }> {\r\n return this.http.post<{ message: string, avatar: PlayerTypes.Avatar }>('/avatars/set', data);\r\n }\r\n getPlayerKycDocuments(): Promise<PlayerTypes.KycDocument[]> {\r\n return this.http.get<PlayerTypes.KycDocument[]>('/player/kyc-documents');\r\n }\r\n createPlayerKycDocument(data: FormData): Promise<PlayerTypes.KycDocument> {\r\n return this.http.post<PlayerTypes.KycDocument>('/player/kyc-documents', data);\r\n }\r\n createPlayerTags(data: {key: string, value: string}[]): Promise<{ message: string }> {\r\n const requestData = {\r\n tags: data\r\n };\r\n return this.http.post<{ message: string}>('/player/tags', requestData);\r\n }\r\n updateProfile(data: PlayerTypes.UpdateProfileData): Promise<PlayerTypes.ProfileData> {\r\n return this.http.patch<PlayerTypes.ProfileData>('/player/profile', data);\r\n }\r\n\r\n}\r\n","// src/apis/promotions.ts\r\nimport { HttpClient } from '../http/client';\r\nimport * as PromotionsTypes from '../types/promotions';\r\nimport {Promotion} from \"../types/promotions\";\r\nexport class PromotionsAPI {\r\n constructor(private http: HttpClient) {}\r\n getActive(): Promise<PromotionsTypes.Promotion[]> {\r\n return this.http.get<PromotionsTypes.Promotion[]>('/promotions/active');\r\n }\r\n getPublic(): Promise<PromotionsTypes.Promotion[]> {\r\n return this.http.get<PromotionsTypes.Promotion[]>('/promotions/public', 'none');\r\n }\r\n getPromotion(id:string): Promise<PromotionsTypes.Promotion> {\r\n return this.http.get<PromotionsTypes.Promotion>(`/promotions/${id}`, 'none');\r\n }\r\n getProgress(): Promise<PromotionsTypes.Progress> {\r\n return this.http.get<PromotionsTypes.Progress>('/promotions/progress');\r\n }\r\n activateBonus(id:string): Promise<{message:string; error?:string}> {\r\n return this.http.post<{message:string; error?:string}>(`/bonus/activate/${id}`, { });\r\n }\r\n cancelBonus(id:string): Promise<{message:string; error?:string}> {\r\n return this.http.delete<{message:string; error?:string}>(`/bonus/cancel/${id}`);\r\n }\r\n}\r\n","// src/apis/raffle.ts\r\nimport { HttpClient } from '../http/client';\r\nimport * as RaffleTypes from '../types/raffle';\r\n\r\nexport class RaffleAPI {\r\n constructor(private http: HttpClient) {\r\n }\r\n\r\n getTickets(): Promise<RaffleTypes.GetRaffleTicketsResponse[]> {\r\n return this.http.get<RaffleTypes.GetRaffleTicketsResponse[]>('/raffle/tickets');\r\n }\r\n\r\n getPrizes(): Promise<RaffleTypes.RafflePrize[]> {\r\n return this.http.get<RaffleTypes.RafflePrize[]>('/raffle/prizes');\r\n }\r\n\r\n getHistory(): Promise<RaffleTypes.RafflePrizesHistoryResponse> {\r\n return this.http.get<RaffleTypes.RafflePrizesHistoryResponse>('/raffle/history');\r\n }\r\n\r\n getActiveRaffle(): Promise<RaffleTypes.ActiveRaffle[] | null> {\r\n return this.http.get<RaffleTypes.ActiveRaffle[] | null>('/raffle/current');\r\n }\r\n\r\n purchaseTickets(data: { raffleId: number; ticketAmount: number }): Promise<RaffleTypes.PurchaseTicket> {\r\n return this.http.post<RaffleTypes.PurchaseTicket>('/raffle/purchase', data);\r\n }\r\n}\r\n","// src/apis/region.ts\r\nimport { HttpClient } from '../http/client';\r\nimport * as RegionTypes from '../types/region';\r\n\r\nexport class RegionAPI {\r\n constructor(private http: HttpClient) {\r\n }\r\n\r\n getDepositRegions(): Promise<RegionTypes.Region[]> {\r\n return this.http.get<RegionTypes.Region[]>('/regions/deposit');\r\n }\r\n\r\n getWithdrawRegions(): Promise<RegionTypes.Region[]> {\r\n return this.http.get<RegionTypes.Region[]>('/regions/withdraw');\r\n }\r\n\r\n getRegions(): Promise<RegionTypes.Region[]> {\r\n return this.http.get<RegionTypes.Region[]>('/regions', 'none');\r\n }\r\n\r\n getBlockedCountries(): Promise<RegionTypes.BlockedCountry[]> {\r\n return this.http.get<RegionTypes.BlockedCountry[]>('/regions/blocked-countries', 'none');\r\n }\r\n}\r\n","// src/apis/settings.ts\r\nimport { HttpClient } from '../http/client';\r\nimport * as SettingsTypes from '../types/settings';\r\n\r\nexport class SettingsAPI {\r\n constructor(private http: HttpClient) {\r\n }\r\n\r\n getSettings(): Promise<SettingsTypes.Settings> {\r\n return this.http.get<SettingsTypes.Settings>('/api/v1/settings', 'none');\r\n }\r\n getBanner(lang: string): Promise<SettingsTypes.Banner> {\r\n return this.http.get<SettingsTypes.Banner>(`/banners/get/${lang}`, 'none');\r\n }\r\n getContent(): Promise<SettingsTypes.Content[]> {\r\n return this.http.get<SettingsTypes.Content[]>('/content-pages', 'none');\r\n }\r\n getContentItem(type:string, lang:string): Promise<SettingsTypes.Content> {\r\n return this.http.get<SettingsTypes.Content>(`/content-pages/${type}/${lang}`, 'none');\r\n }\r\n getAvatar(): Promise<SettingsTypes.Avatar[]> {\r\n return this.http.get<SettingsTypes.Avatar[]>('/avatars/get', 'none');\r\n }\r\n getPreferences(): Promise<SettingsTypes.Preferences> {\r\n return this.http.get<SettingsTypes.Preferences>('/player/preferences');\r\n }\r\n updatePreferences(data: Partial<SettingsTypes.Preferences>): Promise<SettingsTypes.Preferences> {\r\n return this.http.patch<SettingsTypes.Preferences>('/player/preferences', data);\r\n }\r\n getCurrencies(): Promise<SettingsTypes.Currency[]> {\r\n return this.http.get<SettingsTypes.Currency[]>('/currencies/get', 'none');\r\n }\r\n getWebSetting(lang: string): Promise<SettingsTypes.WebSetting[]> {\r\n return this.http.get<SettingsTypes.WebSetting[]>(`/website-settings?language=${lang}&key[]=footerCasinoItems&key[]=footerSportsItems&key[]=footerSocialMedia&key[]=footerPromoItems&key[]=footerSupportLegalItems&key[]=footerAboutUsItems&key[]=footerAppLinks`, 'none');\r\n }\r\n getWebSettingProviders(lang: string): Promise<SettingsTypes.WebSetting[]> {\r\n return this.http.get<SettingsTypes.WebSetting[]>(`/website-settings?language=${lang}&key[]=sectionProviders`, 'none');\r\n }\r\n getWebSettingPin(): Promise<SettingsTypes.WebSetting[]> {\r\n return this.http.get<SettingsTypes.WebSetting[]>(`/website-settings?key[]=isCodeProtected`, 'none');\r\n }\r\n getWebSettingReferralRules(lang: string): Promise<SettingsTypes.WebSetting[]> {\r\n return this.http.get<SettingsTypes.WebSetting[]>(`/website-settings?language=${lang}&key[]=referral_rules`, 'none');\r\n }\r\n getWebSettingReferralFaq(lang: string): Promise<SettingsTypes.WebSetting[]> {\r\n return this.http.get<SettingsTypes.WebSetting[]>(`/website-settings?language=${lang}&key[]=referral_faq`, 'none');\r\n }\r\n getWebSettingReferralLearnMore(lang: string): Promise<SettingsTypes.WebSetting[]> {\r\n return this.http.get<SettingsTypes.WebSetting[]>(`/website-settings?language=${lang}&key[]=referral_learn_more`, 'none');\r\n }\r\n getWebSettingReferralBanners(lang: string): Promise<SettingsTypes.WebSetting[]> {\r\n return this.http.get<SettingsTypes.WebSetting[]>(`/website-settings?language=${lang}&key[]=referral_assets`, 'none');\r\n }\r\n getWebSettingSlotsCategories(lang: string): Promise<SettingsTypes.WebSetting[]> {\r\n return this.http.get<SettingsTypes.WebSetting[]>(`/website-settings?language=${lang}&key[]=slotsCategories`, 'none');\r\n }\r\n getWebSettingLiveCasinoCategories(lang: string): Promise<SettingsTypes.WebSetting[]>{\r\n return this.http.get<SettingsTypes.WebSetting[]>(`/website-settings?language=${lang}&key[]=liveCasinoCategories`, 'none');\r\n }\r\n getWebsiteAllowedPlayerTags(lang: string): Promise<SettingsTypes.WebSetting[]> {\r\n return this.http.get<SettingsTypes.WebSetting[]>(`/website-settings?language=${lang}&key[]=allowedPlayerTags`, 'none');\r\n }\r\n getSupportEmail(lang: string): Promise<SettingsTypes.WebSetting[]> {\r\n return this.http.get<SettingsTypes.WebSetting[]>(`/website-settings?language=${lang}&key[]=supportEmail`, 'none');\r\n }\r\n}\r\n","// src/apis/sport.ts\r\nimport { HttpClient } from '../http/client';\r\nimport * as SportTypes from '../types/sport';\r\n\r\nexport class SportAPI {\r\n constructor(private http: HttpClient) {\r\n }\r\n getConfig(): Promise<SportTypes.SportConfig> {\r\n return this.http.get<SportTypes.SportConfig>('/sport/get-sport-config');\r\n }\r\n}\r\n","// src/apis/voucher.ts\r\nimport { HttpClient } from '../http/client';\r\nimport * as VoucherTypes from '../types/voucher';\r\n\r\nexport class VoucherAPI {\r\n constructor(private http: HttpClient) {}\r\n\r\n redeemVoucher(code: string): Promise<VoucherTypes.RedeemResponse> {\r\n return this.http.post<VoucherTypes.RedeemResponse>('/vouchers/redeem', { code });\r\n }\r\n checkVoucher(code: string): Promise<VoucherTypes.CheckResponse> {\r\n return this.http.get<VoucherTypes.CheckResponse>(`/vouchers/check/${code}`, 'none');\r\n }\r\n}\r\n","// src/apis/withdraw.ts\r\nimport { HttpClient } from '../http/client';\r\nimport * as WithdrawTypes from '../types/withdraw';\r\nimport {WithdrawData, WithdrawRequest} from \"../types/withdraw\";\r\n\r\nexport class WithdrawAPI {\r\n constructor(private http: HttpClient) {\r\n }\r\n\r\n getWithdraws(status?: string): Promise<WithdrawTypes.Withdraw[]> {\r\n const statusQuery = status ? `/${status}` : '';\r\n return this.http.get<WithdrawTypes.Withdraw[]>(`/withdraw${statusQuery}`);\r\n }\r\n\r\n getWithdrawMethods(): Promise<WithdrawTypes.WithdrawMethod[]> {\r\n return this.http.get<WithdrawTypes.WithdrawMethod[]>('/withdraw/methods', 'none');\r\n }\r\n\r\n withdraw(data: WithdrawTypes.WithdrawData): Promise<WithdrawTypes.WithdrawRequest> {\r\n return this.http.post<WithdrawTypes.WithdrawRequest>('/withdraw', data);\r\n }\r\n\r\n rejectWithdraw(withdrawId: number): Promise<{ message?: string, error?: string }> {\r\n return this.http.post<{ message: string, error?: string }>(`/withdraw/cancel`, {withdrawId});\r\n }\r\n\r\n getTrinkparaWithdrawInfo(info: WithdrawTypes.infoType): Promise<any> {\r\n return this.http.get<any>(`/trinkpara/info?info=${info}`);\r\n }\r\n\r\n getAnindaBankList(methodId: number): Promise<WithdrawTypes.AnindaBank[]> {\r\n return this.http.get<WithdrawTypes.AnindaBank[]>(`/aninda/banks?paymentMethodId=${methodId}`);\r\n }\r\n}\r\n","// src/sdk.ts\r\nimport { HttpClient } from './http/client';\r\nimport { JwtAuth } from './auth/jwtAuth';\r\nimport { ApiError, isApiError } from './errors';\r\nimport { AffiliateAPI } from \"./apis/affiliate\";\r\nimport { ContentAPI } from './apis/content';\r\nimport { DepositAPI } from \"./apis/deposit\";\r\nimport { GamesAPI } from './apis/games';\r\nimport { GeolocationAPI } from \"./apis/geo\";\r\nimport { LuckyWheelAPI } from './apis/luckyWheel';\r\nimport { MediaAPI } from \"./apis/media\";\r\nimport { PlayerAPI } from \"./apis/player\";\r\nimport { PromotionsAPI } from './apis/promotions';\r\nimport { RaffleAPI } from \"./apis/raffle\";\r\nimport { RegionAPI } from \"./apis/region\";\r\nimport { SettingsAPI } from \"./apis/settings\";\r\nimport { SportAPI } from \"./apis/sport\";\r\nimport { VoucherAPI } from \"./apis/voucher\";\r\nimport { WithdrawAPI} from \"./apis/withdraw\";\r\n\r\nexport interface SDKConfig {\r\n baseUrl: string;\r\n timeoutMs?: number;\r\n}\r\n\r\nexport class GameSDK {\r\n readonly http: HttpClient;\r\n readonly auth: JwtAuth;\r\n\r\n readonly affiliate: AffiliateAPI;\r\n readonly content: ContentAPI;\r\n readonly deposit: DepositAPI\r\n readonly games: GamesAPI;\r\n readonly geolocation: GeolocationAPI;\r\n readonly luckyWheel: LuckyWheelAPI;\r\n readonly media: MediaAPI;\r\n readonly player: PlayerAPI\r\n readonly promotions: PromotionsAPI;\r\n readonly raffle: RaffleAPI;\r\n readonly region: RegionAPI;\r\n readonly settings: SettingsAPI;\r\n readonly sport: SportAPI;\r\n readonly voucher: VoucherAPI;\r\n readonly withdraw: WithdrawAPI;\r\n\r\n constructor(cfg: SDKConfig) {\r\n this.http = new HttpClient({\r\n baseUrl: cfg.baseUrl.replace(/\\/+$/, ''),\r\n auth: { getToken: () => this.auth.getToken() }, // <-- uses this.auth (defined below)\r\n timeoutMs: cfg.timeoutMs ?? 15000,\r\n });\r\n // pass http to JwtAuth so login can call /auth/login\r\n this.auth = new JwtAuth(this.http);\r\n this.affiliate = new AffiliateAPI(this.http);\r\n this.content = new ContentAPI(this.http);\r\n this.deposit = new DepositAPI(this.http);\r\n this.games = new GamesAPI(this.http);\r\n this.geolocation = new GeolocationAPI(this.http);\r\n this.luckyWheel = new LuckyWheelAPI(this.http);\r\n this.media = new MediaAPI(this.http);\r\n this.player = new PlayerAPI(this.http);\r\n this.promotions = new PromotionsAPI(this.http);\r\n this.raffle = new RaffleAPI(this.http);\r\n this.region = new RegionAPI(this.http);\r\n this.settings = new SettingsAPI(this.http);\r\n this.sport = new SportAPI(this.http);\r\n this.voucher = new VoucherAPI(this.http);\r\n this.withdraw = new WithdrawAPI(this.http);\r\n }\r\n}\r\n\r\nexport const createGameSDK = (cfg: SDKConfig) => new GameSDK(cfg);\r\nexport { JwtAuth, ApiError, isApiError };\r\n","// src/types/auth.ts\r\nimport type {GeoLocation } from './geo';\r\n/** Geo info as returned in `user.geo` (values may be \"undefined\" strings from the IP service) */\r\nexport interface GeoInfo {\r\n ip: string | null | 'undefined';\r\n countryCode: string | null | 'undefined';\r\n status: string; // e.g., \"fail\" | \"success\"\r\n message?: string | null; // e.g., \"invalid query\"\r\n query?: string | null; // e.g., \"undefined\"\r\n}\r\n\r\nexport interface Wallet {\r\n createdAt: string; // ISO date\r\n updatedAt: string; // ISO date\r\n id: number;\r\n name: string; // e.g., \"Main Wallet\"\r\n type: number; // 0 = main, etc.\r\n balance: number;\r\n playerId: number;\r\n}\r\n\r\nexport interface User {\r\n createdAt: string; // ISO date\r\n updatedAt: string; // ISO date\r\n id: number;\r\n username: string;\r\n name: string;\r\n lastname: string;\r\n phone: string | null; // example shows string, keep nullable for safety\r\n email: string;\r\n currencyId: string; // e.g., \"USD\"\r\n status: string; // e.g., \"active\"\r\n referralMax: number;\r\n geo?: GeoLocation; // present in example\r\n googleId: string | null; // can be null\r\n country?: string | null;\r\n city?: string | null;\r\n zipCode?: string | null;\r\n address?: string | null;\r\n dob?: string | null; // ISO date or null\r\n isOnline: boolean;\r\n avatar: number | null; // example shows number; allow null for safety\r\n parentId: number | null; // example shows 1\r\n class: number | null; // class id\r\n wallets: Wallet[]; // at least one wallet in example\r\n}\r\n\r\n/**\r\n * Response of POST /auth/login\r\n * Matches your sample: includes `token`, `socketToken`, and `user`.\r\n */\r\nexport interface AuthResponse {\r\n token: string;\r\n socketToken: string;\r\n user: User;\r\n}\r\n\r\nexport interface pinCodeResponse {\r\n message: string;\r\n token: string;\r\n}\r\nexport interface pinCodeCheckResponse {\r\n message: string;\r\n}\r\n\r\n/** ISO date string, e.g., \"2025-08-26T10:52:58.000Z\" or \"2000-09-11\" */\r\nexport type ISODateString = string;\r\n\r\n/** Same regex as backend: letters, numbers, underscore, hyphen */\r\nexport const USERNAME_REGEX = /^[a-zA-Z0-9_-]+$/;\r\n\r\n/**\r\n * createPlayerValidator\r\n * Backend: geo is a string, class defaults to 1 on server.\r\n */\r\nexport interface CreatePlayerInput {\r\n username: string; // min 4, USERNAME_REGEX\r\n name: string; // max 255\r\n lastname: string; // max 255\r\n email: string; // email, max 255\r\n password: string; // min 4\r\n currencyId: string; // min 2, max 6\r\n geo?: GeoLocation; // optional (string in V1)\r\n class?: number; // optional; server defaults to 1\r\n country?: string; // optional\r\n phone?: string; // optional\r\n zipCode?: string; // optional\r\n address?: string; // optional\r\n dob?: ISODateString; // optional\r\n recaptchaToken: string;\r\n}\r\n\r\n/**\r\n * createPlayerV2Validator\r\n * Note: promo fields can be null; geo is object; country/address/city required.\r\n * \"refferer\" is intentionally spelled to match backend.\r\n */\r\nexport interface CreatePlayerV2Input {\r\n promotionId?: number | null;\r\n promoCode?: string | null;\r\n email: string; // email, max 255\r\n username: string; // min 4, USERNAME_REGEX\r\n password: string; // min 4\r\n name: string; // max 255\r\n lastname: string; // max 255\r\n gender: string; // required (string)\r\n currencyId: string; // min 2, max 6\r\n dob: ISODateString; // required\r\n phone?: string; // optional\r\n country: string; // required\r\n refferer?: number | null; // optional, allow null (spelling matches backend)\r\n address: string; // required\r\n city: string; // required, max 100\r\n zipCode?: string; // optional\r\n geo?: GeoLocation; // optional object\r\n class?: number; // optional; server defaults to 1\r\n recaptchaToken: string;\r\n}\r\n\r\n/**\r\n * createPlayerV2Step2Validator\r\n * Minimal step: email + username + password\r\n */\r\nexport interface CreatePlayerV2Step2Input {\r\n email: string; // email, max 255\r\n username: string; // min 4, USERNAME_REGEX\r\n password: string; // min 4\r\n}\r\n\r\n/**\r\n * Signup response\r\n */\r\nexport interface SignupResponse {\r\n message: string; // e.g., \"Player created successfully\"\r\n player: User;\r\n}\r\n\r\nexport interface RegisterResponse extends SignupResponse, AuthResponse {}\r\nexport interface SignupV2ValidateResponse {\r\n message: string; // e.g., \"Player created successfully\"\r\n}\r\n\r\nexport interface GoogleProfile {\r\n id: string;\r\n email: string;\r\n verified_email: boolean;\r\n name: string;\r\n given_name: string;\r\n family_name: string;\r\n picture: string;\r\n}\r\n\r\nexport interface GoogleLoginRequest {\r\n token: string;\r\n profile: GoogleProfile;\r\n geo?: object;\r\n}\r\n"]}
|
package/package.json
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@masterunoco/casinowebengine-api",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Typed front-end SDK for casino webengine API",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/index.cjs",
|
|
7
|
+
"module": "dist/index.js",
|
|
8
|
+
"types": "dist/index.d.ts",
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"import": "./dist/index.js",
|
|
12
|
+
"require": "./dist/index.cjs",
|
|
13
|
+
"types": "./dist/index.d.ts"
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
"files": ["dist", "README.md"],
|
|
17
|
+
"sideEffects": false,
|
|
18
|
+
"dependencies": {
|
|
19
|
+
"@mui/material": "^7.3.5",
|
|
20
|
+
"joi": "^17.13.3"
|
|
21
|
+
},
|
|
22
|
+
"devDependencies": {
|
|
23
|
+
"tsup": "^8.1.0",
|
|
24
|
+
"typescript": "^5.9.3"
|
|
25
|
+
},
|
|
26
|
+
"scripts": {
|
|
27
|
+
"build": "tsup src/index.ts --format esm,cjs --dts"
|
|
28
|
+
}
|
|
29
|
+
}
|