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 { DeprecatedLinkedTrackingCategory, DeprecatedLinkedTrackingCategory$Outbound } from "./deprecatedlinkedtrackingcategory.js";
import { LinkedCustomer } from "./linkedcustomer.js";
import { LinkedCustomerInput, LinkedCustomerInput$Outbound } from "./linkedcustomerinput.js";
import { LinkedLedgerAccount, LinkedLedgerAccount$Outbound } from "./linkedledgeraccount.js";
import { LinkedSupplier } from "./linkedsupplier.js";
import { LinkedSupplierInput, LinkedSupplierInput$Outbound } from "./linkedsupplierinput.js";
import { LinkedTaxRate } from "./linkedtaxrate.js";
import { LinkedTaxRateInput, LinkedTaxRateInput$Outbound } from "./linkedtaxrateinput.js";
import { LinkedTrackingCategory, LinkedTrackingCategory$Outbound } from "./linkedtrackingcategory.js";
import { LinkedWorktag, LinkedWorktag$Outbound } from "./linkedworktag.js";
/**
 * Debit entries are considered positive, and credit entries are considered negative.
 */
export declare const JournalEntryLineItemType: {
    readonly Debit: "debit";
    readonly Credit: "credit";
};
/**
 * Debit entries are considered positive, and credit entries are considered negative.
 */
export type JournalEntryLineItemType = ClosedEnum<typeof JournalEntryLineItemType>;
export type JournalEntryLineItem = {
    /**
     * A unique identifier for an object.
     */
    id?: string | undefined;
    /**
     * User defined description
     */
    description?: string | null | undefined;
    /**
     * Tax amount
     */
    taxAmount?: number | null | undefined;
    /**
     * Sub-total amount, normally before tax.
     */
    subTotal?: number | null | undefined;
    /**
     * Debit entries are considered positive, and credit entries are considered negative.
     */
    totalAmount?: number | null | undefined;
    /**
     * Debit entries are considered positive, and credit entries are considered negative.
     */
    type: JournalEntryLineItemType;
    taxRate?: LinkedTaxRate | undefined;
    /**
     * @deprecated field: This will be removed in a future release, please migrate away from it as soon as possible.
     */
    trackingCategory?: DeprecatedLinkedTrackingCategory | null | undefined;
    /**
     * A list of linked tracking categories.
     */
    trackingCategories?: Array<LinkedTrackingCategory | null> | null | undefined;
    ledgerAccount: LinkedLedgerAccount | null;
    /**
     * The customer this entity is linked to.
     */
    customer?: LinkedCustomer | null | undefined;
    /**
     * The supplier this entity is linked to.
     */
    supplier?: LinkedSupplier | null | undefined;
    /**
     * The ID of the department
     */
    departmentId?: string | null | undefined;
    /**
     * The ID of the location
     */
    locationId?: string | null | undefined;
    /**
     * Line number of the resource
     */
    lineNumber?: number | null | undefined;
    /**
     * Worktags of the line item. This is currently only supported in Workday.
     */
    worktags?: Array<LinkedWorktag | null> | undefined;
};
export type JournalEntryLineItemInput = {
    /**
     * User defined description
     */
    description?: string | null | undefined;
    /**
     * Tax amount
     */
    taxAmount?: number | null | undefined;
    /**
     * Sub-total amount, normally before tax.
     */
    subTotal?: number | null | undefined;
    /**
     * Debit entries are considered positive, and credit entries are considered negative.
     */
    totalAmount?: number | null | undefined;
    /**
     * Debit entries are considered positive, and credit entries are considered negative.
     */
    type: JournalEntryLineItemType;
    taxRate?: LinkedTaxRateInput | undefined;
    /**
     * @deprecated field: This will be removed in a future release, please migrate away from it as soon as possible.
     */
    trackingCategory?: DeprecatedLinkedTrackingCategory | null | undefined;
    /**
     * A list of linked tracking categories.
     */
    trackingCategories?: Array<LinkedTrackingCategory | null> | null | undefined;
    ledgerAccount: LinkedLedgerAccount | null;
    /**
     * The customer this entity is linked to.
     */
    customer?: LinkedCustomerInput | null | undefined;
    /**
     * The supplier this entity is linked to.
     */
    supplier?: LinkedSupplierInput | null | undefined;
    /**
     * The ID of the department
     */
    departmentId?: string | null | undefined;
    /**
     * The ID of the location
     */
    locationId?: string | null | undefined;
    /**
     * Line number of the resource
     */
    lineNumber?: number | null | undefined;
    /**
     * Worktags of the line item. This is currently only supported in Workday.
     */
    worktags?: Array<LinkedWorktag | null> | undefined;
};
/** @internal */
export declare const JournalEntryLineItemType$inboundSchema: z.ZodNativeEnum<typeof JournalEntryLineItemType>;
/** @internal */
export declare const JournalEntryLineItemType$outboundSchema: z.ZodNativeEnum<typeof JournalEntryLineItemType>;
/** @internal */
export declare const JournalEntryLineItem$inboundSchema: z.ZodType<JournalEntryLineItem, z.ZodTypeDef, unknown>;
export declare function journalEntryLineItemFromJSON(jsonString: string): SafeParseResult<JournalEntryLineItem, SDKValidationError>;
/** @internal */
export type JournalEntryLineItemInput$Outbound = {
    description?: string | null | undefined;
    tax_amount?: number | null | undefined;
    sub_total?: number | null | undefined;
    total_amount?: number | null | undefined;
    type: string;
    tax_rate?: LinkedTaxRateInput$Outbound | undefined;
    tracking_category?: DeprecatedLinkedTrackingCategory$Outbound | null | undefined;
    tracking_categories?: Array<LinkedTrackingCategory$Outbound | null> | null | undefined;
    ledger_account: LinkedLedgerAccount$Outbound | null;
    customer?: LinkedCustomerInput$Outbound | null | undefined;
    supplier?: LinkedSupplierInput$Outbound | null | undefined;
    department_id?: string | null | undefined;
    location_id?: string | null | undefined;
    line_number?: number | null | undefined;
    worktags?: Array<LinkedWorktag$Outbound | null> | undefined;
};
/** @internal */
export declare const JournalEntryLineItemInput$outboundSchema: z.ZodType<JournalEntryLineItemInput$Outbound, z.ZodTypeDef, JournalEntryLineItemInput>;
export declare function journalEntryLineItemInputToJSON(journalEntryLineItemInput: JournalEntryLineItemInput): string;
//# sourceMappingURL=journalentrylineitem.d.ts.map