export interface IUserCredentials {
    email: string;
    password: string;
}
export interface ICreateUser extends IUserCredentials {
    userName: string;
}
export interface IUser extends IUserCredentials {
    userId?: number;
    userTypeId: number;
    gender: string;
    countryId: number;
    languageId: number;

    // Personal Details
    userName?: string;
    firstName: string;
    lastName: string;
    birthDate: Date;
    address: string;
    city: string;
    zipCode: string;
    phone: string;
    phonePrefix: string;
    isUSTaxEntity: boolean;
    kycApproved: boolean;
    phoneVerified: boolean;
    mailVerfied: boolean;
    termsOfServiceChecked: boolean;
    content: string;
    contentBase64: string;
    avatarUrl: string;
    hasAvatar: boolean;
    // createOrigin: string;
    // createIPAddress: string;
    // source: string;
    countFollowers?: number;
    rank?: number;
    userIsKnokser: boolean;
    passwordConfirm?: string;
}
export class UserCredentials implements IUserCredentials {
    email: string;
    password: string;
}
export class User implements IUser {
    email: string;
    password: string;
    passwordConfirm: string;
    userTypeId: number;
    gender: string;
    countryId: number;
    languageId: number;

    // Personal Details
    userName: string;
    firstName: string;
    lastName: string;
    birthDate: Date;
    address: string;
    city: string;
    zipCode: string;
    phone: string;
    phonePrefix: string;
    isUSTaxEntity: boolean;
    kycApproved: boolean;
    phoneVerified: boolean;
    mailVerfied: boolean;
    termsOfServiceChecked: boolean;
    content: string;
    contentBase64: string;
    avatarUrl: string;
    hasAvatar: boolean;
    userIsKnokser: boolean;
    // createOrigin: string;
    // createIPAddress: string;
    // source: string;
    constructor() {
        /*
        this.firstName = lead.firstName;
        this.lastName = lead.lastName;
        this.dateOfBirthday = lead.dateOfBirthday;
        this.address = lead.address;
        this.city = lead.city;
        this.state = lead.state;
        this.postCode = lead.postCode;
        this.email = lead.email;
        this.phone = lead.phone;
        this.likeToGetNewslatter = lead.likeToGetNewslatter;
        this.isAnonymous = lead.isAnonymous;

        this.leadId = lead.leadId;
        */
    }
}
export interface IAccount {
    accountId: number;
    accountCurrency: string;
    userId: number;
    brandId: number;
    accountTypeId: number;
    allowMarketPrimary: boolean;
    allowMarketSecondary: boolean;
    isDemo: boolean;
    accountStatusId: number;
    currentBalance: number;
}
export interface IUserAccounts {
    user: IUser;
    accounts: IAccount[];
}
