import { dict , lazy , object , optional , Schema , string } from '../schema' ; import { OrderFulfillmentPickupDetails , orderFulfillmentPickupDetailsSchema , } from './orderFulfillmentPickupDetails' ; import { OrderFulfillmentShipmentDetails , orderFulfillmentShipmentDetailsSchema , } from './orderFulfillmentShipmentDetails' ; /** Contains details about how to fulfill this order. */ export interface OrderFulfillment { /** A unique ID that identifies the fulfillment only within this order. */ uid ? : string ; /** The type of fulfillment. */ type ? : string ; /** The current state of this fulfillment. */ state ? : string ; /**
     * Application-defined data attached to this fulfillment. 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 > ; /** Contains details necessary to fulfill a pickup order. */ pickupDetails ? : OrderFulfillmentPickupDetails ; /** Contains the details necessary to fulfill a shipment order. */ shipmentDetails ? : OrderFulfillmentShipmentDetails ; } export const orderFulfillmentSchema = object ( { uid : [ 'uid' , optional ( string ( ) ) ] , type : [ 'type' , optional ( string ( ) ) ] , state : [ 'state' , optional ( string ( ) ) ] , metadata : [ 'metadata' , optional ( dict ( string ( ) ) ) ] , pickupDetails : [ 'pickup_details' , optional ( lazy ( ( ) => orderFulfillmentPickupDetailsSchema ) ) , ] , shipmentDetails : [ 'shipment_details' , optional ( lazy ( ( ) => orderFulfillmentShipmentDetailsSchema ) ) , ] , } ) ;