import { bigint , boolean , dict , lazy , object , optional , Schema , string , } from '../schema' ; import { Money , moneySchema } from './money' ; /**
 * Represents a tax that applies to one or more line item in the order.
 * Fixed-amount, order-scoped taxes are distributed across all non-zero line item totals.
 * The amount distributed to each line item is relative to the amount the item
 * contributes to the order subtotal.
 */ export interface OrderLineItemTax { /** A unique ID that identifies the tax only within this order. */ uid ? : string ; /** The catalog object ID referencing [CatalogTax]($m/CatalogTax). */ catalogObjectId ? : string ; /** The version of the catalog object that this tax references. */ catalogVersion ? : bigint ; /** The tax's name. */ name ? : string ; /** Indicates how the tax is applied to the associated line item or order. */ type ? : string ; /**
     * The percentage of the tax, as a string representation of a decimal
     * number. For example, a value of `"7.25"` corresponds to a percentage of
     * 7.25%.
     */ percentage ? : string ; /**
     * Application-defined data attached to this tax. Metadata fields are intended
     * to store descriptive references or associations with an entity in another system or store brief
     * information about the object. Square does not process this field; it only stores and returns it
     * in relevant API calls. Do not use metadata to store any sensitive information (such as personally
     * identifiable information or card details).
     * Keys written by applications must be 60 characters or less and must be in the character set
     * `[a-zA-Z0-9_-]`. Entries can also include metadata generated by Square. These keys are prefixed
     * with a namespace, separated from the key with a ':' character.
     * Values have a maximum length of 255 characters.
     * An application can have up to 10 entries per metadata field.
     * Entries written by applications are private and can only be read or modified by the same
     * application.
     * For more information, see [Metadata](https://developer.squareup.com/docs/build-basics/metadata).
     */ metadata ? : Record < string , string > ; /**
     * Represents an amount of money. `Money` fields can be signed or unsigned.
     * Fields that do not explicitly define whether they are signed or unsigned are
     * considered unsigned and can only hold positive amounts. For signed fields, the
     * sign of the value indicates the purpose of the money transfer. See
     * [Working with Monetary Amounts](https://developer.squareup.com/docs/build-basics/working-with-monetary-amounts)
     * for more information.
     */ appliedMoney ? : Money ; /** Indicates whether this is a line-item or order-level tax. */ scope ? : string ; /**
     * Determines whether the tax was automatically applied to the order based on
     * the catalog configuration. For an example, see
     * [Automatically Apply Taxes to an Order](https://developer.squareup.com/docs/orders-api/apply-taxes-and-discounts/auto-apply-taxes).
     */ autoApplied ? : boolean ; } export const orderLineItemTaxSchema = object ( { uid : [ 'uid' , optional ( string ( ) ) ] , catalogObjectId : [ 'catalog_object_id' , optional ( string ( ) ) ] , catalogVersion : [ 'catalog_version' , optional ( bigint ( ) ) ] , name : [ 'name' , optional ( string ( ) ) ] , type : [ 'type' , optional ( string ( ) ) ] , percentage : [ 'percentage' , optional ( string ( ) ) ] , metadata : [ 'metadata' , optional ( dict ( string ( ) ) ) ] , appliedMoney : [ 'applied_money' , optional ( lazy ( ( ) => moneySchema ) ) ] , scope : [ 'scope' , optional ( string ( ) ) ] , autoApplied : [ 'auto_applied' , optional ( boolean ( ) ) ] , } ) ;