/**
 * WooCommerce Node - Version 1
 * Discriminator: resource=order, operation=getAll
 */


interface Credentials {
  wooCommerceApi: CredentialReference;
}

/** Retrieve many customers */
export type WooCommerceV1OrderGetAllParams = {
  resource: 'order';
  operation: 'getAll';
/**
 * Whether to return all results or only up to a given limit
 * @default false
 */
    returnAll?: boolean | Expression<boolean>;
/**
 * Max number of results to return
 * @displayOptions.show { returnAll: [false] }
 * @default 50
 */
    limit?: number | Expression<number>;
/**
 * Options
 * @default {}
 */
    options?: {
    /** Limit response to resources published after a given ISO8601 compliant date
     */
    after?: string | Expression<string>;
    /** Limit response to resources published before a given ISO8601 compliant date
     */
    before?: string | Expression<string>;
    /** Limit result set to orders assigned a specific customer
     */
    customer?: string | Expression<string> | PlaceholderValue;
    /** Number of decimal points to use in each resource
     * @default 2
     */
    decimalPoints?: number | Expression<number>;
    /** Order sort attribute ascending or descending
     * @default desc
     */
    order?: 'asc' | 'desc' | Expression<string>;
    /** Limit result set to orders assigned a specific product
     */
    product?: string | Expression<string> | PlaceholderValue;
    /** Sort collection by object attribute
     * @default id
     */
    orderBy?: 'date' | 'id' | 'include' | 'slug' | 'title' | Expression<string>;
    /** Limit results to those matching a string
     */
    search?: string | Expression<string> | PlaceholderValue;
    /** Limit result set to orders assigned a specific status
     * @default any
     */
    status?: 'any' | 'cancelled' | 'completed' | 'failed' | 'on-hold' | 'pending' | 'processing' | 'refunded' | 'trash' | Expression<string>;
  };
};

export type WooCommerceV1OrderGetAllOutput = {
  _links?: {
    collection?: Array<{
      href?: string;
    }>;
    self?: Array<{
      href?: string;
      targetHints?: {
        allow?: Array<string>;
      };
    }>;
  };
  billing?: {
    address_1?: string;
    address_2?: string;
    city?: string;
    company?: string;
    country?: string;
    email?: string;
    first_name?: string;
    last_name?: string;
    phone?: string;
    postcode?: string;
    state?: string;
  };
  cart_hash?: string;
  cart_tax?: string;
  coupon_lines?: Array<{
    code?: string;
    discount?: string;
    discount_tax?: string;
    discount_type?: string;
    free_shipping?: boolean;
    id?: number;
    meta_data?: Array<{
      display_key?: string;
      id?: number;
      key?: string;
    }>;
  }>;
  created_via?: string;
  currency?: string;
  currency_symbol?: string;
  customer_id?: number;
  customer_ip_address?: string;
  customer_note?: string;
  customer_user_agent?: string;
  date_created?: string;
  date_created_gmt?: string;
  date_modified?: string;
  date_modified_gmt?: string;
  discount_tax?: string;
  discount_total?: string;
  fee_lines?: Array<{
    amount?: string;
    id?: number;
    name?: string;
    tax_class?: string;
    tax_status?: string;
    taxes?: Array<{
      id?: number;
      subtotal?: string;
      total?: string;
    }>;
    total?: string;
    total_tax?: string;
  }>;
  id?: number;
  is_editable?: boolean;
  line_items?: Array<{
    id?: number;
    image?: {
      src?: string;
    };
    meta_data?: Array<{
      display_key?: string;
      id?: number;
      key?: string;
    }>;
    name?: string;
    product_id?: number;
    quantity?: number;
    subtotal?: string;
    subtotal_tax?: string;
    tax_class?: string;
    taxes?: Array<{
      id?: number;
      subtotal?: string;
      total?: string;
    }>;
    total?: string;
    total_tax?: string;
    variation_id?: number;
  }>;
  meta_data?: Array<{
    id?: number;
    key?: string;
  }>;
  needs_processing?: boolean;
  number?: string;
  order_key?: string;
  parent_id?: number;
  payment_method?: string;
  payment_method_title?: string;
  payment_url?: string;
  prices_include_tax?: boolean;
  refunds?: Array<{
    id?: number;
    reason?: string;
    total?: string;
  }>;
  shipping?: {
    address_1?: string;
    address_2?: string;
    city?: string;
    company?: string;
    country?: string;
    first_name?: string;
    last_name?: string;
    phone?: string;
    postcode?: string;
    state?: string;
  };
  shipping_lines?: Array<{
    id?: number;
    instance_id?: string;
    meta_data?: Array<{
      display_key?: string;
      display_value?: string;
      id?: number;
      key?: string;
      value?: string;
    }>;
    method_id?: string;
    method_title?: string;
    taxes?: Array<{
      id?: number;
      subtotal?: string;
      total?: string;
    }>;
    total?: string;
    total_tax?: string;
  }>;
  shipping_tax?: string;
  shipping_total?: string;
  status?: string;
  tax_lines?: Array<{
    compound?: boolean;
    id?: number;
    label?: string;
    meta_data?: Array<{
      display_key?: string;
      display_value?: string;
      id?: number;
      key?: string;
      value?: string;
    }>;
    rate_code?: string;
    shipping_tax_total?: string;
    tax_total?: string;
  }>;
  total?: string;
  total_tax?: string;
  transaction_id?: string;
  version?: string;
};

export type WooCommerceV1OrderGetAllNode = {
  type: 'n8n-nodes-base.wooCommerce';
  version: 1;
  credentials?: Credentials;
  config: NodeConfig<WooCommerceV1OrderGetAllParams>;
  output?: Items<WooCommerceV1OrderGetAllOutput>;
};