import * as react_jsx_runtime from 'react/jsx-runtime'; import { StatementHolderBusinessFields, StatementComplianceInfo } from './statement-primitives.js'; import { StatementTransaction } from './statement-transaction-table.js'; import 'react'; /** * StatementDocument - WealthX DS (L4 Template) * * The generated bank statement a broker downloads from Reports & Statements. * Which fields appear is driven by the account type - the field sets below * are transcribed from the `Sample_Open_Banking_statement_.pdf` * references on COMPANY-501 and reviewed against them (2026-08-09). * * Page grammar, shared by every account type: * header → holder | identity fields → balances | detail fields * → linked offset block (mortgage with offset only) → ledger → footer * * What varies per type is only the right-hand columns: `DETAIL_FIELDS` and * the extra balance rows in `BALANCE_EXTRAS`. The ledger is identical for * every type - Debit/Credit/Balance with signed, negative balances on loans * and cards. * * Layer: L4 Template */ type StatementAccountType = "transaction" | "savings" | "business-transaction" | "mortgage" | "mortgage-offset" | "personal-loan" | "credit-card"; type StatementLayout = "deposit" | "lending" | "credit"; /** Account type → layout family. Add a new account type here and in the field maps below. */ declare const ACCOUNT_TYPE_LAYOUT: Record; declare const ACCOUNT_TYPE_LABELS: Record; interface StatementOffsetAccount { institutionName?: string; accountName?: string; bsb?: string; accountNo?: string; /** CDR product category of the offset account, e.g. "Transactions/Savings". */ category?: string; } interface StatementAccount { accountType: StatementAccountType; /** Product name as the institution markets it, e.g. "Complete Home Loan". */ productName?: string; bsb?: string; /** Account number, or masked card number for a credit card. */ accountNo?: string; accountStatus?: string; institutionName?: string; /** * Institution logo, sourced from Basiq's institutions API: pass * `logo.links.full` from `GET https://au-api.basiq.io/public/institutions`, * which serves per-institution SVGs from its own CDN. Some of those files * are drawn on a padded square canvas, so the header sizes by height and * lets the width run. */ institutionLogo?: string; /** ISO date the account was opened. */ dateOpened?: string; /** * Balances are signed as the institution reports them: positive funds on a * deposit account, negative amounts owing on a loan or card. */ openingBalance?: number; closingBalance?: number; availableFunds?: number; /** Credit interest rate on a deposit account, as a percentage (e.g. 4.35). */ interestRate?: number; repaymentType?: string; /** ISO date the loan started. */ loanStartDate?: string; /** ISO date the loan matures. */ loanMaturityDate?: string; /** Lending rate as a percentage (e.g. 6.14). */ lendingRate?: number; /** e.g. "Variable" or "Fixed". */ rateType?: string; /** ISO date a fixed rate expires. */ fixedRateExpiry?: string; minRepaymentAmount?: number; repaymentFrequency?: string; availableRedraw?: number; offsetAccount?: StatementOffsetAccount; creditLimit?: number; /** Purchase rate as a percentage (e.g. 20.99). */ purchaseRate?: number; /** Cash advance rate as a percentage (e.g. 21.99). */ cashAdvanceRate?: number; } interface StatementPagination { /** Ledger rows printed on page one, below the summary blocks. */ firstPageRows: number; /** Ledger rows printed on each continuation page. */ rowsPerPage: number; } interface StatementDocumentProps { account: StatementAccount; transactions: StatementTransaction[]; /** ISO date the statement was generated. */ statementDate: string; statementPeriod: { from: string; to: string; }; holder?: { name?: string; address?: string; business?: StatementHolderBusinessFields; }; /** * CDR provenance printed at the foot of the last page. `consentProvidedBy` * defaults to the holder name. */ compliance?: StatementComplianceInfo; /** * Split the ledger across multiple A4 pages. Page one carries the summary * blocks plus `firstPageRows` rows; continuation pages open with a balance * brought forward row; the closing balance and compliance block print on * the last page. */ paginate?: StatementPagination; /** Tenant logo - the white-label slot on the printed page. */ companyLogo?: string; companyName?: string; className?: string; } declare function StatementDocument({ account, transactions, statementDate, statementPeriod, holder, compliance, paginate, companyLogo, companyName, className, }: StatementDocumentProps): react_jsx_runtime.JSX.Element; export { ACCOUNT_TYPE_LABELS, ACCOUNT_TYPE_LAYOUT, type StatementAccount, type StatementAccountType, StatementDocument, type StatementDocumentProps, type StatementLayout, type StatementOffsetAccount, type StatementPagination };