import { AutoTransferRule, AutoTransferRuleType, FundingAccount, TreasuryAccount } from '@zeniai/client-epic-state';
/** Resolve from-account label and mask from rule.source account id via transferMoneyParties; fallback to rule.fromAccountLabel/Mask */
export declare function getFromAccountDisplay(rule: AutoTransferRule, transferMoneyParties: FundingAccount[]): {
    label: string;
    mask: string;
};
/** Resolve destination (maintain balance in / to) account label and mask from rule by searching transferMoneyParties */
export declare function getDestinationAccountDisplay(rule: AutoTransferRule, transferMoneyParties: FundingAccount[], treasuryAccount?: TreasuryAccount): {
    label: string;
    mask: string;
};
/** Destination item for percentage_of_balance: percent and account display from transferMoneyParties */
export interface AllocationDisplay {
    accountId: string | undefined;
    accountLabel: string;
    accountMask: string;
    percent: number;
}
/** Build allocation display from rule.destination_bank_account_metadata by resolving account ids in transferMoneyParties */
export declare function getAllocationsFromDestinations(rule: AutoTransferRule, transferMoneyParties: FundingAccount[], treasuryAccount?: TreasuryAccount): AllocationDisplay[];
/** Non-deleted rules (active or inactive) that count toward duplicate checks, excluding the rule being edited (if any). */
export declare function getOtherActiveAutoTransferRulesForDuplicateCheck(rules: AutoTransferRule[], excludeRuleId: string | undefined): AutoTransferRule[];
/** Optional predicates to mark dropdown options disabled to prevent duplicate rules. */
export interface DuplicateDisablePickers {
    disableFrom?: (accountId: string) => boolean;
    disableTo?: (accountId: string) => boolean;
}
/**
 * Duplicate rules (by type):
 * - minimum_balance: another active rule with the same destination account
 * - percentage_of_balance: another active rule with the same source account
 * - recurring: another active rule with the same source + destination pair
 */
export declare function duplicateDisableForRuleType(createRuleType: AutoTransferRuleType, otherActiveRules: AutoTransferRule[], selectedSourceId: string | undefined, selectedDestinationId: string | undefined): DuplicateDisablePickers | undefined;
/** Rules that apply to this deposit account (destination or allocation target). */
export declare function getAutoTransferRulesForAccount(accountId: string, rules: AutoTransferRule[]): AutoTransferRule[];
export interface AccountListRuleStrings {
    percentToDestination: string;
    transferAmountToDestination: string;
}
/**
 * One-line summary for the checking-account list (matches list column design).
 */
export declare function buildAccountListRuleSummaryLine(rule: AutoTransferRule, accountId: string, transferMoneyParties: FundingAccount[], treasuryAccount: TreasuryAccount | undefined, copy: AccountListRuleStrings): string;
