import { Merchant } from './merchant'; import { TextAndLang, LangMap } from './common'; export interface Branch { id: string; business_entity_id: string; virtual?: boolean; address?: Partial<{ country: string; city: string; area: string; block: string; avenue: string; street: string; building: string; floor: string; unit: string; line1: string; line2: string; postal_code: string; primary: boolean; }>; brands?: string[]; name?: LangMap; } export interface Entity { id: string; legal_name: TextAndLang[]; default?: boolean; created: number; country?: string; merchants?: Merchant[]; branches?: Branch[]; } export type DataStatus = 'editable' | 'noneditable'; export type DataVerificationStatus = 'entered' | 'not_entered'; export type EntityDataState = 'incomplete' | 'complete' | 'reviewed' | 'verified'; export type EntityOperatorStatus = 'Active' | 'Reviewed' | 'Verified' | 'Expired' | 'Archived' | 'Closed'; export interface EntityOperator { id: string; status: EntityOperatorStatus; created: number; object: string; live_mode: boolean; api_version: string; feature_version: string; name: string; business_entity_id: string; user_id: string; wallet_id: string; is_merchant: boolean; } export interface EntityWalletBankAccount { id: string; status: string; created: number; iban: string; } export interface EntityWallet { id: string; status: string; created: number; base_currency: string; country: string; settlement_by: string; primary_wallet: boolean; is_merchant: boolean; bank_account?: EntityWalletBankAccount; } export interface EntityDataStatus { type: DataStatus; license: { status: DataStatus; provider: DataStatus; type: DataStatus; number: DataStatus; additional_info: DataStatus; issuing_date: DataStatus; expiry_date: DataStatus; }; capital: { paid: DataStatus; subscribed: DataStatus; announced: DataStatus; shares: { count: DataStatus; value: DataStatus; }; }; activities: DataStatus; documents: DataStatus; location: DataStatus; legal_name: { ar?: DataStatus; en: DataStatus; }; country: DataStatus; not_for_profit: DataStatus; is_vat_acknowledged: DataStatus; tax_number: DataStatus; opened_by?: DataStatus; signed_by?: DataStatus; settlement_by: DataStatus; AOA_file_id: DataStatus; billing_address: DataStatus; } export interface EntityDataVerification { type: DataVerificationStatus; license: { status: DataVerificationStatus; provider: DataVerificationStatus; type: DataVerificationStatus; number: DataVerificationStatus; additional_info: DataVerificationStatus; issuing_date: DataVerificationStatus; expiry_date: DataVerificationStatus; }; capital: { paid: DataVerificationStatus; subscribed: DataVerificationStatus; announced: DataVerificationStatus; shares: { count: DataVerificationStatus; value: DataVerificationStatus; }; }; activities: Record; documents: Record; location: DataVerificationStatus; legal_name: { ar?: DataVerificationStatus; en: DataVerificationStatus; }; country: DataVerificationStatus; not_for_profit: DataVerificationStatus; is_vat_acknowledged: DataVerificationStatus; tax_number: DataVerificationStatus; settlement_by: DataVerificationStatus; AOA_file_id: DataVerificationStatus; billing_address: DataVerificationStatus; is_licensed: DataVerificationStatus; taxable: DataVerificationStatus; } export interface EntityDetails { id: string; status: 'New' | 'Active' | 'Reviewed' | 'Verified' | 'Expired' | 'Archived' | 'Closed'; created: number; legal_name: { ar?: string; en: string; }; country: string; type: string; not_for_profit: boolean; is_licensed: boolean; license: { type: string; number: string; provider?: string; expiry_date?: string | number; issuing_date?: string | number; additional_info?: { unified_number?: string; }; }; taxable: boolean; is_vat_acknowledged?: boolean; AOA_file_id?: string; activities?: { id: string; name: { en: string; }; isic_code: string; mcc_value: { id: string; mcc: string; name: { en: string; }; description: string; created: number; }; }[]; tax_number?: string; capital?: { paid: number; subscribed: number; announced: number; shares: { count: number; value: number; }; }; documents?: { images?: string[]; files?: string[]; type: string; id: string; status: string; created: number; }[]; wallets?: EntityWallet[]; operator?: EntityOperator; data_status?: EntityDataStatus; data_verification?: EntityDataVerification; data_state?: EntityDataState; tax_data_state?: EntityDataState; }