import api from '../api'; // ───────────────────────────────────────────── // Types // ───────────────────────────────────────────── export interface RankRequirements { personalVolume?: number; groupVolume?: number; directReferrals?: number; activeLegs?: number; rankInLegs?: { rankLevel: number; count: number; }; } export interface RankBenefits { discount?: number; access?: string[]; features?: string[]; } export interface Rank { id: string; tenantId: string; structureId: string; name: string; level: number; badgeUrl: string | null; color: string | null; requirements: RankRequirements; bonusRate: number | null; benefits: RankBenefits; isActive: boolean; createdAt: string; updatedAt: string; } export interface CreateRankDto { structureId: string; name: string; level: number; badgeUrl?: string; color?: string; requirements?: RankRequirements; bonusRate?: number; benefits?: RankBenefits; isActive?: boolean; } export type UpdateRankDto = Partial; export interface RankFilters { structureId?: string; isActive?: boolean; } // ───────────────────────────────────────────── // API Service // ───────────────────────────────────────────── export const ranksApi = { list: async (params?: RankFilters): Promise => { const response = await api.get('/mlm/ranks', { params }); return response.data; }, get: async (id: string): Promise => { const response = await api.get(`/mlm/ranks/${id}`); return response.data; }, create: async (data: CreateRankDto): Promise => { const response = await api.post('/mlm/ranks', data); return response.data; }, update: async (id: string, data: UpdateRankDto): Promise => { const response = await api.patch(`/mlm/ranks/${id}`, data); return response.data; }, delete: async (id: string): Promise => { await api.delete(`/mlm/ranks/${id}`); }, evaluate: async (structureId: string): Promise => { const response = await api.post('/mlm/ranks/evaluate', null, { params: { structureId }, }); return response.data; }, };