import { IDapiConfigurations, IAccount, ICard, IBeneficiary, IWireBeneficiary, IDapiConnection, IPair, IAccountResponse, IIdentityResponse, ITransactionResponse, IAccountsMetadataResponse, DapiEnvironment, IBankBeneficiaryResponse, IBankWireBeneficiaryResponse, IDapiResult, DapiEndpoint, IDapiQueryParameter, ITransferResponse, ICardResponse, ICardBalance, ILineAddress, IAccountBalance } from './internal/types';
export declare class DapiConfigurations implements IDapiConfigurations {
    environment?: DapiEnvironment;
    countries?: string[];
    endpoints?: Map<DapiEndpoint, string> | undefined;
    endPointExtraQueryItems?: Map<DapiEndpoint, IDapiQueryParameter[]> | undefined;
    endPointExtraHeaderFields?: Map<DapiEndpoint, Map<string, string>> | undefined;
    endPointExtraBody?: Map<DapiEndpoint, Map<string, any>> | undefined;
    showLogos?: boolean | undefined;
    showCloseButton?: boolean | undefined;
    showAddButton?: boolean | undefined;
    showTransferSuccessfulResult?: boolean | undefined;
    showTransferErrorResult?: boolean | undefined;
    showExperimentalBanks?: boolean;
    postSuccessfulConnectionLoadingText?: string;
    constructor(countries: string[], environment?: DapiEnvironment);
}
export declare class DapiConnection implements IDapiConnection {
    private _clientUserID;
    private _userID;
    private _bankID;
    private _swiftCode;
    private _country;
    private _bankShortName;
    private _bankFullName;
    private _accounts;
    private _cards;
    private _fullLogo;
    private _halfLogo;
    private _miniLogo;
    get clientUserID(): string;
    get userID(): string;
    get bankID(): string;
    get swiftCode(): string;
    get country(): string;
    get bankShortName(): string;
    get bankFullName(): string;
    get accounts(): IAccount[];
    get cards(): ICard[];
    get fullLogo(): string;
    get halfLogo(): string;
    get miniLogo(): string;
    static create(jsonConnectionDetails: string): Promise<IDapiConnection>;
    constructor(clientUserID: string, userID: string, bankID: string, swiftCode: string, country: string, bankShortName: string, bankFullName: string, accounts: IAccount[], cards: ICard[], fullLogo: string, halfLogo: string, miniLogo: string);
    getParameters(): Promise<string>;
    getIdentity(): Promise<IIdentityResponse>;
    getAccounts(): Promise<IAccountResponse>;
    getCards(): Promise<ICardResponse>;
    getTransactionsForAccount(account: IAccount, startDate: Date, endDate: Date): Promise<ITransactionResponse>;
    getTransactionsForCard(card: ICard, startDate: Date, endDate: Date): Promise<ITransactionResponse>;
    getAccountsMetadata(): Promise<IAccountsMetadataResponse>;
    delete(): Promise<void>;
    createBeneficiary(beneficiary: IBeneficiary): Promise<IDapiResult>;
    getBeneficiaries(): Promise<IBankBeneficiaryResponse>;
    createTransfer(fromAccount: IAccount | null, toBeneficiary: IBeneficiary | null, amount: number, remark: string | null): Promise<ITransferResponse>;
    createTransferToExistingBeneficiary(fromAccount: IAccount, toBeneficiaryID: string, amount: number, remark: string | null): Promise<ITransferResponse>;
    createWireBeneficiary(beneficiary: IWireBeneficiary): Promise<IDapiResult>;
    getWireBeneficiaries(): Promise<IBankWireBeneficiaryResponse>;
    createWireTransfer(toBeneficiary: IWireBeneficiary, fromAccount: IAccount | null, amount: number, remark: string | null): Promise<ITransferResponse>;
    createWireTransferToExistingBeneficiary(fromAccount: IAccount, toBeneficiaryID: string, amount: number, remark: string | null): Promise<ITransferResponse>;
    private getAccount;
}
export declare class DapiPair implements IPair {
    code: string;
    name: string;
    constructor(code: string, name: string);
}
export declare class DapiLineAddress implements ILineAddress {
    line1: string;
    line2: string;
    line3: string;
    constructor(line1: string, line2: string, line3: string);
}
export declare class DapiBeneficiary implements IBeneficiary {
    linesAddress: ILineAddress;
    accountNumber: string;
    name: string;
    bankName: string;
    swiftCode: string;
    iban: string;
    phoneNumber: string;
    country: string;
    branchAddress: string;
    branchName: string;
    nickname?: string | null;
    constructor(linesAddress: ILineAddress, accountNumber: string, name: string, bankName: string, swiftCode: string, iban: string, phoneNumber: string, country: string, branchAddress: string, branchName: string, nickname?: string | null);
}
export declare class DapiWireBeneficiary implements IWireBeneficiary {
    linesAddress: ILineAddress;
    name: string;
    firstName: string;
    lastName: string;
    nickname: string;
    city: string;
    state: string;
    country: string;
    zipCode: string;
    receiverType: string;
    receiverAccountType: string;
    routingNumber: string;
    accountNumber: string;
    constructor(linesAddress: ILineAddress, name: string, firstName: string, lastName: string, nickname: string, city: string, state: string, country: string, zipCode: string, receiverType: string, receiverAccountType: string, routingNumber: string, accountNumber: string);
}
export declare class DapiAccount implements IAccount {
    balance: IAccountBalance;
    iban: string | null;
    number: string | null;
    currency: IPair;
    type: string;
    id: string;
    name: string;
    constructor(balance: IAccountBalance, iban: string | null, number: string | null, currency: IPair, type: string, id: string, name: string);
}
export declare class DapiCardBalance implements ICardBalance {
    readonly amountDue: number;
    readonly availableBalance: number;
    readonly outstandingBalance: number;
    readonly dueDate: string;
    constructor(amountDue: number, availableBalance: number, outstandingBalance: number, dueDate: string);
}
export declare class DapiCard implements ICard {
    balance: DapiCardBalance;
    cardNumber: string;
    creditLimit: string;
    currency: IPair;
    expiryDate: string;
    id: string;
    name: string;
    status: string;
    type: string;
    constructor(balance: DapiCardBalance, cardNumber: string, creditLimit: string, currency: IPair, expiryDate: string, id: string, name: string, status: string, type: string);
}
export default class Dapi {
    private static _instance;
    static get instance(): Dapi;
    private constructor();
    start(appKey: string, clientUserID: string, configurations: IDapiConfigurations): Promise<void>;
    isStarted(): Promise<boolean>;
    presentConnect(bankID?: string | null): void;
    setClientUserID(clientUserID: string): void;
    clientUserID(): Promise<string>;
    setConfigurations(configurations: IDapiConfigurations): void;
    configurations(): Promise<IDapiConfigurations>;
    dismissConnect(): void;
    getConnections(): Promise<IDapiConnection[]>;
}
export * from './internal/types';
