import { PrismaClient } from '../../../../../prisma';
export interface CanInviteResult {
    allowed: boolean;
    reason?: string;
}
export interface BannerData {
    teamId: number;
    teamName: string;
    isOrganization: boolean;
    amountDue: number;
    isBlocking: boolean;
    prorationId: string;
    monthKey: string;
    invoiceUrl: string | null;
}
export declare class DueInvoiceService {
    private prisma;
    constructor(prisma?: PrismaClient);
    /**
     * Check if a team has a blocking (7+ days overdue) proration invoice
     */
    hasBlockingProration(teamId: number): Promise<boolean>;
    /**
     * Check if invitations can be sent for a team
     * Sub-team exception: Allow inviting existing org members to sub-teams even with blocking prorations
     */
    canInviteToTeam({ teamId, inviteeEmails, isSubTeam, parentOrgId, }: {
        teamId: number;
        inviteeEmails: string[];
        isSubTeam: boolean;
        parentOrgId: number | null;
    }): Promise<CanInviteResult>;
    /**
     * Check if all invitees are already members of the organization
     */
    private checkAllInviteesAreOrgMembers;
    /**
     * Get banner data for a user - returns overdue prorations for teams where user has billing permission
     */
    getBannerDataForUser(userId: number): Promise<BannerData[]>;
    /**
     * Find teams where user has billing management permission
     */
    private findTeamsWithBillingPermission;
}
//# sourceMappingURL=DueInvoiceService.d.ts.map