import { Amount } from '../../../commonStateTypes/amount'; import { FetchStateAndError, FetchedState, ID } from '../../../commonStateTypes/common'; import { ZeniDate } from '../../../zeniDayJS'; import { CommonHistoryView } from '../commonHistoryView/commonHistory'; import { FundingAccount } from '../commonSetup/setupViewState'; import { TreasuryAccount } from '../treasury/treasuryTransferMoney/treasuryTransferMoneyState'; import { ReviewTransferDetail } from '../zeniAccounts/transferDetail/transferDetailState'; import { AutoTransferRuleFrequency, AutoTransferRuleType } from './autoTransferRuleTypes'; export interface AutoTransferRuleLocalData { amount?: Amount; destinationAccount?: FundingAccount | TreasuryAccount; destinationAccountWithPercentAllocation?: { account: FundingAccount | TreasuryAccount; percentage: number; }[]; firstTransferDate?: ZeniDate; frequency?: AutoTransferRuleFrequency; ruleType?: AutoTransferRuleType; sourceAccount?: FundingAccount | TreasuryAccount; } export interface AutoTransferRule { amount: number; autoTransferRuleId: ID; currencyCode: string; currencySymbol: string; destinationBankAccountId: string | null; frequency: AutoTransferRuleFrequency; isActive: boolean; isDeleted: boolean; lastRunTime: string | null; ruleType: AutoTransferRuleType; sourceBankAccountId: string; sourceBankAccountType: string; createTime?: ZeniDate; destinationBankAccountMetadata?: DestinationBankAccountMetadata[]; destinationBankAccountType?: string; nextTransferDate?: ZeniDate; updateTime?: ZeniDate; } export interface DestinationBankAccountMetadata { accountId: string; accountType: string; percentage: number; } export interface AutoTransferRulesState extends FetchedState { autoTransferReviewDetail: ReviewTransferDetail; createRuleFetchState: FetchStateAndError; historyByRuleId: Record; ruleDeleteStatusById: Record; rules: AutoTransferRule[]; ruleUpdateLocalData: AutoTransferRuleLocalData; ruleUpdateStatusById: Record; }