import { ExternalHostMessageType, ExternalHostMode } from "../constants/enum";
import { IOrganization } from "./organizationInterface";
import { CustomField } from "./signInterface";
export type UserInfo = {
    result: IResult;
    info: IInfo;
    personal_info: IPersonalInfo;
    address: IAddress;
    addresses: IAddresses[];
    email: IEmail[];
    phone: IPhone[];
    security: ISecurity;
    preferences: IPreferences;
    identification: IIdentification[];
    bank_account: IBankAccount[];
    credit_card: any;
    notification: any;
    documents: any;
    currency: ICurrency[];
    credit_limit: any;
    account: IAccount[];
    group: any;
    terms_conditions: ITermsConditions;
    device_info: IDeviceInfo;
    device: IDevice[] | null;
    device_history: IDeviceHistory[] | null;
    commerce: any;
    external_auth: any;
    validation_data: any;
    relationship: any;
    geo_coordinates: IGeoCoordinates | any;
    custom_field: CustomField | null;
    history: string;
    access_rule: string;
    ticket: ITicket[] | null;
    general_requirements: IGeneralRequirements;
    organization: IOrganization[];
    notes: any;
    last_activity: ILastActivity;
    authentication: string | null;
    authentication_data: IAuthenticationData[] | null;
    validate: string;
    function_code: string;
    time_zone: string;
    time_zone_name: string;
    response_time: string;
};
export interface ITicket {
    info: ITicketInfo;
    content: ITicketContent;
    history: ITicketHistory[];
    ExternalHostInfo: ITicketExternalHostInfo;
    ticket_json: string;
}
export interface ITicketInfo {
    id: number;
    cluster_id: number;
    program_id: number;
    parent_id: number;
    entity: number;
    entity_id: number;
    sub_entity: ITicketSubEntity[];
    by_entity: number;
    by_entity_id: number;
    assigned_to_entity: number;
    assigned_to_entity_id: number;
    entity_data: number;
    status: number;
    description_code: string;
    category: number;
    type: number;
    scope: number;
    priority: number;
    service_provider: number;
    service_method: number;
    server_date: string;
    date_utc: string;
    client_date: string;
    update_date_utc: string;
    source_time_zone: string;
    original_source_id: string;
}
export interface ITicketSubEntity {
    sub_entity: number;
    sub_entity_id: number;
    verification_status: number;
    status: number;
}
export interface ITicketContent {
    subject: string;
    content: string;
}
export interface ITicketHistory {
    info: ITicketInfo;
    content: ITicketContent;
}
export interface ITicketExternalHostInfo {
    ExternalHostMessageType: ExternalHostMessageType;
    ExternalHostMode: ExternalHostMode;
    MessageDescription: string;
    MessageDescriptionCode: string;
    OldAccountStatus: string;
}
export interface IDeviceHistory {
    id: number;
    type: number;
    brand: string;
    os: string;
    extended_info: {
        sim_info: null;
        culture_info: null;
        user_agent: string;
        fingerprint: string;
        cpu: string;
        system_language: string;
    };
    activity_type: number;
    application_version: null | string;
    serial_number: null | string;
    source_ip_address: null | string;
    geo_coordinates: null | string;
    server_date: string;
    date_utc: string;
    client_date: string;
    update_date_utc: string;
    client_time_zone: string;
}
export interface IGeoCoordinates {
    latitude: string;
    longitude: string;
    position_description: string;
}
export interface InfoChain {
    isKeplerConnect: boolean;
    address: string;
    ugz: number;
    uggezOne: number;
}
export interface InfoUser {
    name: string;
    email: string;
    avatar: string;
}
export interface Data {
    infoChain: any;
    infoUser: InfoUser;
}
export interface AppState {
    data: Data[];
    error: string | null;
}
export interface IDevice {
    id: number;
    type: number;
    brand: string;
    os: string;
    unique_id: null;
    installation_id: string;
    extended_info: {
        sim_info: null;
        culture_info: null;
        user_agent: string;
        fingerprint: string;
        cpu: string;
        system_language: string;
    };
    status: number;
    verification_status: number;
    is_online: boolean | null;
    encryption_key: string;
    application_version: string | null;
    serial_number: string;
    source_ip_address: string | null;
    geo_coordinates: null | GeoCoordinates | any;
    original_source_id: string;
    server_date: string;
    date_utc: string;
    client_date: string;
    update_date_utc: string;
    client_time_zone: string;
}
export interface GeoCoordinates {
    latitude: string;
    longitude: string;
    position_description: string;
}
export interface ISecurity {
    trust_level: string;
    password: string;
    security_code: string | null;
    signup_code: string | null;
    secret_question_1: string;
    secret_answer_1: string | null;
    secret_question_2: string;
    secret_answer_2: string | null;
}
export interface IAuthenticationData {
    code: string | null;
    is_enabled: 0 | 1;
    issuer: string;
    manual_entry_key: string | null;
    qr_image_url: string | null;
    secret_key: string | null;
    title: string;
    type: number;
}
export interface IPreferences {
    preferred_language_code: string;
    enable_facebook_account: string;
    enable_promotion_notification: string;
    enable_email_notification: string;
    enable_sms_notification: string;
    enable_push_notification: string;
    enable_device_authentication: string;
    time_zone: string;
    time_zone_name: string;
    is_agent: string;
    is_reseller: string;
    is_seller: string;
}
export interface IPhone {
    id: string;
    type: string;
    country_code: string;
    number: string;
    is_primary: string;
    status: string;
    verification_status: string;
    original_source_id: string;
    server_date: string;
    date_utc: string;
    client_date: string;
    update_date_utc: string;
    custom_field: string;
}
export interface IIdentification {
    result: string;
    id: string;
    type: string;
    country_of_issue: string;
    country_of_residence: string;
    number: string;
    issue_date: string;
    expiry_date: string;
    status: string;
    verification_status: string;
    original_source_id: string;
    server_date: string;
    date_utc: string;
    client_date: string;
    update_date_utc: string;
    extra_data: string;
    custom_field: string;
    ticket: any;
}
export interface IEmail {
    id: number | null;
    type: number | null;
    address: string;
    is_primary: number | null;
    status: number | null;
    original_source_id: string;
    date_utc: string;
    server_date: string;
    client_date: string;
    update_date_utc: string;
    custom_field: any;
    verification_status: number | null;
}
export interface IResult {
    code: string;
    message: string;
    friendly_message: string;
}
export interface IInfo {
    id: string;
    program_id: string;
    status: string;
    type: number;
    risk_rate: string;
    server_date: string;
    date_utc: string;
    client_date: string;
    source_time_zone: string;
    original_source_id: string;
}
export interface IPersonalInfo {
    title: string;
    first_name: string;
    last_name: string;
    nick_name: string;
    job_title: string;
    gender: string;
    date_of_birth: string;
    verification_status: string;
    picture: string;
    custom_field: string;
}
export interface IAddress {
    type: string;
    is_billing: number;
    address_line1: string;
    address_line2: string;
    postal_zip_code: string;
    country_code: string;
    state_region: string;
    city_town: string;
    status: string;
    verification_status: string;
    original_source_id: string;
    server_date: string;
    date_utc: string;
    client_date: string;
    update_date_utc: string;
    custom_field: string | null;
}
export interface IAddresses {
    id: string;
    type: string;
    is_primary: string;
    is_billing: number;
    address_line1: string;
    address_line2: string;
    postal_zip_code: string;
    country_code: string;
    state_region: string;
    city_town: string;
    status: string;
    verification_status: string;
    original_source_id: string;
    server_date: string;
    date_utc: string;
    client_date: string;
    update_date_utc: string;
    custom_field: string;
    ticket: any;
}
export interface IBankAccount {
    id: string;
    linked_account_id: string;
    name: string;
    beneficiary_name: string;
    holder_name: string;
    country_code: string;
    currency_code: string;
    type: string;
    payment_type: string;
    beneficiary_type: string;
    number: string;
    swift_code: string;
    iban: string;
    transit_number: string;
    institution_number: string;
    routing_number: string;
    phone_id: string;
    address_id: string;
    bank_address: string;
    state_region: string;
    is_primary: string;
    status: string;
    verification_status: string;
    city_town: string;
    postal_zip_code: string;
    extended_data: string;
    sort_code: string;
    original_source_id: string;
    server_date: string;
    date_utc: string;
    client_date: string;
    update_date_utc: string;
    service_provider: string;
    custom_field: string;
    ticket: any;
    settlement_currency_code: string;
}
export interface IAccount {
    result: string;
    info: {
        activation_date_time: string;
        available_balance: string;
        balance: string;
        bin_id: string;
        card_image: null;
        client_date: null;
        currency: string;
        date_utc: string;
        external_available_balance: null;
        external_balance: null;
        id: number;
        is_multi_currency: null;
        name: string;
        nick_name: null;
        number: string;
        original_source_id: string;
        program_id: number;
        replace_account: null;
        security: null;
        server_date: string;
        source_time_zone: string;
        status: string;
        supplied_id: number;
        type: string;
        usage_status: string;
        user_id: number;
        user_name: null;
        account_id: number;
        update_date_utc: string;
    };
    chain_data: any;
    limits: string;
    archive: string;
    custom_field: string;
    geo_coordinates: string;
    options: string;
    bank_account: string;
    history: string;
    fulfilment: string;
    access_rule: string;
    provision: string;
    credit_limit: string;
    tokenization: string;
    notes: string;
    last_activity: string;
    authentication: string;
    validate: string;
    function_code: string;
    time_zone: string;
    time_zone_name: string;
    response_time: string;
}
export interface ICurrency {
    id: string;
    code: string;
    number: string;
    is_primary: string;
}
export interface ITermsConditions {
    id: string;
    acceptance: string;
    title: string;
    version_name: string;
    server_date: string;
}
export interface IDeviceInfo {
    id: string;
    type: string;
    brand: string;
    os: string;
    unique_id: string;
    installation_id: string;
    extended_info: string;
    status: string;
    verification_status: string;
    encryption_key: string;
    application_version: string;
    serial_number: string;
    source_ip_address: string;
    geo_coordinates: string;
    original_source_id: string;
    server_date: string;
    date_utc: string;
    client_date: string;
    update_date_utc: string;
    client_time_zone: string;
}
export interface IGeneralRequirements {
    id: string;
    entity: string;
    entity_id: string;
    verification_status: string;
    name: string;
    description: string;
    notes: string;
}
export interface ILastActivity {
    entity: string;
    entity_id: string;
    entity_data: string;
    activity_type: string;
    notes: {
        user_notes: string;
        admin_notes: string;
    };
    update_date_utc: string;
}
export interface IInfo {
    id: string;
    program_id: string;
    status: string;
    type: number;
    risk_rate: string;
    server_date: string;
    date_utc: string;
    client_date: string;
    source_time_zone: string;
    original_source_id: string;
}
export interface IDetails {
    established_date?: string | null;
    formatted_established_date?: string | null;
    size?: number | null;
    registration_number: string;
    trade_license_number: string;
}
export interface IRelationship {
    id?: number;
    entity?: number | null;
    entity_id?: number | null;
    entity_name?: string;
    entity_email?: string;
    entity_phone?: string;
    on_entity?: number | null;
    on_entity_id?: number | null;
    on_entity_name?: string;
    on_entity_email?: string;
    on_entity_phone?: string;
    type?: number | null;
    status?: number | null;
    verification_status?: number | null;
    order?: number | null;
    original_source_id: string;
    formatted_server_date: string;
    formatted_date_utc: string;
    formatted_client_date: string;
    formatted_update_date_utc: string;
    custom_field: Record<string, any>;
}
export interface IDocumentData {
    info?: any;
    attachment?: any[];
    custom_field?: Record<string, any>;
    geo_coordinates?: any;
}
export interface IUserData {
    name: string;
    email: string;
    avatar?: string;
    token: string;
    expiresIn: string;
    jwtToken: string;
    encryptedJwt: string;
    userId: string;
    programId: string;
    userType: string;
    userTypeId?: string;
    deviceId: string;
    exp?: string;
    role: string;
    hostName: string;
    fingerPrint: string;
    rememberedEmail?: string;
    sessionId: string;
    expireDate: string;
    deviceStatus: number;
    deviceVerificationStatus: number;
    installationId: string;
}
export interface IUserDataSlice {
    user: IUserData;
    geoCoordinates: IGeoCoordinates | undefined;
    ipAddress: string;
}
export interface IIPAddressAndLocation {
    ip_address: string;
    country: string;
    city: string;
    latitude: number;
    longitude: number;
}
export interface IGeoCoordinates {
    latitude: string;
    longitude: string;
    position_description: string;
}
export interface IGeoCoordinatesAndIPAddress {
    geo_coordinates: IGeoCoordinates | null;
    ip_address: string;
}
