import { fetchJson } from "@/lib/client/fetch-json"; export type JoinPolicy = "NOT_ACCEPTING" | "AUTO_ACCEPT" | "APPROVAL_REQUIRED"; export type InviteLink = { id: number; groupId: number; token: string; policy: JoinPolicy; singleUse: boolean; expiresAt: string; usedAt: string | null; revokedAt: string | null; createdAt: string; }; export async function groupInvitesList() { return fetchJson<{ links: InviteLink[] }>("/api/groups/invites", { method: "GET" }); } export async function groupInvitesCreate(input: { policy: JoinPolicy; singleUse: boolean; ttlDays: number }) { return fetchJson<{ link: InviteLink }>("/api/groups/invites", { method: "POST", body: JSON.stringify(input) }); } export async function groupInvitesRevoke(input: { linkId: number }) { return fetchJson<{ ok: true }>("/api/groups/invites/revoke", { method: "POST", body: JSON.stringify(input) }); } export async function groupInvitesRevive(input: { linkId: number; ttlDays: number }) { return fetchJson<{ ok: true }>("/api/groups/invites/revive", { method: "POST", body: JSON.stringify(input) }); } export async function groupInvitesDelete(input: { linkId: number }) { return fetchJson<{ ok: true }>("/api/groups/invites/delete", { method: "POST", body: JSON.stringify(input) }); }