import { GsbCmRegistration } from '../../models/gsb-subscription.model';
export declare enum RegistrationType {
    Free = 1,
    Basic = 2,
    Premium = 4,
    Enterprise = 8,
    Social = 16
}
export declare enum SocialProviders {
    None = 0,
    Google = 1,
    Github = 2,
    Facebook = 4
}
export interface IRegistrationData {
    email: string;
    password?: string;
    name: string;
    surname: string;
    phoneNumber?: string;
    subscriptionType: RegistrationType;
    paymentInfo?: {
        token?: string;
        saveInfo?: boolean;
    };
    socialInfo?: {
        provider: SocialProviders;
        token: string;
    };
}
/**
 * Registration service for handling user registration
 */
export declare class RegistrationService {
    private static instance;
    private subscriptionService;
    private constructor();
    static getInstance(): RegistrationService;
    /**
     * Register a new user
     */
    registerUser(data: IRegistrationData): Promise<GsbCmRegistration>;
    /**
     * Verify user email with validation code
     */
    verifyUserEmail(email: string, validationCode: string): Promise<boolean>;
    /**
     * Complete user registration and set up subscription if needed
     */
    completeRegistration(registrationId: string, verificationKey: string, subscriptionData?: any): Promise<{
        success: boolean;
        userId?: string;
        tenantId?: string;
        subscriptionPlanId?: string;
    }>;
    /**
     * Process a social login based registration
     */
    processSocialRegistration(provider: SocialProviders, token: string): Promise<{
        success: boolean;
        isNewUser: boolean;
        userId?: string;
        registrationId?: string;
    }>;
}
