import * as z from "zod/v3";
import { ClosedEnum } from "../../types/enums.js";
import { Result as SafeParseResult } from "../../types/fp.js";
import { SDKValidationError } from "../errors/sdkvalidationerror.js";
import { Currency } from "./currency.js";
import { CustomField, CustomField$Outbound } from "./customfield.js";
import { LinkedLedgerAccount, LinkedLedgerAccount$Outbound } from "./linkedledgeraccount.js";
/**
 * The type of bank account
 */
export declare const AccountingBankAccountAccountType: {
    readonly Checking: "checking";
    readonly Savings: "savings";
    readonly CreditCard: "credit_card";
    readonly MoneyMarket: "money_market";
    readonly LineOfCredit: "line_of_credit";
    readonly Other: "other";
    readonly Cash: "cash";
};
/**
 * The type of bank account
 */
export type AccountingBankAccountAccountType = ClosedEnum<typeof AccountingBankAccountAccountType>;
/**
 * The status of the bank account
 */
export declare const AccountingBankAccountStatus: {
    readonly Active: "active";
    readonly Inactive: "inactive";
    readonly Closed: "closed";
};
/**
 * The status of the bank account
 */
export type AccountingBankAccountStatus = ClosedEnum<typeof AccountingBankAccountStatus>;
export type AccountingBankAccount = {
    /**
     * A unique identifier for an object.
     */
    id: string;
    /**
     * Display ID for the bank account
     */
    displayId?: string | null | undefined;
    /**
     * The name of the bank account
     */
    name?: string | null | undefined;
    /**
     * The bank account number
     */
    accountNumber?: string | null | undefined;
    /**
     * The type of bank account
     */
    accountType?: AccountingBankAccountAccountType | undefined;
    ledgerAccount?: LinkedLedgerAccount | null | undefined;
    /**
     * The name of the bank or financial institution
     */
    bankName?: string | null | undefined;
    /**
     * Indicates the associated currency for an amount of money. Values correspond to [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217).
     */
    currency?: Currency | null | undefined;
    /**
     * The current balance of the bank account
     */
    balance?: number | null | undefined;
    /**
     * The available balance (considering pending transactions and overdraft)
     */
    availableBalance?: number | null | undefined;
    /**
     * The overdraft limit for the account
     */
    overdraftLimit?: number | null | undefined;
    /**
     * Bank routing number (US)
     */
    routingNumber?: string | null | undefined;
    /**
     * International Bank Account Number
     */
    iban?: string | null | undefined;
    /**
     * Bank Identifier Code / SWIFT Code
     */
    bic?: string | null | undefined;
    /**
     * Bank State Branch number (Australia/New Zealand)
     */
    bsbNumber?: string | null | undefined;
    /**
     * Bank branch identifier
     */
    branchIdentifier?: string | null | undefined;
    /**
     * Bank code assigned by central bank
     */
    bankCode?: string | null | undefined;
    /**
     * Country code according to ISO 3166-1 alpha-2.
     */
    country?: string | null | undefined;
    /**
     * The status of the bank account
     */
    status?: AccountingBankAccountStatus | null | undefined;
    /**
     * Description or notes about the bank account
     */
    description?: string | null | undefined;
    customFields?: Array<CustomField> | undefined;
    /**
     * When custom mappings are configured on the resource, the result is included here.
     */
    customMappings?: {
        [k: string]: any;
    } | null | undefined;
    /**
     * The date and time when the object was created.
     */
    createdAt?: Date | null | undefined;
    /**
     * The date and time when the object was last updated.
     */
    updatedAt?: Date | null | undefined;
    /**
     * The user who created the object.
     */
    createdBy?: string | null | undefined;
    /**
     * The user who last updated the object.
     */
    updatedBy?: string | null | undefined;
};
export type AccountingBankAccountInput = {
    /**
     * Display ID for the bank account
     */
    displayId?: string | null | undefined;
    /**
     * The name of the bank account
     */
    name?: string | null | undefined;
    /**
     * The bank account number
     */
    accountNumber?: string | null | undefined;
    /**
     * The type of bank account
     */
    accountType?: AccountingBankAccountAccountType | undefined;
    ledgerAccount?: LinkedLedgerAccount | null | undefined;
    /**
     * The name of the bank or financial institution
     */
    bankName?: string | null | undefined;
    /**
     * Indicates the associated currency for an amount of money. Values correspond to [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217).
     */
    currency?: Currency | null | undefined;
    /**
     * The current balance of the bank account
     */
    balance?: number | null | undefined;
    /**
     * The available balance (considering pending transactions and overdraft)
     */
    availableBalance?: number | null | undefined;
    /**
     * The overdraft limit for the account
     */
    overdraftLimit?: number | null | undefined;
    /**
     * Bank routing number (US)
     */
    routingNumber?: string | null | undefined;
    /**
     * International Bank Account Number
     */
    iban?: string | null | undefined;
    /**
     * Bank Identifier Code / SWIFT Code
     */
    bic?: string | null | undefined;
    /**
     * Bank State Branch number (Australia/New Zealand)
     */
    bsbNumber?: string | null | undefined;
    /**
     * Bank branch identifier
     */
    branchIdentifier?: string | null | undefined;
    /**
     * Bank code assigned by central bank
     */
    bankCode?: string | null | undefined;
    /**
     * Country code according to ISO 3166-1 alpha-2.
     */
    country?: string | null | undefined;
    /**
     * The status of the bank account
     */
    status?: AccountingBankAccountStatus | null | undefined;
    /**
     * Description or notes about the bank account
     */
    description?: string | null | undefined;
    customFields?: Array<CustomField> | undefined;
};
/** @internal */
export declare const AccountingBankAccountAccountType$inboundSchema: z.ZodNativeEnum<typeof AccountingBankAccountAccountType>;
/** @internal */
export declare const AccountingBankAccountAccountType$outboundSchema: z.ZodNativeEnum<typeof AccountingBankAccountAccountType>;
/** @internal */
export declare const AccountingBankAccountStatus$inboundSchema: z.ZodNativeEnum<typeof AccountingBankAccountStatus>;
/** @internal */
export declare const AccountingBankAccountStatus$outboundSchema: z.ZodNativeEnum<typeof AccountingBankAccountStatus>;
/** @internal */
export declare const AccountingBankAccount$inboundSchema: z.ZodType<AccountingBankAccount, z.ZodTypeDef, unknown>;
export declare function accountingBankAccountFromJSON(jsonString: string): SafeParseResult<AccountingBankAccount, SDKValidationError>;
/** @internal */
export type AccountingBankAccountInput$Outbound = {
    display_id?: string | null | undefined;
    name?: string | null | undefined;
    account_number?: string | null | undefined;
    account_type?: string | undefined;
    ledger_account?: LinkedLedgerAccount$Outbound | null | undefined;
    bank_name?: string | null | undefined;
    currency?: string | null | undefined;
    balance?: number | null | undefined;
    available_balance?: number | null | undefined;
    overdraft_limit?: number | null | undefined;
    routing_number?: string | null | undefined;
    iban?: string | null | undefined;
    bic?: string | null | undefined;
    bsb_number?: string | null | undefined;
    branch_identifier?: string | null | undefined;
    bank_code?: string | null | undefined;
    country?: string | null | undefined;
    status?: string | null | undefined;
    description?: string | null | undefined;
    custom_fields?: Array<CustomField$Outbound> | undefined;
};
/** @internal */
export declare const AccountingBankAccountInput$outboundSchema: z.ZodType<AccountingBankAccountInput$Outbound, z.ZodTypeDef, AccountingBankAccountInput>;
export declare function accountingBankAccountInputToJSON(accountingBankAccountInput: AccountingBankAccountInput): string;
//# sourceMappingURL=accountingbankaccount.d.ts.map