Files
bedolaga-cabinet/src/api/referral.ts
c0mrade bc90ba3779 refactor: migrate to eslint flat config and format codebase with prettier
- Remove legacy .eslintrc.cjs and .eslintignore
- Add eslint.config.js with flat config, security rules (no-eval, no-implied-eval, no-new-func, no-script-url)
- Add .prettierrc and .prettierignore
- Format entire codebase with prettier
2026-01-27 17:37:31 +03:00

66 lines
1.6 KiB
TypeScript

import apiClient from './client';
import type { ReferralInfo, ReferralTerms, PaginatedResponse } from '../types';
interface ReferralItem {
id: number;
username: string | null;
first_name: string | null;
created_at: string;
has_subscription: boolean;
has_paid: boolean;
}
interface ReferralEarning {
id: number;
amount_kopeks: number;
amount_rubles: number;
reason: string;
referral_username: string | null;
referral_first_name: string | null;
created_at: string;
}
interface ReferralEarningsList extends PaginatedResponse<ReferralEarning> {
total_amount_kopeks: number;
total_amount_rubles: number;
}
export const referralApi = {
// Get referral info
getReferralInfo: async (): Promise<ReferralInfo> => {
const response = await apiClient.get<ReferralInfo>('/cabinet/referral');
return response.data;
},
// Get referral list
getReferralList: async (params?: {
page?: number;
per_page?: number;
}): Promise<PaginatedResponse<ReferralItem>> => {
const response = await apiClient.get<PaginatedResponse<ReferralItem>>(
'/cabinet/referral/list',
{
params,
},
);
return response.data;
},
// Get referral earnings
getReferralEarnings: async (params?: {
page?: number;
per_page?: number;
}): Promise<ReferralEarningsList> => {
const response = await apiClient.get<ReferralEarningsList>('/cabinet/referral/earnings', {
params,
});
return response.data;
},
// Get referral terms
getReferralTerms: async (): Promise<ReferralTerms> => {
const response = await apiClient.get<ReferralTerms>('/cabinet/referral/terms');
return response.data;
},
};