export interface TeamInvite {
    code: string;
    teamId: string;
    createdBy: string;
    createdAt: number;
    expiresAt: number;
    usedAt?: number;
}
export interface CreatedInvite {
    code: string;
    expiresAt: number;
}
/** Mint a single-use invite for a team. */
export declare function createInvite(dataDir: string, teamId: string, createdBy: string, ttlMs?: number, now?: number): CreatedInvite;
/** Drop every invite for a team (e.g. when the team is deleted), so stale codes
 *  can't later be consumed to join/switch into a non-existent team. Returns count. */
export declare function deleteInvitesForTeam(dataDir: string, teamId: string): number;
export type ConsumeInviteResult = {
    ok: true;
    teamId: string;
} | {
    ok: false;
    reason: 'not_found' | 'expired' | 'used';
};
/** Validate + burn an invite (single-use). Determines the precise failure
 *  reason BEFORE pruning, so an expired code reports `expired` (not `not_found`). */
export declare function consumeInvite(dataDir: string, code: string, now?: number): ConsumeInviteResult;
//# sourceMappingURL=invite-store.d.ts.map