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 { CreditOrDebit } from "./creditordebit.js";
/**
 * The current status of the bank feed statement.
 */
export declare const StatementStatus: {
    readonly Pending: "pending";
    readonly Rejected: "rejected";
    readonly Success: "success";
};
/**
 * The current status of the bank feed statement.
 */
export type StatementStatus = ClosedEnum<typeof StatementStatus>;
/**
 * Type of transaction.
 */
export declare const BankFeedStatementTransactionType: {
    readonly Credit: "credit";
    readonly Debit: "debit";
    readonly Deposit: "deposit";
    readonly Transfer: "transfer";
    readonly Payment: "payment";
    readonly Other: "other";
};
/**
 * Type of transaction.
 */
export type BankFeedStatementTransactionType = ClosedEnum<typeof BankFeedStatementTransactionType>;
export type Transactions = {
    /**
     * The date of the transaction - YYYY:MM::DDThh:mm:ss.sTZD
     */
    postedDate: Date;
    /**
     * A description of the transaction.
     */
    description?: string | undefined;
    /**
     * The amount of the transaction.
     */
    amount: number;
    /**
     * Whether the amount is a credit or debit.
     */
    creditOrDebit: CreditOrDebit;
    /**
     * The ID of the source transaction.
     */
    sourceTransactionId: string;
    /**
     * The counterparty of the transaction.
     */
    counterparty?: string | undefined;
    /**
     * The reference of the transaction.
     */
    reference?: string | undefined;
    /**
     * Type of transaction.
     */
    transactionType?: BankFeedStatementTransactionType | undefined;
};
export type BankFeedStatement = {
    /**
     * A unique identifier for an object.
     */
    id: string;
    /**
     * The ID of the bank feed account this statement belongs to.
     */
    bankFeedAccountId?: string | undefined;
    /**
     * The current status of the bank feed statement.
     */
    status?: StatementStatus | undefined;
    /**
     * Start date of the bank feed statement.
     */
    startDate?: Date | undefined;
    /**
     * End date of the bank feed statement.
     */
    endDate?: Date | undefined;
    /**
     * Balance amount at the start of the period.
     */
    startBalance?: number | undefined;
    /**
     * Whether the amount is a credit or debit.
     */
    startBalanceCreditOrDebit?: CreditOrDebit | undefined;
    /**
     * Balance amount at the end of the period.
     */
    endBalance?: number | undefined;
    /**
     * Whether the amount is a credit or debit.
     */
    endBalanceCreditOrDebit?: CreditOrDebit | undefined;
    /**
     * List of transactions in the bank feed statement.
     */
    transactions?: Array<Transactions> | undefined;
    /**
     * The date and time when the object was created.
     */
    createdAt?: Date | null | undefined;
    /**
     * The user who created the object.
     */
    createdBy?: string | null | undefined;
    /**
     * The date and time when the object was last updated.
     */
    updatedAt?: Date | null | undefined;
    /**
     * The user who last updated the object.
     */
    updatedBy?: string | null | undefined;
};
export type BankFeedStatementInput = {
    /**
     * The ID of the bank feed account this statement belongs to.
     */
    bankFeedAccountId?: string | undefined;
    /**
     * The current status of the bank feed statement.
     */
    status?: StatementStatus | undefined;
    /**
     * Start date of the bank feed statement.
     */
    startDate?: Date | undefined;
    /**
     * End date of the bank feed statement.
     */
    endDate?: Date | undefined;
    /**
     * Balance amount at the start of the period.
     */
    startBalance?: number | undefined;
    /**
     * Whether the amount is a credit or debit.
     */
    startBalanceCreditOrDebit?: CreditOrDebit | undefined;
    /**
     * Balance amount at the end of the period.
     */
    endBalance?: number | undefined;
    /**
     * Whether the amount is a credit or debit.
     */
    endBalanceCreditOrDebit?: CreditOrDebit | undefined;
    /**
     * List of transactions in the bank feed statement.
     */
    transactions?: Array<Transactions> | undefined;
};
/** @internal */
export declare const StatementStatus$inboundSchema: z.ZodNativeEnum<typeof StatementStatus>;
/** @internal */
export declare const StatementStatus$outboundSchema: z.ZodNativeEnum<typeof StatementStatus>;
/** @internal */
export declare const BankFeedStatementTransactionType$inboundSchema: z.ZodNativeEnum<typeof BankFeedStatementTransactionType>;
/** @internal */
export declare const BankFeedStatementTransactionType$outboundSchema: z.ZodNativeEnum<typeof BankFeedStatementTransactionType>;
/** @internal */
export declare const Transactions$inboundSchema: z.ZodType<Transactions, z.ZodTypeDef, unknown>;
/** @internal */
export type Transactions$Outbound = {
    posted_date: string;
    description?: string | undefined;
    amount: number;
    credit_or_debit: string;
    source_transaction_id: string;
    counterparty?: string | undefined;
    reference?: string | undefined;
    transaction_type?: string | undefined;
};
/** @internal */
export declare const Transactions$outboundSchema: z.ZodType<Transactions$Outbound, z.ZodTypeDef, Transactions>;
export declare function transactionsToJSON(transactions: Transactions): string;
export declare function transactionsFromJSON(jsonString: string): SafeParseResult<Transactions, SDKValidationError>;
/** @internal */
export declare const BankFeedStatement$inboundSchema: z.ZodType<BankFeedStatement, z.ZodTypeDef, unknown>;
export declare function bankFeedStatementFromJSON(jsonString: string): SafeParseResult<BankFeedStatement, SDKValidationError>;
/** @internal */
export type BankFeedStatementInput$Outbound = {
    bank_feed_account_id?: string | undefined;
    status?: string | undefined;
    start_date?: string | undefined;
    end_date?: string | undefined;
    start_balance?: number | undefined;
    start_balance_credit_or_debit?: string | undefined;
    end_balance?: number | undefined;
    end_balance_credit_or_debit?: string | undefined;
    transactions?: Array<Transactions$Outbound> | undefined;
};
/** @internal */
export declare const BankFeedStatementInput$outboundSchema: z.ZodType<BankFeedStatementInput$Outbound, z.ZodTypeDef, BankFeedStatementInput>;
export declare function bankFeedStatementInputToJSON(bankFeedStatementInput: BankFeedStatementInput): string;
//# sourceMappingURL=bankfeedstatement.d.ts.map