import type { TrpcSessionUser } from '../../../../trpc/server/types';
type SeatsPrice = {
    seats?: number | null;
    pricePerSeat?: number | null;
};
export interface validatePermissionsIOrganizationPermissionService {
    hasPermissionToCreateForEmail(targetEmail: string): Promise<boolean>;
    hasPendingOrganizations(email: string, slug?: string): Promise<boolean>;
    hasPermissionToModifyDefaultPayment(): boolean;
    hasPermissionToMigrateTeams(teamIds: number[]): Promise<boolean>;
    hasModifiedDefaultPayment(input: {
        billingPeriod?: string;
    } & SeatsPrice): boolean;
}
export declare class OrganizationPermissionService {
    private readonly user;
    constructor(user: NonNullable<TrpcSessionUser>);
    hasPermissionToCreateForEmail(targetEmail: string): Promise<boolean>;
    /**
     * If an onboarding is complete then it also means that org is created already.
     */
    hasConflictingOrganization({ slug }: {
        slug: string;
    }): Promise<boolean>;
    hasCompletedOnboarding(email: string): Promise<boolean>;
    hasPermissionToModifyDefaultPayment(): boolean;
    hasModifiedDefaultPayment(data: SeatsPrice & {
        billingPeriod?: string;
    }): boolean;
    hasPermissionToMigrateTeams(teamIds: number[]): Promise<boolean>;
    /**
     * Doesn't validate custom price permission as that is validated before onboarding is created and this method also runs when checkout is to be started
     */
    validatePermissions(input: {
        orgOwnerEmail: string;
        teams?: {
            id: number;
            isBeingMigrated: boolean;
        }[];
        billingPeriod?: string;
        slug: string;
    } & SeatsPrice): Promise<boolean>;
}
export {};
//# sourceMappingURL=OrganizationPermissionService.d.ts.map