import * as z from "zod/v3";
import { ClosedEnum } from "../../types/enums.js";
import { Result as SafeParseResult } from "../../types/fp.js";
import { RFCDate } from "../../types/rfcdate.js";
import { SDKValidationError } from "../errors/sdkvalidationerror.js";
import { CustomField, CustomField$Outbound } from "./customfield.js";
import { LinkedInvoiceItem, LinkedInvoiceItem$Outbound } from "./linkedinvoiceitem.js";
import { LinkedLedgerAccount, LinkedLedgerAccount$Outbound } from "./linkedledgeraccount.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";
/**
 * Item type
 */
export declare const InvoiceLineItemType: {
    readonly SalesItem: "sales_item";
    readonly Discount: "discount";
    readonly Info: "info";
    readonly SubTotal: "sub_total";
    readonly Service: "service";
    readonly Other: "other";
};
/**
 * Item type
 */
export type InvoiceLineItemType = ClosedEnum<typeof InvoiceLineItemType>;
export type InvoiceLineItem = {
    /**
     * A unique identifier for an object.
     */
    id?: string | null | undefined;
    /**
     * Row ID
     */
    rowId?: string | undefined;
    /**
     * User defined item code
     */
    code?: string | null | undefined;
    /**
     * Line number of the resource
     */
    lineNumber?: number | null | undefined;
    /**
     * User defined description
     */
    description?: string | null | undefined;
    /**
     * Item type
     */
    type?: InvoiceLineItemType | null | undefined;
    /**
     * Tax amount
     */
    taxAmount?: number | null | undefined;
    /**
     * Total amount of the line item
     */
    totalAmount?: number | null | undefined;
    quantity?: number | null | undefined;
    unitPrice?: number | null | undefined;
    /**
     * Description of the unit type the item is sold as, ie: kg, hour.
     */
    unitOfMeasure?: string | null | undefined;
    /**
     * Discount percentage applied to the line item when supported downstream.
     */
    discountPercentage?: number | null | undefined;
    /**
     * Discount amount applied to the line item when supported downstream.
     */
    discountAmount?: number | null | undefined;
    /**
     * Date on which the service was provided or performed - YYYY-MM-DD.
     */
    serviceDate?: RFCDate | null | undefined;
    /**
     * ID of the category of the line item
     */
    categoryId?: string | null | undefined;
    /**
     * The ID of the location
     */
    locationId?: string | null | undefined;
    /**
     * The ID of the department
     */
    departmentId?: string | null | undefined;
    /**
     * The ID of the subsidiary
     */
    subsidiaryId?: string | null | undefined;
    /**
     * ID of the shipping of the line item
     */
    shippingId?: string | null | undefined;
    /**
     * Memo
     */
    memo?: string | null | undefined;
    /**
     * Whether the line item is prepaid
     */
    prepaid?: boolean | null | undefined;
    item?: LinkedInvoiceItem | undefined;
    /**
     * Tax applicable on
     */
    taxApplicableOn?: string | null | undefined;
    /**
     * Tax recoverability
     */
    taxRecoverability?: string | null | undefined;
    /**
     * Method of tax calculation
     */
    taxMethod?: string | null | undefined;
    /**
     * Worktags of the line item. This is currently only supported in Workday.
     */
    worktags?: Array<LinkedWorktag | null> | undefined;
    taxRate?: LinkedTaxRate | undefined;
    /**
     * A list of linked tracking categories.
     */
    trackingCategories?: Array<LinkedTrackingCategory | null> | null | undefined;
    ledgerAccount?: LinkedLedgerAccount | null | undefined;
    customFields?: Array<CustomField> | undefined;
    /**
     * A binary value used to detect updates to a object and prevent data conflicts. It is incremented each time an update is made to the object.
     */
    rowVersion?: string | null | undefined;
    /**
     * The user who last updated the object.
     */
    updatedBy?: string | null | undefined;
    /**
     * The user who created the object.
     */
    createdBy?: string | 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;
};
export type InvoiceLineItemInput = {
    /**
     * A unique identifier for an object.
     */
    id?: string | null | undefined;
    /**
     * Row ID
     */
    rowId?: string | undefined;
    /**
     * User defined item code
     */
    code?: string | null | undefined;
    /**
     * Line number of the resource
     */
    lineNumber?: number | null | undefined;
    /**
     * User defined description
     */
    description?: string | null | undefined;
    /**
     * Item type
     */
    type?: InvoiceLineItemType | null | undefined;
    /**
     * Tax amount
     */
    taxAmount?: number | null | undefined;
    /**
     * Total amount of the line item
     */
    totalAmount?: number | null | undefined;
    quantity?: number | null | undefined;
    unitPrice?: number | null | undefined;
    /**
     * Description of the unit type the item is sold as, ie: kg, hour.
     */
    unitOfMeasure?: string | null | undefined;
    /**
     * Discount percentage applied to the line item when supported downstream.
     */
    discountPercentage?: number | null | undefined;
    /**
     * Discount amount applied to the line item when supported downstream.
     */
    discountAmount?: number | null | undefined;
    /**
     * Date on which the service was provided or performed - YYYY-MM-DD.
     */
    serviceDate?: RFCDate | null | undefined;
    /**
     * ID of the category of the line item
     */
    categoryId?: string | null | undefined;
    /**
     * The ID of the location
     */
    locationId?: string | null | undefined;
    /**
     * The ID of the department
     */
    departmentId?: string | null | undefined;
    /**
     * The ID of the subsidiary
     */
    subsidiaryId?: string | null | undefined;
    /**
     * ID of the shipping of the line item
     */
    shippingId?: string | null | undefined;
    /**
     * Memo
     */
    memo?: string | null | undefined;
    /**
     * Whether the line item is prepaid
     */
    prepaid?: boolean | null | undefined;
    item?: LinkedInvoiceItem | undefined;
    /**
     * Tax applicable on
     */
    taxApplicableOn?: string | null | undefined;
    /**
     * Tax recoverability
     */
    taxRecoverability?: string | null | undefined;
    /**
     * Method of tax calculation
     */
    taxMethod?: string | null | undefined;
    /**
     * Worktags of the line item. This is currently only supported in Workday.
     */
    worktags?: Array<LinkedWorktag | null> | undefined;
    taxRate?: LinkedTaxRateInput | undefined;
    /**
     * A list of linked tracking categories.
     */
    trackingCategories?: Array<LinkedTrackingCategory | null> | null | undefined;
    ledgerAccount?: LinkedLedgerAccount | null | undefined;
    customFields?: Array<CustomField> | undefined;
    /**
     * A binary value used to detect updates to a object and prevent data conflicts. It is incremented each time an update is made to the object.
     */
    rowVersion?: string | null | undefined;
};
/** @internal */
export declare const InvoiceLineItemType$inboundSchema: z.ZodNativeEnum<typeof InvoiceLineItemType>;
/** @internal */
export declare const InvoiceLineItemType$outboundSchema: z.ZodNativeEnum<typeof InvoiceLineItemType>;
/** @internal */
export declare const InvoiceLineItem$inboundSchema: z.ZodType<InvoiceLineItem, z.ZodTypeDef, unknown>;
export declare function invoiceLineItemFromJSON(jsonString: string): SafeParseResult<InvoiceLineItem, SDKValidationError>;
/** @internal */
export type InvoiceLineItemInput$Outbound = {
    id?: string | null | undefined;
    row_id?: string | undefined;
    code?: string | null | undefined;
    line_number?: number | null | undefined;
    description?: string | null | undefined;
    type?: string | null | undefined;
    tax_amount?: number | null | undefined;
    total_amount?: number | null | undefined;
    quantity?: number | null | undefined;
    unit_price?: number | null | undefined;
    unit_of_measure?: string | null | undefined;
    discount_percentage?: number | null | undefined;
    discount_amount?: number | null | undefined;
    service_date?: string | null | undefined;
    category_id?: string | null | undefined;
    location_id?: string | null | undefined;
    department_id?: string | null | undefined;
    subsidiary_id?: string | null | undefined;
    shipping_id?: string | null | undefined;
    memo?: string | null | undefined;
    prepaid?: boolean | null | undefined;
    item?: LinkedInvoiceItem$Outbound | undefined;
    tax_applicable_on?: string | null | undefined;
    tax_recoverability?: string | null | undefined;
    tax_method?: string | null | undefined;
    worktags?: Array<LinkedWorktag$Outbound | null> | undefined;
    tax_rate?: LinkedTaxRateInput$Outbound | undefined;
    tracking_categories?: Array<LinkedTrackingCategory$Outbound | null> | null | undefined;
    ledger_account?: LinkedLedgerAccount$Outbound | null | undefined;
    custom_fields?: Array<CustomField$Outbound> | undefined;
    row_version?: string | null | undefined;
};
/** @internal */
export declare const InvoiceLineItemInput$outboundSchema: z.ZodType<InvoiceLineItemInput$Outbound, z.ZodTypeDef, InvoiceLineItemInput>;
export declare function invoiceLineItemInputToJSON(invoiceLineItemInput: InvoiceLineItemInput): string;
//# sourceMappingURL=invoicelineitem.d.ts.map