import Account from './Account';
import Results from './Results';
import { AccountObjectKeys, OrderDirection, type AccountObject } from './types';
declare class Snowball {
    accounts: Account[];
    additionalPayment: number;
    balanceStart: number;
    currentBalance: number;
    snowballAmount: number;
    strategy: string;
    constructor(accounts: AccountObject[], additionalPayment?: number, strategy?: string);
    parseAccounts(accounts: AccountObject[]): {
        name: string;
        balance: number;
        interest: number;
        minPayment: number;
    }[];
    sortAccounts(accounts: AccountObject[], key?: AccountObjectKeys, order?: OrderDirection): AccountObject[];
    getSortKeyAndOrder(): {
        key: AccountObjectKeys;
        order: OrderDirection;
    };
    setAccounts(accounts: AccountObject[]): Account[];
    getCurrentBalance(): number;
    makePaymentForAccount(account: Account): {
        balanceStart: number;
        balanceEnd: number;
        accruedInterest: number;
        additionalPayment: number;
        paymentAmount: number;
        minPayment: number;
        name: string;
    };
    makePaymentsForMonth(): {
        balance: number;
        accounts: {
            balanceStart: number;
            balanceEnd: number;
            accruedInterest: number;
            additionalPayment: number;
            paymentAmount: number;
            minPayment: number;
            name: string;
        }[];
    };
    /**
     * Generates a payment plan
     * @returns {Payment[]} - An array of payments
     */
    createPaymentPlan(): Results;
}
export = Snowball;
