feat(market): basic page + submit

This commit is contained in:
2026-05-23 18:30:50 +02:00
parent ce30539808
commit f7c7eba4da
17 changed files with 866 additions and 9 deletions
+35 -1
View File
@@ -7,7 +7,9 @@ import type {
SubmissionFile,
UserInfo,
TournamentSubmissions,
TournamentPuzzleResults
TournamentPuzzleResults,
Market,
UserBet
} from '../types'
// API Configuration
@@ -215,6 +217,38 @@ export class ApiService {
async getUserInfo(): Promise<ApiResponse<UserInfo>> {
return this.request<UserInfo>('/user')
}
// Market endpoints
async getMarkets(): Promise<ApiResponse<Market[]>> {
return this.request<Market[]>('/market/')
}
async placeBet(marketUuid: string, betData: {
option_uuid: string
amount: number
}): Promise<ApiResponse<UserBet>> {
return this.request<UserBet>(`/market/${marketUuid}/bets`, {
method: 'POST',
body: JSON.stringify(betData),
})
}
async getUserBets(): Promise<ApiResponse<UserBet[]>> {
return this.request<UserBet[]>('/market/user/bets')
}
async closeMarket(marketUuid: string): Promise<ApiResponse<{ status: string }>> {
return this.request<{ status: string }>(`/market/${marketUuid}/actions/close`, {
method: 'POST',
})
}
async resolveMarket(marketUuid: string, winningOptionUuid: string): Promise<ApiResponse<Market>> {
return this.request<Market>(`/market/${marketUuid}/actions/resolve`, {
method: 'POST',
body: JSON.stringify({ winning_option_uuid: winningOptionUuid }),
})
}
}
// Singleton instance