import type { components } from '#api/transferInstruments/transferInstruments.contract';
import type { Capability, CapabilityName } from '../../models/api/capability';
import type { DocumentDetail } from '../../models/api/document';
import type { CountryCode } from '../../../types/datasets/country-code';
import type { Currency } from '../../../types/datasets/currency';
import type { AccountIdentification } from './accountIdentification';
import type { Problem } from './problem';
type TransferInstrumentDto = components['schemas']['TransferInstrumentDto'];
type BankAccountInfoDto = components['schemas']['BankAccountInfoDto'];
export interface BankAccount extends Omit<BankAccountInfoDto, 'accountIdentification' | 'countryCode'> {
    accountIdentification: AccountIdentification;
    countryCode: CountryCode;
    preferredCurrencyCode?: Currency;
}
export interface TransferInstrument extends Omit<TransferInstrumentDto, 'bankAccount' | 'documentDetails' | 'capabilities' | 'problems'> {
    bankAccount: BankAccount;
    documentDetails?: DocumentDetail[];
    capabilities?: Partial<Record<CapabilityName, Capability>>;
    problems?: Problem[];
}
export interface ExistingTransferInstrument extends TransferInstrument {
    id: string;
}
export interface TransferInstrumentOverview {
    id: string;
    accountIdentifier: string;
    realLastFour?: string;
    trustedSource?: boolean;
}
export declare function isTransferInstrument(account: TransferInstrument | TransferInstrumentOverview): account is TransferInstrument;
export declare const isInstantVerifiedAccount: (account: TransferInstrument | TransferInstrumentOverview) => boolean;
export declare const getObscuredAccountNumber: ({ accountIdentifier, realLastFour, }: TransferInstrumentOverview) => string;
export {};
