@cranberry-money/shared-types
Version:
Shared TypeScript type definitions for Blueberry platform
175 lines • 6.58 kB
TypeScript
import type { Portfolio, AssetAllocation, UserProfile, TaxResidency, CreateTaxResidency, InvestmentPreference, CreateInvestmentPreference, Country, InstrumentFilters, CashAccount, BaseFilters, DateRangeFilters, NumericRangeFilters, TradeActionFilters, FormValidation, MessageFieldValidation, ExtendedFieldValidation, DateFieldValidation, FieldValidation, AddressFieldValidation, PhoneFieldValidation, PortfolioTemplate, TargetAssetAllocation, WithdrawalRequest, WithdrawalAssetLiquidation, CreateWithdrawalAssetLiquidation, BankAccount, BankAccountQueryParams, CashAccountTransaction, CashAccountTransactionQueryParams, RebalancingTradesGenerationResponse, TransactionFilters as ImportedTransactionFilters } from '../../index';
import type { WithdrawalStatus, LiquidationStatus, TradeStatus } from '../../ui/badge-status';
import type { CashAccountTransactionType } from '@cranberry-money/shared-constants';
export interface AllocationState {
searchQuery: string;
selectedInstruments: Set<string>;
allocations: Record<string, number>;
showFilters: boolean;
filters: InstrumentFilters;
}
export interface EnhancedAllocationState extends AllocationState {
serverFilters: InstrumentFilters;
}
export interface PortfolioSelectionState {
selectedTemplateUuid: string | null;
viewingDetailsForUuid: string | null;
}
export interface AllocationChartData {
instrumentUuid: string;
symbol: string;
name: string;
percentage: number;
color: string;
}
export interface FinancialSummary {
availableCashBalance: number;
estimatedBuyCost: number;
estimatedSellValue: number;
totalWithdrawalAmount: number;
}
export interface InstrumentHolding {
instrumentUuid: string;
instrumentSymbol: string;
instrumentName: string;
currentPrice: number;
currentQuantity: number;
targetQuantity: number;
}
export interface CashSummary {
totalBalance: number;
totalDeposits: number;
totalWithdrawals: number;
netTransactionAmount: number;
transactionCount: number;
availableAccounts: CashAccount[];
}
export interface HistoricalDataPoint {
date: string;
price: string;
change: string;
changePercent: string;
}
export interface InstrumentPerformanceData {
instrumentUuid: string;
symbol: string;
name: string;
percentage: string;
historicalData: HistoricalDataPoint[];
color: string;
isLoading: boolean;
isError: boolean;
error?: string;
}
export interface InstrumentData {
instrumentUuid: string;
symbol: string;
name: string;
percentage: string;
color: string;
isLoading: boolean;
isError: boolean;
historicalData: unknown[];
}
export interface AllocationWithInstrument extends AssetAllocation {
instrumentName: string;
instrumentSymbol: string;
}
export interface ReviewData {
userProfile: UserProfile | null;
taxResidencies: TaxResidency[];
investmentPreferences: InvestmentPreference | null;
portfolio: Portfolio | null;
allocations: AssetAllocation[];
countries: Country[];
citizenshipCountry: Country | null;
}
export interface ReviewAllocation {
uuid: string;
instrumentName: string;
instrumentSymbol: string;
percentage: string;
}
export interface TemplateWithAllocations {
template: PortfolioTemplate;
allocations?: TargetAssetAllocation[];
isLoading: boolean;
isError: boolean;
}
export interface DocumentUUIDs {
[key: string]: string | null;
}
export interface InvestmentPreferenceFormState extends CreateInvestmentPreference {
userProfileId: string;
}
export interface TaxResidencyForm extends CreateTaxResidency {
localUuid: string;
backendUuid?: string;
}
export interface InvestmentPreferenceFormValidation extends FormValidation {
investmentHorizon: MessageFieldValidation;
riskTolerance: MessageFieldValidation;
investmentExperience: MessageFieldValidation;
investmentAmount: MessageFieldValidation;
sourceOfFunds: MessageFieldValidation;
}
export interface PortfolioSelectionFormValidation extends FormValidation {
selectedTemplate: MessageFieldValidation;
}
export interface UserProfileFormValidation extends FormValidation {
fullName: ExtendedFieldValidation;
dateOfBirth: DateFieldValidation;
citizenshipCountry: FieldValidation;
residentialAddress: AddressFieldValidation;
phoneNumber: PhoneFieldValidation;
}
export interface TokenValidation {
isValid: boolean;
isEmpty: boolean;
isValidFormat: boolean;
}
export interface TransactionFilters extends BaseFilters, DateRangeFilters, NumericRangeFilters {
transactionType?: CashAccountTransactionType;
}
export interface TradeFilters extends BaseFilters, DateRangeFilters, TradeActionFilters, NumericRangeFilters {
status?: TradeStatus;
settlementStartDate?: string;
settlementEndDate?: string;
currency?: string;
}
export interface TargetTradeFilters extends BaseFilters, DateRangeFilters, TradeActionFilters {
instrumentUuid?: string;
}
export interface BlueberryTargetTradeFilters extends TargetTradeFilters {
status?: string;
min_value?: number;
max_value?: number;
}
export interface BlueberryPageTransactionFilters extends Omit<ImportedTransactionFilters, 'transactionType'> {
transactionType?: CashAccountTransactionType;
}
export interface BlueberryBankAccount extends Omit<BankAccount, 'accountType'> {
accountType: string;
}
export interface BlueberryBankAccountQueryParams extends Omit<BankAccountQueryParams, 'account_type'> {
account_type?: string;
}
export interface BlueberryWithdrawalRequest extends Omit<WithdrawalRequest, 'status'> {
status: WithdrawalStatus;
}
export interface BlueberryWithdrawalAssetLiquidation extends Omit<WithdrawalAssetLiquidation, 'liquidationStatus'> {
liquidationStatus: LiquidationStatus;
}
export interface BlueberryWithdrawalAssetLiquidationPayload extends Omit<CreateWithdrawalAssetLiquidation, 'liquidationStatus'> {
liquidationStatus?: LiquidationStatus;
}
export interface BlueberryCashAccountTransaction extends Omit<CashAccountTransaction, 'transactionType'> {
transactionType: CashAccountTransactionType;
}
export interface BlueberryCashAccountTransactionQueryParams extends Omit<CashAccountTransactionQueryParams, 'transaction_type'> {
transaction_type?: CashAccountTransactionType;
}
export interface BlueberryRebalancingTradesGenerationResponse extends Omit<RebalancingTradesGenerationResponse, 'errorType'> {
errorType?: string;
}
//# sourceMappingURL=view-models.d.ts.map