import { adminRequest } from "@/lib/admin-http"; import { API_V1_PREFIX } from "./paths"; import type { AdminPlayTypeRow, AdminPlayTypesData, ConfigVersionListData, OddsVersionDetail, PlayConfigVersionDetail, RiskCapVersionDetail, } from "@/types/api/admin-config"; const A = `${API_V1_PREFIX}/admin`; export async function getAdminPlayTypes(): Promise { return adminRequest.get(`${A}/play-types`); } export async function patchAdminPlayType( playCode: string, body: Partial<{ is_enabled: boolean; sort_order: number; display_name_zh: string | null; display_name_en: string | null; display_name_ne: string | null; supports_multi_number: boolean; reserved_rule_json: unknown; }>, ): Promise { return adminRequest.patch(`${A}/play-types/${encodeURIComponent(playCode)}`, body); } export async function getPlayConfigVersions(params?: { status?: string; page?: number; per_page?: number; }): Promise { return adminRequest.get(`${A}/config/play-versions`, { params }); } export async function getPlayConfigVersion(id: number): Promise { return adminRequest.get(`${A}/config/play-versions/${id}`); } export async function postPlayConfigVersion(body?: { reason?: string | null; clone_from_version_id?: number | null; }): Promise { return adminRequest.post(`${A}/config/play-versions`, body ?? {}); } export async function putPlayConfigItems( id: number, items: Array<{ play_code: string; is_enabled?: boolean; min_bet_amount: number; max_bet_amount: number; display_order?: number; rule_text_zh?: string | null; rule_text_en?: string | null; rule_text_ne?: string | null; extra_config_json?: unknown; }>, ): Promise { return adminRequest.put(`${A}/config/play-versions/${id}/items`, { items }); } export async function publishPlayConfigVersion(id: number): Promise { return adminRequest.post(`${A}/config/play-versions/${id}/publish`); } export async function deletePlayConfigVersion(id: number): Promise<{ deleted: boolean }> { return adminRequest.delete(`${A}/config/play-versions/${id}`); } export async function getOddsVersions(params?: { status?: string; page?: number; per_page?: number; }): Promise { return adminRequest.get(`${A}/config/odds-versions`, { params }); } export async function getOddsVersion(id: number): Promise { return adminRequest.get(`${A}/config/odds-versions/${id}`); } export async function postOddsVersion(body?: { reason?: string | null; clone_from_version_id?: number | null; }): Promise { return adminRequest.post(`${A}/config/odds-versions`, body ?? {}); } export async function putOddsItems( id: number, items: Array<{ play_code: string; prize_scope: string; odds_value: number; rebate_rate?: number; commission_rate?: number; currency_code: string; extra_config_json?: unknown; }>, ): Promise { return adminRequest.put(`${A}/config/odds-versions/${id}/items`, { items }); } export async function publishOddsVersion(id: number): Promise { return adminRequest.post(`${A}/config/odds-versions/${id}/publish`); } export async function deleteOddsVersion(id: number): Promise<{ deleted: boolean }> { return adminRequest.delete(`${A}/config/odds-versions/${id}`); } export async function getRiskCapVersions(params?: { status?: string; page?: number; per_page?: number; }): Promise { return adminRequest.get(`${A}/config/risk-cap-versions`, { params }); } export async function getRiskCapVersion(id: number): Promise { return adminRequest.get(`${A}/config/risk-cap-versions/${id}`); } export async function postRiskCapVersion(body?: { reason?: string | null; clone_from_version_id?: number | null; }): Promise { return adminRequest.post(`${A}/config/risk-cap-versions`, body ?? {}); } export async function putRiskCapItems( id: number, items: Array<{ draw_id?: number | null; normalized_number: string; cap_amount: number; cap_type: string; }>, ): Promise { return adminRequest.put(`${A}/config/risk-cap-versions/${id}/items`, { items }); } export async function publishRiskCapVersion(id: number): Promise { return adminRequest.post(`${A}/config/risk-cap-versions/${id}/publish`); } export async function deleteRiskCapVersion(id: number): Promise<{ deleted: boolean }> { return adminRequest.delete(`${A}/config/risk-cap-versions/${id}`); }