import request, { withSignal } from './request' import type { Role, PermissionTemplate, CreateRoleRequest, UpdateRoleRequest, CreateTemplateRequest, } from '@/types' export const roleService = { // ── Roles ───────────────────────────────────────────────── list: (signal?: AbortSignal) => request.get('/roles', withSignal({}, signal)).then((r) => r.data), create: (data: CreateRoleRequest, signal?: AbortSignal) => request.post('/roles', data, withSignal({}, signal)).then((r) => r.data), update: (id: string, data: UpdateRoleRequest, signal?: AbortSignal) => request.put(`/roles/${id}`, data, withSignal({}, signal)).then((r) => r.data), delete: (id: string, signal?: AbortSignal) => request.delete(`/roles/${id}`, withSignal({}, signal)).then((r) => r.data), // ── Role Permissions ────────────────────────────────────── getPermissions: (roleId: string, signal?: AbortSignal) => request.get(`/roles/${roleId}/permissions`, withSignal({}, signal)).then((r) => r.data), // ── Permission Templates ────────────────────────────────── listTemplates: (signal?: AbortSignal) => request.get('/permission-templates', withSignal({}, signal)).then((r) => r.data), createTemplate: (data: CreateTemplateRequest, signal?: AbortSignal) => request.post('/permission-templates', data, withSignal({}, signal)).then((r) => r.data), deleteTemplate: (id: string, signal?: AbortSignal) => request.delete(`/permission-templates/${id}`, withSignal({}, signal)).then((r) => r.data), applyTemplate: (templateId: string, accountIds: string[], signal?: AbortSignal) => request.post(`/permission-templates/${templateId}/apply`, { account_ids: accountIds }, withSignal({}, signal)).then((r) => r.data), }