import { apiQueryClient, type paths, useAuthenticatedQuery, } from "@/shared/api"; type BankCard = paths["/api/v1/bank-cards/{id}"]["get"]["responses"][200]["content"]["application/json"]; type BankOperation = paths["/api/v1/bank-cards/operations/{id}"]["get"]["responses"][200]["content"]["application/json"]; type BankSummary = paths["/api/v1/bank-cards/summary"]["get"]["responses"][200]["content"]["application/json"]; type ExpenseCategory = paths["/api/v1/bank-cards/categories"]["get"]["responses"][200]["content"]["application/json"][number]; type CreateBankCard = paths["/api/v1/bank-cards"]["post"]["requestBody"]["content"]["application/json"]; type UpdateBankCard = paths["/api/v1/bank-cards/{id}"]["patch"]["requestBody"]["content"]["application/json"]; type CreateBankOperation = paths["/api/v1/bank-cards/operations"]["post"]["requestBody"]["content"]["application/json"]; type UpdateBankOperation = paths["/api/v1/bank-cards/operations/{id}"]["patch"]["requestBody"]["content"]["application/json"]; type CreateExpenseCategory = paths["/api/v1/bank-cards/categories"]["post"]["requestBody"]["content"]["application/json"]; type UpdateExpenseCategory = paths["/api/v1/bank-cards/categories/{id}"]["patch"]["requestBody"]["content"]["application/json"]; function useBankCards(includeArchived = false) { return useAuthenticatedQuery( apiQueryClient.queryOptions("get", "/api/v1/bank-cards", { params: { query: { includeArchived: includeArchived ? "true" : "false" }, }, }), ); } function useBankCard(id: string | undefined) { return useAuthenticatedQuery({ ...apiQueryClient.queryOptions("get", "/api/v1/bank-cards/{id}", { params: { path: { id: id ?? "" } }, }), enabled: Boolean(id), }); } function useBankCategories() { return useAuthenticatedQuery( apiQueryClient.queryOptions("get", "/api/v1/bank-cards/categories"), ); } function useBankOperations( id: string | undefined, query: { month: string; page: number; limit?: number }, ) { return useAuthenticatedQuery({ ...apiQueryClient.queryOptions( "get", "/api/v1/bank-cards/{id}/operations", { params: { path: { id: id ?? "" }, query } }, ), enabled: Boolean(id && query.month), }); } function useBankExpenses( id: string | undefined, query: { page: number; limit?: number }, ) { return useAuthenticatedQuery({ ...apiQueryClient.queryOptions("get", "/api/v1/bank-cards/{id}/expenses", { params: { path: { id: id ?? "" }, query }, }), enabled: Boolean(id), }); } function useBankSummary(month: string, cardId?: string) { return useAuthenticatedQuery({ ...apiQueryClient.queryOptions("get", "/api/v1/bank-cards/summary", { params: { query: { month, cardId } }, }), enabled: Boolean(month), }); } function useBankOperation(id: string | undefined) { return useAuthenticatedQuery({ ...apiQueryClient.queryOptions( "get", "/api/v1/bank-cards/operations/{id}", { params: { path: { id: id ?? "" } } }, ), enabled: Boolean(id), }); } export { type BankCard, type BankOperation, type BankSummary, type CreateBankCard, type CreateBankOperation, type CreateExpenseCategory, type ExpenseCategory, type UpdateBankCard, type UpdateBankOperation, type UpdateExpenseCategory, useBankCard, useBankCards, useBankCategories, useBankExpenses, useBankOperation, useBankOperations, useBankSummary, };